From 82fc23530dfdded85ef7ba2faf782e1680a5d079 Mon Sep 17 00:00:00 2001 From: Thomas Naderer Date: Sun, 1 Mar 2026 15:44:29 +0100 Subject: [PATCH] refactor: switch to catppuccin mocha across tmux and neovim - tmux: hand-rolled catppuccin theme, three-way status bar toggle, plugin cleanup - nvim: switch colorscheme to catppuccin-mocha, update lualine colors - nvim: add tmuxline.vim for tmux statusline generation - kitty: fix MesloLGS NF font typo, remove deprecated config keys Co-Authored-By: Claude Sonnet 4.6 --- .../complex_modifications/1734255938.json | 173 +- .../automatic_backups/karabiner_20241210.json | 9 - .../automatic_backups/karabiner_20241212.json | 86 - karabiner/karabiner.json | 1607 +++++++---------- kitty/current-theme.conf | 81 +- kitty/keymap.conf | 10 +- kitty/kitty.conf | 17 +- nvim/lua/plugins/init.lua | 467 ++--- nvim/lua/plugins/lualine.lua | 99 +- nvim/lua/settings.lua | 36 +- tmux/.tmux.conf | 59 - tmux/plugins/tmux-urlview | 1 + tmux/themes/catppuccin.tmux | 34 +- tmux/themes/tmuxline.tmux | 5 + tmux/tmux.conf | 154 +- yazi/keymap.toml | 59 +- yazi/keymap.toml-1748636568461447 | 388 ---- yazi/package.toml | 15 +- yazi/plugins/git.yazi/LICENSE | 21 - yazi/plugins/git.yazi/README.md | 75 - yazi/plugins/git.yazi/main.lua | 228 --- yazi/plugins/glow.yazi/README.md | 3 + yazi/plugins/glow.yazi/main.lua | 2 +- yazi/plugins/jump-to-char.yazi/README.md | 2 +- yazi/plugins/jump-to-char.yazi/main.lua | 2 +- yazi/yazi.toml | 7 + 26 files changed, 1236 insertions(+), 2404 deletions(-) delete mode 100644 karabiner/automatic_backups/karabiner_20241210.json delete mode 100644 karabiner/automatic_backups/karabiner_20241212.json delete mode 100644 tmux/.tmux.conf create mode 160000 tmux/plugins/tmux-urlview create mode 100644 tmux/themes/tmuxline.tmux delete mode 100644 yazi/keymap.toml-1748636568461447 delete mode 100644 yazi/plugins/git.yazi/LICENSE delete mode 100644 yazi/plugins/git.yazi/README.md delete mode 100644 yazi/plugins/git.yazi/main.lua mode change 100644 => 100755 yazi/plugins/glow.yazi/main.lua diff --git a/karabiner/assets/complex_modifications/1734255938.json b/karabiner/assets/complex_modifications/1734255938.json index 6d96eb3..9d0c3bc 100644 --- a/karabiner/assets/complex_modifications/1734255938.json +++ b/karabiner/assets/complex_modifications/1734255938.json @@ -675,6 +675,25 @@ } ] }, + { + "type": "basic", + "from": { + "key_code": "p", + "modifiers": { + "mandatory": [ + "right_command", + "right_control", + "right_shift", + "right_option" + ] + } + }, + "to": [ + { + "key_code": "page_down" + } + ] + }, { "type": "basic", "from": { @@ -731,25 +750,6 @@ "key_code": "end" } ] - }, - { - "type": "basic", - "from": { - "key_code": "p", - "modifiers": { - "mandatory": [ - "right_command", - "right_control", - "right_shift", - "right_option" - ] - } - }, - "to": [ - { - "key_code": "page_down" - } - ] } ] }, @@ -770,9 +770,9 @@ } }, "to": [ - { + { "mouse_key": { - "x": -345 + "x": -750 } } ] @@ -793,7 +793,7 @@ "to": [ { "mouse_key": { - "y": 345 + "y": 750 } } ] @@ -814,7 +814,7 @@ "to": [ { "mouse_key": { - "y": -345 + "y": -750 } } ] @@ -835,7 +835,7 @@ "to": [ { "mouse_key": { - "x": 345 + "x": 750 } } ] @@ -1152,29 +1152,6 @@ } ] }, - { - "type": "basic", - "from": { - "key_code": "a", - "modifiers": { - "mandatory": [ - "left_command", - "right_command", - "right_control", - "right_shift", - "right_option" - ] - } - }, - "to": [ - { - "key_code": "up_arrow", - "modifiers": [ - "left_control" - ] - } - ] - }, { "type": "basic", "from": { @@ -1268,28 +1245,6 @@ } ] }, - { - "type": "basic", - "from": { - "key_code": "z", - "modifiers": { - "mandatory": [ - "right_command", - "right_control", - "right_shift", - "right_option" - ] - } - }, - "to": [ - { - "key_code": "z", - "modifiers": [ - "left_control" - ] - } - ] - }, { "type": "basic", "from": { @@ -1402,6 +1357,26 @@ } ] }, +{ + "type": "basic", + "from": { + "key_code": "e", + "modifiers": { + "mandatory": [ + "left_command", + "right_command", + "right_control", + "right_shift", + "right_option" + ] + } + }, + "to": [ + { + "shell_command": "open -a 'Microsoft Excel'" + } + ] + }, { "type": "basic", "from": { @@ -1437,7 +1412,7 @@ }, "to": [ { - "shell_command": "open -a 'iTerm'" + "shell_command": "open -a 'kitty'" } ] }, @@ -1461,12 +1436,13 @@ } ] }, - { +{ "type": "basic", "from": { - "key_code": "t", + "key_code": "s", "modifiers": { "mandatory": [ + "left_command", "right_command", "right_control", "right_shift", @@ -1476,10 +1452,10 @@ }, "to": [ { - "shell_command": "open -a 'Visual Studio Code'" + "shell_command": "open -a Spotify" } ] - }, + }, { "type": "basic", "from": { @@ -1496,7 +1472,7 @@ }, "to": [ { - "shell_command": "open -a 'Typora'" + "shell_command": "open -a Transmission" } ] }, @@ -1522,7 +1498,26 @@ { "type": "basic", "from": { - "key_code": "d", + "key_code": "a", + "modifiers": { + "mandatory": [ + "right_command", + "right_control", + "right_shift", + "right_option" + ] + } + }, + "to": [ + { + "shell_command": "open -a 'Alfred'" + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "a", "modifiers": { "mandatory": [ "left_command", @@ -1535,7 +1530,7 @@ }, "to": [ { - "shell_command": "open -a 'Dictionary'" + "shell_command": "open -a 'Mail'" } ] }, @@ -1554,10 +1549,30 @@ }, "to": [ { - "shell_command": "open -b com.runningwithcrayons.Alfred-3" + "shell_command": "open -a 'Zen Browser'" } ] }, + { + "type": "basic", + "from": { + "key_code": "z", + "modifiers": { + "mandatory": [ + "right_command", + "right_control", + "right_shift", + "right_option" + ] + } + }, + "to": [ + { + "shell_command": "open -a 'zoom.us'" + } + ] + }, + { "type": "basic", "from": { @@ -1629,7 +1644,7 @@ }, "to": [ { - "shell_command": "open -a 'Google Chrome'" + "shell_command": "open -a 'ChatGPT'" } ] } diff --git a/karabiner/automatic_backups/karabiner_20241210.json b/karabiner/automatic_backups/karabiner_20241210.json deleted file mode 100644 index df6e8bc..0000000 --- a/karabiner/automatic_backups/karabiner_20241210.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "profiles": [ - { - "name": "Default profile", - "selected": true, - "virtual_hid_keyboard": { "keyboard_type_v2": "iso" } - } - ] -} \ No newline at end of file diff --git a/karabiner/automatic_backups/karabiner_20241212.json b/karabiner/automatic_backups/karabiner_20241212.json deleted file mode 100644 index adc0dba..0000000 --- a/karabiner/automatic_backups/karabiner_20241212.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "profiles": [ - { - "complex_modifications": { - "rules": [ - { - "description": "Left ctrl + hjkl to arrow keys Vim", - "manipulators": [ - { - "from": { - "key_code": "h", - "modifiers": { - "mandatory": ["left_control"], - "optional": ["any"] - } - }, - "to": [{ "key_code": "left_arrow" }], - "type": "basic" - }, - { - "from": { - "key_code": "j", - "modifiers": { - "mandatory": ["left_control"], - "optional": ["any"] - } - }, - "to": [{ "key_code": "down_arrow" }], - "type": "basic" - }, - { - "from": { - "key_code": "k", - "modifiers": { - "mandatory": ["left_control"], - "optional": ["any"] - } - }, - "to": [{ "key_code": "up_arrow" }], - "type": "basic" - }, - { - "from": { - "key_code": "l", - "modifiers": { - "mandatory": ["left_control"], - "optional": ["any"] - } - }, - "to": [{ "key_code": "right_arrow" }], - "type": "basic" - } - ] - } - ] - }, - "devices": [ - { - "identifiers": { "is_keyboard": true }, - "simple_modifications": [ - { - "from": { "key_code": "caps_lock" }, - "to": [{ "key_code": "escape" }] - } - ] - }, - { - "identifiers": { - "is_keyboard": true, - "product_id": 620, - "vendor_id": 76 - }, - "simple_modifications": [ - { - "from": { "key_code": "caps_lock" }, - "to": [{ "key_code": "escape" }] - } - ] - } - ], - "name": "Default profile", - "selected": true, - "virtual_hid_keyboard": { "keyboard_type_v2": "iso" } - } - ] -} \ No newline at end of file diff --git a/karabiner/karabiner.json b/karabiner/karabiner.json index 35acb84..17cf33c 100644 --- a/karabiner/karabiner.json +++ b/karabiner/karabiner.json @@ -1,433 +1,8 @@ { - "global": { - "ask_for_confirmation_before_quitting": false, - "show_in_menu_bar": false - }, "profiles": [ { "complex_modifications": { "rules": [ - { - "available_since": "12.3.0", - "description": "Change button3 + mouse motion to scroll wheel (rev 1)", - "manipulators": [ - { - "from": { - "modifiers": { "optional": ["any"] }, - "pointing_button": "button3" - }, - "to": [ - { - "set_variable": { - "name": "enable_mouse_motion_to_scroll", - "value": 1 - } - } - ], - "to_after_key_up": [ - { - "set_variable": { - "name": "enable_mouse_motion_to_scroll", - "value": 0 - } - } - ], - "type": "basic" - }, - { - "conditions": [ - { - "name": "enable_mouse_motion_to_scroll", - "type": "variable_if", - "value": 1 - } - ], - "from": { "modifiers": { "optional": ["any"] } }, - "type": "mouse_motion_to_scroll" - } - ] - }, - { - "available_since": "12.3.0", - "description": "Change control + mouse motion to scroll wheel (rev 1)", - "manipulators": [ - { - "from": { "modifiers": { "mandatory": ["control"] } }, - "type": "mouse_motion_to_scroll" - } - ] - }, - { - "description": "The wheel click is fired by pressing the left and right buttons simultaneously.", - "manipulators": [ - { - "from": { - "modifiers": { - "mandatory": [], - "optional": [] - }, - "simultaneous": [ - { "pointing_button": "button1" }, - { "pointing_button": "button2" } - ], - "simultaneous_options": { "key_up_when": "all" } - }, - "to": [ - { - "modifiers": [], - "pointing_button": "button3" - } - ], - "type": "basic" - } - ] - }, - { - "description": "Hyper Window Control: ⇥ QWAS D", - "manipulators": [ - { - "from": { - "key_code": "tab", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "tab", - "modifiers": ["left_command"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "tab", - "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "tab", - "modifiers": ["left_command", "left_shift"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "q", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "q", - "modifiers": ["left_command"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "q", - "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "escape", - "modifiers": ["left_command", "left_option", "left_shift"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "w", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "w", - "modifiers": ["left_command"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "a", - "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "up_arrow", - "modifiers": ["left_control"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "s", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "tab", - "modifiers": ["left_control"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "s", - "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "tab", - "modifiers": ["left_control", "left_shift"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "d", - "modifiers": { "mandatory": ["left_option", "right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "key_code": "f11" }], - "type": "basic" - } - ] - }, - { - "description": "Hyper Shifter", - "manipulators": [ - { - "from": { - "key_code": "1", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "1", - "modifiers": ["left_shift"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "2", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "2", - "modifiers": ["left_shift"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "3", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "3", - "modifiers": ["left_shift"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "4", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "4", - "modifiers": ["left_shift"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "5", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "5", - "modifiers": ["left_shift"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "6", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "6", - "modifiers": ["left_shift"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "7", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "7", - "modifiers": ["left_shift"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "8", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "8", - "modifiers": ["left_shift"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "9", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "9", - "modifiers": ["left_shift"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "0", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "0", - "modifiers": ["left_shift"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "hyphen", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "hyphen", - "modifiers": ["left_shift"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "equal_sign", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "equal_sign", - "modifiers": ["left_shift"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "open_bracket", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "open_bracket", - "modifiers": ["left_shift"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "close_bracket", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "close_bracket", - "modifiers": ["left_shift"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "semicolon", - "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "semicolon", - "modifiers": ["left_shift"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "quote", - "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "key_code": "equal_sign" }], - "type": "basic" - }, - { - "from": { - "key_code": "semicolon", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "1", - "modifiers": ["left_shift"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "quote", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "key_code": "equal_sign" }], - "type": "basic" - } - ] - }, { "description": "Hyper Bash Control: D ZXCVB", "manipulators": [ @@ -444,19 +19,6 @@ ], "type": "basic" }, - { - "from": { - "key_code": "z", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "z", - "modifiers": ["left_control"] - } - ], - "type": "basic" - }, { "from": { "key_code": "x", @@ -512,323 +74,16 @@ ] }, { - "description": "Hyper Deletion: N M , .", + "description": "Hyper + Left Shift + H/L to switch macOS Spaces", "manipulators": [ { "from": { - "key_code": "n", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + "key_code": "h", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option", "left_shift"] } }, "to": [ { - "key_code": "delete_or_backspace", - "modifiers": ["left_option"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "n", - "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "delete_or_backspace", - "modifiers": ["left_command"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "m", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "key_code": "delete_or_backspace" }], - "type": "basic" - }, - { - "from": { - "key_code": "m", - "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "delete_or_backspace", - "modifiers": ["left_command"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "comma", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "key_code": "delete_forward" }], - "type": "basic" - }, - { - "from": { - "key_code": "period", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "delete_forward", - "modifiers": ["left_option"] - } - ], - "type": "basic" - } - ] - }, - { - "description": "Hyper Misc (Check https://github.com/suliveevil/Capslock for all details)", - "manipulators": [ - { - "from": { - "key_code": "escape", - "modifiers": { - "mandatory": ["right_command", "right_control", "right_shift", "right_option"], - "optional": ["caps_lock"] - } - }, - "to": [{ "key_code": "caps_lock" }], - "type": "basic" - }, - { - "from": { - "key_code": "grave_accent_and_tilde", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "4", - "modifiers": ["left_shift", "left_command"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "grave_accent_and_tilde", - "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "4", - "modifiers": ["left_control", "left_shift", "left_command"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "backslash", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "slash", - "modifiers": ["left_command"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "delete_or_backspace", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "delete_or_backspace", - "modifiers": ["left_command"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "slash", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "slash", - "modifiers": ["left_command"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "spacebar", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "spacebar", - "modifiers": ["left_control"] - } - ], - "type": "basic" - } - ] - }, - { - "description": "Hyper Application (held down hyper+g to Fn)", - "manipulators": [ - { - "from": { - "key_code": "e", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "shell_command": "open -a 'finder'" }], - "type": "basic" - }, - { - "from": { - "key_code": "e", - "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "shell_command": "open -a 'Safari'" }], - "type": "basic" - }, - { - "from": { - "key_code": "r", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "shell_command": "open -a 'iTerm'" }], - "type": "basic" - }, - { - "from": { - "key_code": "r", - "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "shell_command": "open -b com.jetbrains.pycharm" }], - "type": "basic" - }, - { - "from": { - "key_code": "t", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "shell_command": "open -a 'Visual Studio Code'" }], - "type": "basic" - }, - { - "from": { - "key_code": "t", - "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "shell_command": "open -a 'Typora'" }], - "type": "basic" - }, - { - "from": { - "key_code": "y", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "shell_command": "open -a 'Siri'" }], - "type": "basic" - }, - { - "from": { - "key_code": "d", - "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "shell_command": "open -a 'Dictionary'" }], - "type": "basic" - }, - { - "from": { - "key_code": "f", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "shell_command": "open -a 'Zen Browser'" }], - "type": "basic" - }, - { - "from": { - "key_code": "a", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "shell_command": "open -a Alfred" }], - "type": "basic" - }, - { - "from": { - "key_code": "f", - "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "shell_command": "open -a 'Dash'" }], - "type": "basic" - }, - { - "from": { - "key_code": "g", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "parameters": { - "basic.to_if_alone_timeout_milliseconds": 250, - "basic.to_if_held_down_threshold_milliseconds": 500 - }, - "to": [ - { - "key_code": "g", - "modifiers": ["right_command", "right_control", "right_option", "right_shift"] - } - ], - "to_if_held_down": [ - { - "key_code": "fn", - "modifiers": "any" - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "g", - "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_option", "right_shift"] } - }, - "to": [{ "shell_command": "open -a 'Google Chrome'" }], - "type": "basic" - } - ] - }, - { - "description": "Hyper Functional", - "manipulators": [ - { - "from": { - "key_code": "1", - "modifiers": { "mandatory": ["left_option", "right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "key_code": "display_brightness_decrement" }], - "type": "basic" - }, - { - "from": { - "key_code": "2", - "modifiers": { "mandatory": ["left_option", "right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "key_code": "display_brightness_increment" }], - "type": "basic" - }, - { - "from": { - "key_code": "3", - "modifiers": { "mandatory": ["left_option", "right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "up_arrow", + "key_code": "left_arrow", "modifiers": ["left_control"] } ], @@ -836,174 +91,13 @@ }, { "from": { - "key_code": "4", - "modifiers": { "mandatory": ["left_option", "right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "shell_command": "open -a 'Launchpad'" }], - "type": "basic" - }, - { - "from": { - "key_code": "5", - "modifiers": { "mandatory": ["left_option", "right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "key_code": "illumination_decrement" }], - "type": "basic" - }, - { - "from": { - "key_code": "6", - "modifiers": { "mandatory": ["left_option", "right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "key_code": "illumination_increment" }], - "type": "basic" - }, - { - "from": { - "key_code": "7", - "modifiers": { "mandatory": ["left_option", "right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "key_code": "rewind" }], - "type": "basic" - }, - { - "from": { - "key_code": "8", - "modifiers": { "mandatory": ["left_option", "right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "key_code": "play_or_pause" }], - "type": "basic" - }, - { - "from": { - "key_code": "9", - "modifiers": { "mandatory": ["left_option", "right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "key_code": "fastforward" }], - "type": "basic" - }, - { - "from": { - "key_code": "0", - "modifiers": { "mandatory": ["left_option", "right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "key_code": "mute" }], - "type": "basic" - }, - { - "from": { - "key_code": "hyphen", - "modifiers": { "mandatory": ["left_option", "right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "key_code": "volume_decrement" }], - "type": "basic" - }, - { - "from": { - "key_code": "equal_sign", - "modifiers": { "mandatory": ["left_option", "right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "key_code": "volume_increment" }], - "type": "basic" - }, - { - "from": { - "key_code": "f13", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "key_code": "rewind" }], - "type": "basic" - }, - { - "from": { - "key_code": "f14", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "key_code": "fastforward" }], - "type": "basic" - }, - { - "from": { - "key_code": "f15", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [{ "key_code": "mute" }], - "type": "basic" - }, - { - "from": { - "key_code": "insert", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + "key_code": "l", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option", "left_shift"] } }, "to": [ { - "key_code": "display_brightness_increment", - "modifiers": ["left_shift", "left_option"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "delete_forward", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "display_brightness_decrement", - "modifiers": ["left_shift", "left_option"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "home", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "illumination_increment", - "modifiers": ["left_shift", "left_option"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "end", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "illumination_decrement", - "modifiers": ["left_shift", "left_option"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "page_down", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "volume_decrement", - "modifiers": ["left_shift", "left_option"] - } - ], - "type": "basic" - }, - { - "from": { - "key_code": "page_up", - "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } - }, - "to": [ - { - "key_code": "volume_increment", - "modifiers": ["left_shift", "left_option"] + "key_code": "right_arrow", + "modifiers": ["left_control"] } ], "type": "basic" @@ -1018,7 +112,7 @@ "key_code": "left_arrow", "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } }, - "to": [{ "mouse_key": { "x": -345 } }], + "to": [{ "mouse_key": { "x": -750 } }], "type": "basic" }, { @@ -1026,7 +120,7 @@ "key_code": "down_arrow", "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } }, - "to": [{ "mouse_key": { "y": 345 } }], + "to": [{ "mouse_key": { "y": 750 } }], "type": "basic" }, { @@ -1034,7 +128,7 @@ "key_code": "up_arrow", "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } }, - "to": [{ "mouse_key": { "y": -345 } }], + "to": [{ "mouse_key": { "y": -750 } }], "type": "basic" }, { @@ -1042,7 +136,7 @@ "key_code": "right_arrow", "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } }, - "to": [{ "mouse_key": { "x": 345 } }], + "to": [{ "mouse_key": { "x": 750 } }], "type": "basic" }, { @@ -1363,13 +457,618 @@ }, "to": [{ "key_code": "end" }], "type": "basic" + } + ] + }, + { + "description": "Hyper Application (held down hyper+g to Fn)", + "manipulators": [ + { + "from": { + "key_code": "e", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [{ "shell_command": "open -a 'finder'" }], + "type": "basic" + }, + { + "from": { + "key_code": "e", + "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [{ "shell_command": "open -a 'Microsoft Excel'" }], + "type": "basic" + }, + { + "from": { + "key_code": "e", + "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [{ "shell_command": "open -a 'Safari'" }], + "type": "basic" + }, + { + "from": { + "key_code": "r", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [{ "shell_command": "open -a 'kitty'" }], + "type": "basic" + }, + { + "from": { + "key_code": "b", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [{ "shell_command": "open -a 'BusyCal'" }], + "type": "basic" }, { "from": { "key_code": "p", + "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [{ "shell_command": "open -a preview" }], + "type": "basic" + }, + { + "from": { + "key_code": "r", + "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [{ "shell_command": "open -b com.jetbrains.pycharm" }], + "type": "basic" + }, + { + "from": { + "key_code": "s", + "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [{ "shell_command": "open -a Skim" }], + "type": "basic" + }, + { + "from": { + "key_code": "s", "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } }, - "to": [{ "key_code": "page_down" }], + "to": [ + { + "key_code": "tab", + "modifiers": ["left_control"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "t", + "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [{ "shell_command": "open -a Transmission" }], + "type": "basic" + }, + { + "from": { + "key_code": "a", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [{ "shell_command": "open -a Raycast" }], + "type": "basic" + }, + { + "from": { + "key_code": "m", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [{ "shell_command": "open -a 'Mail'" }], + "type": "basic" + }, + { + "from": { + "key_code": "f", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [{ "shell_command": "open -a 'Zen Browser'" }], + "type": "basic" + }, + { + "from": { + "key_code": "z", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [{ "shell_command": "open -a 'zoom.us'" }], + "type": "basic" + }, + { + "from": { + "key_code": "f", + "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [{ "shell_command": "open -a 'Dash'" }], + "type": "basic" + }, + { + "from": { + "key_code": "g", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "g", + "modifiers": ["control"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "g", + "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_option", "right_shift"] } + }, + "to": [{ "shell_command": "open -a 'ChatGPT'" }], + "type": "basic" + }, + { + "from": { + "key_code": "spacebar", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [{ "shell_command": "open -a Raycast" }], + "type": "basic" + } + ] + }, + { + "description": "Hyper Window Control: ⇥ QWAS D", + "manipulators": [ + { + "from": { + "key_code": "tab", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "tab", + "modifiers": ["left_command"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "tab", + "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "tab", + "modifiers": ["left_command", "left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "q", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "q", + "modifiers": ["left_command"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "q", + "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "escape", + "modifiers": ["left_command", "left_option", "left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "w", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "w", + "modifiers": ["left_command"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "a", + "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "up_arrow", + "modifiers": ["left_control"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "s", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "tab", + "modifiers": ["left_control"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "s", + "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "tab", + "modifiers": ["left_control", "left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "t", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "t", + "modifiers": ["left_command"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "d", + "modifiers": { "mandatory": ["left_option", "right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [{ "key_code": "f11" }], + "type": "basic" + } + ] + }, + { + "description": "Hyper Misc (Check https://github.com/suliveevil/Capslock for all details)", + "manipulators": [ + { + "from": { + "key_code": "escape", + "modifiers": { + "mandatory": ["right_command", "right_control", "right_shift", "right_option"], + "optional": ["caps_lock"] + } + }, + "to": [{ "key_code": "caps_lock" }], + "type": "basic" + }, + { + "from": { + "key_code": "grave_accent_and_tilde", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "4", + "modifiers": ["left_shift", "left_command"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "grave_accent_and_tilde", + "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "4", + "modifiers": ["left_control", "left_shift", "left_command"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "backslash", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "slash", + "modifiers": ["left_command"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "delete_or_backspace", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "delete_or_backspace", + "modifiers": ["left_command"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "slash", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "slash", + "modifiers": ["left_command"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "spacebar", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "spacebar", + "modifiers": ["left_control"] + } + ], + "type": "basic" + } + ] + }, + { + "description": "Hyper Shifter", + "enabled": false, + "manipulators": [ + { + "from": { + "key_code": "1", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "1", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "2", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "2", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "3", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "3", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "4", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "4", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "5", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "5", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "6", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "6", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "7", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "7", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "8", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "8", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "9", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "9", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "0", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "0", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "hyphen", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "hyphen", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "equal_sign", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "equal_sign", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "open_bracket", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "open_bracket", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "close_bracket", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "close_bracket", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "semicolon", + "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "semicolon", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "quote", + "modifiers": { "mandatory": ["left_command", "right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [{ "key_code": "equal_sign" }], + "type": "basic" + }, + { + "from": { + "key_code": "semicolon", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [ + { + "key_code": "1", + "modifiers": ["left_shift"] + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "quote", + "modifiers": { "mandatory": ["right_command", "right_control", "right_shift", "right_option"] } + }, + "to": [{ "key_code": "equal_sign" }], "type": "basic" } ] @@ -1392,78 +1091,10 @@ "type": "basic" } ] - }, - { - "description": "Left ctrl + hjkl to arrow keys Vim", - "enabled": false, - "manipulators": [ - { - "from": { - "key_code": "h", - "modifiers": { - "mandatory": ["left_control"], - "optional": ["any"] - } - }, - "to": [{ "key_code": "left_arrow" }], - "type": "basic" - }, - { - "from": { - "key_code": "j", - "modifiers": { - "mandatory": ["left_control"], - "optional": ["any"] - } - }, - "to": [{ "key_code": "down_arrow" }], - "type": "basic" - }, - { - "from": { - "key_code": "k", - "modifiers": { - "mandatory": ["left_control"], - "optional": ["any"] - } - }, - "to": [{ "key_code": "up_arrow" }], - "type": "basic" - }, - { - "from": { - "key_code": "l", - "modifiers": { - "mandatory": ["left_control"], - "optional": ["any"] - } - }, - "to": [{ "key_code": "right_arrow" }], - "type": "basic" - } - ] } ] }, "devices": [ - { - "identifiers": { - "is_keyboard": true, - "product_id": 620, - "vendor_id": 76 - }, - "manipulate_caps_lock_led": false - }, - { - "identifiers": { - "is_keyboard": true, - "is_pointing_device": true, - "product_id": 45081, - "vendor_id": 1133 - }, - "ignore": false, - "mouse_flip_horizontal_wheel": true - }, { "identifiers": { "is_keyboard": true, @@ -1478,4 +1109,4 @@ "virtual_hid_keyboard": { "keyboard_type_v2": "iso" } } ] -} \ No newline at end of file +} diff --git a/kitty/current-theme.conf b/kitty/current-theme.conf index 9c74f40..595cec9 100644 --- a/kitty/current-theme.conf +++ b/kitty/current-theme.conf @@ -1,47 +1,50 @@ -background #3b3c35 -foreground #fdfff1 +# vim:ft=kitty -cursor #fdfff1 -cursor_text_color #000000 -selection_foreground #3b3c35 -selection_background #fdfff1 +## name: Tokyo Night Moon +## license: MIT +## author: Folke Lemaitre +## upstream: https://github.com/folke/tokyonight.nvim/raw/main/extras/kitty/tokyonight_moon.conf -# dull black -color0 #3b3c35 -# light black -color8 #6e7066 -# dull red -color1 #f82570 -# light red -color9 #f82570 +background #222436 +foreground #c8d3f5 +selection_background #2d3f76 +selection_foreground #c8d3f5 +url_color #4fd6be +cursor #c8d3f5 +cursor_text_color #222436 -# dull green -color2 #a6e12d -# light green -color10 #a6e12d +# Tabs +active_tab_background #82aaff +active_tab_foreground #1e2030 +inactive_tab_background #2f334d +inactive_tab_foreground #545c7e +#tab_bar_background #1b1d2b -# yellow -color3 #e4db73 -# light yellow -color11 #e4db73 +# Windows +active_border_color #82aaff +inactive_border_color #2f334d -# blue -color4 #fc961f -# light blue -color12 #fc961f +# normal +color0 #1b1d2b +color1 #ff757f +color2 #c3e88d +color3 #ffc777 +color4 #82aaff +color5 #c099ff +color6 #86e1fc +color7 #828bb8 -# magenta -color5 #ae81ff -# light magenta -color13 #ae81ff +# bright +color8 #444a73 +color9 #ff8d94 +color10 #c7fb6d +color11 #ffd8ab +color12 #9ab8ff +color13 #caabff +color14 #b2ebff +color15 #c8d3f5 -# cyan -color6 #66d9ee -# light cyan -color14 #66d9ee - -# dull white -color7 #fdfff1 -# bright white -color15 #fdfff1 +# extended colors +color16 #ff966c +color17 #c53b53 diff --git a/kitty/keymap.conf b/kitty/keymap.conf index 277a6ee..e210d89 100644 --- a/kitty/keymap.conf +++ b/kitty/keymap.conf @@ -30,7 +30,7 @@ map ctrl+shift+u input_unicode_character map ctrl+home resize_window reset # Text Selection & Search -map ctrl+shift+f show_scrollback +map ctrl+shift+o show_scrollback map ctrl+shift+h show_last_command_output map cmd+f launch --type=overlay --stdin-source=@screen_scrollback /usr/bin/less +G -R @@ -40,6 +40,13 @@ map cmd+minus change_font_size all -2.0 map cmd+0 change_font_size all 0 # Background Opacity +# Fast opacity controls +map cmd+alt+up set_background_opacity +0.05 +map cmd+alt+down set_background_opacity -0.05 +map cmd+alt+t remote_control set-background-opacity --toggle 0.85 +map cmd+alt+backspace set_background_opacity default + +# Prefix-based opacity controls (existing) map ctrl+shift+a>m set_background_opacity +0.1 map ctrl+shift+a>l set_background_opacity -0.1 map ctrl+shift+a>1 set_background_opacity 1 @@ -57,4 +64,3 @@ map ctrl+shift+g show_last_command_output # German character mappings map alt+s send_text all ß - diff --git a/kitty/kitty.conf b/kitty/kitty.conf index f8cc075..3daf2c3 100644 --- a/kitty/kitty.conf +++ b/kitty/kitty.conf @@ -1,13 +1,13 @@ # Font Configuration -font_family MesloGS NF +font_family MesloLGS NF bold_font auto -italic_font auto +italic_font auto bold_italic_font auto font_size 15 # Font rendering improvements disable_ligatures never -font_features MesloGSNF +calt +liga +font_features MesloLGSNF +calt +liga text_composition_strategy platform undercurl_style thin-sparse @@ -41,7 +41,7 @@ background_blur 3 # macOS Specific hide_window_decorations yes -macos_titlebar_color background +# macos_titlebar_color background macos_option_as_alt yes macos_window_resizable yes @@ -58,7 +58,7 @@ include ./keymap.conf macos_show_window_title_in none # BEGIN_KITTY_THEME -# Monokai Classic +# Catppuccin-Macchiato include current-theme.conf # END_KITTY_THEME @@ -76,21 +76,19 @@ touch_scroll_multiplier 1.0 # URL Handling detect_urls yes -url_color #0087bd +# url_color #0087bd url_style curly open_url_with default copy_on_select no strip_trailing_spaces never # Selection -rectangle_select_modifiers ctrl+alt -terminal_select_modifiers shift select_by_word_characters @-./_~?&=%+# # Advanced Features allow_hyperlinks yes shell_integration enabled -term xterm-256color +# term xterm-256color # Fixed backspace mapping map backspace send_text all \x7f @@ -110,7 +108,6 @@ clipboard_control write-clipboard write-primary read-clipboard-ask read-primary- clipboard_max_size 64 # Notifications -enable_notifications yes notify_on_cmd_finish invisible 30.0 # Ask for confirmation on program close (Cmd+Q) but not on tab close diff --git a/nvim/lua/plugins/init.lua b/nvim/lua/plugins/init.lua index 8a12ba8..c6b1f4c 100644 --- a/nvim/lua/plugins/init.lua +++ b/nvim/lua/plugins/init.lua @@ -1,233 +1,250 @@ -- ~/.config/nvim/lua/plugins/init.lua return { - -- Colorschemes - { "gruvbox-community/gruvbox", priority = 1000 }, - { "folke/tokyonight.nvim", priority = 1000 }, - { "catppuccin/nvim", name = "catppuccin", priority = 1000 }, - { "EdenEast/nightfox.nvim", priority = 1000 }, - { "rose-pine/neovim", name = "rose-pine", priority = 1000 }, - { "rebelot/kanagawa.nvim", priority = 1000 }, - { "sainnhe/everforest", priority = 1000 }, - - - -- Auto-save - { - "okuuva/auto-save.nvim", - version = "v1.*", - event = { "InsertLeave", "TextChanged" }, - opts = { - enabled = true, - execution_message = { - enabled = false, - }, - trigger_events = { - immediate_save = { "BufLeave", "FocusLost" }, - defer_save = { "InsertLeave", "TextChanged" }, - cancel_defered_save = { "InsertEnter" }, - }, - }, - }, - - -- File explorer - { import = "plugins.nvim-tree" }, - - -- Treesitter - { import = "plugins.treesitter" }, - - -- Rainbow delimiters - { import = "plugins.rainbow_delimiters" }, - - -- Git integration - { - "lewis6991/gitsigns.nvim", - opts = { - signs = { - add = { text = "│" }, - change = { text = "│" }, - delete = { text = "_" }, - topdelete = { text = "‾" }, - changedelete = { text = "~" }, - untracked = { text = "┆" }, - }, - signcolumn = false, -- Disable signs by default - numhl = false, -- Disable number highlights by default - linehl = false, -- Disable line highlights by default - word_diff = false, - current_line_blame = false, - } - }, - { "tpope/vim-fugitive" }, - - -- Status line - { import = "plugins.lualine" }, - - -- FZF - { - "junegunn/fzf", - build = function() - vim.fn["fzf#install"]() - end, - }, - { "junegunn/fzf.vim" }, - - -- Productivity - { "numToStr/Comment.nvim", opts = {} }, - { "windwp/nvim-autopairs", opts = {} }, - { "tpope/vim-surround" }, - - -- Tmux navigation - { "christoomey/vim-tmux-navigator" }, - - -- LaTeX - { import = "plugins.vimtex" }, - - -- Org-mode - { - "nvim-orgmode/orgmode", - dependencies = { "nvim-treesitter/nvim-treesitter" }, - opts = {}, - }, - - -- Telescope - { - "nvim-telescope/telescope.nvim", - dependencies = { "nvim-lua/plenary.nvim" }, - keys = { - { "ff", ":Telescope find_files", desc = "Find files" }, - { "fg", ":Telescope live_grep", desc = "Live grep" }, - { "fb", ":Telescope buffers", desc = "Buffers" }, - { "fh", ":Telescope help_tags", desc = "Help tags" }, - }, - }, - - -- Yazi file manager - { - "mikavilpas/yazi.nvim", - keys = { - { "y", ":Yazi", desc = "Open Yazi" }, - }, - opts = { - open_for_directories = false, - keymaps = { - show_help = "", - }, - }, - }, - - -- Leap (motion) - { - "ggandor/leap.nvim", - event = "VeryLazy", - config = function() - require('leap').add_default_mappings() - -- Override default s/S with f/F to avoid conflict with surround - vim.keymap.del({'n', 'x', 'o'}, 's') - vim.keymap.del({'n', 'x', 'o'}, 'S') - vim.keymap.set({'n', 'x', 'o'}, 'f', '(leap-forward)') - vim.keymap.set({'n', 'x', 'o'}, 'F', '(leap-backward)') - end, - }, - - -- Markdown - { "SidOfc/mkdx" }, - { - "MeanderingProgrammer/render-markdown.nvim", - dependencies = { "nvim-treesitter/nvim-treesitter", "echasnovski/mini.icons" }, - ft = { "markdown", "norg", "rmd", "org" }, - config = function() - require('render-markdown').setup({ - heading = { - enabled = true, - sign = true, - position = 'overlay', - icons = { '󰲡 ', '󰲣 ', '󰲥 ', '󰲧 ', '󰲩 ', '󰲫 ' }, - backgrounds = { - 'RenderMarkdownH1Bg', - 'RenderMarkdownH2Bg', - 'RenderMarkdownH3Bg', - 'RenderMarkdownH4Bg', - 'RenderMarkdownH5Bg', - 'RenderMarkdownH6Bg', - }, - foregrounds = { - 'RenderMarkdownH1', - 'RenderMarkdownH2', - 'RenderMarkdownH3', - 'RenderMarkdownH4', - 'RenderMarkdownH5', - 'RenderMarkdownH6', - }, + -- Colorschemes + { "gruvbox-community/gruvbox", priority = 1000 }, + { "folke/tokyonight.nvim", priority = 1000 }, + { "catppuccin/nvim", name = "catppuccin", priority = 1000 }, + { "EdenEast/nightfox.nvim", priority = 1000 }, + { "rose-pine/neovim", name = "rose-pine", priority = 1000 }, + { "rebelot/kanagawa.nvim", priority = 1000 }, + { "sainnhe/everforest", priority = 1000 }, + + + -- Auto-save + { + "okuuva/auto-save.nvim", + version = "v1.*", + event = { "InsertLeave", "TextChanged" }, + init = function() + local group = vim.api.nvim_create_augroup("autosave_message", { clear = true }) + vim.api.nvim_create_autocmd("User", { + pattern = "AutoSaveWritePost", + group = group, + callback = function(opts) + local saved_buffer = opts.data and opts.data.saved_buffer + if not saved_buffer then + return + end + + local filename = vim.fn.fnamemodify(vim.api.nvim_buf_get_name(saved_buffer), ":t") + if filename == "" then + filename = "[No Name]" + end + vim.notify("AutoSave: " .. filename, vim.log.levels.INFO, { title = "auto-save.nvim" }) + end, + }) + end, + opts = { + enabled = true, + trigger_events = { + immediate_save = { "BufLeave", "FocusLost" }, + defer_save = { "InsertLeave", "TextChanged" }, + cancel_deferred_save = { "InsertEnter" }, + }, }, - }) - - -- Set highlights after ColorScheme event to ensure they persist - vim.api.nvim_create_autocmd("ColorScheme", { - callback = function() - -- Translucent heading backgrounds with alpha blending - vim.api.nvim_set_hl(0, 'RenderMarkdownH1Bg', { bg = '#2d5a7b', fg = 'NONE' }) - vim.api.nvim_set_hl(0, 'RenderMarkdownH2Bg', { bg = '#3d5f4e', fg = 'NONE' }) - vim.api.nvim_set_hl(0, 'RenderMarkdownH3Bg', { bg = '#5f5e3a', fg = 'NONE' }) - vim.api.nvim_set_hl(0, 'RenderMarkdownH4Bg', { bg = '#5f4a3e', fg = 'NONE' }) - vim.api.nvim_set_hl(0, 'RenderMarkdownH5Bg', { bg = '#4e4a5f', fg = 'NONE' }) - vim.api.nvim_set_hl(0, 'RenderMarkdownH6Bg', { bg = '#4a5e5f', fg = 'NONE' }) - - -- Bold, colored heading text - vim.api.nvim_set_hl(0, 'RenderMarkdownH1', { fg = '#88c0d0', bold = true }) - vim.api.nvim_set_hl(0, 'RenderMarkdownH2', { fg = '#a3be8c', bold = true }) - vim.api.nvim_set_hl(0, 'RenderMarkdownH3', { fg = '#ebcb8b', bold = true }) - vim.api.nvim_set_hl(0, 'RenderMarkdownH4', { fg = '#d08770', bold = true }) - vim.api.nvim_set_hl(0, 'RenderMarkdownH5', { fg = '#b48ead', bold = true }) - vim.api.nvim_set_hl(0, 'RenderMarkdownH6', { fg = '#8fbcbb', bold = true }) - end, - }) - - -- Apply highlights immediately - vim.schedule(function() - vim.cmd('doautocmd ColorScheme') - end) - end, - }, - - -- Code formatting - { import = "plugins.prettier" }, - - -- Copilot - { - "zbirenbaum/copilot.lua", - event = "InsertEnter", - opts = { - suggestion = { enabled = true }, - panel = { enabled = true }, }, - }, - - -- Indent guides - { - "lukas-reineke/indent-blankline.nvim", - main = "ibl", - opts = {}, - }, - -- UFO (folding) - { - "kevinhwang91/nvim-ufo", - dependencies = { "kevinhwang91/promise-async" }, - event = "BufReadPost", - config = function() - vim.o.foldcolumn = "0" - vim.o.foldlevel = 99 - vim.o.foldlevelstart = 99 - vim.o.foldenable = true + -- File explorer + { import = "plugins.nvim-tree" }, - require("ufo").setup({ - provider_selector = function(bufnr, filetype, buftype) - -- Disable for latex and markdown files - if filetype == "tex" or filetype == "latex" or filetype == "markdown" then - return "" - end - return { "treesitter", "indent" } + -- Treesitter + { import = "plugins.treesitter" }, + + -- Rainbow delimiters + { import = "plugins.rainbow_delimiters" }, + + -- Git integration + { + "lewis6991/gitsigns.nvim", + event = { "BufReadPre", "BufNewFile" }, + opts = { + signs = { + add = { text = "│" }, + change = { text = "│" }, + delete = { text = "_" }, + topdelete = { text = "‾" }, + changedelete = { text = "~" }, + untracked = { text = "┆" }, + }, + signcolumn = false, -- Disable signs by default + numhl = false, -- Disable number highlights by default + linehl = false, -- Disable line highlights by default + word_diff = false, + current_line_blame = false, + } + }, + { + "tpope/vim-fugitive", + cmd = { "Git", "Gvdiffsplit" }, + }, + { + "kdheepak/lazygit.nvim", + dependencies = { "nvim-lua/plenary.nvim" }, + cmd = { + "LazyGit", + "LazyGitConfig", + "LazyGitCurrentFile", + "LazyGitFilter", + "LazyGitFilterCurrentFile", + }, + keys = { + { "gg", "LazyGit", desc = "LazyGit" }, + }, + }, + + -- Status line + { import = "plugins.lualine" }, + + -- Tmux statusline generator (run :TmuxlineSnapshot ~/.config/tmux/themes/tmuxline.tmux) + { + "edkolev/tmuxline.vim", + cmd = { "Tmuxline", "TmuxlineSnapshot" }, + config = function() + vim.g.tmuxline_separators = { + left = "", + left_alt = "", + right = "", + right_alt = "", + space = " ", + } + vim.g.tmuxline_preset = { + a = "#S", + win = "#I #W", + cwin = "#I #W", + y = "%H:%M", + z = "%d %b", + } end, - }) - end, - }, + }, + + -- FZF + { + "junegunn/fzf", + build = function() + vim.fn["fzf#install"]() + end, + }, + { "junegunn/fzf.vim" }, + + -- Productivity + { "numToStr/Comment.nvim", event = "VeryLazy", opts = {} }, + { "windwp/nvim-autopairs", event = "InsertEnter", opts = {} }, + { "tpope/vim-surround", event = "VeryLazy" }, + + -- -- Tmux navigation + -- { "christoomey/vim-tmux-navigator" }, + + -- LaTeX + { import = "plugins.vimtex" }, + + -- Org-mode + { + "nvim-orgmode/orgmode", + dependencies = { "nvim-treesitter/nvim-treesitter" }, + opts = {}, + }, + + -- Telescope + { + "nvim-telescope/telescope.nvim", + dependencies = { "nvim-lua/plenary.nvim" }, + keys = { + { "ff", ":Telescope find_files", desc = "Find files" }, + { "fg", ":Telescope live_grep", desc = "Live grep" }, + { "fb", ":Telescope buffers", desc = "Buffers" }, + { "fh", ":Telescope help_tags", desc = "Help tags" }, + }, + }, + + -- Yazi file manager + { + "mikavilpas/yazi.nvim", + keys = { + { "y", ":Yazi", desc = "Open Yazi" }, + }, + opts = { + open_for_directories = false, + keymaps = { + show_help = "", + }, + }, + }, + + -- Markdown + { "SidOfc/mkdx", ft = "markdown" }, + { + "MeanderingProgrammer/render-markdown.nvim", + dependencies = { "nvim-treesitter/nvim-treesitter", "echasnovski/mini.icons" }, + ft = { "markdown", "norg", "rmd", "org" }, + config = function() + require('render-markdown').setup({ + heading = { + enabled = true, + sign = true, + position = 'overlay', + icons = { '󰲡 ', '󰲣 ', '󰲥 ', '󰲧 ', '󰲩 ', '󰲫 ' }, + backgrounds = { + 'RenderMarkdownH1Bg', + 'RenderMarkdownH2Bg', + 'RenderMarkdownH3Bg', + 'RenderMarkdownH4Bg', + 'RenderMarkdownH5Bg', + 'RenderMarkdownH6Bg', + }, + foregrounds = { + 'RenderMarkdownH1', + 'RenderMarkdownH2', + 'RenderMarkdownH3', + 'RenderMarkdownH4', + 'RenderMarkdownH5', + 'RenderMarkdownH6', + }, + }, + }) + end, + }, + + -- Code formatting + { import = "plugins.prettier" }, + + -- Copilot + { + "zbirenbaum/copilot.lua", + event = "InsertEnter", + opts = { + suggestion = { enabled = true }, + panel = { enabled = true }, + }, + }, + + -- Indent guides + { + "lukas-reineke/indent-blankline.nvim", + main = "ibl", + event = { "BufReadPost", "BufNewFile" }, + opts = {}, + }, + + -- UFO (folding) + { + "kevinhwang91/nvim-ufo", + dependencies = { "kevinhwang91/promise-async" }, + event = "BufReadPost", + config = function() + vim.o.foldcolumn = "0" + vim.o.foldlevel = 99 + vim.o.foldlevelstart = 99 + vim.o.foldenable = true + + require("ufo").setup({ + provider_selector = function(bufnr, filetype, buftype) + -- Disable for latex and markdown files + if filetype == "tex" or filetype == "latex" or filetype == "markdown" then + return "" + end + return { "treesitter", "indent" } + end, + }) + end, + }, } diff --git a/nvim/lua/plugins/lualine.lua b/nvim/lua/plugins/lualine.lua index d8b1ddd..8e73892 100644 --- a/nvim/lua/plugins/lualine.lua +++ b/nvim/lua/plugins/lualine.lua @@ -1,67 +1,66 @@ local colors = { - bg = "none", - fg = "#ebdbb2", - yellow = "#fabd2f", - cyan = "#8ec07c", - darkblue = "#458588", - green = "#b8bb26", - orange = "#fe8019", - violet = "#d3869b", - magenta = "#d3869b", - blue = "#83a598", - red = "#fb4934", - grey = "#504945", - black = "#282828", - white = "#fbf1c7", - darkgrey = "#3c3836", - lightgrey = "#665c54", + base = "#1e1e2e", + surface0 = "#313244", + surface1 = "#45475a", + overlay0 = "#6c7086", + text = "#cdd6f4", + subtext = "#a6adc8", + crust = "#11111b", + mauve = "#cba6f7", + blue = "#89b4fa", + green = "#a6e3a1", + red = "#f38ba8", + yellow = "#f9e2af", + peach = "#fab387", + lavender = "#b4befe", + cyan = "#94e2d5", } local theme = { normal = { - a = { fg = colors.black, bg = colors.blue, gui = "bold" }, - b = { fg = colors.blue, bg = colors.grey }, - c = { fg = colors.white, bg = colors.darkgrey }, - x = { fg = colors.white, bg = colors.darkgrey }, - y = { fg = colors.blue, bg = colors.grey }, - z = { fg = colors.black, bg = colors.blue, gui = "bold" }, + a = { fg = colors.crust, bg = colors.mauve, gui = "bold" }, + b = { fg = colors.mauve, bg = colors.surface1 }, + c = { fg = colors.text, bg = colors.base }, + x = { fg = colors.text, bg = colors.base }, + y = { fg = colors.mauve, bg = colors.surface1 }, + z = { fg = colors.crust, bg = colors.mauve, gui = "bold" }, }, insert = { - a = { fg = colors.black, bg = colors.green, gui = "bold" }, - b = { fg = colors.green, bg = colors.grey }, - c = { fg = colors.white, bg = colors.darkgrey }, - x = { fg = colors.white, bg = colors.darkgrey }, - y = { fg = colors.green, bg = colors.grey }, - z = { fg = colors.black, bg = colors.green, gui = "bold" }, + a = { fg = colors.crust, bg = colors.green, gui = "bold" }, + b = { fg = colors.green, bg = colors.surface1 }, + c = { fg = colors.text, bg = colors.base }, + x = { fg = colors.text, bg = colors.base }, + y = { fg = colors.green, bg = colors.surface1 }, + z = { fg = colors.crust, bg = colors.green, gui = "bold" }, }, visual = { - a = { fg = colors.black, bg = colors.magenta, gui = "bold" }, - b = { fg = colors.magenta, bg = colors.grey }, - c = { fg = colors.white, bg = colors.darkgrey }, - x = { fg = colors.white, bg = colors.darkgrey }, - y = { fg = colors.magenta, bg = colors.grey }, - z = { fg = colors.black, bg = colors.magenta, gui = "bold" }, + a = { fg = colors.crust, bg = colors.lavender, gui = "bold" }, + b = { fg = colors.lavender, bg = colors.surface1 }, + c = { fg = colors.text, bg = colors.base }, + x = { fg = colors.text, bg = colors.base }, + y = { fg = colors.lavender, bg = colors.surface1 }, + z = { fg = colors.crust, bg = colors.lavender, gui = "bold" }, }, replace = { - a = { fg = colors.black, bg = colors.red, gui = "bold" }, - b = { fg = colors.red, bg = colors.grey }, - c = { fg = colors.white, bg = colors.darkgrey }, - x = { fg = colors.white, bg = colors.darkgrey }, - y = { fg = colors.red, bg = colors.grey }, - z = { fg = colors.black, bg = colors.red, gui = "bold" }, + a = { fg = colors.crust, bg = colors.red, gui = "bold" }, + b = { fg = colors.red, bg = colors.surface1 }, + c = { fg = colors.text, bg = colors.base }, + x = { fg = colors.text, bg = colors.base }, + y = { fg = colors.red, bg = colors.surface1 }, + z = { fg = colors.crust, bg = colors.red, gui = "bold" }, }, command = { - a = { fg = colors.black, bg = colors.yellow, gui = "bold" }, - b = { fg = colors.yellow, bg = colors.grey }, - c = { fg = colors.white, bg = colors.darkgrey }, - x = { fg = colors.white, bg = colors.darkgrey }, - y = { fg = colors.yellow, bg = colors.grey }, - z = { fg = colors.black, bg = colors.yellow, gui = "bold" }, + a = { fg = colors.crust, bg = colors.yellow, gui = "bold" }, + b = { fg = colors.yellow, bg = colors.surface1 }, + c = { fg = colors.text, bg = colors.base }, + x = { fg = colors.text, bg = colors.base }, + y = { fg = colors.yellow, bg = colors.surface1 }, + z = { fg = colors.crust, bg = colors.yellow, gui = "bold" }, }, inactive = { - a = { fg = colors.white, bg = colors.darkgrey }, - b = { fg = colors.white, bg = colors.darkgrey }, - c = { fg = colors.white, bg = colors.darkgrey }, + a = { fg = colors.subtext, bg = colors.base }, + b = { fg = colors.subtext, bg = colors.base }, + c = { fg = colors.subtext, bg = colors.base }, }, } @@ -146,7 +145,7 @@ return { end return "󰅠 " .. table.concat(client_names, ", ") end, - color = { fg = colors.cyan }, + color = { fg = colors.cyan }, separator = { left = "" } }, { diff --git a/nvim/lua/settings.lua b/nvim/lua/settings.lua index 8f32609..c2202b6 100644 --- a/nvim/lua/settings.lua +++ b/nvim/lua/settings.lua @@ -1,19 +1,19 @@ -- Global settings -vim.opt.tabstop = 4 -- Number of spaces that a counts for -vim.opt.shiftwidth = 4 -- Number of spaces for indentation -vim.opt.expandtab = true -- Use spaces instead of tabs -vim.opt.cmdheight = 0 -- Hide command line when not in use +vim.opt.tabstop = 4 -- Number of spaces that a counts for +vim.opt.shiftwidth = 4 -- Number of spaces for indentation +vim.opt.expandtab = true -- Use spaces instead of tabs +vim.opt.cmdheight = 0 -- Hide command line when not in use -vim.cmd([[highlight CursorLine guibg=#3c3836]]) -- Darker background for the line -vim.cmd([[highlight CursorColumn guibg=#504945]]) -- Slightly darker for the column +vim.cmd([[highlight CursorLine guibg=#313244]]) -- Catppuccin surface0 +vim.cmd([[highlight CursorColumn guibg=#45475a]]) -- Catppuccin surface1 -vim.cmd([[set incsearch ]]) -- Enables incremental search -vim.cmd([[set hlsearch ]]) -- Highlights search results -vim.cmd([[set ignorecase]]) -- Case insensitive search -vim.cmd([[set smartcase ]]) -- Case sensitive if uppercase letters are used +vim.cmd([[set incsearch ]]) -- Enables incremental search +vim.cmd([[set hlsearch ]]) -- Highlights search results +vim.cmd([[set ignorecase]]) -- Case insensitive search +vim.cmd([[set smartcase ]]) -- Case sensitive if uppercase letters are used --- Coloscheme -vim.cmd([[colorscheme gruvbox]]) +-- Colorscheme +vim.cmd([[colorscheme catppuccin-mocha]]) vim.cmd([[set spelllang=en]]) @@ -26,10 +26,10 @@ vim.o.title = true vim.o.titlestring = "nvim: %f" vim.api.nvim_create_autocmd("FileType", { - pattern = "lua", - callback = function() - vim.opt_local.foldmethod = "marker" - vim.opt_local.foldlevel = 99 -- so folds are open by default - vim.opt_local.fileencoding = "utf-8" - end, + pattern = "lua", + callback = function() + vim.opt_local.foldmethod = "marker" + vim.opt_local.foldlevel = 99 -- so folds are open by default + vim.opt_local.fileencoding = "utf-8" + end, }) diff --git a/tmux/.tmux.conf b/tmux/.tmux.conf deleted file mode 100644 index 9dc4bf3..0000000 --- a/tmux/.tmux.conf +++ /dev/null @@ -1,59 +0,0 @@ -# Reset prefix to Ctrl-b -unbind C-a # Unbind any custom prefixes (e.g., Ctrl-a) -set-option -g prefix C-b -bind C-b send-prefix # Ensure Ctrl-b works as the prefix -# Sensible Defaults -set -g mouse on # Enable mouse support -set -g history-limit 10000 # Large scrollback history -setw -g automatic-rename off # Keep pane names static -set -g base-index 1 # Pane numbering starts at 1 -setw -g pane-base-index 1 # Pane numbering starts at 1 -set-option -g status-keys vi # Use vi-style keybindings - -# Status Bar Customization -set -g status off -set -g status-bg black -set -g status-fg white -set -g status-interval 5 - -# Left: Session name -set -g status-left "#S " - -# Right: Time and date -set -g status-right "%H:%M | %d-%b-%Y" - -# Window options -setw -g window-status-format " #I:#W " -setw -g window-status-current-format " #I:#W " -setw -g window-status-separator "" - - -# Key Bindings -bind r source-file ~/.config/tmux/.tmux.conf \; display-message "Config Reloaded" -bind \\ split-window -h # Split panes horizontally -bind - split-window -v # Split panes vertically -bind h select-pane -L # Move between panes -bind j select-pane -D -bind k select-pane -U -bind l select-pane -R - -# Resize panes -bind -r C-h resize-pane -L 5 -bind -r C-j resize-pane -D 5 -bind -r C-k resize-pane -U 5 -bind -r C-l resize-pane -R 5 - -# Copy Mode -setw -g mode-keys vi # Vi copy mode -bind-key -T copy-mode-vi v send -X begin-selection -bind-key -T copy-mode-vi y send -X copy-selection \; send-keys -X cancel - -# Plugins (optional) -set -g @plugin 'tmux-plugins/tpm' # Tmux Plugin Manager -set -g @plugin 'tmux-plugins/tmux-sensible' -set -g @plugin 'tmux-plugins/tmux-resurrect' -set -g @plugin 'tmux-plugins/tmux-prefix-highlight' -set -g @plugin 'tmux-plugins/tmux-powerline' - -# Initialize plugins -run '/opt/homebrew/opt/tpm/share/tpm/tpm' diff --git a/tmux/plugins/tmux-urlview b/tmux/plugins/tmux-urlview new file mode 160000 index 0000000..b84c876 --- /dev/null +++ b/tmux/plugins/tmux-urlview @@ -0,0 +1 @@ +Subproject commit b84c876cffdd22990b4ab51247e795cbd7813d53 diff --git a/tmux/themes/catppuccin.tmux b/tmux/themes/catppuccin.tmux index 3ff2037..81aa283 100644 --- a/tmux/themes/catppuccin.tmux +++ b/tmux/themes/catppuccin.tmux @@ -1,16 +1,28 @@ -# Catppuccin theme preset (sleek minimal) +# Catppuccin Mocha - powerline style + +# Status bar set -g status-style "bg=#1e1e2e,fg=#cdd6f4" -set -g pane-border-style "fg=#a6adc8" -set -g pane-active-border-style "fg=#89b4fa,bold" -set -g message-style "bg=#89b4fa,fg=#1e1e2e,bold" -set -g mode-style "bg=#89b4fa,fg=#1e1e2e,bold" -set -g window-status-style "fg=#a6adc8,bg=#1e1e2e" -set -g window-status-format " #[fg=#a6adc8]#I #[fg=#a6adc8]#W " -set -g window-status-current-style "fg=#1e1e2e,bg=#74c7ec,bold" -set -g window-status-current-format " #[fg=#1e1e2e,bg=#74c7ec,bold]#I #[fg=#1e1e2e,bg=#74c7ec,bold]#W " +# Pane borders +set -g pane-border-style "fg=#313244" +set -g pane-active-border-style "fg=#cba6f7,bold" +set -g pane-border-format "#[fg=#cdd6f4] #P #[fg=#6c7086]| #[fg=#89b4fa]#{pane_current_command} #[fg=#6c7086]| #[fg=#a6adc8]#{pane_current_path}" -set -g status-left "#[fg=#89b4fa,bold] #S " -set -g status-right "#[fg=#a6adc8]#{pane_current_command} #[fg=#a6adc8]| #[fg=#cdd6f4]%H:%M #[fg=#a6adc8]| #[fg=#cdd6f4]%a %d %b " +# Message styling +set -g message-style "bg=#cba6f7,fg=#1e1e2e,bold" +set -g message-command-style "bg=#cba6f7,fg=#1e1e2e,bold" + +# Mode styling +set -g mode-style "bg=#cba6f7,fg=#1e1e2e,bold" + +# Window tabs - inactive subtle, active with powerline arrows +set -g window-status-style "fg=#6c7086,bg=#1e1e2e" +set -g window-status-format " #[fg=#6c7086]#I #W " +set -g window-status-current-style "fg=#1e1e2e,bg=#cba6f7,bold" +set -g window-status-current-format "#[fg=#cba6f7,bg=#1e1e2e] #[fg=#1e1e2e,bg=#cba6f7,bold] #I #[fg=#cba6f7,bg=#89b4fa] #[fg=#1e1e2e,bg=#89b4fa,bold] #W #[fg=#89b4fa,bg=#1e1e2e,nobold] " set -g window-status-separator "" + +# Status bar content +set -g status-left "#[fg=#1e1e2e,bg=#cba6f7,bold] 󰅬 #S #[fg=#cba6f7,bg=#1e1e2e] " +set -g status-right "#[fg=#cba6f7,bg=#1e1e2e]#[fg=#1e1e2e,bg=#cba6f7] %H:%M %d %b " set -g status-justify left diff --git a/tmux/themes/tmuxline.tmux b/tmux/themes/tmuxline.tmux new file mode 100644 index 0000000..41e7059 --- /dev/null +++ b/tmux/themes/tmuxline.tmux @@ -0,0 +1,5 @@ +# This tmux statusbar config was created by tmuxline.vim +# on Sun, 01 Mar 2026 + +set -g status-style fg=colour#3b4261,bg=colour#1e2030 +set -g window-status-current-style fg=colour#828bb8,bg=colour#1e2030 diff --git a/tmux/tmux.conf b/tmux/tmux.conf index 5cb5f50..74df5b7 100644 --- a/tmux/tmux.conf +++ b/tmux/tmux.conf @@ -1,5 +1,5 @@ # ============================================ -# TMUX CONFIGURATION - CLEAN GRUVBOX +# TMUX CONFIGURATION # ============================================ # ============================================ @@ -10,16 +10,16 @@ set -g allow-passthrough on set -ga update-environment TERM set -ga update-environment TERM_PROGRAM -set -g default-terminal "xterm-256color" +set -g default-terminal "tmux-256color" set-option -ga terminal-overrides ",xterm-kitty:Tc,*:Tc,*:RGB" +set -as terminal-features ",xterm-256color:RGB,tmux-256color:RGB" # Shell configuration -set -g default-shell /bin/zsh set -g default-command /bin/zsh # Environment variables for proper shell integration -set -ga update-environment KITTY_WINDOW_ID -set -ga update-environment KITTY_PID +# KITTY_WINDOW_ID and KITTY_PID intentionally NOT passed through +# so Yazi inside tmux doesn't auto-detect Kitty and send kitty graphics protocol set -ga update-environment XDG_CONFIG_HOME set -ga update-environment ZDOTDIR @@ -53,8 +53,8 @@ set -g display-panes-time 2000 # Show messages longer set -g display-time 2000 -# Aggressive resize for multiple clients -setw -g aggressive-resize on +# Resize to largest attached client +set -g window-size largest # ============================================ # VI-LIKE KEYBINDINGS @@ -64,12 +64,7 @@ setw -g aggressive-resize on setw -g mode-keys vi set -g status-keys vi -# Smart pane switching with awareness of Vim splits -is_vim="ps -o state= -o comm= -t '#{pane_tty}' | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'" -bind-key -n 'C-h' if-shell "$is_vim" 'send-keys C-h' 'select-pane -L' -bind-key -n 'C-j' if-shell "$is_vim" 'send-keys C-j' 'select-pane -D' -bind-key -n 'C-k' if-shell "$is_vim" 'send-keys C-k' 'select-pane -U' -bind-key -n 'C-l' if-shell "$is_vim" 'send-keys C-l' 'select-pane -R' +# Smart pane switching with vim awareness handled by vim-tmux-navigator plugin # Vi-like pane resizing bind -r H resize-pane -L 5 @@ -89,18 +84,17 @@ bind Escape copy-mode # PANE MANAGEMENT # ============================================ -# Split panes with v and s (vi-like) +# Split panes with v and s (vi-like), defaults % and " still work bind v split-window -h -c "#{pane_current_path}" bind s split-window -v -c "#{pane_current_path}" -unbind '"' -unbind % +bind % split-window -h -c "#{pane_current_path}" +bind '"' split-window -v -c "#{pane_current_path}" # New window in current path bind c new-window -c "#{pane_current_path}" # Quick pane cycling bind -r C-h select-window -t :- -# bind -r C-l select-window -t :+ # Kill pane without confirmation bind x kill-pane @@ -111,12 +105,6 @@ bind X kill-window # Toggle zoom bind z resize-pane -Z -# Flash currently active pane border (helpful when visually lost) -bind Space display-message "Active pane: #P (#{pane_current_command})" - -# Synchronize panes with status message -bind y set-window-option synchronize-panes \; display-message "Synchronize panes #{?synchronize-panes,ON,OFF}" - # Quick session switching bind S choose-tree -sZ -O name @@ -132,61 +120,48 @@ set -g mouse on # Don't jump to bottom when mouse selecting unbind -T copy-mode-vi MouseDragEnd1Pane -# URL handling - enable clickable URLs -set -g @plugin 'tmux-plugins/tpm' -set -g @plugin 'tmux-plugins/tmux-urlview' - -# Nerd font window name plugin -set -g @plugin 'joshmedeski/tmux-nerd-font-window-name' - # Mouse click behavior - simple pane selection without copy-mode bind-key -T copy-mode-vi MouseDown1Pane select-pane bind-key -T copy-mode MouseDown1Pane select-pane bind-key -n MouseDown1Pane select-pane -t = # ============================================ -# GRUVBOX STYLING +# PLUGINS +# ============================================ + +set -g @plugin 'tmux-plugins/tpm' +set -g @plugin 'tmux-plugins/tmux-sensible' +set -g @plugin 'tmux-plugins/tmux-resurrect' +set -g @plugin 'tmux-plugins/tmux-continuum' +set -g @plugin 'tmux-plugins/tmux-yank' +set -g @plugin 'sainnhe/tmux-fzf' +set -g @plugin 'laktak/extrakto' +set -g @plugin 'wfxr/tmux-fzf-url' +set -g @plugin 'christoomey/vim-tmux-navigator' +set -g @plugin 'fcsonline/tmux-thumbs' +set -g @plugin 'omerxx/tmux-sessionx' +set -g @plugin 'joshmedeski/tmux-nerd-font-window-name' + +# Persist and restore tmux sessions across restarts +set -g @resurrect-capture-pane-contents 'on' +set -g @continuum-restore 'on' +set -g @continuum-save-interval '15' + +# sessionx +set -g @sessionx-bind 'o' + +# tmux-thumbs +set -g @thumbs-key 'f' +set -g @thumbs-command 'echo -n {} | pbcopy && tmux display-message "Copied!"' + +# ============================================ +# STYLING # ============================================ -# Status bar position set -g status-position top - -# Status bar styling -set -g status-style "bg=#3c3836,fg=#ebdbb2" -set -g status-left-length 100 -set -g status-right-length 100 - -# Pane borders (strong active contrast) -set -g pane-border-style "fg=#3c3836" -set -g pane-active-border-style "fg=#fabd2f,bold" - -# Show pane labels on borders for easier focus tracking set -g pane-border-status top -set -g pane-border-format "#[fg=#ebdbb2] #P #[fg=#928374]| #[fg=#83a598]#{pane_current_command} #[fg=#928374]| #[fg=#bdae93]#{pane_current_path}" - -# Message styling -set -g message-style "bg=#d79921,fg=#282828,bold" -set -g message-command-style "bg=#d79921,fg=#282828,bold" - -# Mode styling -set -g mode-style "bg=#d79921,fg=#282828,bold" - -# Colorful window status styling -set -g window-status-style "fg=#a89984,bg=#3c3836" -set -g window-status-format "#[fg=#282828,bg=#504945] #I #[fg=#a89984,bg=#3c3836] #W #[fg=#3c3836,bg=default]" - -# Current window status (powerline highlight) -set -g window-status-current-style "fg=#282828,bg=#fabd2f,bold" -set -g window-status-current-format "#[fg=#282828,bg=#fabd2f,bold] #I #[fg=#282828,bg=#d79921,bold] #W #[fg=#d79921,bg=default]" - -# Status bar content -set -g status-left "#[fg=#282828,bg=#d79921,bold] 󰅬 #S #[fg=#d79921,bg=#3c3836]" -set -g status-right "#[fg=#a89984] %H:%M #[fg=#d79921,bg=#3c3836]#[fg=#282828,bg=#d79921] %d %b " - -# Status bar separators -set -g window-status-separator "" -set -g status-justify left -set -g status-interval 1 +set -g pane-border-format "#[fg=#cdd6f4] #P #[fg=#6c7086]| #[fg=#89b4fa]#{pane_current_command} #[fg=#6c7086]| #[fg=#a6adc8]#{pane_current_path}" +set -g clock-mode-style 24 # Activity monitoring set -g monitor-activity on @@ -198,48 +173,31 @@ set -g monitor-bell on set -g visual-bell off set -g bell-action any -# Clock colors -set -g clock-mode-colour "#d79921" -set -g clock-mode-style 24 - -# Optionally also dim inactive windows further -set -g window-status-style "fg=#928374,bg=#3c3836" - # ============================================ -# TRANSPARENCY SETTINGS +# TRANSPARENCY # ============================================ -# Make pane backgrounds transparent set -g window-style "bg=default" set -g window-active-style "bg=default" # ============================================ -# RELOAD CONFIG +# THEME # ============================================ -source-file ~/.config/tmux/themes/gruvbox.tmux +source-file ~/.config/tmux/themes/tmuxline.tmux -# Toggle top status bar on/off (Prefix + b) -bind b if -F "#{==:#{status},on}" "set -g status off ; set -g pane-border-status off" "set -g status on ; set -g pane-border-status top" +# ============================================ +# KEYBINDINGS +# ============================================ -# Window switching with Prefix + number -bind-key -T prefix 1 select-window -t :=1 -bind-key -T prefix 2 select-window -t :=2 -bind-key -T prefix 3 select-window -t :=3 -bind-key -T prefix 4 select-window -t :=4 -bind-key -T prefix 5 select-window -t :=5 -bind-key -T prefix 6 select-window -t :=6 -bind-key -T prefix 7 select-window -t :=7 -bind-key -T prefix 8 select-window -t :=8 -bind-key -T prefix 9 select-window -t :=9 -bind-key -T prefix 0 select-window -t :=10 +# Three-way toggle: top → bottom → hidden → top +bind b if -F "#{==:#{status},off}" \ + "set -g status on ; set -g status-position top ; set -g pane-border-status top" \ + "if -F '#{==:#{status-position},top}' \ + 'set -g status-position bottom' \ + 'set -g status off ; set -g pane-border-status off'" -# Theme switcher (Prefix + Shift+1/2/3 => !/@/#) -bind ! source-file ~/.config/tmux/themes/gruvbox.tmux -bind @ source-file ~/.config/tmux/themes/catppuccin.tmux -bind '#' source-file ~/.config/tmux/themes/tokyonight.tmux - -# Reload config file with message +# Reload config bind r source-file ~/.config/tmux/tmux.conf \; display-message "󰑓 Config reloaded!" # Initialize TMUX plugin manager (keep this line at the very bottom) diff --git a/yazi/keymap.toml b/yazi/keymap.toml index faf0601..0f3d4d1 100644 --- a/yazi/keymap.toml +++ b/yazi/keymap.toml @@ -104,6 +104,48 @@ keymap = [ # Filter { on = "f", run = "filter --smart", desc = "Filter files" }, + # Copy to destination (Ctrl+Y) + { on = [ "", "h" ], run = "shell 'cp -r \"$@\" ~/' --confirm", desc = "Copy to home" }, + { on = [ "", "c" ], run = "shell 'cp -r \"$@\" ~/.config/' --confirm", desc = "Copy to ~/.config" }, + { on = [ "", "d" ], run = "shell 'cp -r \"$@\" ~/Downloads/' --confirm", desc = "Copy to Downloads" }, + { on = [ "", "D" ], run = "shell 'cp -r \"$@\" ~/Documents/' --confirm", desc = "Copy to Documents" }, + { on = [ "", "w" ], run = "shell 'cp -r \"$@\" ~/Pictures/Wallpapers/' --confirm", desc = "Copy to Wallpapers" }, + + # Copy to Torrents subdirs + { on = [ "", "t", "b" ], run = "shell 'cp -r \"$@\" ~/Torrents/Books/' --confirm", desc = "Copy to Torrents/Books" }, + { on = [ "", "t", "a" ], run = "shell 'cp -r \"$@\" ~/Torrents/Audiobooks/' --confirm", desc = "Copy to Torrents/Audiobooks" }, + { on = [ "", "t", "s" ], run = "shell 'cp -r \"$@\" ~/Torrents/Shows/' --confirm", desc = "Copy to Torrents/Shows" }, + { on = [ "", "t", "m" ], run = "shell 'cp -r \"$@\" ~/Torrents/Movies/' --confirm", desc = "Copy to Torrents/Movies" }, + + # Copy to Obsidian + { on = [ "", "o", "p" ], run = "shell 'cp -r \"$@\" ~/Library/Mobile\\ Documents/iCloud~md~obsidian/Documents/Private/' --confirm", desc = "Copy to Obsidian/Private" }, + { on = [ "", "o", "w" ], run = "shell 'cp -r \"$@\" ~/Library/Mobile\\ Documents/iCloud~md~obsidian/Documents/Work/' --confirm", desc = "Copy to Obsidian/Work" }, + + # Copy to JKU dirs + { on = [ "", "j", "b" ], run = "shell 'cp -r \"$@\" ~/Documents/JKU/Studium/BWL/' --confirm", desc = "Copy to JKU/BWL" }, + { on = [ "", "j", "w" ], run = "shell 'cp -r \"$@\" ~/Documents/JKU/Work/' --confirm", desc = "Copy to JKU/Work" }, + + # Move to destination (Ctrl+X) + { on = [ "", "h" ], run = "shell 'mv \"$@\" ~/' --confirm", desc = "Move to home" }, + { on = [ "", "c" ], run = "shell 'mv \"$@\" ~/.config/' --confirm", desc = "Move to ~/.config" }, + { on = [ "", "d" ], run = "shell 'mv \"$@\" ~/Downloads/' --confirm", desc = "Move to Downloads" }, + { on = [ "", "D" ], run = "shell 'mv \"$@\" ~/Documents/' --confirm", desc = "Move to Documents" }, + { on = [ "", "w" ], run = "shell 'mv \"$@\" ~/Pictures/Wallpapers/' --confirm", desc = "Move to Wallpapers" }, + + # Move to Torrents subdirs + { on = [ "", "t", "b" ], run = "shell 'mv \"$@\" ~/Torrents/Books/' --confirm", desc = "Move to Torrents/Books" }, + { on = [ "", "t", "a" ], run = "shell 'mv \"$@\" ~/Torrents/Audiobooks/' --confirm", desc = "Move to Torrents/Audiobooks" }, + { on = [ "", "t", "s" ], run = "shell 'mv \"$@\" ~/Torrents/Shows/' --confirm", desc = "Move to Torrents/Shows" }, + { on = [ "", "t", "m" ], run = "shell 'mv \"$@\" ~/Torrents/Movies/' --confirm", desc = "Move to Torrents/Movies" }, + + # Move to Obsidian + { on = [ "", "o", "p" ], run = "shell 'mv \"$@\" ~/Library/Mobile\\ Documents/iCloud~md~obsidian/Documents/Private/' --confirm", desc = "Move to Obsidian/Private" }, + { on = [ "", "o", "w" ], run = "shell 'mv \"$@\" ~/Library/Mobile\\ Documents/iCloud~md~obsidian/Documents/Work/' --confirm", desc = "Move to Obsidian/Work" }, + + # Move to JKU dirs + { on = [ "", "j", "b" ], run = "shell 'mv \"$@\" ~/Documents/JKU/Studium/BWL/' --confirm", desc = "Move to JKU/BWL" }, + { on = [ "", "j", "w" ], run = "shell 'mv \"$@\" ~/Documents/JKU/Work/' --confirm", desc = "Move to JKU/Work" }, + # Find { on = "/", run = "find --smart", desc = "Find next file" }, { on = "?", run = "find --previous --smart", desc = "Find previous file" }, @@ -142,17 +184,24 @@ keymap = [ { on = [ "g", "j", "b" ], run = "cd \"~/Documents/JKU/Studium/BWL\"", desc = "Goto BWL" }, { on = [ "g", "j", "w" ], run = "cd \"~/Documents/JKU/Work\"", desc = "Goto Work(local)" }, { on = [ "g", "w" ], run = "cd \"~/Pictures/Wallpapers\"", desc = "Goto Wallpapers)" }, - { on = [ "g", "o", "p" ], run = "cd ~/Library/Mobile\\ Documents/iCloud~md~obsidian/Documents/Privat/", desc = "Goto Obsidian/Privat" }, + { on = [ "g", "o", "p" ], run = "cd ~/Library/Mobile\\ Documents/iCloud~md~obsidian/Documents/Private/", desc = "Goto Obsidian/Privat" }, { on = [ "g", "o", "d" ], run = "shell --confirm 'touch $(date +%F).md'", desc = "Create Daily Note in Obsidian" }, { on = [ "g", "o", "w" ], run = "cd ~/Library/Mobile\\ Documents/iCloud~md~obsidian/Documents/Work/", desc = "Goto Obsidian/Work" }, #Work Related - Network drive - { on = [ "g", "a", "" ], run = "cd /Volumes/AK127132", desc = "Goto AK127132" }, - { on = [ "g", "a", "z" ], run = "cd /Volumes/AK127132/Zeitaufzeichnung", desc = "Goto Zeitaufzeichnung" }, + { on = [ "g", "a", "" ], run = "cd /Volumes/TNHOME/home/AK127132", desc = "Goto AK127132" }, + { on = [ "g", "a", "z" ], run = "cd /Volumes/TNHOME/home/AK127132/Zeitaufzeichnung", desc = "Goto Zeitaufzeichnung" }, { on = [ "g", "i", "" ], run = "cd /Volumes/ipec/intern", desc = "Goto Intern" }, - { on = [ "g", "p", "b" ], run = "cd \"/Volumes/ipec/intern/02_Projekte/P54_EDIH TBI 80 Brückner\"", desc = "Goto Brückner" }, + { on = [ "g", "p", "b" ], run = "cd \"/Volumes/ipec/intern/02_Projekte/P63_Berndorf Band\"", desc = "Goto Berndorf" }, { on = [ "g", "p", "s" ], run = "cd \"/Volumes/ipec/intern/02_Projekte/P42b_Senoplast SenoSmartCoex\"", desc = "Goto SenoSmartCoex" }, - { on = [ "g", "p", "n" ], run = "cd \"/Volumes/ipec/intern/02_Projekte/P59_EDIH TBI 193 Naku\"", desc = "Goto SenoSmartCoex" }, + { on = [ "g", "p", "m" , "" ], run = "cd \"/Volumes/ipec/intern/02_Projekte/P62_MoNoQEL\"", desc = "Goto MoNoQEL" }, + { on = [ "g", "p", "m" , "p" ], run = "cd \"/Volumes/ipec/intern/02_Projekte/P62_MoNoQEL/02 Projektmanagemant/\"", desc = "Goto MoNoQEL/Projektmanagement" }, + { on = [ "g", "p", "m" , "1" ], run = "cd \"/Volumes/ipec/intern/02_Projekte/P62_MoNoQEL/03 Arbeitspakete/AP1 Projektmanagement und Dissemination/\"", desc = "Goto MoNoQEL/AP1 Projektmanagemant & Dissemination" }, + { on = [ "g", "p", "m" , "2" ], run = "cd \"/Volumes/ipec/intern/02_Projekte/P62_MoNoQEL/03 Arbeitspakete/AP2 Grundlagenforschung zu optischen Kontrastmechanismen/\"", desc = "Goto MoNoQEL/AP2 Grundlagenforschung" }, + { on = [ "g", "p", "m" , "3" ], run = "cd \"/Volumes/ipec/intern/02_Projekte/P62_MoNoQEL/03 Arbeitspakete/AP3 Optimierung hochauflösender OCT-Messtechnik/\"", desc = "Goto MoNoQEL/AP3 OCT-Optimierung" }, + { on = [ "g", "p", "m" , "4" ], run = "cd \"/Volumes/ipec/intern/02_Projekte/P62_MoNoQEL/03 Arbeitspakete/AP4 KI-gestützte Bildanalyse und Defektklassifizierung/\"", desc = "Goto MoNoQEL/AP4 Bildanalyse" }, + { on = [ "g", "p", "m" , "5" ], run = "cd \"/Volumes/ipec/intern/02_Projekte/P62_MoNoQEL/03 Arbeitspakete/AP5 Prozessintegration und Inline-Demonstration/\"", desc = "Goto MoNoQEL/AP5 Prozessintegration" }, + { on = [ "g", "p", "m" , "6" ], run = "cd \"/Volumes/ipec/intern/02_Projekte/P62_MoNoQEL/03 Arbeitspakete/AP6 Systemvalidierung und Technologietransfer/\"", desc = "Goto MoNoQEL/AP6 Systemvalidierung" }, { on = [ "g", "i", "p" ], run = "cd \"/Volumes/ipec/intern/05_Institutsbesprechungen/Projektstatusberichte\"", desc = "Goto Projektstatusberichte" }, { on = [ "g", "i", "b" ], run = "cd \"/Volumes/ipec/intern/05_Institutsbesprechungen\"", desc = "Goto Institutsbesprechungen" }, diff --git a/yazi/keymap.toml-1748636568461447 b/yazi/keymap.toml-1748636568461447 deleted file mode 100644 index 6da837d..0000000 --- a/yazi/keymap.toml-1748636568461447 +++ /dev/null @@ -1,388 +0,0 @@ -#. A TOML linter such as https://taplo.tamasfe.dev/ can use this schema to validate your config. -# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas. -"$schema" = "https://yazi-rs.github.io/schemas/keymap.json" - -[manager] - - -keymap = [ - { on = "", run = "escape", desc = "Exit visual mode, clear selected, or cancel search" }, - { on = "", run = "escape", desc = "Exit visual mode, clear selected, or cancel search" }, - { on = "q", run = "quit", desc = "Quit the process" }, - { on = "Q", run = "quit --no-cwd-file", desc = "Quit the process without outputting cwd-file" }, - { on = "", run = "close", desc = "Close the current tab, or quit if it's last" }, - { on = "", run = "suspend", desc = "Suspend the process" }, - - # Hopping - { on = "k", run = "arrow -1", desc = "Move cursor up" }, - { on = "j", run = "arrow 1", desc = "Move cursor down" }, - - { on = "", run = "arrow -1", desc = "Move cursor up" }, - { on = "", run = "arrow 1", desc = "Move cursor down" }, - - { on = "", run = "arrow -50%", desc = "Move cursor up half page" }, - { on = "", run = "arrow 50%", desc = "Move cursor down half page" }, - { on = "", run = "arrow -100%", desc = "Move cursor up one page" }, - { on = "", run = "arrow 100%", desc = "Move cursor down one page" }, - - { on = "", run = "arrow -50%", desc = "Move cursor up half page" }, - { on = "", run = "arrow 50%", desc = "Move cursor down half page" }, - { on = "", run = "arrow -100%", desc = "Move cursor up one page" }, - { on = "", run = "arrow 100%", desc = "Move cursor down one page" }, - - { on = [ "g", "g" ], run = "arrow -99999999", desc = "Move cursor to the top" }, - { on = "G", run = "arrow 99999999", desc = "Move cursor to the bottom" }, - - # Navigation - { on = "h", run = "leave", desc = "Go back to the parent directory" }, - { on = "l", run = "enter", desc = "Enter the child directory" }, - - { on = "", run = "leave", desc = "Go back to the parent directory" }, - { on = "", run = "enter", desc = "Enter the child directory" }, - - { on = "H", run = "back", desc = "Go back to the previous directory" }, - { on = "L", run = "forward", desc = "Go forward to the next directory" }, - - # Toggle - { on = "", run = [ "toggle", "arrow 1" ], desc = "Toggle the current selection state" }, - { on = "", run = "toggle_all --state=on", desc = "Select all files" }, - { on = "", run = "toggle_all", desc = "Invert selection of all files" }, - - # Visual mode - { on = "v", run = "visual_mode", desc = "Enter visual mode (selection mode)" }, - { on = "V", run = "visual_mode --unset", desc = "Enter visual mode (unset mode)" }, - - # Seeking - { on = "K", run = "seek -5", desc = "Seek up 5 units in the preview" }, - { on = "J", run = "seek 5", desc = "Seek down 5 units in the preview" }, - - # Spotting - { on = "", run = "spot", desc = "Spot hovered file" }, - - # Operation - { on = "o", run = "open", desc = "Open selected files" }, - { on = "O", run = "open --interactive", desc = "Open selected files interactively" }, - { on = "", run = "open", desc = "Open selected files" }, - { on = "", run = "open --interactive", desc = "Open selected files interactively" }, - { on = "y", run = "yank", desc = "Yank selected files (copy)" }, - { on = "x", run = "yank --cut", desc = "Yank selected files (cut)" }, - { on = "p", run = "paste", desc = "Paste yanked files" }, - { on = "P", run = "paste --force", desc = "Paste yanked files (overwrite if the destination exists)" }, - { on = "-", run = "link", desc = "Symlink the absolute path of yanked files" }, - { on = "_", run = "link --relative", desc = "Symlink the relative path of yanked files" }, - { on = "", run = "hardlink", desc = "Hardlink yanked files" }, - { on = "Y", run = "unyank", desc = "Cancel the yank status" }, - { on = "X", run = "unyank", desc = "Cancel the yank status" }, - { on = "d", run = "remove", desc = "Trash selected files" }, - { on = "D", run = "remove --permanently", desc = "Permanently delete selected files" }, - { on = "a", run = "create", desc = "Create a file (ends with / for directories)" }, - { on = "r", run = "rename --cursor=before_ext", desc = "Rename selected file(s)" }, - { on = ";", run = "shell --interactive", desc = "Run a shell command" }, - { on = ":", run = "shell --block --interactive", desc = "Run a shell command (block until finishes)" }, - { on = ".", run = "hidden toggle", desc = "Toggle the visibility of hidden files" }, - { on = "s", run = "search --via=fd", desc = "Search files by name via fd" }, - { on = "S", run = "search --via=rg", desc = "Search files by content via ripgrep" }, - { on = "", run = "escape --search", desc = "Cancel the ongoing search" }, - { on = "z", run = "plugin zoxide", desc = "Jump to a directory via zoxide" }, - { on = "Z", run = "plugin fzf", desc = "Jump to a file/directory via fzf" }, - - # Linemode - { on = [ "m", "s" ], run = "linemode size", desc = "Linemode: size" }, - { on = [ "m", "p" ], run = "linemode permissions", desc = "Linemode: permissions" }, - { on = [ "m", "b" ], run = "linemode btime", desc = "Linemode: btime" }, - { on = [ "m", "m" ], run = "linemode mtime", desc = "Linemode: mtime" }, - { on = [ "m", "o" ], run = "linemode owner", desc = "Linemode: owner" }, - { on = [ "m", "n" ], run = "linemode none", desc = "Linemode: none" }, - - # Copy - { on = [ "c", "c" ], run = "copy path", desc = "Copy the file path" }, - { on = [ "c", "d" ], run = "copy dirname", desc = "Copy the directory path" }, - { on = [ "c", "f" ], run = "copy filename", desc = "Copy the filename" }, - { on = [ "c", "n" ], run = "copy name_without_ext", desc = "Copy the filename without extension" }, - - # Filter - { on = "f", run = "filter --smart", desc = "Filter files" }, - - # Find - { on = "/", run = "find --smart", desc = "Find next file" }, - { on = "?", run = "find --previous --smart", desc = "Find previous file" }, - { on = "n", run = "find_arrow", desc = "Goto the next found" }, - { on = "N", run = "find_arrow --previous", desc = "Goto the previous found" }, - - # Sorting - { on = [ ",", "m" ], run = [ "sort mtime --reverse=no", "linemode mtime" ], desc = "Sort by modified time" }, - { on = [ ",", "M" ], run = [ "sort mtime --reverse", "linemode mtime" ], desc = "Sort by modified time (reverse)" }, - { on = [ ",", "b" ], run = [ "sort btime --reverse=no", "linemode btime" ], desc = "Sort by birth time" }, - { on = [ ",", "B" ], run = [ "sort btime --reverse", "linemode btime" ], desc = "Sort by birth time (reverse)" }, - { on = [ ",", "e" ], run = "sort extension --reverse=no", desc = "Sort by extension" }, - { on = [ ",", "E" ], run = "sort extension --reverse", desc = "Sort by extension (reverse)" }, - { on = [ ",", "a" ], run = "sort alphabetical --reverse=no", desc = "Sort alphabetically" }, - { on = [ ",", "A" ], run = "sort alphabetical --reverse", desc = "Sort alphabetically (reverse)" }, - { on = [ ",", "n" ], run = "sort natural --reverse=no", desc = "Sort naturally" }, - { on = [ ",", "N" ], run = "sort natural --reverse", desc = "Sort naturally (reverse)" }, - { on = [ ",", "s" ], run = [ "sort size --reverse=no", "linemode size" ], desc = "Sort by size" }, - { on = [ ",", "S" ], run = [ "sort size --reverse", "linemode size" ], desc = "Sort by size (reverse)" }, - { on = [ ",", "r" ], run = "sort random --reverse=no", desc = "Sort randomly" }, - - # Goto - { on = [ "g", "h" ], run = "cd ~", desc = "Go home" }, - { on = [ "g", "c" ], run = "cd ~/.config", desc = "Goto ~/.config" }, - { on = [ "g", "v" ], run = "cd /Volumes", desc = "Goto /Volumes" }, - #Media and Docs - { on = [ "g", "d" ], run = "cd ~/Downloads", desc = "Goto ~/Downloads" }, - { on = [ "g", "D" ], run = "cd ~/Documents", desc = "Goto ~/Documents" }, - { on = [ "g", "t" , "" ], run = "cd ~/Torrents", desc = "Goto ~/Torrents" }, - { on = [ "g", "t", "b"], run = "cd ~/Torrents/Books", desc = "Goto Books" }, - { on = [ "g", "t", "a"], run = "cd ~/Torrents/Audiobooks", desc = "Goto Books" }, - { on = [ "g", "t", "s"], run = "cd ~/Torrents/Shows", desc = "Goto Shows" }, - { on = [ "g", "t", "m"], run = "cd ~/Torrents/Movies", desc = "Goto Shows" }, - { on = [ "g", "s" ], run = "cd \"~/Music/Sheet Music/Alto Saxophone\"", desc = "Goto Sax Sheets" }, - #Studies - { on = [ "g", "j", "b" ], run = "cd \"~/Documents/JKU/Studium/BWL\"", desc = "Goto BWL" }, - { on = [ "g", "j", "w" ], run = "cd \"~/Documents/JKU/Work\"", desc = "Goto Work(local)" }, - { on = [ "g", "o", "p" ], run = "cd ~/Library/Mobile\\ Documents/iCloud~md~obsidian/Documents/Privat/", desc = "Goto Obsidian/Privat" }, - { on = [ "g", "o", "d" ], run = "shell --confirm 'touch $(date +%F).md'", desc = "Create Daily Note in Obsidian" }, - { on = [ "g", "o", "w" ], run = "cd ~/Library/Mobile\\ Documents/iCloud~md~obsidian/Documents/Work/", desc = "Goto Obsidian/Work" }, - #Work Related - Network drive - { on = [ "g", "a", "" ], run = "cd /Volumes/AK127132", desc = "Goto AK127132" }, - { on = [ "g", "a", "z" ], run = "cd /Volumes/AK127132/Zeitaufzeichnung", desc = "Goto Zeitaufzeichnung" }, - - { on = [ "g", "i", "" ], run = "cd /Volumes/ipec/intern", desc = "Goto Intern" }, - { on = [ "g", "p", "b" ], run = "cd \"/Volumes/ipec/intern/02_Projekte/P54_EDIH TBI 80 Brückner\"", desc = "Goto Brückner" }, - { on = [ "g", "p", "s" ], run = "cd \"/Volumes/ipec/intern/02_Projekte/P42b_Senoplast SenoSmartCoex\"", desc = "Goto SenoSmartCoex" }, - { on = [ "g", "i", "p" ], run = "cd \"/Volumes/ipec/intern/05_Institutsbesprechungen/Projektstatusberichte\"", desc = "Goto Projektstatusberichte" }, - { on = [ "g", "i", "b" ], run = "cd \"/Volumes/ipec/intern/05_Institutsbesprechungen\"", desc = "Goto Institutsbesprechungen" }, - - { on = [ "g", "" ], run = "cd --interactive", desc = "Jump interactively" }, - - - { on = "R", run = "open -a Finder .", desc = "Open current folder in Finder" }, - # Tabs - { on = "t", run = "tab_create --current", desc = "Create a new tab with CWD" }, - - { on = "1", run = "tab_switch 0", desc = "Switch to the first tab" }, - { on = "2", run = "tab_switch 1", desc = "Switch to the second tab" }, - { on = "3", run = "tab_switch 2", desc = "Switch to the third tab" }, - { on = "4", run = "tab_switch 3", desc = "Switch to the fourth tab" }, - { on = "5", run = "tab_switch 4", desc = "Switch to the fifth tab" }, - { on = "6", run = "tab_switch 5", desc = "Switch to the sixth tab" }, - { on = "7", run = "tab_switch 6", desc = "Switch to the seventh tab" }, - { on = "8", run = "tab_switch 7", desc = "Switch to the eighth tab" }, - { on = "9", run = "tab_switch 8", desc = "Switch to the ninth tab" }, - - { on = "[", run = "tab_switch -1 --relative", desc = "Switch to the previous tab" }, - { on = "]", run = "tab_switch 1 --relative", desc = "Switch to the next tab" }, - - { on = "{", run = "tab_swap -1", desc = "Swap current tab with previous tab" }, - { on = "}", run = "tab_swap 1", desc = "Swap current tab with next tab" }, - - # Tasks - { on = "w", run = "tasks_show", desc = "Show task manager" }, - - # Help - { on = "~", run = "help", desc = "Open help" }, - { on = "", run = "help", desc = "Open help" }, -] - -[tasks] - -keymap = [ - { on = "", run = "close", desc = "Close task manager" }, - { on = "", run = "close", desc = "Close task manager" }, - { on = "", run = "close", desc = "Close task manager" }, - { on = "w", run = "close", desc = "Close task manager" }, - - { on = "k", run = "arrow -1", desc = "Move cursor up" }, - { on = "j", run = "arrow 1", desc = "Move cursor down" }, - - { on = "", run = "arrow -1", desc = "Move cursor up" }, - { on = "", run = "arrow 1", desc = "Move cursor down" }, - - { on = "", run = "inspect", desc = "Inspect the task" }, - { on = "x", run = "cancel", desc = "Cancel the task" }, - - # Help - { on = "~", run = "help", desc = "Open help" }, - { on = "", run = "help", desc = "Open help" }, -] - -[spot] - -keymap = [ - { on = "", run = "close", desc = "Close the spot" }, - { on = "", run = "close", desc = "Close the spot" }, - { on = "", run = "close", desc = "Close the spot" }, - { on = "", run = "close", desc = "Close the spot" }, - - { on = "k", run = "arrow -1", desc = "Move cursor up" }, - { on = "j", run = "arrow 1", desc = "Move cursor down" }, - { on = "h", run = "swipe -1", desc = "Swipe to the next file" }, - { on = "l", run = "swipe 1", desc = "Swipe to the previous file" }, - - { on = "", run = "arrow -1", desc = "Move cursor up" }, - { on = "", run = "arrow 1", desc = "Move cursor down" }, - { on = "", run = "swipe -1", desc = "Swipe to the next file" }, - { on = "", run = "swipe 1", desc = "Swipe to the previous file" }, - - # Copy - { on = [ "c", "c" ], run = "copy cell", desc = "Copy selected cell" }, - - # Help - { on = "~", run = "help", desc = "Open help" }, - { on = "", run = "help", desc = "Open help" }, -] - -[pick] - -keymap = [ - { on = "", run = "close", desc = "Cancel pick" }, - { on = "", run = "close", desc = "Cancel pick" }, - { on = "", run = "close", desc = "Cancel pick" }, - { on = "", run = "close --submit", desc = "Submit the pick" }, - - { on = "k", run = "arrow -1", desc = "Move cursor up" }, - { on = "j", run = "arrow 1", desc = "Move cursor down" }, - - { on = "", run = "arrow -1", desc = "Move cursor up" }, - { on = "", run = "arrow 1", desc = "Move cursor down" }, - - # Help - { on = "~", run = "help", desc = "Open help" }, - { on = "", run = "help", desc = "Open help" }, -] - -[input] - -keymap = [ - { on = "", run = "close", desc = "Cancel input" }, - { on = "", run = "close --submit", desc = "Submit input" }, - { on = "", run = "escape", desc = "Go back the normal mode, or cancel input" }, - { on = "", run = "escape", desc = "Go back the normal mode, or cancel input" }, - - # Mode - { on = "i", run = "insert", desc = "Enter insert mode" }, - { on = "a", run = "insert --append", desc = "Enter append mode" }, - { on = "I", run = [ "move -999", "insert" ], desc = "Move to the BOL, and enter insert mode" }, - { on = "A", run = [ "move 999", "insert --append" ], desc = "Move to the EOL, and enter append mode" }, - { on = "v", run = "visual", desc = "Enter visual mode" }, - { on = "V", run = [ "move -999", "visual", "move 999" ], desc = "Enter visual mode and select all" }, - - # Character-wise movement - { on = "h", run = "move -1", desc = "Move back a character" }, - { on = "l", run = "move 1", desc = "Move forward a character" }, - { on = "", run = "move -1", desc = "Move back a character" }, - { on = "", run = "move 1", desc = "Move forward a character" }, - { on = "", run = "move -1", desc = "Move back a character" }, - { on = "", run = "move 1", desc = "Move forward a character" }, - - # Word-wise movement - { on = "b", run = "backward", desc = "Move back to the start of the current or previous word" }, - { on = "w", run = "forward", desc = "Move forward to the start of the next word" }, - { on = "e", run = "forward --end-of-word", desc = "Move forward to the end of the current or next word" }, - { on = "", run = "backward", desc = "Move back to the start of the current or previous word" }, - { on = "", run = "forward --end-of-word", desc = "Move forward to the end of the current or next word" }, - - # Line-wise movement - { on = "0", run = "move -999", desc = "Move to the BOL" }, - { on = "$", run = "move 999", desc = "Move to the EOL" }, - { on = "", run = "move -999", desc = "Move to the BOL" }, - { on = "", run = "move 999", desc = "Move to the EOL" }, - { on = "", run = "move -999", desc = "Move to the BOL" }, - { on = "", run = "move 999", desc = "Move to the EOL" }, - - # Delete - { on = "", run = "backspace", desc = "Delete the character before the cursor" }, - { on = "", run = "backspace --under", desc = "Delete the character under the cursor" }, - { on = "", run = "backspace", desc = "Delete the character before the cursor" }, - { on = "", run = "backspace --under", desc = "Delete the character under the cursor" }, - - # Kill - { on = "", run = "kill bol", desc = "Kill backwards to the BOL" }, - { on = "", run = "kill eol", desc = "Kill forwards to the EOL" }, - { on = "", run = "kill backward", desc = "Kill backwards to the start of the current word" }, - { on = "", run = "kill forward", desc = "Kill forwards to the end of the current word" }, - - # Cut/Yank/Paste - { on = "d", run = "delete --cut", desc = "Cut the selected characters" }, - { on = "D", run = [ "delete --cut", "move 999" ], desc = "Cut until the EOL" }, - { on = "c", run = "delete --cut --insert", desc = "Cut the selected characters, and enter insert mode" }, - { on = "C", run = [ "delete --cut --insert", "move 999" ], desc = "Cut until the EOL, and enter insert mode" }, - { on = "x", run = [ "delete --cut", "move 1 --in-operating" ], desc = "Cut the current character" }, - { on = "y", run = "yank", desc = "Copy the selected characters" }, - { on = "p", run = "paste", desc = "Paste the copied characters after the cursor" }, - { on = "P", run = "paste --before", desc = "Paste the copied characters before the cursor" }, - - # Undo/Redo - { on = "u", run = "undo", desc = "Undo the last operation" }, - { on = "", run = "redo", desc = "Redo the last operation" }, - - # Help - { on = "~", run = "help", desc = "Open help" }, - { on = "", run = "help", desc = "Open help" }, -] - -[confirm] - -keymap = [ - { on = "", run = "close", desc = "Cancel the confirm" }, - { on = "", run = "close", desc = "Cancel the confirm" }, - { on = "", run = "close", desc = "Cancel the confirm" }, - { on = "", run = "close --submit", desc = "Submit the confirm" }, - - { on = "n", run = "close", desc = "Cancel the confirm" }, - { on = "y", run = "close --submit", desc = "Submit the confirm" }, - - { on = "k", run = "arrow -1", desc = "Move cursor up" }, - { on = "j", run = "arrow 1", desc = "Move cursor down" }, - - { on = "", run = "arrow -1", desc = "Move cursor up" }, - { on = "", run = "arrow 1", desc = "Move cursor down" }, - - # Help - { on = "~", run = "help", desc = "Open help" }, - { on = "", run = "help", desc = "Open help" }, -] - -[completion] - -keymap = [ - { on = "", run = "close", desc = "Cancel completion" }, - { on = "", run = "close --submit", desc = "Submit the completion" }, - { on = "", run = [ "close --submit", "close_input --submit" ], desc = "Submit the completion and input" }, - - { on = "", run = "arrow -1", desc = "Move cursor up" }, - { on = "", run = "arrow 1", desc = "Move cursor down" }, - - { on = "", run = "arrow -1", desc = "Move cursor up" }, - { on = "", run = "arrow 1", desc = "Move cursor down" }, - - { on = "", run = "arrow -1", desc = "Move cursor up" }, - { on = "", run = "arrow 1", desc = "Move cursor down" }, - - # Help - { on = "~", run = "help", desc = "Open help" }, - { on = "", run = "help", desc = "Open help" }, -] - -[help] - -keymap = [ - { on = "", run = "escape", desc = "Clear the filter, or hide the help" }, - { on = "", run = "escape", desc = "Clear the filter, or hide the help" }, - { on = "", run = "close", desc = "Hide the help" }, - - # Navigation - { on = "k", run = "arrow -1", desc = "Move cursor up" }, - { on = "j", run = "arrow 1", desc = "Move cursor down" }, - - { on = "", run = "arrow -1", desc = "Move cursor up" }, - { on = "", run = "arrow 1", desc = "Move cursor down" }, - - # Filtering - { on = "f", run = "filter", desc = "Apply a filter for the help items" }, -] - -[[manager.prepend_keymap]] -on = "f" -run = "plugin jump-to-char" -desc = "Jump to char" diff --git a/yazi/package.toml b/yazi/package.toml index 74be8cd..f6d9f00 100644 --- a/yazi/package.toml +++ b/yazi/package.toml @@ -1,22 +1,17 @@ [[plugin.deps]] use = "yazi-rs/plugins:jump-to-char" -rev = "c0ad8a3" -hash = "30fc0b37f03a597b92d387268319450f" +rev = "eaf6920" +hash = "ce67445ebb1bf3d97b8e44f50904b2c5" [[plugin.deps]] use = "Reledia/glow" -rev = "2da96e3" -hash = "f9ee1436e3b853508d87f7d49dce56e6" +rev = "bd3eaa5" +hash = "92b5c58159a51c567f82b618cee2b78" [[plugin.deps]] use = "yazi-rs/plugins:smart-enter" -rev = "2ad42fa" +rev = "b886025" hash = "56fdabc96fc1f4d53c96eb884b02a5be" -[[plugin.deps]] -use = "yazi-rs/plugins:git" -rev = "2ad42fa" -hash = "e01006bfb38951ea89031bd918b20dbb" - [flavor] deps = [] diff --git a/yazi/plugins/git.yazi/LICENSE b/yazi/plugins/git.yazi/LICENSE deleted file mode 100644 index fb5b1d6..0000000 --- a/yazi/plugins/git.yazi/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2023 yazi-rs - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/yazi/plugins/git.yazi/README.md b/yazi/plugins/git.yazi/README.md deleted file mode 100644 index f1848e9..0000000 --- a/yazi/plugins/git.yazi/README.md +++ /dev/null @@ -1,75 +0,0 @@ -# git.yazi - -Show the status of Git file changes as linemode in the file list. - -https://github.com/user-attachments/assets/34976be9-a871-4ffe-9d5a-c4cdd0bf4576 - -## Installation - -```sh -ya pkg add yazi-rs/plugins:git -``` - -## Setup - -Add the following to your `~/.config/yazi/init.lua`: - -```lua -require("git"):setup() -``` - -And register it as fetchers in your `~/.config/yazi/yazi.toml`: - -```toml -[[plugin.prepend_fetchers]] -id = "git" -name = "*" -run = "git" - -[[plugin.prepend_fetchers]] -id = "git" -name = "*/" -run = "git" -``` - -## Advanced - -You can customize the [Style](https://yazi-rs.github.io/docs/plugins/layout#style) of the status sign with: - -- `th.git.modified` -- `th.git.added` -- `th.git.untracked` -- `th.git.ignored` -- `th.git.deleted` -- `th.git.updated` - -For example: - -```lua --- ~/.config/yazi/init.lua -th.git = th.git or {} -th.git.modified = ui.Style():fg("blue") -th.git.deleted = ui.Style():fg("red"):bold() -``` - -You can also customize the text of the status sign with: - -- `th.git.modified_sign` -- `th.git.added_sign` -- `th.git.untracked_sign` -- `th.git.ignored_sign` -- `th.git.deleted_sign` -- `th.git.updated_sign` - -For example: - -```lua --- ~/.config/yazi/init.lua -th.git = th.git or {} -th.git.modified_sign = "M" -th.git.deleted_sign = "D" -``` - -## License - -This plugin is MIT-licensed. For more information check the [LICENSE](LICENSE) file. diff --git a/yazi/plugins/git.yazi/main.lua b/yazi/plugins/git.yazi/main.lua deleted file mode 100644 index 140ad5a..0000000 --- a/yazi/plugins/git.yazi/main.lua +++ /dev/null @@ -1,228 +0,0 @@ ---- @since 25.5.31 - -local WINDOWS = ya.target_family() == "windows" - --- The code of supported git status, --- also used to determine which status to show for directories when they contain different statuses --- see `bubble_up` -local CODES = { - excluded = 100, -- ignored directory - ignored = 6, -- ignored file - untracked = 5, - modified = 4, - added = 3, - deleted = 2, - updated = 1, - unknown = 0, -} - -local PATTERNS = { - { "!$", CODES.ignored }, - { "?$", CODES.untracked }, - { "[MT]", CODES.modified }, - { "[AC]", CODES.added }, - { "D", CODES.deleted }, - { "U", CODES.updated }, - { "[AD][AD]", CODES.updated }, -} - -local function match(line) - local signs = line:sub(1, 2) - for _, p in ipairs(PATTERNS) do - local path, pattern, code = nil, p[1], p[2] - if signs:find(pattern) then - path = line:sub(4, 4) == '"' and line:sub(5, -2) or line:sub(4) - path = WINDOWS and path:gsub("/", "\\") or path - end - if not path then - elseif path:find("[/\\]$") then - -- Mark the ignored directory as `excluded`, so we can process it further within `propagate_down` - return code == CODES.ignored and CODES.excluded or code, path:sub(1, -2) - else - return code, path - end - end -end - -local function root(cwd) - local is_worktree = function(url) - local file, head = io.open(tostring(url)), nil - if file then - head = file:read(8) - file:close() - end - return head == "gitdir: " - end - - repeat - local next = cwd:join(".git") - local cha = fs.cha(next) - if cha and (cha.is_dir or is_worktree(next)) then - return tostring(cwd) - end - cwd = cwd.parent - until not cwd -end - -local function bubble_up(changed) - local new, empty = {}, Url("") - for path, code in pairs(changed) do - if code ~= CODES.ignored then - local url = Url(path).parent - while url and url ~= empty do - local s = tostring(url) - new[s] = (new[s] or CODES.unknown) > code and new[s] or code - url = url.parent - end - end - end - return new -end - -local function propagate_down(excluded, cwd, repo) - local new, rel = {}, cwd:strip_prefix(repo) - for _, path in ipairs(excluded) do - if rel:starts_with(path) then - -- If `cwd` is a subdirectory of an excluded directory, also mark it as `excluded` - new[tostring(cwd)] = CODES.excluded - elseif cwd == repo:join(path).parent then - -- If `path` is a direct subdirectory of `cwd`, mark it as `ignored` - new[path] = CODES.ignored - else - -- Skipping, we only care about `cwd` itself and its direct subdirectories for maximum performance - end - end - return new -end - -local add = ya.sync(function(st, cwd, repo, changed) - st.dirs[cwd] = repo - st.repos[repo] = st.repos[repo] or {} - for path, code in pairs(changed) do - if code == CODES.unknown then - st.repos[repo][path] = nil - elseif code == CODES.excluded then - -- Mark the directory with a special value `excluded` so that it can be distinguished during UI rendering - st.dirs[path] = CODES.excluded - else - st.repos[repo][path] = code - end - end - ya.render() -end) - -local remove = ya.sync(function(st, cwd) - local repo = st.dirs[cwd] - if not repo then - return - end - - ya.render() - st.dirs[cwd] = nil - if not st.repos[repo] then - return - end - - for _, r in pairs(st.dirs) do - if r == repo then - return - end - end - st.repos[repo] = nil -end) - -local function setup(st, opts) - st.dirs = {} -- Mapping between a directory and its corresponding repository - st.repos = {} -- Mapping between a repository and the status of each of its files - - opts = opts or {} - opts.order = opts.order or 1500 - - local t = th.git or {} - local styles = { - [CODES.ignored] = t.ignored and ui.Style(t.ignored) or ui.Style():fg("darkgray"), - [CODES.untracked] = t.untracked and ui.Style(t.untracked) or ui.Style():fg("magenta"), - [CODES.modified] = t.modified and ui.Style(t.modified) or ui.Style():fg("yellow"), - [CODES.added] = t.added and ui.Style(t.added) or ui.Style():fg("green"), - [CODES.deleted] = t.deleted and ui.Style(t.deleted) or ui.Style():fg("red"), - [CODES.updated] = t.updated and ui.Style(t.updated) or ui.Style():fg("yellow"), - } - local signs = { - [CODES.ignored] = t.ignored_sign or "", - [CODES.untracked] = t.untracked_sign or "?", - [CODES.modified] = t.modified_sign or "", - [CODES.added] = t.added_sign or "", - [CODES.deleted] = t.deleted_sign or "", - [CODES.updated] = t.updated_sign or "", - } - - Linemode:children_add(function(self) - local url = self._file.url - local repo = st.dirs[tostring(url.base)] - local code - if repo then - code = repo == CODES.excluded and CODES.ignored or st.repos[repo][tostring(url):sub(#repo + 2)] - end - - if not code or signs[code] == "" then - return "" - elseif self._file.is_hovered then - return ui.Line { " ", signs[code] } - else - return ui.Line { " ", ui.Span(signs[code]):style(styles[code]) } - end - end, opts.order) -end - -local function fetch(_, job) - local cwd = job.files[1].url.base - local repo = root(cwd) - if not repo then - remove(tostring(cwd)) - return true - end - - local paths = {} - for _, file in ipairs(job.files) do - paths[#paths + 1] = tostring(file.url) - end - - -- stylua: ignore - local output, err = Command("git") - :cwd(tostring(cwd)) - :arg({ "--no-optional-locks", "-c", "core.quotePath=", "status", "--porcelain", "-unormal", "--no-renames", "--ignored=matching" }) - :arg(paths) - :stdout(Command.PIPED) - :output() - if not output then - return true, Err("Cannot spawn `git` command, error: %s", err) - end - - local changed, excluded = {}, {} - for line in output.stdout:gmatch("[^\r\n]+") do - local code, path = match(line) - if code == CODES.excluded then - excluded[#excluded + 1] = path - else - changed[path] = code - end - end - - if job.files[1].cha.is_dir then - ya.dict_merge(changed, bubble_up(changed)) - end - ya.dict_merge(changed, propagate_down(excluded, cwd, Url(repo))) - - -- Reset the status of any files that don't appear in the output of `git status` to `unknown`, - -- so that cleaning up outdated statuses from `st.repos` - for _, path in ipairs(paths) do - local s = path:sub(#repo + 2) - changed[s] = changed[s] or CODES.unknown - end - - add(tostring(cwd), repo, changed) - - return false -end - -return { setup = setup, fetch = fetch } diff --git a/yazi/plugins/glow.yazi/README.md b/yazi/plugins/glow.yazi/README.md index ba66ae7..5e12e0f 100644 --- a/yazi/plugins/glow.yazi/README.md +++ b/yazi/plugins/glow.yazi/README.md @@ -1,5 +1,8 @@ # glow.yazi +>[!WARNING] +>This plugin is now deprecated with the release of [Piper](https://github.com/yazi-rs/plugins/tree/main/piper.yazi#examples) + Plugin for [Yazi](https://github.com/sxyazi/yazi) to preview markdown files with [glow](https://github.com/charmbracelet/glow). To install, run the below mentioned command: ```bash diff --git a/yazi/plugins/glow.yazi/main.lua b/yazi/plugins/glow.yazi/main.lua old mode 100644 new mode 100755 index 8883feb..d00aa28 --- a/yazi/plugins/glow.yazi/main.lua +++ b/yazi/plugins/glow.yazi/main.lua @@ -5,7 +5,7 @@ function M:peek(job) local preview_width = 55 local child = Command("glow") - :args({ + :arg({ "--style", "dark", "--width", diff --git a/yazi/plugins/jump-to-char.yazi/README.md b/yazi/plugins/jump-to-char.yazi/README.md index d24f2e7..3658c35 100644 --- a/yazi/plugins/jump-to-char.yazi/README.md +++ b/yazi/plugins/jump-to-char.yazi/README.md @@ -21,7 +21,7 @@ run = "plugin jump-to-char" desc = "Jump to char" ``` -Make sure the f key is not used elsewhere. +Note that, the keybindings above are just examples, please tune them up as needed to ensure they don't conflict with your other commands/plugins. ## License diff --git a/yazi/plugins/jump-to-char.yazi/main.lua b/yazi/plugins/jump-to-char.yazi/main.lua index 0398a69..8a434f1 100644 --- a/yazi/plugins/jump-to-char.yazi/main.lua +++ b/yazi/plugins/jump-to-char.yazi/main.lua @@ -1,4 +1,4 @@ ---- @since 25.5.28 +--- @since 25.5.31 local AVAILABLE_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789." diff --git a/yazi/yazi.toml b/yazi/yazi.toml index ddbd444..f2b3150 100644 --- a/yazi/yazi.toml +++ b/yazi/yazi.toml @@ -7,6 +7,12 @@ play = [ { run = 'open -a IINA "$@"', orphan = true, for = "unix", desc='IINA'} ] +[image] +renderer = "kitty" + +[preview] +max_width = 1000 +max_height = 1000 # [mgr] # ratio = [2, 6, 5] # left, center, right pane width ratios @@ -14,3 +20,4 @@ play = [ prepend_previewers = [ { name = "*.md", run = "glow" }, ] +