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 <noreply@anthropic.com>
This commit is contained in:
@@ -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",
|
"type": "basic",
|
||||||
"from": {
|
"from": {
|
||||||
@@ -731,25 +750,6 @@
|
|||||||
"key_code": "end"
|
"key_code": "end"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "basic",
|
|
||||||
"from": {
|
|
||||||
"key_code": "p",
|
|
||||||
"modifiers": {
|
|
||||||
"mandatory": [
|
|
||||||
"right_command",
|
|
||||||
"right_control",
|
|
||||||
"right_shift",
|
|
||||||
"right_option"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"to": [
|
|
||||||
{
|
|
||||||
"key_code": "page_down"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -772,7 +772,7 @@
|
|||||||
"to": [
|
"to": [
|
||||||
{
|
{
|
||||||
"mouse_key": {
|
"mouse_key": {
|
||||||
"x": -345
|
"x": -750
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -793,7 +793,7 @@
|
|||||||
"to": [
|
"to": [
|
||||||
{
|
{
|
||||||
"mouse_key": {
|
"mouse_key": {
|
||||||
"y": 345
|
"y": 750
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -814,7 +814,7 @@
|
|||||||
"to": [
|
"to": [
|
||||||
{
|
{
|
||||||
"mouse_key": {
|
"mouse_key": {
|
||||||
"y": -345
|
"y": -750
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -835,7 +835,7 @@
|
|||||||
"to": [
|
"to": [
|
||||||
{
|
{
|
||||||
"mouse_key": {
|
"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",
|
"type": "basic",
|
||||||
"from": {
|
"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",
|
"type": "basic",
|
||||||
"from": {
|
"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",
|
"type": "basic",
|
||||||
"from": {
|
"from": {
|
||||||
@@ -1437,7 +1412,7 @@
|
|||||||
},
|
},
|
||||||
"to": [
|
"to": [
|
||||||
{
|
{
|
||||||
"shell_command": "open -a 'iTerm'"
|
"shell_command": "open -a 'kitty'"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -1464,9 +1439,10 @@
|
|||||||
{
|
{
|
||||||
"type": "basic",
|
"type": "basic",
|
||||||
"from": {
|
"from": {
|
||||||
"key_code": "t",
|
"key_code": "s",
|
||||||
"modifiers": {
|
"modifiers": {
|
||||||
"mandatory": [
|
"mandatory": [
|
||||||
|
"left_command",
|
||||||
"right_command",
|
"right_command",
|
||||||
"right_control",
|
"right_control",
|
||||||
"right_shift",
|
"right_shift",
|
||||||
@@ -1476,7 +1452,7 @@
|
|||||||
},
|
},
|
||||||
"to": [
|
"to": [
|
||||||
{
|
{
|
||||||
"shell_command": "open -a 'Visual Studio Code'"
|
"shell_command": "open -a Spotify"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -1496,7 +1472,7 @@
|
|||||||
},
|
},
|
||||||
"to": [
|
"to": [
|
||||||
{
|
{
|
||||||
"shell_command": "open -a 'Typora'"
|
"shell_command": "open -a Transmission"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -1522,7 +1498,26 @@
|
|||||||
{
|
{
|
||||||
"type": "basic",
|
"type": "basic",
|
||||||
"from": {
|
"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": {
|
"modifiers": {
|
||||||
"mandatory": [
|
"mandatory": [
|
||||||
"left_command",
|
"left_command",
|
||||||
@@ -1535,7 +1530,7 @@
|
|||||||
},
|
},
|
||||||
"to": [
|
"to": [
|
||||||
{
|
{
|
||||||
"shell_command": "open -a 'Dictionary'"
|
"shell_command": "open -a 'Mail'"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -1554,10 +1549,30 @@
|
|||||||
},
|
},
|
||||||
"to": [
|
"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",
|
"type": "basic",
|
||||||
"from": {
|
"from": {
|
||||||
@@ -1629,7 +1644,7 @@
|
|||||||
},
|
},
|
||||||
"to": [
|
"to": [
|
||||||
{
|
{
|
||||||
"shell_command": "open -a 'Google Chrome'"
|
"shell_command": "open -a 'ChatGPT'"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"profiles": [
|
|
||||||
{
|
|
||||||
"name": "Default profile",
|
|
||||||
"selected": true,
|
|
||||||
"virtual_hid_keyboard": { "keyboard_type_v2": "iso" }
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -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" }
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,47 +1,50 @@
|
|||||||
background #3b3c35
|
# vim:ft=kitty
|
||||||
foreground #fdfff1
|
|
||||||
|
|
||||||
cursor #fdfff1
|
## name: Tokyo Night Moon
|
||||||
cursor_text_color #000000
|
## license: MIT
|
||||||
selection_foreground #3b3c35
|
## author: Folke Lemaitre
|
||||||
selection_background #fdfff1
|
## upstream: https://github.com/folke/tokyonight.nvim/raw/main/extras/kitty/tokyonight_moon.conf
|
||||||
|
|
||||||
# dull black
|
|
||||||
color0 #3b3c35
|
|
||||||
# light black
|
|
||||||
color8 #6e7066
|
|
||||||
|
|
||||||
# dull red
|
background #222436
|
||||||
color1 #f82570
|
foreground #c8d3f5
|
||||||
# light red
|
selection_background #2d3f76
|
||||||
color9 #f82570
|
selection_foreground #c8d3f5
|
||||||
|
url_color #4fd6be
|
||||||
|
cursor #c8d3f5
|
||||||
|
cursor_text_color #222436
|
||||||
|
|
||||||
# dull green
|
# Tabs
|
||||||
color2 #a6e12d
|
active_tab_background #82aaff
|
||||||
# light green
|
active_tab_foreground #1e2030
|
||||||
color10 #a6e12d
|
inactive_tab_background #2f334d
|
||||||
|
inactive_tab_foreground #545c7e
|
||||||
|
#tab_bar_background #1b1d2b
|
||||||
|
|
||||||
# yellow
|
# Windows
|
||||||
color3 #e4db73
|
active_border_color #82aaff
|
||||||
# light yellow
|
inactive_border_color #2f334d
|
||||||
color11 #e4db73
|
|
||||||
|
|
||||||
# blue
|
# normal
|
||||||
color4 #fc961f
|
color0 #1b1d2b
|
||||||
# light blue
|
color1 #ff757f
|
||||||
color12 #fc961f
|
color2 #c3e88d
|
||||||
|
color3 #ffc777
|
||||||
|
color4 #82aaff
|
||||||
|
color5 #c099ff
|
||||||
|
color6 #86e1fc
|
||||||
|
color7 #828bb8
|
||||||
|
|
||||||
# magenta
|
# bright
|
||||||
color5 #ae81ff
|
color8 #444a73
|
||||||
# light magenta
|
color9 #ff8d94
|
||||||
color13 #ae81ff
|
color10 #c7fb6d
|
||||||
|
color11 #ffd8ab
|
||||||
|
color12 #9ab8ff
|
||||||
|
color13 #caabff
|
||||||
|
color14 #b2ebff
|
||||||
|
color15 #c8d3f5
|
||||||
|
|
||||||
# cyan
|
# extended colors
|
||||||
color6 #66d9ee
|
color16 #ff966c
|
||||||
# light cyan
|
color17 #c53b53
|
||||||
color14 #66d9ee
|
|
||||||
|
|
||||||
# dull white
|
|
||||||
color7 #fdfff1
|
|
||||||
# bright white
|
|
||||||
color15 #fdfff1
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ map ctrl+shift+u input_unicode_character
|
|||||||
map ctrl+home resize_window reset
|
map ctrl+home resize_window reset
|
||||||
|
|
||||||
# Text Selection & Search
|
# Text Selection & Search
|
||||||
map ctrl+shift+f show_scrollback
|
map ctrl+shift+o show_scrollback
|
||||||
map ctrl+shift+h show_last_command_output
|
map ctrl+shift+h show_last_command_output
|
||||||
map cmd+f launch --type=overlay --stdin-source=@screen_scrollback /usr/bin/less +G -R
|
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
|
map cmd+0 change_font_size all 0
|
||||||
|
|
||||||
# Background Opacity
|
# 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>m set_background_opacity +0.1
|
||||||
map ctrl+shift+a>l set_background_opacity -0.1
|
map ctrl+shift+a>l set_background_opacity -0.1
|
||||||
map ctrl+shift+a>1 set_background_opacity 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
|
# German character mappings
|
||||||
map alt+s send_text all ß
|
map alt+s send_text all ß
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# Font Configuration
|
# Font Configuration
|
||||||
font_family MesloGS NF
|
font_family MesloLGS NF
|
||||||
bold_font auto
|
bold_font auto
|
||||||
italic_font auto
|
italic_font auto
|
||||||
bold_italic_font auto
|
bold_italic_font auto
|
||||||
@@ -7,7 +7,7 @@ font_size 15
|
|||||||
|
|
||||||
# Font rendering improvements
|
# Font rendering improvements
|
||||||
disable_ligatures never
|
disable_ligatures never
|
||||||
font_features MesloGSNF +calt +liga
|
font_features MesloLGSNF +calt +liga
|
||||||
text_composition_strategy platform
|
text_composition_strategy platform
|
||||||
undercurl_style thin-sparse
|
undercurl_style thin-sparse
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ background_blur 3
|
|||||||
|
|
||||||
# macOS Specific
|
# macOS Specific
|
||||||
hide_window_decorations yes
|
hide_window_decorations yes
|
||||||
macos_titlebar_color background
|
# macos_titlebar_color background
|
||||||
macos_option_as_alt yes
|
macos_option_as_alt yes
|
||||||
macos_window_resizable yes
|
macos_window_resizable yes
|
||||||
|
|
||||||
@@ -58,7 +58,7 @@ include ./keymap.conf
|
|||||||
macos_show_window_title_in none
|
macos_show_window_title_in none
|
||||||
|
|
||||||
# BEGIN_KITTY_THEME
|
# BEGIN_KITTY_THEME
|
||||||
# Monokai Classic
|
# Catppuccin-Macchiato
|
||||||
include current-theme.conf
|
include current-theme.conf
|
||||||
# END_KITTY_THEME
|
# END_KITTY_THEME
|
||||||
|
|
||||||
@@ -76,21 +76,19 @@ touch_scroll_multiplier 1.0
|
|||||||
|
|
||||||
# URL Handling
|
# URL Handling
|
||||||
detect_urls yes
|
detect_urls yes
|
||||||
url_color #0087bd
|
# url_color #0087bd
|
||||||
url_style curly
|
url_style curly
|
||||||
open_url_with default
|
open_url_with default
|
||||||
copy_on_select no
|
copy_on_select no
|
||||||
strip_trailing_spaces never
|
strip_trailing_spaces never
|
||||||
|
|
||||||
# Selection
|
# Selection
|
||||||
rectangle_select_modifiers ctrl+alt
|
|
||||||
terminal_select_modifiers shift
|
|
||||||
select_by_word_characters @-./_~?&=%+#
|
select_by_word_characters @-./_~?&=%+#
|
||||||
|
|
||||||
# Advanced Features
|
# Advanced Features
|
||||||
allow_hyperlinks yes
|
allow_hyperlinks yes
|
||||||
shell_integration enabled
|
shell_integration enabled
|
||||||
term xterm-256color
|
# term xterm-256color
|
||||||
# Fixed backspace mapping
|
# Fixed backspace mapping
|
||||||
map backspace send_text all \x7f
|
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
|
clipboard_max_size 64
|
||||||
|
|
||||||
# Notifications
|
# Notifications
|
||||||
enable_notifications yes
|
|
||||||
notify_on_cmd_finish invisible 30.0
|
notify_on_cmd_finish invisible 30.0
|
||||||
|
|
||||||
# Ask for confirmation on program close (Cmd+Q) but not on tab close
|
# Ask for confirmation on program close (Cmd+Q) but not on tab close
|
||||||
|
|||||||
@@ -15,15 +15,31 @@ return {
|
|||||||
"okuuva/auto-save.nvim",
|
"okuuva/auto-save.nvim",
|
||||||
version = "v1.*",
|
version = "v1.*",
|
||||||
event = { "InsertLeave", "TextChanged" },
|
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 = {
|
opts = {
|
||||||
enabled = true,
|
enabled = true,
|
||||||
execution_message = {
|
|
||||||
enabled = false,
|
|
||||||
},
|
|
||||||
trigger_events = {
|
trigger_events = {
|
||||||
immediate_save = { "BufLeave", "FocusLost" },
|
immediate_save = { "BufLeave", "FocusLost" },
|
||||||
defer_save = { "InsertLeave", "TextChanged" },
|
defer_save = { "InsertLeave", "TextChanged" },
|
||||||
cancel_defered_save = { "InsertEnter" },
|
cancel_deferred_save = { "InsertEnter" },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -40,6 +56,7 @@ return {
|
|||||||
-- Git integration
|
-- Git integration
|
||||||
{
|
{
|
||||||
"lewis6991/gitsigns.nvim",
|
"lewis6991/gitsigns.nvim",
|
||||||
|
event = { "BufReadPre", "BufNewFile" },
|
||||||
opts = {
|
opts = {
|
||||||
signs = {
|
signs = {
|
||||||
add = { text = "│" },
|
add = { text = "│" },
|
||||||
@@ -56,11 +73,50 @@ return {
|
|||||||
current_line_blame = false,
|
current_line_blame = false,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ "tpope/vim-fugitive" },
|
{
|
||||||
|
"tpope/vim-fugitive",
|
||||||
|
cmd = { "Git", "Gvdiffsplit" },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kdheepak/lazygit.nvim",
|
||||||
|
dependencies = { "nvim-lua/plenary.nvim" },
|
||||||
|
cmd = {
|
||||||
|
"LazyGit",
|
||||||
|
"LazyGitConfig",
|
||||||
|
"LazyGitCurrentFile",
|
||||||
|
"LazyGitFilter",
|
||||||
|
"LazyGitFilterCurrentFile",
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
{ "<leader>gg", "<cmd>LazyGit<cr>", desc = "LazyGit" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
-- Status line
|
-- Status line
|
||||||
{ import = "plugins.lualine" },
|
{ 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,
|
||||||
|
},
|
||||||
|
|
||||||
-- FZF
|
-- FZF
|
||||||
{
|
{
|
||||||
"junegunn/fzf",
|
"junegunn/fzf",
|
||||||
@@ -71,12 +127,12 @@ return {
|
|||||||
{ "junegunn/fzf.vim" },
|
{ "junegunn/fzf.vim" },
|
||||||
|
|
||||||
-- Productivity
|
-- Productivity
|
||||||
{ "numToStr/Comment.nvim", opts = {} },
|
{ "numToStr/Comment.nvim", event = "VeryLazy", opts = {} },
|
||||||
{ "windwp/nvim-autopairs", opts = {} },
|
{ "windwp/nvim-autopairs", event = "InsertEnter", opts = {} },
|
||||||
{ "tpope/vim-surround" },
|
{ "tpope/vim-surround", event = "VeryLazy" },
|
||||||
|
|
||||||
-- Tmux navigation
|
-- -- Tmux navigation
|
||||||
{ "christoomey/vim-tmux-navigator" },
|
-- { "christoomey/vim-tmux-navigator" },
|
||||||
|
|
||||||
-- LaTeX
|
-- LaTeX
|
||||||
{ import = "plugins.vimtex" },
|
{ import = "plugins.vimtex" },
|
||||||
@@ -114,22 +170,8 @@ return {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
-- 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', '<Plug>(leap-forward)')
|
|
||||||
vim.keymap.set({'n', 'x', 'o'}, 'F', '<Plug>(leap-backward)')
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Markdown
|
-- Markdown
|
||||||
{ "SidOfc/mkdx" },
|
{ "SidOfc/mkdx", ft = "markdown" },
|
||||||
{
|
{
|
||||||
"MeanderingProgrammer/render-markdown.nvim",
|
"MeanderingProgrammer/render-markdown.nvim",
|
||||||
dependencies = { "nvim-treesitter/nvim-treesitter", "echasnovski/mini.icons" },
|
dependencies = { "nvim-treesitter/nvim-treesitter", "echasnovski/mini.icons" },
|
||||||
@@ -159,32 +201,6 @@ return {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
-- 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,
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -205,6 +221,7 @@ return {
|
|||||||
{
|
{
|
||||||
"lukas-reineke/indent-blankline.nvim",
|
"lukas-reineke/indent-blankline.nvim",
|
||||||
main = "ibl",
|
main = "ibl",
|
||||||
|
event = { "BufReadPost", "BufNewFile" },
|
||||||
opts = {},
|
opts = {},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -1,67 +1,66 @@
|
|||||||
local colors = {
|
local colors = {
|
||||||
bg = "none",
|
base = "#1e1e2e",
|
||||||
fg = "#ebdbb2",
|
surface0 = "#313244",
|
||||||
yellow = "#fabd2f",
|
surface1 = "#45475a",
|
||||||
cyan = "#8ec07c",
|
overlay0 = "#6c7086",
|
||||||
darkblue = "#458588",
|
text = "#cdd6f4",
|
||||||
green = "#b8bb26",
|
subtext = "#a6adc8",
|
||||||
orange = "#fe8019",
|
crust = "#11111b",
|
||||||
violet = "#d3869b",
|
mauve = "#cba6f7",
|
||||||
magenta = "#d3869b",
|
blue = "#89b4fa",
|
||||||
blue = "#83a598",
|
green = "#a6e3a1",
|
||||||
red = "#fb4934",
|
red = "#f38ba8",
|
||||||
grey = "#504945",
|
yellow = "#f9e2af",
|
||||||
black = "#282828",
|
peach = "#fab387",
|
||||||
white = "#fbf1c7",
|
lavender = "#b4befe",
|
||||||
darkgrey = "#3c3836",
|
cyan = "#94e2d5",
|
||||||
lightgrey = "#665c54",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
local theme = {
|
local theme = {
|
||||||
normal = {
|
normal = {
|
||||||
a = { fg = colors.black, bg = colors.blue, gui = "bold" },
|
a = { fg = colors.crust, bg = colors.mauve, gui = "bold" },
|
||||||
b = { fg = colors.blue, bg = colors.grey },
|
b = { fg = colors.mauve, bg = colors.surface1 },
|
||||||
c = { fg = colors.white, bg = colors.darkgrey },
|
c = { fg = colors.text, bg = colors.base },
|
||||||
x = { fg = colors.white, bg = colors.darkgrey },
|
x = { fg = colors.text, bg = colors.base },
|
||||||
y = { fg = colors.blue, bg = colors.grey },
|
y = { fg = colors.mauve, bg = colors.surface1 },
|
||||||
z = { fg = colors.black, bg = colors.blue, gui = "bold" },
|
z = { fg = colors.crust, bg = colors.mauve, gui = "bold" },
|
||||||
},
|
},
|
||||||
insert = {
|
insert = {
|
||||||
a = { fg = colors.black, bg = colors.green, gui = "bold" },
|
a = { fg = colors.crust, bg = colors.green, gui = "bold" },
|
||||||
b = { fg = colors.green, bg = colors.grey },
|
b = { fg = colors.green, bg = colors.surface1 },
|
||||||
c = { fg = colors.white, bg = colors.darkgrey },
|
c = { fg = colors.text, bg = colors.base },
|
||||||
x = { fg = colors.white, bg = colors.darkgrey },
|
x = { fg = colors.text, bg = colors.base },
|
||||||
y = { fg = colors.green, bg = colors.grey },
|
y = { fg = colors.green, bg = colors.surface1 },
|
||||||
z = { fg = colors.black, bg = colors.green, gui = "bold" },
|
z = { fg = colors.crust, bg = colors.green, gui = "bold" },
|
||||||
},
|
},
|
||||||
visual = {
|
visual = {
|
||||||
a = { fg = colors.black, bg = colors.magenta, gui = "bold" },
|
a = { fg = colors.crust, bg = colors.lavender, gui = "bold" },
|
||||||
b = { fg = colors.magenta, bg = colors.grey },
|
b = { fg = colors.lavender, bg = colors.surface1 },
|
||||||
c = { fg = colors.white, bg = colors.darkgrey },
|
c = { fg = colors.text, bg = colors.base },
|
||||||
x = { fg = colors.white, bg = colors.darkgrey },
|
x = { fg = colors.text, bg = colors.base },
|
||||||
y = { fg = colors.magenta, bg = colors.grey },
|
y = { fg = colors.lavender, bg = colors.surface1 },
|
||||||
z = { fg = colors.black, bg = colors.magenta, gui = "bold" },
|
z = { fg = colors.crust, bg = colors.lavender, gui = "bold" },
|
||||||
},
|
},
|
||||||
replace = {
|
replace = {
|
||||||
a = { fg = colors.black, bg = colors.red, gui = "bold" },
|
a = { fg = colors.crust, bg = colors.red, gui = "bold" },
|
||||||
b = { fg = colors.red, bg = colors.grey },
|
b = { fg = colors.red, bg = colors.surface1 },
|
||||||
c = { fg = colors.white, bg = colors.darkgrey },
|
c = { fg = colors.text, bg = colors.base },
|
||||||
x = { fg = colors.white, bg = colors.darkgrey },
|
x = { fg = colors.text, bg = colors.base },
|
||||||
y = { fg = colors.red, bg = colors.grey },
|
y = { fg = colors.red, bg = colors.surface1 },
|
||||||
z = { fg = colors.black, bg = colors.red, gui = "bold" },
|
z = { fg = colors.crust, bg = colors.red, gui = "bold" },
|
||||||
},
|
},
|
||||||
command = {
|
command = {
|
||||||
a = { fg = colors.black, bg = colors.yellow, gui = "bold" },
|
a = { fg = colors.crust, bg = colors.yellow, gui = "bold" },
|
||||||
b = { fg = colors.yellow, bg = colors.grey },
|
b = { fg = colors.yellow, bg = colors.surface1 },
|
||||||
c = { fg = colors.white, bg = colors.darkgrey },
|
c = { fg = colors.text, bg = colors.base },
|
||||||
x = { fg = colors.white, bg = colors.darkgrey },
|
x = { fg = colors.text, bg = colors.base },
|
||||||
y = { fg = colors.yellow, bg = colors.grey },
|
y = { fg = colors.yellow, bg = colors.surface1 },
|
||||||
z = { fg = colors.black, bg = colors.yellow, gui = "bold" },
|
z = { fg = colors.crust, bg = colors.yellow, gui = "bold" },
|
||||||
},
|
},
|
||||||
inactive = {
|
inactive = {
|
||||||
a = { fg = colors.white, bg = colors.darkgrey },
|
a = { fg = colors.subtext, bg = colors.base },
|
||||||
b = { fg = colors.white, bg = colors.darkgrey },
|
b = { fg = colors.subtext, bg = colors.base },
|
||||||
c = { fg = colors.white, bg = colors.darkgrey },
|
c = { fg = colors.subtext, bg = colors.base },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,16 +4,16 @@ vim.opt.shiftwidth = 4 -- Number of spaces for indentation
|
|||||||
vim.opt.expandtab = true -- Use spaces instead of tabs
|
vim.opt.expandtab = true -- Use spaces instead of tabs
|
||||||
vim.opt.cmdheight = 0 -- Hide command line when not in use
|
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 CursorLine guibg=#313244]]) -- Catppuccin surface0
|
||||||
vim.cmd([[highlight CursorColumn guibg=#504945]]) -- Slightly darker for the column
|
vim.cmd([[highlight CursorColumn guibg=#45475a]]) -- Catppuccin surface1
|
||||||
|
|
||||||
vim.cmd([[set incsearch ]]) -- Enables incremental search
|
vim.cmd([[set incsearch ]]) -- Enables incremental search
|
||||||
vim.cmd([[set hlsearch ]]) -- Highlights search results
|
vim.cmd([[set hlsearch ]]) -- Highlights search results
|
||||||
vim.cmd([[set ignorecase]]) -- Case insensitive search
|
vim.cmd([[set ignorecase]]) -- Case insensitive search
|
||||||
vim.cmd([[set smartcase ]]) -- Case sensitive if uppercase letters are used
|
vim.cmd([[set smartcase ]]) -- Case sensitive if uppercase letters are used
|
||||||
|
|
||||||
-- Coloscheme
|
-- Colorscheme
|
||||||
vim.cmd([[colorscheme gruvbox]])
|
vim.cmd([[colorscheme catppuccin-mocha]])
|
||||||
|
|
||||||
vim.cmd([[set spelllang=en]])
|
vim.cmd([[set spelllang=en]])
|
||||||
|
|
||||||
|
|||||||
@@ -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'
|
|
||||||
1
tmux/plugins/tmux-urlview
Submodule
1
tmux/plugins/tmux-urlview
Submodule
Submodule tmux/plugins/tmux-urlview added at b84c876cff
@@ -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 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"
|
# Pane borders
|
||||||
set -g window-status-format " #[fg=#a6adc8]#I #[fg=#a6adc8]#W "
|
set -g pane-border-style "fg=#313244"
|
||||||
set -g window-status-current-style "fg=#1e1e2e,bg=#74c7ec,bold"
|
set -g pane-active-border-style "fg=#cba6f7,bold"
|
||||||
set -g window-status-current-format " #[fg=#1e1e2e,bg=#74c7ec,bold]#I #[fg=#1e1e2e,bg=#74c7ec,bold]#W "
|
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 "
|
# Message styling
|
||||||
set -g status-right "#[fg=#a6adc8]#{pane_current_command} #[fg=#a6adc8]| #[fg=#cdd6f4]%H:%M #[fg=#a6adc8]| #[fg=#cdd6f4]%a %d %b "
|
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 ""
|
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
|
set -g status-justify left
|
||||||
|
|||||||
5
tmux/themes/tmuxline.tmux
Normal file
5
tmux/themes/tmuxline.tmux
Normal file
@@ -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
|
||||||
154
tmux/tmux.conf
154
tmux/tmux.conf
@@ -1,5 +1,5 @@
|
|||||||
# ============================================
|
# ============================================
|
||||||
# TMUX CONFIGURATION - CLEAN GRUVBOX
|
# TMUX CONFIGURATION
|
||||||
# ============================================
|
# ============================================
|
||||||
|
|
||||||
# ============================================
|
# ============================================
|
||||||
@@ -10,16 +10,16 @@
|
|||||||
set -g allow-passthrough on
|
set -g allow-passthrough on
|
||||||
set -ga update-environment TERM
|
set -ga update-environment TERM
|
||||||
set -ga update-environment TERM_PROGRAM
|
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-option -ga terminal-overrides ",xterm-kitty:Tc,*:Tc,*:RGB"
|
||||||
|
set -as terminal-features ",xterm-256color:RGB,tmux-256color:RGB"
|
||||||
|
|
||||||
# Shell configuration
|
# Shell configuration
|
||||||
set -g default-shell /bin/zsh
|
|
||||||
set -g default-command /bin/zsh
|
set -g default-command /bin/zsh
|
||||||
|
|
||||||
# Environment variables for proper shell integration
|
# Environment variables for proper shell integration
|
||||||
set -ga update-environment KITTY_WINDOW_ID
|
# KITTY_WINDOW_ID and KITTY_PID intentionally NOT passed through
|
||||||
set -ga update-environment KITTY_PID
|
# 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 XDG_CONFIG_HOME
|
||||||
set -ga update-environment ZDOTDIR
|
set -ga update-environment ZDOTDIR
|
||||||
|
|
||||||
@@ -53,8 +53,8 @@ set -g display-panes-time 2000
|
|||||||
# Show messages longer
|
# Show messages longer
|
||||||
set -g display-time 2000
|
set -g display-time 2000
|
||||||
|
|
||||||
# Aggressive resize for multiple clients
|
# Resize to largest attached client
|
||||||
setw -g aggressive-resize on
|
set -g window-size largest
|
||||||
|
|
||||||
# ============================================
|
# ============================================
|
||||||
# VI-LIKE KEYBINDINGS
|
# VI-LIKE KEYBINDINGS
|
||||||
@@ -64,12 +64,7 @@ setw -g aggressive-resize on
|
|||||||
setw -g mode-keys vi
|
setw -g mode-keys vi
|
||||||
set -g status-keys vi
|
set -g status-keys vi
|
||||||
|
|
||||||
# Smart pane switching with awareness of Vim splits
|
# Smart pane switching with vim awareness handled by vim-tmux-navigator plugin
|
||||||
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'
|
|
||||||
|
|
||||||
# Vi-like pane resizing
|
# Vi-like pane resizing
|
||||||
bind -r H resize-pane -L 5
|
bind -r H resize-pane -L 5
|
||||||
@@ -89,18 +84,17 @@ bind Escape copy-mode
|
|||||||
# PANE MANAGEMENT
|
# 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 v split-window -h -c "#{pane_current_path}"
|
||||||
bind s split-window -v -c "#{pane_current_path}"
|
bind s split-window -v -c "#{pane_current_path}"
|
||||||
unbind '"'
|
bind % split-window -h -c "#{pane_current_path}"
|
||||||
unbind %
|
bind '"' split-window -v -c "#{pane_current_path}"
|
||||||
|
|
||||||
# New window in current path
|
# New window in current path
|
||||||
bind c new-window -c "#{pane_current_path}"
|
bind c new-window -c "#{pane_current_path}"
|
||||||
|
|
||||||
# Quick pane cycling
|
# Quick pane cycling
|
||||||
bind -r C-h select-window -t :-
|
bind -r C-h select-window -t :-
|
||||||
# bind -r C-l select-window -t :+
|
|
||||||
|
|
||||||
# Kill pane without confirmation
|
# Kill pane without confirmation
|
||||||
bind x kill-pane
|
bind x kill-pane
|
||||||
@@ -111,12 +105,6 @@ bind X kill-window
|
|||||||
# Toggle zoom
|
# Toggle zoom
|
||||||
bind z resize-pane -Z
|
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
|
# Quick session switching
|
||||||
bind S choose-tree -sZ -O name
|
bind S choose-tree -sZ -O name
|
||||||
|
|
||||||
@@ -132,61 +120,48 @@ set -g mouse on
|
|||||||
# Don't jump to bottom when mouse selecting
|
# Don't jump to bottom when mouse selecting
|
||||||
unbind -T copy-mode-vi MouseDragEnd1Pane
|
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
|
# Mouse click behavior - simple pane selection without copy-mode
|
||||||
bind-key -T copy-mode-vi MouseDown1Pane select-pane
|
bind-key -T copy-mode-vi MouseDown1Pane select-pane
|
||||||
bind-key -T copy-mode MouseDown1Pane select-pane
|
bind-key -T copy-mode MouseDown1Pane select-pane
|
||||||
bind-key -n MouseDown1Pane select-pane -t =
|
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
|
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-status top
|
||||||
set -g pane-border-format "#[fg=#ebdbb2] #P #[fg=#928374]| #[fg=#83a598]#{pane_current_command} #[fg=#928374]| #[fg=#bdae93]#{pane_current_path}"
|
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
|
||||||
# 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
|
|
||||||
|
|
||||||
# Activity monitoring
|
# Activity monitoring
|
||||||
set -g monitor-activity on
|
set -g monitor-activity on
|
||||||
@@ -198,48 +173,31 @@ set -g monitor-bell on
|
|||||||
set -g visual-bell off
|
set -g visual-bell off
|
||||||
set -g bell-action any
|
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-style "bg=default"
|
||||||
set -g window-active-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
|
# Three-way toggle: top → bottom → hidden → top
|
||||||
bind-key -T prefix 1 select-window -t :=1
|
bind b if -F "#{==:#{status},off}" \
|
||||||
bind-key -T prefix 2 select-window -t :=2
|
"set -g status on ; set -g status-position top ; set -g pane-border-status top" \
|
||||||
bind-key -T prefix 3 select-window -t :=3
|
"if -F '#{==:#{status-position},top}' \
|
||||||
bind-key -T prefix 4 select-window -t :=4
|
'set -g status-position bottom' \
|
||||||
bind-key -T prefix 5 select-window -t :=5
|
'set -g status off ; set -g pane-border-status off'"
|
||||||
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
|
|
||||||
|
|
||||||
# Theme switcher (Prefix + Shift+1/2/3 => !/@/#)
|
# Reload config
|
||||||
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
|
|
||||||
bind r source-file ~/.config/tmux/tmux.conf \; display-message " Config reloaded!"
|
bind r source-file ~/.config/tmux/tmux.conf \; display-message " Config reloaded!"
|
||||||
|
|
||||||
# Initialize TMUX plugin manager (keep this line at the very bottom)
|
# Initialize TMUX plugin manager (keep this line at the very bottom)
|
||||||
|
|||||||
@@ -104,6 +104,48 @@ keymap = [
|
|||||||
# Filter
|
# Filter
|
||||||
{ on = "f", run = "filter --smart", desc = "Filter files" },
|
{ on = "f", run = "filter --smart", desc = "Filter files" },
|
||||||
|
|
||||||
|
# Copy to destination (Ctrl+Y)
|
||||||
|
{ on = [ "<C-y>", "h" ], run = "shell 'cp -r \"$@\" ~/' --confirm", desc = "Copy to home" },
|
||||||
|
{ on = [ "<C-y>", "c" ], run = "shell 'cp -r \"$@\" ~/.config/' --confirm", desc = "Copy to ~/.config" },
|
||||||
|
{ on = [ "<C-y>", "d" ], run = "shell 'cp -r \"$@\" ~/Downloads/' --confirm", desc = "Copy to Downloads" },
|
||||||
|
{ on = [ "<C-y>", "D" ], run = "shell 'cp -r \"$@\" ~/Documents/' --confirm", desc = "Copy to Documents" },
|
||||||
|
{ on = [ "<C-y>", "w" ], run = "shell 'cp -r \"$@\" ~/Pictures/Wallpapers/' --confirm", desc = "Copy to Wallpapers" },
|
||||||
|
|
||||||
|
# Copy to Torrents subdirs
|
||||||
|
{ on = [ "<C-y>", "t", "b" ], run = "shell 'cp -r \"$@\" ~/Torrents/Books/' --confirm", desc = "Copy to Torrents/Books" },
|
||||||
|
{ on = [ "<C-y>", "t", "a" ], run = "shell 'cp -r \"$@\" ~/Torrents/Audiobooks/' --confirm", desc = "Copy to Torrents/Audiobooks" },
|
||||||
|
{ on = [ "<C-y>", "t", "s" ], run = "shell 'cp -r \"$@\" ~/Torrents/Shows/' --confirm", desc = "Copy to Torrents/Shows" },
|
||||||
|
{ on = [ "<C-y>", "t", "m" ], run = "shell 'cp -r \"$@\" ~/Torrents/Movies/' --confirm", desc = "Copy to Torrents/Movies" },
|
||||||
|
|
||||||
|
# Copy to Obsidian
|
||||||
|
{ on = [ "<C-y>", "o", "p" ], run = "shell 'cp -r \"$@\" ~/Library/Mobile\\ Documents/iCloud~md~obsidian/Documents/Private/' --confirm", desc = "Copy to Obsidian/Private" },
|
||||||
|
{ on = [ "<C-y>", "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 = [ "<C-y>", "j", "b" ], run = "shell 'cp -r \"$@\" ~/Documents/JKU/Studium/BWL/' --confirm", desc = "Copy to JKU/BWL" },
|
||||||
|
{ on = [ "<C-y>", "j", "w" ], run = "shell 'cp -r \"$@\" ~/Documents/JKU/Work/' --confirm", desc = "Copy to JKU/Work" },
|
||||||
|
|
||||||
|
# Move to destination (Ctrl+X)
|
||||||
|
{ on = [ "<C-x>", "h" ], run = "shell 'mv \"$@\" ~/' --confirm", desc = "Move to home" },
|
||||||
|
{ on = [ "<C-x>", "c" ], run = "shell 'mv \"$@\" ~/.config/' --confirm", desc = "Move to ~/.config" },
|
||||||
|
{ on = [ "<C-x>", "d" ], run = "shell 'mv \"$@\" ~/Downloads/' --confirm", desc = "Move to Downloads" },
|
||||||
|
{ on = [ "<C-x>", "D" ], run = "shell 'mv \"$@\" ~/Documents/' --confirm", desc = "Move to Documents" },
|
||||||
|
{ on = [ "<C-x>", "w" ], run = "shell 'mv \"$@\" ~/Pictures/Wallpapers/' --confirm", desc = "Move to Wallpapers" },
|
||||||
|
|
||||||
|
# Move to Torrents subdirs
|
||||||
|
{ on = [ "<C-x>", "t", "b" ], run = "shell 'mv \"$@\" ~/Torrents/Books/' --confirm", desc = "Move to Torrents/Books" },
|
||||||
|
{ on = [ "<C-x>", "t", "a" ], run = "shell 'mv \"$@\" ~/Torrents/Audiobooks/' --confirm", desc = "Move to Torrents/Audiobooks" },
|
||||||
|
{ on = [ "<C-x>", "t", "s" ], run = "shell 'mv \"$@\" ~/Torrents/Shows/' --confirm", desc = "Move to Torrents/Shows" },
|
||||||
|
{ on = [ "<C-x>", "t", "m" ], run = "shell 'mv \"$@\" ~/Torrents/Movies/' --confirm", desc = "Move to Torrents/Movies" },
|
||||||
|
|
||||||
|
# Move to Obsidian
|
||||||
|
{ on = [ "<C-x>", "o", "p" ], run = "shell 'mv \"$@\" ~/Library/Mobile\\ Documents/iCloud~md~obsidian/Documents/Private/' --confirm", desc = "Move to Obsidian/Private" },
|
||||||
|
{ on = [ "<C-x>", "o", "w" ], run = "shell 'mv \"$@\" ~/Library/Mobile\\ Documents/iCloud~md~obsidian/Documents/Work/' --confirm", desc = "Move to Obsidian/Work" },
|
||||||
|
|
||||||
|
# Move to JKU dirs
|
||||||
|
{ on = [ "<C-x>", "j", "b" ], run = "shell 'mv \"$@\" ~/Documents/JKU/Studium/BWL/' --confirm", desc = "Move to JKU/BWL" },
|
||||||
|
{ on = [ "<C-x>", "j", "w" ], run = "shell 'mv \"$@\" ~/Documents/JKU/Work/' --confirm", desc = "Move to JKU/Work" },
|
||||||
|
|
||||||
# Find
|
# Find
|
||||||
{ on = "/", run = "find --smart", desc = "Find next file" },
|
{ on = "/", run = "find --smart", desc = "Find next file" },
|
||||||
{ on = "?", run = "find --previous --smart", desc = "Find previous 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", "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", "j", "w" ], run = "cd \"~/Documents/JKU/Work\"", desc = "Goto Work(local)" },
|
||||||
{ on = [ "g", "w" ], run = "cd \"~/Pictures/Wallpapers\"", desc = "Goto Wallpapers)" },
|
{ 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", "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" },
|
{ on = [ "g", "o", "w" ], run = "cd ~/Library/Mobile\\ Documents/iCloud~md~obsidian/Documents/Work/", desc = "Goto Obsidian/Work" },
|
||||||
#Work Related - Network drive
|
#Work Related - Network drive
|
||||||
{ on = [ "g", "a", "<Space>" ], run = "cd /Volumes/AK127132", desc = "Goto AK127132" },
|
{ on = [ "g", "a", "<Space>" ], run = "cd /Volumes/TNHOME/home/AK127132", desc = "Goto AK127132" },
|
||||||
{ on = [ "g", "a", "z" ], run = "cd /Volumes/AK127132/Zeitaufzeichnung", desc = "Goto Zeitaufzeichnung" },
|
{ on = [ "g", "a", "z" ], run = "cd /Volumes/TNHOME/home/AK127132/Zeitaufzeichnung", desc = "Goto Zeitaufzeichnung" },
|
||||||
|
|
||||||
{ on = [ "g", "i", "<Space>" ], run = "cd /Volumes/ipec/intern", desc = "Goto Intern" },
|
{ on = [ "g", "i", "<Space>" ], 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", "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" , "<Space>" ], 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", "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", "i", "b" ], run = "cd \"/Volumes/ipec/intern/05_Institutsbesprechungen\"", desc = "Goto Institutsbesprechungen" },
|
||||||
|
|
||||||
|
|||||||
@@ -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 = "<Esc>", run = "escape", desc = "Exit visual mode, clear selected, or cancel search" },
|
|
||||||
{ on = "<C-[>", 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 = "<C-c>", run = "close", desc = "Close the current tab, or quit if it's last" },
|
|
||||||
{ on = "<C-z>", 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 = "<Up>", run = "arrow -1", desc = "Move cursor up" },
|
|
||||||
{ on = "<Down>", run = "arrow 1", desc = "Move cursor down" },
|
|
||||||
|
|
||||||
{ on = "<C-u>", run = "arrow -50%", desc = "Move cursor up half page" },
|
|
||||||
{ on = "<C-d>", run = "arrow 50%", desc = "Move cursor down half page" },
|
|
||||||
{ on = "<C-b>", run = "arrow -100%", desc = "Move cursor up one page" },
|
|
||||||
{ on = "<C-f>", run = "arrow 100%", desc = "Move cursor down one page" },
|
|
||||||
|
|
||||||
{ on = "<S-PageUp>", run = "arrow -50%", desc = "Move cursor up half page" },
|
|
||||||
{ on = "<S-PageDown>", run = "arrow 50%", desc = "Move cursor down half page" },
|
|
||||||
{ on = "<PageUp>", run = "arrow -100%", desc = "Move cursor up one page" },
|
|
||||||
{ on = "<PageDown>", 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 = "<Left>", run = "leave", desc = "Go back to the parent directory" },
|
|
||||||
{ on = "<Right>", 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 = "<Space>", run = [ "toggle", "arrow 1" ], desc = "Toggle the current selection state" },
|
|
||||||
{ on = "<C-a>", run = "toggle_all --state=on", desc = "Select all files" },
|
|
||||||
{ on = "<C-r>", 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 = "<Tab>", 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 = "<Enter>", run = "open", desc = "Open selected files" },
|
|
||||||
{ on = "<S-Enter>", 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 = "<C-->", 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 = "<C-s>", 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" , "<Space>" ], 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", "<Space>" ], run = "cd /Volumes/AK127132", desc = "Goto AK127132" },
|
|
||||||
{ on = [ "g", "a", "z" ], run = "cd /Volumes/AK127132/Zeitaufzeichnung", desc = "Goto Zeitaufzeichnung" },
|
|
||||||
|
|
||||||
{ on = [ "g", "i", "<Space>" ], 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", "<Space>" ], 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 = "<F1>", run = "help", desc = "Open help" },
|
|
||||||
]
|
|
||||||
|
|
||||||
[tasks]
|
|
||||||
|
|
||||||
keymap = [
|
|
||||||
{ on = "<Esc>", run = "close", desc = "Close task manager" },
|
|
||||||
{ on = "<C-[>", run = "close", desc = "Close task manager" },
|
|
||||||
{ on = "<C-c>", 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 = "<Up>", run = "arrow -1", desc = "Move cursor up" },
|
|
||||||
{ on = "<Down>", run = "arrow 1", desc = "Move cursor down" },
|
|
||||||
|
|
||||||
{ on = "<Enter>", run = "inspect", desc = "Inspect the task" },
|
|
||||||
{ on = "x", run = "cancel", desc = "Cancel the task" },
|
|
||||||
|
|
||||||
# Help
|
|
||||||
{ on = "~", run = "help", desc = "Open help" },
|
|
||||||
{ on = "<F1>", run = "help", desc = "Open help" },
|
|
||||||
]
|
|
||||||
|
|
||||||
[spot]
|
|
||||||
|
|
||||||
keymap = [
|
|
||||||
{ on = "<Esc>", run = "close", desc = "Close the spot" },
|
|
||||||
{ on = "<C-[>", run = "close", desc = "Close the spot" },
|
|
||||||
{ on = "<C-c>", run = "close", desc = "Close the spot" },
|
|
||||||
{ on = "<Tab>", 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 = "<Up>", run = "arrow -1", desc = "Move cursor up" },
|
|
||||||
{ on = "<Down>", run = "arrow 1", desc = "Move cursor down" },
|
|
||||||
{ on = "<Left>", run = "swipe -1", desc = "Swipe to the next file" },
|
|
||||||
{ on = "<Right>", 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 = "<F1>", run = "help", desc = "Open help" },
|
|
||||||
]
|
|
||||||
|
|
||||||
[pick]
|
|
||||||
|
|
||||||
keymap = [
|
|
||||||
{ on = "<Esc>", run = "close", desc = "Cancel pick" },
|
|
||||||
{ on = "<C-[>", run = "close", desc = "Cancel pick" },
|
|
||||||
{ on = "<C-c>", run = "close", desc = "Cancel pick" },
|
|
||||||
{ on = "<Enter>", 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 = "<Up>", run = "arrow -1", desc = "Move cursor up" },
|
|
||||||
{ on = "<Down>", run = "arrow 1", desc = "Move cursor down" },
|
|
||||||
|
|
||||||
# Help
|
|
||||||
{ on = "~", run = "help", desc = "Open help" },
|
|
||||||
{ on = "<F1>", run = "help", desc = "Open help" },
|
|
||||||
]
|
|
||||||
|
|
||||||
[input]
|
|
||||||
|
|
||||||
keymap = [
|
|
||||||
{ on = "<C-c>", run = "close", desc = "Cancel input" },
|
|
||||||
{ on = "<Enter>", run = "close --submit", desc = "Submit input" },
|
|
||||||
{ on = "<Esc>", run = "escape", desc = "Go back the normal mode, or cancel input" },
|
|
||||||
{ on = "<C-[>", 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 = "<Left>", run = "move -1", desc = "Move back a character" },
|
|
||||||
{ on = "<Right>", run = "move 1", desc = "Move forward a character" },
|
|
||||||
{ on = "<C-b>", run = "move -1", desc = "Move back a character" },
|
|
||||||
{ on = "<C-f>", 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 = "<A-b>", run = "backward", desc = "Move back to the start of the current or previous word" },
|
|
||||||
{ on = "<A-f>", 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 = "<C-a>", run = "move -999", desc = "Move to the BOL" },
|
|
||||||
{ on = "<C-e>", run = "move 999", desc = "Move to the EOL" },
|
|
||||||
{ on = "<Home>", run = "move -999", desc = "Move to the BOL" },
|
|
||||||
{ on = "<End>", run = "move 999", desc = "Move to the EOL" },
|
|
||||||
|
|
||||||
# Delete
|
|
||||||
{ on = "<Backspace>", run = "backspace", desc = "Delete the character before the cursor" },
|
|
||||||
{ on = "<Delete>", run = "backspace --under", desc = "Delete the character under the cursor" },
|
|
||||||
{ on = "<C-h>", run = "backspace", desc = "Delete the character before the cursor" },
|
|
||||||
{ on = "<C-d>", run = "backspace --under", desc = "Delete the character under the cursor" },
|
|
||||||
|
|
||||||
# Kill
|
|
||||||
{ on = "<C-u>", run = "kill bol", desc = "Kill backwards to the BOL" },
|
|
||||||
{ on = "<C-k>", run = "kill eol", desc = "Kill forwards to the EOL" },
|
|
||||||
{ on = "<C-w>", run = "kill backward", desc = "Kill backwards to the start of the current word" },
|
|
||||||
{ on = "<A-d>", 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 = "<C-r>", run = "redo", desc = "Redo the last operation" },
|
|
||||||
|
|
||||||
# Help
|
|
||||||
{ on = "~", run = "help", desc = "Open help" },
|
|
||||||
{ on = "<F1>", run = "help", desc = "Open help" },
|
|
||||||
]
|
|
||||||
|
|
||||||
[confirm]
|
|
||||||
|
|
||||||
keymap = [
|
|
||||||
{ on = "<Esc>", run = "close", desc = "Cancel the confirm" },
|
|
||||||
{ on = "<C-[>", run = "close", desc = "Cancel the confirm" },
|
|
||||||
{ on = "<C-c>", run = "close", desc = "Cancel the confirm" },
|
|
||||||
{ on = "<Enter>", 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 = "<Up>", run = "arrow -1", desc = "Move cursor up" },
|
|
||||||
{ on = "<Down>", run = "arrow 1", desc = "Move cursor down" },
|
|
||||||
|
|
||||||
# Help
|
|
||||||
{ on = "~", run = "help", desc = "Open help" },
|
|
||||||
{ on = "<F1>", run = "help", desc = "Open help" },
|
|
||||||
]
|
|
||||||
|
|
||||||
[completion]
|
|
||||||
|
|
||||||
keymap = [
|
|
||||||
{ on = "<C-c>", run = "close", desc = "Cancel completion" },
|
|
||||||
{ on = "<Tab>", run = "close --submit", desc = "Submit the completion" },
|
|
||||||
{ on = "<Enter>", run = [ "close --submit", "close_input --submit" ], desc = "Submit the completion and input" },
|
|
||||||
|
|
||||||
{ on = "<A-k>", run = "arrow -1", desc = "Move cursor up" },
|
|
||||||
{ on = "<A-j>", run = "arrow 1", desc = "Move cursor down" },
|
|
||||||
|
|
||||||
{ on = "<Up>", run = "arrow -1", desc = "Move cursor up" },
|
|
||||||
{ on = "<Down>", run = "arrow 1", desc = "Move cursor down" },
|
|
||||||
|
|
||||||
{ on = "<C-p>", run = "arrow -1", desc = "Move cursor up" },
|
|
||||||
{ on = "<C-n>", run = "arrow 1", desc = "Move cursor down" },
|
|
||||||
|
|
||||||
# Help
|
|
||||||
{ on = "~", run = "help", desc = "Open help" },
|
|
||||||
{ on = "<F3>", run = "help", desc = "Open help" },
|
|
||||||
]
|
|
||||||
|
|
||||||
[help]
|
|
||||||
|
|
||||||
keymap = [
|
|
||||||
{ on = "<Esc>", run = "escape", desc = "Clear the filter, or hide the help" },
|
|
||||||
{ on = "<C-[>", run = "escape", desc = "Clear the filter, or hide the help" },
|
|
||||||
{ on = "<C-c>", 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 = "<Up>", run = "arrow -1", desc = "Move cursor up" },
|
|
||||||
{ on = "<Down>", 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"
|
|
||||||
@@ -1,22 +1,17 @@
|
|||||||
[[plugin.deps]]
|
[[plugin.deps]]
|
||||||
use = "yazi-rs/plugins:jump-to-char"
|
use = "yazi-rs/plugins:jump-to-char"
|
||||||
rev = "c0ad8a3"
|
rev = "eaf6920"
|
||||||
hash = "30fc0b37f03a597b92d387268319450f"
|
hash = "ce67445ebb1bf3d97b8e44f50904b2c5"
|
||||||
|
|
||||||
[[plugin.deps]]
|
[[plugin.deps]]
|
||||||
use = "Reledia/glow"
|
use = "Reledia/glow"
|
||||||
rev = "2da96e3"
|
rev = "bd3eaa5"
|
||||||
hash = "f9ee1436e3b853508d87f7d49dce56e6"
|
hash = "92b5c58159a51c567f82b618cee2b78"
|
||||||
|
|
||||||
[[plugin.deps]]
|
[[plugin.deps]]
|
||||||
use = "yazi-rs/plugins:smart-enter"
|
use = "yazi-rs/plugins:smart-enter"
|
||||||
rev = "2ad42fa"
|
rev = "b886025"
|
||||||
hash = "56fdabc96fc1f4d53c96eb884b02a5be"
|
hash = "56fdabc96fc1f4d53c96eb884b02a5be"
|
||||||
|
|
||||||
[[plugin.deps]]
|
|
||||||
use = "yazi-rs/plugins:git"
|
|
||||||
rev = "2ad42fa"
|
|
||||||
hash = "e01006bfb38951ea89031bd918b20dbb"
|
|
||||||
|
|
||||||
[flavor]
|
[flavor]
|
||||||
deps = []
|
deps = []
|
||||||
|
|||||||
@@ -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.
|
|
||||||
@@ -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.
|
|
||||||
@@ -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 }
|
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
# glow.yazi
|
# 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:
|
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
|
```bash
|
||||||
|
|||||||
2
yazi/plugins/glow.yazi/main.lua
Normal file → Executable file
2
yazi/plugins/glow.yazi/main.lua
Normal file → Executable file
@@ -5,7 +5,7 @@ function M:peek(job)
|
|||||||
local preview_width = 55
|
local preview_width = 55
|
||||||
|
|
||||||
local child = Command("glow")
|
local child = Command("glow")
|
||||||
:args({
|
:arg({
|
||||||
"--style",
|
"--style",
|
||||||
"dark",
|
"dark",
|
||||||
"--width",
|
"--width",
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ run = "plugin jump-to-char"
|
|||||||
desc = "Jump to char"
|
desc = "Jump to char"
|
||||||
```
|
```
|
||||||
|
|
||||||
Make sure the <kbd>f</kbd> 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
|
## License
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
--- @since 25.5.28
|
--- @since 25.5.31
|
||||||
|
|
||||||
local AVAILABLE_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789."
|
local AVAILABLE_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789."
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,12 @@ play = [
|
|||||||
{ run = 'open -a IINA "$@"', orphan = true, for = "unix", desc='IINA'}
|
{ run = 'open -a IINA "$@"', orphan = true, for = "unix", desc='IINA'}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[image]
|
||||||
|
renderer = "kitty"
|
||||||
|
|
||||||
|
[preview]
|
||||||
|
max_width = 1000
|
||||||
|
max_height = 1000
|
||||||
# [mgr]
|
# [mgr]
|
||||||
# ratio = [2, 6, 5] # left, center, right pane width ratios
|
# ratio = [2, 6, 5] # left, center, right pane width ratios
|
||||||
|
|
||||||
@@ -14,3 +20,4 @@ play = [
|
|||||||
prepend_previewers = [
|
prepend_previewers = [
|
||||||
{ name = "*.md", run = "glow" },
|
{ name = "*.md", run = "glow" },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user