Last active
May 28, 2024 13:46
-
-
Save jpschroeder/d85e16c798b47413e461b4715244c030 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
set -g default-terminal "tmux-256color" | |
set -g mouse on | |
set -g focus-events on | |
set -g status-position top | |
set -g prefix C-a | |
setw -g mode-keys vi | |
set -sg escape-time 0 | |
set -sa terminal-features ',xterm-kitty:RGB' |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ~/.config/kitty/kitty.conf | |
# clipboard_control write-clipboard write-primary no-append | |
# include ./theme.conf | |
enable_audio_bell no | |
font_family MesloLGS NF | |
enabled_layouts tall:bias=70, fat:bias=70, stack, horizontal, vertical, grid | |
map kitty_mod+1 goto_layout tall | |
map kitty_mod+2 goto_layout fat | |
map kitty_mod+3 goto_layout horizontal | |
map kitty_mod+4 goto_layout vertical | |
map kitty_mod+5 goto_layout stack | |
map kitty_mod+6 goto_layout grid | |
map kitty_mod+enter new_window_with_cwd | |
# map cmd+enter new_window_with_cwd | |
map ctrl+c kitten pass_keys.py copy ctrl+c | |
# map cmd+c kitten pass_keys.py copy cmd+c | |
map ctrl+v kitten pass_keys.py paste ctrl+v | |
# map cmd+b kitten pass_keys.py paste cmd+v | |
# https://github.com/knubie/vim-kitty-navigator | |
map ctrl+j kitten pass_keys.py bottom ctrl+j | |
map ctrl+k kitten pass_keys.py top ctrl+k | |
map ctrl+h kitten pass_keys.py left ctrl+h | |
map ctrl+l kitten pass_keys.py right ctrl+l | |
allow_remote_control yes | |
listen_on unix:@mykitty | |
# listen_on unix:/tmp/mykitty |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ~/.config/kitty/pass_keys.py | |
import re | |
from kittens.tui.handler import result_handler | |
from kitty.key_encoding import KeyEvent, parse_shortcut | |
def is_window_vim(window, vim_id): | |
fp = window.child.foreground_processes | |
return any(re.search(vim_id, p['cmdline'][0] if len(p['cmdline']) else '', re.I) for p in fp) | |
def encode_key_mapping(window, key_mapping): | |
mods, key = parse_shortcut(key_mapping) | |
event = KeyEvent( | |
mods=mods, | |
key=key, | |
shift=bool(mods & 1), | |
alt=bool(mods & 2), | |
ctrl=bool(mods & 4), | |
super=bool(mods & 8), | |
hyper=bool(mods & 16), | |
meta=bool(mods & 32), | |
).as_window_system_event() | |
return window.encoded_key(event) | |
def main(): | |
pass | |
@result_handler(no_ui=True) | |
def handle_result(args, result, target_window_id, boss): | |
cmd = args[1] # bottom, top, left, right, copy, paste | |
key_mapping = args[2] # ctrl+j, ctrl+k, ctrl+h, ctrl+l, ctrl+c, ctrl+v | |
vim_id = args[3] if len(args) > 3 else "n?vim" | |
window = boss.window_id_map.get(target_window_id) | |
if window is None: | |
return | |
if is_window_vim(window, vim_id): | |
for keymap in key_mapping.split(">"): | |
encoded = encode_key_mapping(window, keymap) | |
window.write_to_child(encoded) | |
elif cmd == "copy": | |
window.copy_and_clear_or_interrupt() | |
elif cmd == "paste": | |
window.paste_selection_or_clipboard() | |
else: | |
boss.active_tab.neighboring_window(cmd) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment