Compare commits

...

10 Commits

Author SHA1 Message Date
Thomas Naderer
d8a20d620a chore: clean up dotfiles and add gitignore whitelist
Switch to whitelist-based .gitignore to only track essential configs:
nvim, yazi, kitty, zsh, ideavim, karabiner, tmux, scripts, starship.
Remove history, compiled files, and plugin dirs from tracking.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 12:57:14 +01:00
Thomas Naderer
61b1e3d2a9 refactor(nvim): modernize plugin stack
Removed dead weight:
- Drop nightfox, rose-pine, kanagawa, everforest colorschemes
- Remove fzf/fzf.vim (redundant with telescope)
- Remove vim-fugitive and its keymaps (lazygit covers this)
- Remove Comment.nvim (built into nvim 0.10+)

Replaced:
- nvim-cmp → blink.cmp (Rust-powered, faster, ghost text)
- none-ls/null-ls → conform.nvim (async, maintained)
- cmp-nvim-lsp capabilities → blink.cmp.get_lsp_capabilities()
- Copilot suggestions now routed through blink-copilot

Added:
- lazydev.nvim for proper Lua LSP in nvim config
- flash.nvim (s/S jump anywhere on screen)
- which-key.nvim (leader key popup with groups)
- snacks.nvim (notifier + word highlights)
- nvim-treesitter-textobjects (af/if, ac/ic, ]f/[f)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-01 21:26:55 +01:00
Thomas Naderer
82fc23530d 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>
2026-03-01 15:44:29 +01:00
Thomas Naderer
2229f7741b tmux: enforce prefix+number window switching 2026-02-21 22:25:30 +01:00
Thomas Naderer
6d691fd94e tmux: make prefix+b toggle both statusline and pane info 2026-02-21 22:24:46 +01:00
Thomas Naderer
2be5018eaf tmux: fix pane label rendering by simplifying border format 2026-02-21 22:23:47 +01:00
Thomas Naderer
5767108c56 tmux: remove username/hostname from status-left 2026-02-21 22:21:41 +01:00
Thomas Naderer
a9b83a5aff tmux: redesign statusline to sleek minimal modern style 2026-02-21 22:20:53 +01:00
Thomas Naderer
28fc598f33 tmux: move theme switcher to Prefix+Shift+1/2/3 (!/@/#) 2026-02-21 22:19:36 +01:00
Thomas Naderer
6e03fe4eda tmux: add switchable gruvbox/catppuccin/tokyonight themes 2026-02-21 22:17:53 +01:00
53 changed files with 2872 additions and 5309 deletions

58
.gitignore vendored Normal file
View File

@@ -0,0 +1,58 @@
# Ignore everything by default
*
!.gitignore
# === Core dotfiles ===
# Neovim
!nvim/
!nvim/**
nvim/plugin/
nvim/.nvimlog
nvim/lazy-lock.json
# Yazi
!yazi/
!yazi/**
yazi/plugins/
# Kitty
!kitty/
!kitty/**
# Zsh (only .zshrc)
!zsh/
!zsh/.zshrc
# IdeaVim
!ideavim/
!ideavim/**
# === Definitely persist ===
# Karabiner (not automatic_backups)
!karabiner/
!karabiner/**
karabiner/automatic_backups/
# Tmux (not plugins)
!tmux/
!tmux/**
tmux/plugins/
# Scripts
!scripts/
!scripts/**
# Starship prompt
!starship.toml
# === Always ignore ===
.DS_Store
**/.DS_Store
**/.claude/
*.nvimlog
*.log
*.bak
kitty/kitty-themes/
kitty/kitty-dark.png

View File

@@ -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'"
} }
] ]
}, },
@@ -1461,12 +1436,13 @@
} }
] ]
}, },
{ {
"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'"
} }
] ]
} }

View File

@@ -1,9 +0,0 @@
{
"profiles": [
{
"name": "Default profile",
"selected": true,
"virtual_hid_keyboard": { "keyboard_type_v2": "iso" }
}
]
}

View File

@@ -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

View File

@@ -1,47 +1,80 @@
background #3b3c35 # vim:ft=kitty
foreground #fdfff1
cursor #fdfff1 ## name: Catppuccin-Mocha
cursor_text_color #000000 ## author: Pocco81 (https://github.com/Pocco81)
selection_foreground #3b3c35 ## license: MIT
selection_background #fdfff1 ## upstream: https://github.com/catppuccin/kitty/blob/main/mocha.conf
## blurb: Soothing pastel theme for the high-spirited!
# dull black
color0 #3b3c35
# light black
color8 #6e7066
# dull red
color1 #f82570
# light red
color9 #f82570
# dull green # The basic colors
color2 #a6e12d foreground #CDD6F4
# light green background #1E1E2E
color10 #a6e12d selection_foreground #1E1E2E
selection_background #F5E0DC
# Cursor colors
cursor #F5E0DC
cursor_text_color #1E1E2E
# URL underline color when hovering with mouse
url_color #F5E0DC
# Kitty window border colors
active_border_color #B4BEFE
inactive_border_color #6C7086
bell_border_color #F9E2AF
# OS Window titlebar colors
wayland_titlebar_color system
macos_titlebar_color system
# Tab bar colors
active_tab_foreground #11111B
active_tab_background #CBA6F7
inactive_tab_foreground #CDD6F4
inactive_tab_background #181825
tab_bar_background #11111B
# Colors for marks (marked text in the terminal)
mark1_foreground #1E1E2E
mark1_background #B4BEFE
mark2_foreground #1E1E2E
mark2_background #CBA6F7
mark3_foreground #1E1E2E
mark3_background #74C7EC
# The 16 terminal colors
# black
color0 #45475A
color8 #585B70
# red
color1 #F38BA8
color9 #F38BA8
# green
color2 #A6E3A1
color10 #A6E3A1
# yellow # yellow
color3 #e4db73 color3 #F9E2AF
# light yellow color11 #F9E2AF
color11 #e4db73
# blue # blue
color4 #fc961f color4 #89B4FA
# light blue color12 #89B4FA
color12 #fc961f
# magenta # magenta
color5 #ae81ff color5 #F5C2E7
# light magenta color13 #F5C2E7
color13 #ae81ff
# cyan # cyan
color6 #66d9ee color6 #94E2D5
# light cyan color14 #94E2D5
color14 #66d9ee
# dull white # white
color7 #fdfff1 color7 #BAC2DE
# bright white color15 #A6ADC8
color15 #fdfff1

View File

@@ -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 ß

View File

@@ -1,5 +1,14 @@
# Font Configuration # Font Configuration
font_family MesloGS NF # -- Uncomment one font_family line to switch fonts (reload with ctrl+shift+F5) --
# font_family MesloLGS NF
# font_family JetBrainsMono Nerd Font
# font_family MonaspaceNeon Nerd Font
# font_family MonaspaceArgon Nerd Font
# font_family MonaspaceXenon Nerd Font
# font_family MonaspaceRadon Nerd Font
# font_family MonaspaceKrypton Nerd Font
font_family Maple Mono NF
# font_family VulfMono Demo Regular
bold_font auto bold_font auto
italic_font auto italic_font auto
bold_italic_font auto bold_italic_font auto
@@ -7,16 +16,26 @@ 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
# Nerd Font symbol fallback for fonts without glyphs (e.g. Vulf Mono)
# symbol_map U+E000-U+F8FF,U+23FB-U+23FE,U+2665,U+26A1,U+F000-U+FFFD MesloLGS NF
text_composition_strategy platform text_composition_strategy platform
undercurl_style thin-sparse undercurl_style thin-sparse
# Cursor Configuration # Cursor Configuration
cursor_shape beam cursor_shape block
cursor_beam_thickness 1.5 cursor_beam_thickness 1.5
cursor_underline_thickness 2.0 cursor_underline_thickness 2.0
cursor_blink_interval 0.5 cursor_blink_interval 0.5
cursor_stop_blinking_after 15.0 cursor_stop_blinking_after 15.0
cursor_text_color background
# Cursor trail (animated cursor movement)
cursor_trail 1
cursor_trail_decay 0.20 0.30
# optional tweaks
cursor_trail_start_threshold 20
# cursor_trail_color red
# Window Configuration # Window Configuration
window_padding_width 0 window_padding_width 0
@@ -41,7 +60,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 +77,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-Mocha
include current-theme.conf include current-theme.conf
# END_KITTY_THEME # END_KITTY_THEME
@@ -76,21 +95,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 +127,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

56
kitty/theme.conf Normal file
View File

@@ -0,0 +1,56 @@
# Based on https://github.com/morhetz/gruvbox by morhetz <morhetz@gmail.com>
# Adapted to kitty by wdomitrz <witekdomitrz@gmail.com>
cursor #928374
cursor_text_color background
url_color #83a598
visual_bell_color #8ec07c
bell_border_color #8ec07c
active_border_color #d3869b
inactive_border_color #665c54
foreground #ebdbb2
background #282828
selection_foreground #928374
selection_background #ebdbb2
active_tab_foreground #fbf1c7
active_tab_background #665c54
inactive_tab_foreground #a89984
inactive_tab_background #3c3836
# black (bg3/bg4)
color0 #665c54
color8 #7c6f64
# red
color1 #cc241d
color9 #fb4934
#: green
color2 #98971a
color10 #b8bb26
# yellow
color3 #d79921
color11 #fabd2f
# blue
color4 #458588
color12 #83a598
# purple
color5 #b16286
color13 #d3869b
# aqua
color6 #689d6a
color14 #8ec07c
# white (fg4/fg3)
color7 #a89984
color15 #bdae93

19
kitty/toggle_blur.sh Executable file
View File

@@ -0,0 +1,19 @@
#!/bin/bash
CONFIG_FILE="/Users/thomasnaderer/.config/kitty/kitty.conf"
# Check current blur setting
current_blur=$(grep "^background_blur" "$CONFIG_FILE" | awk '{print $2}')
if [ "$current_blur" = "0" ] || [ -z "$current_blur" ]; then
# Currently no blur, enable it
sed -i '' 's/^background_blur.*/background_blur 20/' "$CONFIG_FILE"
echo "Background blur enabled"
else
# Currently blurred, disable it
sed -i '' 's/^background_blur.*/background_blur 0/' "$CONFIG_FILE"
echo "Background blur disabled"
fi
# Reload kitty configuration
/opt/homebrew/bin/kitty @ load-config

View File

@@ -1,41 +0,0 @@
local cmp = require('cmp')
local luasnip = require('luasnip')
require("luasnip.loaders.from_vscode").lazy_load() -- Load friendly-snippets
require("luasnip.loaders.from_lua").load({ paths = "~/.config/nvim/lua/snippets" }) -- Load custom Lua snippets
cmp.setup({
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body) -- Use LuaSnip for expanding snippets
end,
},
mapping = {
['<C-Space>'] = cmp.mapping.complete(), -- Trigger completion manually
['<CR>'] = cmp.mapping.confirm({ select = true }), -- Confirm completion
['<Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end, { 'i', 's' }),
['<S-Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { 'i', 's' }),
},
sources = cmp.config.sources({
{ name = 'nvim_lsp' }, -- LSP suggestions
{ name = 'luasnip' }, -- Snippets
{ name = 'buffer' }, -- Buffer words
{ name = 'path' }, -- File paths
})
})

View File

@@ -5,7 +5,7 @@ local opt = { noremap = true }
local opts = { noremap = true, silent = true } local opts = { noremap = true, silent = true }
local term_opts = { silent = true } local term_opts = { silent = true }
local keymap = vim.api.nvim_set_keymap local keymap = vim.keymap.set
-- {{{ Leader Key (moved to init.lua) -- {{{ Leader Key (moved to init.lua)
-- vim.g.mapleader = " " -- set <Space> as leader key -- vim.g.mapleader = " " -- set <Space> as leader key
@@ -13,15 +13,15 @@ local keymap = vim.api.nvim_set_keymap
-- }}} -- }}}
-- {{{ Basic Mappings -- {{{ Basic Mappings
keymap("n", ";", ":", opt) -- remap ; to : keymap("n", ";", ":", opt) -- remap ; to :
keymap("n", ":", ";", opt) -- remap : to ; keymap("n", ":", ";", opt) -- remap : to ;
keymap("n", "<leader>w", ":w<cr>", opts) -- save keymap("n", "<leader>w", ":w<cr>", opts) -- save current buffer
keymap("n", "<leader>q", ":q<cr>", opts) -- quit keymap("n", "<leader>q", ":confirm qall<cr>", opts) -- quit Neovim (prompt on unsaved changes)
keymap("n", "<leader>wq", ":wq<cr>", opts) -- save and quit keymap("n", "<leader>wq", ":wall | qa<cr>", opts) -- save all writable buffers and quit
keymap("n", "<leader>W", ":w!<cr>", opts) -- force save keymap("n", "<leader>W", ":w!<cr>", opts) -- force save current buffer
keymap("n", "<leader>Q", ":q!<cr>", opts) -- force quit keymap("n", "<leader>Q", ":qall!<cr>", opts) -- force quit Neovim
keymap("n", "<leader>WQ", ":wq!<cr>", opts) -- force save and quit keymap("n", "<leader>WQ", ":wall! | qa!<cr>", opts) -- force save all and quit
-- }}} -- }}}
-- {{{ Navigation -- {{{ Navigation
@@ -29,125 +29,122 @@ keymap("n", "j", "gj", opts) -- move visually down wrapped lines
keymap("n", "k", "gk", opts) -- move visually up wrapped lines keymap("n", "k", "gk", opts) -- move visually up wrapped lines
-- Keep arrow key navigation (non-standard but you requested it) -- Keep arrow key navigation (non-standard but you requested it)
keymap("n", "<Left>", "<C-w>h", opts) -- move to left window keymap("n", "<Left>", "<C-w>h", opts) -- move to left window
keymap("n", "<Right>", "<C-w>l", opts) -- move to right window keymap("n", "<Right>", "<C-w>l", opts) -- move to right window
keymap("n", "<Up>", "<C-w>k", opts) -- move to upper window keymap("n", "<Up>", "<C-w>k", opts) -- move to upper window
keymap("n", "<Down>", "<C-w>j", opts) -- move to lower window keymap("n", "<Down>", "<C-w>j", opts) -- move to lower window
keymap("n", "<s-l>", ":bnext<cr>", opts) -- next buffer keymap("n", "<s-l>", ":bnext<cr>", opts) -- next buffer
keymap("n", "<s-h>", ":bprevious<cr>", opts) -- previous buffer keymap("n", "<s-h>", ":bprevious<cr>", opts) -- previous buffer
-- }}} -- }}}
-- {{{ Window Splitting -- {{{ Window Splitting
keymap("n", "<leader>sv", ":vsplit<cr>", opts) -- split vertically keymap("n", "<leader>sv", ":vsplit<cr>", opts) -- split vertically
keymap("n", "<leader>sh", ":split<cr>", opts) -- split horizontally keymap("n", "<leader>sh", ":split<cr>", opts) -- split horizontally
keymap("n", "<leader>sc", ":close<cr>", opts) -- close current split keymap("n", "<leader>sc", ":close<cr>", opts) -- close current split
keymap("n", "<leader>so", ":only<cr>", opts) -- close all other splits keymap("n", "<leader>so", ":only<cr>", opts) -- close all other splits
-- }}} -- }}}
-- {{{ Window Resizing -- {{{ Window Resizing
keymap("n", "<leader>+", ":resize +5<cr>", opts) -- increase window height keymap("n", "<leader>+", ":resize +5<cr>", opts) -- increase window height
keymap("n", "<leader>-", ":resize -5<cr>", opts) -- decrease window height keymap("n", "<leader>-", ":resize -5<cr>", opts) -- decrease window height
keymap("n", "<leader><", ":vertical resize -5<cr>", opts) -- decrease window width keymap("n", "<leader><", ":vertical resize -5<cr>", opts) -- decrease window width
keymap("n", "<leader>>", ":vertical resize +5<cr>", opts) -- increase window width keymap("n", "<leader>>", ":vertical resize +5<cr>", opts) -- increase window width
keymap("n", "<leader>=", "<C-w>=", opts) -- equalize window sizes keymap("n", "<leader>=", "<C-w>=", opts) -- equalize window sizes
-- }}} -- }}}
-- {{{ Visual Mode / Text, Clipboard -- {{{ Visual Mode / Text, Clipboard
keymap("v", ">", ">gv", opts) -- indent right, stay in visual mode keymap("v", ">", ">gv", opts) -- indent right, stay in visual mode
keymap("v", "<", "<gv", opts) -- indent left, stay in visual mode keymap("v", "<", "<gv", opts) -- indent left, stay in visual mode
keymap("x", "<s-j>", ":move '>+1<CR>gv-gv", opts) -- move selected block down keymap("x", "<s-j>", ":move '>+1<CR>gv-gv", opts) -- move selected block down
keymap("x", "<s-k>", ":move '<-2<CR>gv-gv", opts) -- move selected block up keymap("x", "<s-k>", ":move '<-2<CR>gv-gv", opts) -- move selected block up
keymap("n", "Q", "gq", opts) -- format paragraph keymap("n", "Q", "gq", opts) -- format paragraph
keymap("x", "Q", "gq", opts) -- format selection keymap("x", "Q", "gq", opts) -- format selection
keymap("x", "Y", '"+y', opt) -- yank to system clipboard keymap("x", "Y", '"+y', opt) -- yank to system clipboard
keymap("n", "<space><space>", [[:%s/\<<c-r>=expand("<cword>")<cr>\>/]], opt) -- replace word under cursor keymap("n", "<space><space>", [[:%s/\<<c-r>=expand("<cword>")<cr>\>/]], opt) -- replace word under cursor
-- }}} -- }}}
-- {{{ Editing / Behavior -- {{{ Editing / Behavior
keymap("n", "q", "<nop>", opts) -- disable q (record macro) keymap("n", "q", "<nop>", opts) -- disable q (record macro)
keymap("n", "qq", "q", opts) -- if you really want to record macro use qq keymap("n", "qq", "q", opts) -- if you really want to record macro use qq
keymap("n", "c", '"_c', opts) -- change without yanking to default register keymap("n", "c", '"_c', opts) -- change without yanking to default register
keymap("n", "C", '"_C', opts) -- change line without yanking to default register keymap("n", "C", '"_C', opts) -- change line without yanking to default register
vim.keymap.set("n", "<leader>n", function() -- toggle line numbers vim.keymap.set("n", "<leader>n", function() -- toggle line numbers
if vim.wo.number and vim.wo.relativenumber then if vim.wo.number and vim.wo.relativenumber then
vim.wo.number = false vim.wo.number = false
vim.wo.relativenumber = false vim.wo.relativenumber = false
elseif vim.wo.number then elseif vim.wo.number then
vim.wo.relativenumber = true vim.wo.relativenumber = true
else else
vim.wo.number = true vim.wo.number = true
end end
end, { desc = "Toggle line number modes" }) end, { desc = "Toggle line number modes" })
keymap("n", "<leader>c", ":set cursorcolumn! cursorline! <cr>", opts) -- toggle cursor column and line keymap("n", "<leader>c", ":set cursorcolumn! cursorline! <cr>", opts) -- toggle cursor column and line
keymap("n", "<esc>", ":nohlsearch<cr><esc>", opts) -- clear search highlight keymap("n", "<esc>", ":nohlsearch<cr><esc>", opts) -- clear search highlight
-- }}} -- }}}
-- {{{ Spellcheck -- {{{ Spellcheck
keymap("n", "<leader>se", ":setlocal spell! spelllang=en_us<cr>", opts) -- toggle English spell check keymap("n", "<leader>se", ":setlocal spell! spelllang=en_us<cr>", opts) -- toggle English spell check
keymap("n", "<leader>sd", ":setlocal spell! spelllang=de_at<cr>", opts) -- toggle Austrian German spell check keymap("n", "<leader>sd", ":setlocal spell! spelllang=de_at<cr>", opts) -- toggle Austrian German spell check
keymap("n", "<leader>ss", ":setlocal spell! spelllang=es<cr>", opts) -- toggle Spanish spell check keymap("n", "<leader>ss", ":setlocal spell! spelllang=es<cr>", opts) -- toggle Spanish spell check
-- }}} -- }}}
-- {{{ Timestamp / Date -- {{{ Timestamp / Date
keymap("n", "<leader>dt", [[i<c-r>=strftime("%d.%m.%Y")<cr><space>]], opts) -- insert current date keymap("n", "<leader>dt", [[i<c-r>=strftime("%d.%m.%Y")<cr><space>]], opts) -- insert current date
keymap("n", "<leader>tt", [[i<c-r>=strftime("%H:%M")<cr><space>]], opts) -- insert current time keymap("n", "<leader>tt", [[i<c-r>=strftime("%H:%M")<cr><space>]], opts) -- insert current time
-- }}} -- }}}
-- {{{ External / System -- {{{ External / System
keymap("n", "<leader>x", [[:!open %<cr><cr>]], opts) -- open current file with system default app keymap("n", "<leader>x", [[:!open %<cr><cr>]], opts) -- open current file with system default app
keymap("c", "w!!", [[w !sudo tee %]], opt) -- save file with sudo keymap("c", "w!!", [[w !sudo tee %]], opt) -- save file with sudo
-- }}} -- }}}
-- {{{ Diff / Git -- {{{ Diff / Git
keymap("n", "<leader>gd", ":Gvdiffsplit<cr>", opts) -- git diff split (requires fugitive)
keymap("n", "<leader>gs", ":Git<cr>", opts) -- open git status tree (requires fugitive)
keymap("n", "<leader>gr", ":terminal git log --graph --oneline --decorate --all<CR>i", opts) -- show git log graph in terminal keymap("n", "<leader>gr", ":terminal git log --graph --oneline --decorate --all<CR>i", opts) -- show git log graph in terminal
-- GitSigns toggles -- GitSigns toggles
vim.keymap.set('n', '<leader>gt', function() require('gitsigns').toggle_signs() end, { desc = 'Toggle git signs' }) vim.keymap.set('n', '<leader>gt', function() require('gitsigns').toggle_signs() end, { desc = 'Toggle git signs' })
vim.keymap.set('n', '<leader>gb', function() require('gitsigns').toggle_current_line_blame() end, { desc = 'Toggle git blame' }) vim.keymap.set('n', '<leader>gb', function() require('gitsigns').toggle_current_line_blame() end,
{ desc = 'Toggle git blame' })
vim.keymap.set('n', '<leader>gx', function() require('gitsigns').toggle_deleted() end, { desc = 'Toggle git deleted' }) vim.keymap.set('n', '<leader>gx', function() require('gitsigns').toggle_deleted() end, { desc = 'Toggle git deleted' })
vim.keymap.set('n', '<leader>gn', function() require('gitsigns').toggle_numhl() end, { desc = 'Toggle git number highlights' }) vim.keymap.set('n', '<leader>gn', function() require('gitsigns').toggle_numhl() end,
{ desc = 'Toggle git number highlights' })
vim.keymap.set('n', '<leader>gc', function() require('gitsigns').toggle_linehl() end, { desc = 'Toggle git line colors' }) vim.keymap.set('n', '<leader>gc', function() require('gitsigns').toggle_linehl() end, { desc = 'Toggle git line colors' })
-- LSP diagnostic toggle -- LSP diagnostic toggle
vim.keymap.set('n', '<leader>ld', function() vim.keymap.set('n', '<leader>ld', function()
local config = vim.diagnostic.config() local config = vim.diagnostic.config()
vim.diagnostic.config({ vim.diagnostic.config({
virtual_text = not config.virtual_text, virtual_text = not config.virtual_text,
signs = not config.signs, signs = not config.signs,
underline = not config.underline, underline = not config.underline,
}) })
end, { desc = 'Toggle LSP diagnostics' }) end, { desc = 'Toggle LSP diagnostics' })
-- Toggle fold column -- Toggle fold column
vim.keymap.set("n", "<leader>un", function() vim.keymap.set("n", "<leader>un", function()
vim.wo.foldcolumn = vim.wo.foldcolumn == "0" and "1" or "0" vim.wo.foldcolumn = vim.wo.foldcolumn == "0" and "1" or "0"
end, { desc = "Toggle fold column" }) end, { desc = "Toggle fold column" })
keymap("n", "<leader>si", ":source $MYVIMRC<CR>", opts) -- source init.lua ($MYVIMRC is auto path to your init.lua) keymap("n", "<leader>si", ":source $MYVIMRC<CR>", opts) -- source init.lua ($MYVIMRC is auto path to your init.lua)
-- }}} -- }}}
-- {{{ Plugins -- {{{ Plugins
-- Yazi (keeping this here since it's a simple command keymap)
keymap("n", "<leader>y", ":Yazi<cr>", opt) -- open Yazi file manager
-- mkdx checkbox toggle (disable default space key, use leader+t instead) -- mkdx checkbox toggle (disable default space key, use leader+t instead)
vim.g["mkdx#settings"] = { vim.g["mkdx#settings"] = {
checkbox = { checkbox = {
toggles = {' ', 'x', '-'}, toggles = { ' ', 'x', '-' },
toggle_key = '' toggle_key = ''
} }
} }
keymap("n", "<leader>t", "<Plug>(mkdx-checkbox-next-n)", opt) -- toggle markdown checkbox keymap("n", "<leader>t", "<Plug>(mkdx-checkbox-next-n)", opt) -- toggle markdown checkbox
-- }}} -- }}}

View File

@@ -1,182 +0,0 @@
# vim:fileencoding=utf-8:foldmethod=marker
vim.cmd [[packadd packer.nvim]]
require('packer').startup(function(use)
-- {{{ Packer manages itself
use 'wbthomason/packer.nvim' -- Packer manages itself
-- }}}
-- {{{ VIM AutoSave
use({
'okuuva/auto-save.nvim',
tag = 'v1*',
config = function()
require('auto-save').setup({
-- your config goes here
-- or just leave it empty :)
})
end,
})
-- }}}
-- {{{ Nvim-Tree
use {
'nvim-tree/nvim-tree.lua',
config = function()
require('plugins.nvim-tree').setup()
end,
}
-- }}}
-- {{{ Themes
use 'gruvbox-community/gruvbox' -- Gruvbox theme
use 'folke/tokyonight.nvim' -- Tokyo Night theme
-- }}}
-- {{{ Treesitter
use {
'nvim-treesitter/nvim-treesitter',
run = ':TSUpdate' -- Keep parsers up to date
}
require('plugins.treesitter')
-- }}}
-- {{{ Rainbow Delimiters
use 'HiPhish/rainbow-delimiters.nvim'
require('plugins.rainbow_delimiters')
-- }}}
-- {{{ Git Integration
use 'lewis6991/gitsigns.nvim' -- Git decorations in the gutter
use 'tpope/vim-fugitive' -- Git commands in Neovim
-- }}}
-- {{{ Status Line
use {
'nvim-lualine/lualine.nvim',
requires = { 'kyazdani42/nvim-web-devicons', opt = true } -- Optional icons
}
require('plugins.lualine')
-- Override background transparency with custom highlights
vim.cmd [[
highlight lualine_a_normal guibg=NONE
highlight lualine_b_normal guibg=NONE
highlight lualine_c_normal guibg=NONE
]]
-- }}}
-- {{{ HardTime
use {
'm4xshen/hardtime.nvim',
requires = { 'MunifTanjim/nui.nvim' }
}
-- }}}
-- {{{ FZF
use {
'junegunn/fzf',
run = function() vim.fn['fzf#install']() end
}
use 'junegunn/fzf.vim'
-- }}}
-- {{{ Productivity
use 'numToStr/Comment.nvim'
use 'windwp/nvim-autopairs'
use 'tpope/vim-surround'
-- }}}
-- {{{ LaTeX
use 'lervag/vimtex'
require('plugins.vimtex')
-- }}}
-- -- {{{ Outline
-- use {
-- 'hedyhli/outline.nvim',
-- config = function()
-- require('plugins.outline').setup()
-- end
-- }
-- }}}
-- {{{ Org-Mode
use {'nvim-orgmode/orgmode', config = function()
require('orgmode').setup{}
end
}
--}}}
-- {{{ Telescope
use {
'nvim-telescope/telescope.nvim',
requires = { {'nvim-lua/plenary.nvim'} },
config = function()
-- Leader key mappings for Telescope
vim.api.nvim_set_keymap('n', '<leader>ff', ':Telescope find_files<CR>'
, { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<leader>fg', ':Telescope live_grep<CR>',
{ noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<leader>fb', ':Telescope buffers<CR>', {
noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<leader>fh', ':Telescope help_tags<CR>',
{ noremap = true, silent = true })
end
}
-- }}}
-- Yazi.nvim {{{
use({
"mikavilpas/yazi.nvim",
config = function()
require("yazi").setup({
open_for_directories = false,
keymaps = {
show_help = "<F1>",
},
})
end,
})
--- }}}
-- Hop.nvim {{{
use {
'phaazon/hop.nvim',
branch = 'v2', -- optional but strongly recommended
config = function()
-- you can configure Hop the way you like here; see :h hop-config
require'hop'.setup { keys = 'etovxqpdygfblzhckisuran' }
end
}
-- }}}
-- nvim.cmp {{{
use {
'hrsh7th/nvim-cmp',
requires = {
'hrsh7th/cmp-buffer', -- Buffer completions
'hrsh7th/cmp-path', -- Path completions
'hrsh7th/cmp-nvim-lsp', -- LSP completions
'hrsh7th/cmp-nvim-lua', -- Neovim API completions
'saadparwaiz1/cmp_luasnip', -- Snippet completions
'L3MON4D3/LuaSnip', -- Snippet engine
'rafamadriz/friendly-snippets', -- Predefined snippets
'evesdropper/luasnip-latex-snippets.nvim'
}
}
-- }}}
-- Markdown {{{
use 'SidOfc/mkdx'
use({
'MeanderingProgrammer/render-markdown.nvim',
after = { 'nvim-treesitter' },
-- requires = { 'echasnovski/mini.nvim', opt = true }, -- if you use the mini.nvim suite
requires = { 'echasnovski/mini.icons', opt = true }, -- if you use standalone mini plugins
-- requires = { 'nvim-tree/nvim-web-devicons', opt = true }, -- if you prefer nvim-web-devicons
config = function()
require('render-markdown').setup({})
end,
})
-- }}}
-- Code Formatting {{{
use({
"nvimtools/none-ls.nvim",
config = function()
requires = { "nvim-lua/plenary.nvim" },
require("plugins.prettier")
end,
})
-- }}}
-- Zotero Integration (deactivated){{{
-- use {
-- 'jalvesaq/zotcite',
-- requires = {
-- 'vim-pandoc/vim-pandoc',
-- 'vim-pandoc/vim-pandoc-syntax'
-- }
-- }}}
end)

View File

@@ -1,233 +1,302 @@
-- ~/.config/nvim/lua/plugins/init.lua -- ~/.config/nvim/lua/plugins/init.lua
return { return {
-- Colorschemes -- Colorschemes
{ "gruvbox-community/gruvbox", priority = 1000 }, { "gruvbox-community/gruvbox", priority = 1000 },
{ "folke/tokyonight.nvim", priority = 1000 }, { "folke/tokyonight.nvim", priority = 1000 },
{ "catppuccin/nvim", name = "catppuccin", priority = 1000 }, { "catppuccin/nvim", name = "catppuccin", priority = 1000 },
{ "EdenEast/nightfox.nvim", priority = 1000 },
{ "rose-pine/neovim", name = "rose-pine", priority = 1000 },
{ "rebelot/kanagawa.nvim", priority = 1000 },
{ "sainnhe/everforest", priority = 1000 },
-- Auto-save -- Auto-save
{ {
"okuuva/auto-save.nvim", "okuuva/auto-save.nvim",
version = "v1.*", version = "v1.*",
event = { "InsertLeave", "TextChanged" }, event = { "InsertLeave", "TextChanged" },
opts = { opts = {
enabled = true, enabled = true,
execution_message = { trigger_events = {
enabled = false, immediate_save = { "BufLeave", "FocusLost" },
}, defer_save = { "InsertLeave", "TextChanged" },
trigger_events = { cancel_deferred_save = { "InsertEnter" },
immediate_save = { "BufLeave", "FocusLost" }, },
defer_save = { "InsertLeave", "TextChanged" },
cancel_defered_save = { "InsertEnter" },
},
},
},
-- File explorer
{ import = "plugins.nvim-tree" },
-- Treesitter
{ import = "plugins.treesitter" },
-- Rainbow delimiters
{ import = "plugins.rainbow_delimiters" },
-- Git integration
{
"lewis6991/gitsigns.nvim",
opts = {
signs = {
add = { text = "" },
change = { text = "" },
delete = { text = "_" },
topdelete = { text = "" },
changedelete = { text = "~" },
untracked = { text = "" },
},
signcolumn = false, -- Disable signs by default
numhl = false, -- Disable number highlights by default
linehl = false, -- Disable line highlights by default
word_diff = false,
current_line_blame = false,
}
},
{ "tpope/vim-fugitive" },
-- Status line
{ import = "plugins.lualine" },
-- FZF
{
"junegunn/fzf",
build = function()
vim.fn["fzf#install"]()
end,
},
{ "junegunn/fzf.vim" },
-- Productivity
{ "numToStr/Comment.nvim", opts = {} },
{ "windwp/nvim-autopairs", opts = {} },
{ "tpope/vim-surround" },
-- Tmux navigation
{ "christoomey/vim-tmux-navigator" },
-- LaTeX
{ import = "plugins.vimtex" },
-- Org-mode
{
"nvim-orgmode/orgmode",
dependencies = { "nvim-treesitter/nvim-treesitter" },
opts = {},
},
-- Telescope
{
"nvim-telescope/telescope.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
keys = {
{ "<leader>ff", ":Telescope find_files<CR>", desc = "Find files" },
{ "<leader>fg", ":Telescope live_grep<CR>", desc = "Live grep" },
{ "<leader>fb", ":Telescope buffers<CR>", desc = "Buffers" },
{ "<leader>fh", ":Telescope help_tags<CR>", desc = "Help tags" },
},
},
-- Yazi file manager
{
"mikavilpas/yazi.nvim",
keys = {
{ "<leader>y", ":Yazi<CR>", desc = "Open Yazi" },
},
opts = {
open_for_directories = false,
keymaps = {
show_help = "<F1>",
},
},
},
-- 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
{ "SidOfc/mkdx" },
{
"MeanderingProgrammer/render-markdown.nvim",
dependencies = { "nvim-treesitter/nvim-treesitter", "echasnovski/mini.icons" },
ft = { "markdown", "norg", "rmd", "org" },
config = function()
require('render-markdown').setup({
heading = {
enabled = true,
sign = true,
position = 'overlay',
icons = { '󰲡 ', '󰲣 ', '󰲥 ', '󰲧 ', '󰲩 ', '󰲫 ' },
backgrounds = {
'RenderMarkdownH1Bg',
'RenderMarkdownH2Bg',
'RenderMarkdownH3Bg',
'RenderMarkdownH4Bg',
'RenderMarkdownH5Bg',
'RenderMarkdownH6Bg',
},
foregrounds = {
'RenderMarkdownH1',
'RenderMarkdownH2',
'RenderMarkdownH3',
'RenderMarkdownH4',
'RenderMarkdownH5',
'RenderMarkdownH6',
},
}, },
})
-- Set highlights after ColorScheme event to ensure they persist
vim.api.nvim_create_autocmd("ColorScheme", {
callback = function()
-- Translucent heading backgrounds with alpha blending
vim.api.nvim_set_hl(0, 'RenderMarkdownH1Bg', { bg = '#2d5a7b', fg = 'NONE' })
vim.api.nvim_set_hl(0, 'RenderMarkdownH2Bg', { bg = '#3d5f4e', fg = 'NONE' })
vim.api.nvim_set_hl(0, 'RenderMarkdownH3Bg', { bg = '#5f5e3a', fg = 'NONE' })
vim.api.nvim_set_hl(0, 'RenderMarkdownH4Bg', { bg = '#5f4a3e', fg = 'NONE' })
vim.api.nvim_set_hl(0, 'RenderMarkdownH5Bg', { bg = '#4e4a5f', fg = 'NONE' })
vim.api.nvim_set_hl(0, 'RenderMarkdownH6Bg', { bg = '#4a5e5f', fg = 'NONE' })
-- Bold, colored heading text
vim.api.nvim_set_hl(0, 'RenderMarkdownH1', { fg = '#88c0d0', bold = true })
vim.api.nvim_set_hl(0, 'RenderMarkdownH2', { fg = '#a3be8c', bold = true })
vim.api.nvim_set_hl(0, 'RenderMarkdownH3', { fg = '#ebcb8b', bold = true })
vim.api.nvim_set_hl(0, 'RenderMarkdownH4', { fg = '#d08770', bold = true })
vim.api.nvim_set_hl(0, 'RenderMarkdownH5', { fg = '#b48ead', bold = true })
vim.api.nvim_set_hl(0, 'RenderMarkdownH6', { fg = '#8fbcbb', bold = true })
end,
})
-- Apply highlights immediately
vim.schedule(function()
vim.cmd('doautocmd ColorScheme')
end)
end,
},
-- Code formatting
{ import = "plugins.prettier" },
-- Copilot
{
"zbirenbaum/copilot.lua",
event = "InsertEnter",
opts = {
suggestion = { enabled = true },
panel = { enabled = true },
}, },
},
-- Indent guides -- File explorer
{ { import = "plugins.nvim-tree" },
"lukas-reineke/indent-blankline.nvim",
main = "ibl",
opts = {},
},
-- UFO (folding) -- Treesitter
{ { import = "plugins.treesitter" },
"kevinhwang91/nvim-ufo",
dependencies = { "kevinhwang91/promise-async" },
event = "BufReadPost",
config = function()
vim.o.foldcolumn = "0"
vim.o.foldlevel = 99
vim.o.foldlevelstart = 99
vim.o.foldenable = true
require("ufo").setup({ -- Rainbow delimiters
provider_selector = function(bufnr, filetype, buftype) { import = "plugins.rainbow_delimiters" },
-- Disable for latex and markdown files
if filetype == "tex" or filetype == "latex" or filetype == "markdown" then -- Git integration
return "" {
end "lewis6991/gitsigns.nvim",
return { "treesitter", "indent" } event = { "BufReadPre", "BufNewFile" },
opts = {
signs = {
add = { text = "" },
change = { text = "" },
delete = { text = "_" },
topdelete = { text = "" },
changedelete = { text = "~" },
untracked = { text = "" },
},
signcolumn = false, -- Disable signs by default
numhl = false, -- Disable number highlights by default
linehl = false, -- Disable line highlights by default
word_diff = false,
current_line_blame = false,
}
},
{
"kdheepak/lazygit.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
cmd = {
"LazyGit",
"LazyGitConfig",
"LazyGitCurrentFile",
"LazyGitFilter",
"LazyGitFilterCurrentFile",
},
keys = {
{ "<leader>gg", "<cmd>LazyGit<cr>", desc = "LazyGit" },
},
},
-- Status line
{ import = "plugins.lualine" },
-- Tmux statusline generator (run :TmuxlineSnapshot ~/.config/tmux/themes/tmuxline.tmux)
{
"edkolev/tmuxline.vim",
cmd = { "Tmuxline", "TmuxlineSnapshot" },
config = function()
vim.g.tmuxline_separators = {
left = "",
left_alt = "",
right = "",
right_alt = "",
space = " ",
}
-- Tokyo Night Moon colors, transparent background
vim.g.tmuxline_theme = {
a = { "#1e2030", "#82aaff" },
b = { "#82aaff", "default" },
c = { "#636da6", "default" },
x = { "#636da6", "default" },
y = { "#82aaff", "default" },
z = { "#1e2030", "#82aaff" },
win = { "#636da6", "default" },
cwin = { "#1e2030", "#c099ff" },
bg = { "#636da6", "default" },
}
vim.g.tmuxline_preset = {
a = "#S",
win = "#I #W",
cwin = "#I #W",
y = "%H:%M",
z = "%d %b",
}
end, end,
}) },
end,
}, -- Productivity
{ "windwp/nvim-autopairs", event = "InsertEnter", opts = {} },
{ "tpope/vim-surround", event = "VeryLazy" },
-- Flash: jump anywhere with 2 chars (replaces f/t for long range)
{
"folke/flash.nvim",
event = "VeryLazy",
opts = {
modes = {
char = {
enabled = false,
},
},
},
keys = {
{ "s", mode = { "n", "x", "o" }, function() require("flash").jump() end, desc = "Flash jump" },
{ "S", mode = { "n", "x", "o" }, function() require("flash").treesitter() end, desc = "Flash treesitter" },
},
},
-- Which-key: show available keybindings after leader
{
"folke/which-key.nvim",
event = "VeryLazy",
opts = {
spec = {
{ "<leader>f", group = "find" },
{ "<leader>g", group = "git" },
{ "<leader>s", group = "split/spell" },
{ "<leader>w", group = "write" },
{ "<leader>d", group = "date" },
{ "<leader>l", group = "lsp" },
},
},
},
-- Snacks: notifications + quality-of-life utilities
{
"folke/snacks.nvim",
priority = 1000,
lazy = false,
opts = {
notifier = { enabled = true },
words = { enabled = true },
},
},
-- -- Tmux navigation
-- { "christoomey/vim-tmux-navigator" },
-- LaTeX
{ import = "plugins.vimtex" },
-- Org-mode
{
"nvim-orgmode/orgmode",
dependencies = { "nvim-treesitter/nvim-treesitter" },
opts = {},
},
-- Telescope
{
"nvim-telescope/telescope.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
keys = {
{ "<leader>ff", ":Telescope find_files<CR>", desc = "Find files" },
{ "<leader>fg", ":Telescope live_grep<CR>", desc = "Live grep" },
{ "<leader>fb", ":Telescope buffers<CR>", desc = "Buffers" },
{ "<leader>fh", ":Telescope help_tags<CR>", desc = "Help tags" },
},
},
-- Yazi file manager
{
"mikavilpas/yazi.nvim",
keys = {
{ "<leader>y", ":Yazi<CR>", desc = "Open Yazi" },
},
opts = {
open_for_directories = false,
keymaps = {
show_help = "<F1>",
},
},
},
-- Markdown
{ "SidOfc/mkdx", ft = "markdown" },
{
"epwalsh/obsidian.nvim",
version = "*",
lazy = true,
ft = "markdown",
dependencies = { "nvim-lua/plenary.nvim" },
keys = {
{ "<leader>on", "<cmd>ObsidianNew<cr>", desc = "New note" },
{ "<leader>oo", "<cmd>ObsidianQuickSwitch<cr>", desc = "Quick switch" },
{ "<leader>os", "<cmd>ObsidianSearch<cr>", desc = "Search notes" },
{ "<leader>ob", "<cmd>ObsidianBacklinks<cr>", desc = "Backlinks" },
{ "<leader>ot", "<cmd>ObsidianTags<cr>", desc = "Tags" },
{ "<leader>od", "<cmd>ObsidianToday<cr>", desc = "Today's note" },
},
opts = {
workspaces = {
{ name = "private", path = "~/Library/Mobile Documents/iCloud~md~obsidian/Documents/Private" },
{ name = "work", path = "~/Library/Mobile Documents/iCloud~md~obsidian/Documents/Work" },
},
completion = { nvim_cmp = false, min_chars = 2 },
ui = { enable = false }, -- render-markdown.nvim übernimmt das
disable_frontmatter = true,
},
},
{
"iamcco/markdown-preview.nvim",
cmd = { "MarkdownPreview", "MarkdownPreviewStop", "MarkdownPreviewToggle" },
ft = { "markdown" },
build = function() vim.fn["mkdp#util#install"]() end,
keys = {
{ "<leader>mp", "<cmd>MarkdownPreviewToggle<cr>", desc = "Markdown Preview" },
},
},
{
"MeanderingProgrammer/render-markdown.nvim",
dependencies = { "nvim-treesitter/nvim-treesitter", "echasnovski/mini.icons" },
ft = { "markdown", "norg", "rmd", "org" },
config = function()
require('render-markdown').setup({
heading = {
enabled = true,
sign = true,
position = 'overlay',
icons = { '󰲡 ', '󰲣 ', '󰲥 ', '󰲧 ', '󰲩 ', '󰲫 ' },
backgrounds = {
'RenderMarkdownH1Bg',
'RenderMarkdownH2Bg',
'RenderMarkdownH3Bg',
'RenderMarkdownH4Bg',
'RenderMarkdownH5Bg',
'RenderMarkdownH6Bg',
},
foregrounds = {
'RenderMarkdownH1',
'RenderMarkdownH2',
'RenderMarkdownH3',
'RenderMarkdownH4',
'RenderMarkdownH5',
'RenderMarkdownH6',
},
},
})
end,
},
-- Code formatting
{ import = "plugins.prettier" },
-- Copilot
{
"zbirenbaum/copilot.lua",
event = "InsertEnter",
opts = {
suggestion = { enabled = true },
panel = { enabled = true },
},
},
-- Indent guides
{
"lukas-reineke/indent-blankline.nvim",
main = "ibl",
event = { "BufReadPost", "BufNewFile" },
opts = {},
},
-- UFO (folding)
{
"kevinhwang91/nvim-ufo",
dependencies = { "kevinhwang91/promise-async" },
event = "BufReadPost",
config = function()
vim.o.foldcolumn = "0"
vim.o.foldlevel = 99
vim.o.foldlevelstart = 99
vim.o.foldenable = true
require("ufo").setup({
provider_selector = function(bufnr, filetype, buftype)
-- Disable for latex and markdown files
if filetype == "tex" or filetype == "latex" or filetype == "markdown" then
return ""
end
return { "treesitter", "indent" }
end,
})
end,
},
} }

View File

@@ -1,5 +1,16 @@
-- ~/.config/nvim/lua/plugins/lsp.lua -- ~/.config/nvim/lua/plugins/lsp.lua
return { return {
-- Lazydev: proper Lua LSP for neovim config files
{
"folke/lazydev.nvim",
ft = "lua",
opts = {
library = {
{ path = "luvit-meta/library", words = { "vim%.uv" } },
},
},
},
-- Mason (LSP installer) -- Mason (LSP installer)
{ {
"williamboman/mason.nvim", "williamboman/mason.nvim",
@@ -22,11 +33,11 @@ return {
dependencies = { dependencies = {
"mason.nvim", "mason.nvim",
"mason-lspconfig.nvim", "mason-lspconfig.nvim",
"hrsh7th/cmp-nvim-lsp", "saghen/blink.cmp",
}, },
config = function() config = function()
local lspconfig = require("lspconfig") local capabilities = require("blink.cmp").get_lsp_capabilities()
local capabilities = require("cmp_nvim_lsp").default_capabilities() local servers = { "lua_ls", "pyright", "texlab", "bashls", "marksman" }
-- Configure diagnostics to be hidden by default -- Configure diagnostics to be hidden by default
vim.diagnostic.config({ vim.diagnostic.config({
@@ -52,85 +63,79 @@ return {
end, end,
}) })
-- Language servers setup with capabilities -- Use Neovim 0.11+ LSP API to avoid deprecated lspconfig setup calls.
lspconfig.lua_ls.setup({ if vim.lsp.config and vim.lsp.enable then
capabilities = capabilities, for _, server in ipairs(servers) do
}) vim.lsp.config(server, { capabilities = capabilities })
lspconfig.pyright.setup({ end
capabilities = capabilities, vim.lsp.enable(servers)
}) else
lspconfig.texlab.setup({ local lspconfig = require("lspconfig")
capabilities = capabilities, for _, server in ipairs(servers) do
}) lspconfig[server].setup({ capabilities = capabilities })
lspconfig.bashls.setup({ end
capabilities = capabilities, end
})
lspconfig.marksman.setup({
capabilities = capabilities,
})
end, end,
}, },
-- Completion -- Copilot (suggestion/panel disabled — blink-copilot handles completions)
{ {
"hrsh7th/nvim-cmp", "zbirenbaum/copilot.lua",
event = "InsertEnter",
opts = {
suggestion = { enabled = false },
panel = { enabled = false },
},
},
-- blink.cmp: fast Rust-powered completion engine
{
"saghen/blink.cmp",
version = "*",
dependencies = { dependencies = {
"hrsh7th/cmp-buffer", "rafamadriz/friendly-snippets",
"hrsh7th/cmp-path",
"hrsh7th/cmp-nvim-lsp",
"hrsh7th/cmp-nvim-lua",
"saadparwaiz1/cmp_luasnip",
{ {
"L3MON4D3/LuaSnip", "L3MON4D3/LuaSnip",
dependencies = { "rafamadriz/friendly-snippets", "evesdropper/luasnip-latex-snippets.nvim" },
build = "make install_jsregexp", build = "make install_jsregexp",
dependencies = { "evesdropper/luasnip-latex-snippets.nvim" },
config = function()
require("luasnip.loaders.from_vscode").lazy_load()
require("luasnip.loaders.from_lua").load({ paths = "~/.config/nvim/lua/snippets" })
end,
},
{
"giuxtaposition/blink-cmp-copilot",
dependencies = { "zbirenbaum/copilot.lua" },
}, },
}, },
config = function() opts = {
local cmp = require("cmp") keymap = {
local luasnip = require("luasnip") preset = "default",
["<Tab>"] = { "select_next", "snippet_forward", "fallback" },
-- Load snippets ["<S-Tab>"] = { "select_prev", "snippet_backward", "fallback" },
require("luasnip.loaders.from_vscode").lazy_load() ["<CR>"] = { "accept", "fallback" },
require("luasnip.loaders.from_lua").load({ paths = "~/.config/nvim/lua/snippets" }) },
appearance = { nerd_font_variant = "mono" },
cmp.setup({ sources = {
snippet = { default = { "lazydev", "lsp", "path", "snippets", "buffer", "copilot" },
expand = function(args) providers = {
luasnip.lsp_expand(args.body) lazydev = {
end, name = "LazyDev",
module = "lazydev.integrations.blink",
score_offset = 100,
},
copilot = {
name = "copilot",
module = "blink-cmp-copilot",
score_offset = 50,
async = true,
},
}, },
mapping = cmp.mapping.preset.insert({ },
["<C-Space>"] = cmp.mapping.complete(), snippets = { preset = "luasnip" },
["<CR>"] = cmp.mapping.confirm({ select = true }), completion = {
["<Tab>"] = cmp.mapping(function(fallback) ghost_text = { enabled = true },
if require("copilot.suggestion").is_visible() then },
require("copilot.suggestion").accept() },
elseif cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { "i", "s" }),
}),
sources = cmp.config.sources({
{ name = "nvim_lsp" },
{ name = "luasnip" },
{ name = "buffer" },
{ name = "path" },
}),
})
end,
}, },
} }

View File

@@ -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 },
}, },
} }
@@ -146,7 +145,7 @@ return {
end end
return "󰅠 " .. table.concat(client_names, ", ") return "󰅠 " .. table.concat(client_names, ", ")
end, end,
color = { fg = colors.cyan }, color = { fg = colors.cyan },
separator = { left = "" } separator = { left = "" }
}, },
{ {
@@ -189,6 +188,6 @@ return {
tabline = {}, tabline = {},
winbar = {}, winbar = {},
inactive_winbar = {}, inactive_winbar = {},
extensions = { "nvim-tree", "fzf", "lazy" }, extensions = { "nvim-tree", "lazy" },
}, },
} }

View File

@@ -34,6 +34,9 @@ return {
highlight_git = true, highlight_git = true,
highlight_opened_files = "all", highlight_opened_files = "all",
icons = { icons = {
show = {
diagnostics = false,
},
glyphs = { glyphs = {
default = "", default = "",
symlink = "", symlink = "",
@@ -61,12 +64,6 @@ return {
diagnostics = { diagnostics = {
enable = true, enable = true,
show_on_dirs = true, show_on_dirs = true,
icons = {
hint = "",
info = "",
warning = "",
error = "",
},
}, },
filters = { filters = {
dotfiles = false, dotfiles = false,

View File

@@ -1,28 +1,29 @@
return { return {
"nvimtools/none-ls.nvim", "stevearc/conform.nvim",
dependencies = { "nvim-lua/plenary.nvim" }, event = { "BufWritePre" },
config = function() cmd = { "ConformInfo" },
local null_ls = require("null-ls") keys = {
null_ls.setup({ {
debug = false, "<leader>fm",
sources = { function() require("conform").format({ async = true }) end,
-- null_ls.builtins.diagnostics.markdownlint.with({ desc = "Format buffer",
-- filetypes = { "markdown", "markdown.pandoc", "pandoc" }, },
-- }), },
null_ls.builtins.formatting.prettier.with({ opts = {
filetypes = { "markdown", "markdown.pandoc", "pandoc" }, formatters_by_ft = {
}), javascript = { "prettier" },
}, typescript = { "prettier" },
on_attach = function(client, bufnr) javascriptreact = { "prettier" },
if client.supports_method("textDocument/formatting") then typescriptreact = { "prettier" },
vim.api.nvim_create_autocmd("BufWritePre", { json = { "prettier" },
buffer = bufnr, html = { "prettier" },
callback = function() css = { "prettier" },
vim.lsp.buf.format({ bufnr = bufnr }) markdown = { "mdformat" },
end, yaml = { "prettier" },
}) },
end format_on_save = {
end, timeout_ms = 500,
}) lsp_fallback = true,
end, },
},
} }

View File

@@ -1,6 +1,8 @@
return { return {
{
"nvim-treesitter/nvim-treesitter", "nvim-treesitter/nvim-treesitter",
build = ":TSUpdate", build = ":TSUpdate",
dependencies = { "nvim-treesitter/nvim-treesitter-textobjects" },
config = function() config = function()
require("nvim-treesitter.configs").setup({ require("nvim-treesitter.configs").setup({
ensure_installed = { "c", "lua", "python", "javascript", "markdown", "markdown_inline", "html", "css", "bash", "vim", "vimdoc" }, ensure_installed = { "c", "lua", "python", "javascript", "markdown", "markdown_inline", "html", "css", "bash", "vim", "vimdoc" },
@@ -39,6 +41,29 @@ return {
node_decremental = "grm", node_decremental = "grm",
}, },
}, },
textobjects = {
select = {
enable = true,
lookahead = true,
keymaps = {
["af"] = "@function.outer",
["if"] = "@function.inner",
["ac"] = "@class.outer",
["ic"] = "@class.inner",
["aa"] = "@parameter.outer",
["ia"] = "@parameter.inner",
},
},
move = {
enable = true,
set_jumps = true,
goto_next_start = { ["]f"] = "@function.outer", ["]c"] = "@class.outer" },
goto_next_end = { ["]F"] = "@function.outer", ["]C"] = "@class.outer" },
goto_previous_start = { ["[f"] = "@function.outer", ["[c"] = "@class.outer" },
goto_previous_end = { ["[F"] = "@function.outer", ["[C"] = "@class.outer" },
},
},
}) })
-- Better folding setup -- Better folding setup
@@ -47,4 +72,5 @@ return {
vim.opt.foldlevel = 20 vim.opt.foldlevel = 20
vim.opt.foldenable = false vim.opt.foldenable = false
end, end,
},
} }

View File

@@ -1,19 +1,19 @@
-- Global settings -- Global settings
vim.opt.tabstop = 4 -- Number of spaces that a <Tab> counts for vim.opt.tabstop = 4 -- Number of spaces that a <Tab> counts for
vim.opt.shiftwidth = 4 -- Number of spaces for indentation 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]])
@@ -26,10 +26,10 @@ vim.o.title = true
vim.o.titlestring = "nvim: %f" vim.o.titlestring = "nvim: %f"
vim.api.nvim_create_autocmd("FileType", { vim.api.nvim_create_autocmd("FileType", {
pattern = "lua", pattern = "lua",
callback = function() callback = function()
vim.opt_local.foldmethod = "marker" vim.opt_local.foldmethod = "marker"
vim.opt_local.foldlevel = 99 -- so folds are open by default vim.opt_local.foldlevel = 99 -- so folds are open by default
vim.opt_local.fileencoding = "utf-8" vim.opt_local.fileencoding = "utf-8"
end, end,
}) })

View File

@@ -6,18 +6,42 @@ local f = ls.function_node
-- Get current date in YYYY-MM-DD format -- Get current date in YYYY-MM-DD format
local function date() local function date()
return os.date("%Y-%m-%d") return os.date("%Y-%m-%d")
end end
return { return {
s("env", { s("env", {
t({"---", t({
"title: "}), i(1, "Title"), t({"", "---",
"tags: ["}), i(2, "tag1, tag2"), t({"]", "title: ",
"date: "}), f(date, {}), t({"", }),
"---", ""}), i(1, "Title"),
i(0), t({ "", "tags: [" }),
}), i(2, "tag1, tag2"),
t({ "]", "date: " }),
f(date, {}),
t({ "", "---", "" }),
i(0),
}),
s(
"ippd",
t({
"Institute of Polymer Processing and Digital Transformation",
})
),
s(
"TN",
t({
"Thomas Naderer",
})
),
s(
"GBW",
t({
"Gerald Berger-Weber",
})
),
} }

View File

@@ -1,257 +0,0 @@
-- Automatically generated packer.nvim plugin loader code
if vim.api.nvim_call_function('has', {'nvim-0.5'}) ~= 1 then
vim.api.nvim_command('echohl WarningMsg | echom "Invalid Neovim version for packer.nvim! | echohl None"')
return
end
vim.api.nvim_command('packadd packer.nvim')
local no_errors, error_msg = pcall(function()
_G._packer = _G._packer or {}
_G._packer.inside_compile = true
local time
local profile_info
local should_profile = false
if should_profile then
local hrtime = vim.loop.hrtime
profile_info = {}
time = function(chunk, start)
if start then
profile_info[chunk] = hrtime()
else
profile_info[chunk] = (hrtime() - profile_info[chunk]) / 1e6
end
end
else
time = function(chunk, start) end
end
local function save_profiles(threshold)
local sorted_times = {}
for chunk_name, time_taken in pairs(profile_info) do
sorted_times[#sorted_times + 1] = {chunk_name, time_taken}
end
table.sort(sorted_times, function(a, b) return a[2] > b[2] end)
local results = {}
for i, elem in ipairs(sorted_times) do
if not threshold or threshold and elem[2] > threshold then
results[i] = elem[1] .. ' took ' .. elem[2] .. 'ms'
end
end
if threshold then
table.insert(results, '(Only showing plugins that took longer than ' .. threshold .. ' ms ' .. 'to load)')
end
_G._packer.profile_output = results
end
time([[Luarocks path setup]], true)
local package_path_str = "/Users/thomasnaderer/.cache/nvim/packer_hererocks/2.1.1734355927/share/lua/5.1/?.lua;/Users/thomasnaderer/.cache/nvim/packer_hererocks/2.1.1734355927/share/lua/5.1/?/init.lua;/Users/thomasnaderer/.cache/nvim/packer_hererocks/2.1.1734355927/lib/luarocks/rocks-5.1/?.lua;/Users/thomasnaderer/.cache/nvim/packer_hererocks/2.1.1734355927/lib/luarocks/rocks-5.1/?/init.lua"
local install_cpath_pattern = "/Users/thomasnaderer/.cache/nvim/packer_hererocks/2.1.1734355927/lib/lua/5.1/?.so"
if not string.find(package.path, package_path_str, 1, true) then
package.path = package.path .. ';' .. package_path_str
end
if not string.find(package.cpath, install_cpath_pattern, 1, true) then
package.cpath = package.cpath .. ';' .. install_cpath_pattern
end
time([[Luarocks path setup]], false)
time([[try_loadstring definition]], true)
local function try_loadstring(s, component, name)
local success, result = pcall(loadstring(s), name, _G.packer_plugins[name])
if not success then
vim.schedule(function()
vim.api.nvim_notify('packer.nvim: Error running ' .. component .. ' for ' .. name .. ': ' .. result, vim.log.levels.ERROR, {})
end)
end
return result
end
time([[try_loadstring definition]], false)
time([[Defining packer_plugins]], true)
_G.packer_plugins = {
["Comment.nvim"] = {
loaded = true,
path = "/Users/thomasnaderer/.local/share/nvim/site/pack/packer/start/Comment.nvim",
url = "https://github.com/numToStr/Comment.nvim"
},
["auto-save.nvim"] = {
config = { "\27LJ\2\n;\0\0\3\0\3\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\1K\0\1\0\nsetup\14auto-save\frequire\0" },
loaded = true,
path = "/Users/thomasnaderer/.local/share/nvim/site/pack/packer/start/auto-save.nvim",
url = "https://github.com/okuuva/auto-save.nvim"
},
["dashboard-nvim"] = {
loaded = true,
path = "/Users/thomasnaderer/.local/share/nvim/site/pack/packer/start/dashboard-nvim",
url = "https://github.com/glepnir/dashboard-nvim"
},
fzf = {
loaded = true,
path = "/Users/thomasnaderer/.local/share/nvim/site/pack/packer/start/fzf",
url = "https://github.com/junegunn/fzf"
},
["fzf.vim"] = {
loaded = true,
path = "/Users/thomasnaderer/.local/share/nvim/site/pack/packer/start/fzf.vim",
url = "https://github.com/junegunn/fzf.vim"
},
["gitsigns.nvim"] = {
loaded = true,
path = "/Users/thomasnaderer/.local/share/nvim/site/pack/packer/start/gitsigns.nvim",
url = "https://github.com/lewis6991/gitsigns.nvim"
},
gruvbox = {
loaded = true,
path = "/Users/thomasnaderer/.local/share/nvim/site/pack/packer/start/gruvbox",
url = "https://github.com/gruvbox-community/gruvbox"
},
["hardtime.nvim"] = {
loaded = true,
path = "/Users/thomasnaderer/.local/share/nvim/site/pack/packer/start/hardtime.nvim",
url = "https://github.com/m4xshen/hardtime.nvim"
},
["headlines.nvim"] = {
config = { "\27LJ\2\n7\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\14headlines\frequire\0" },
load_after = {},
loaded = true,
needs_bufread = false,
path = "/Users/thomasnaderer/.local/share/nvim/site/pack/packer/opt/headlines.nvim",
url = "https://github.com/lukas-reineke/headlines.nvim"
},
["lualine.nvim"] = {
loaded = true,
path = "/Users/thomasnaderer/.local/share/nvim/site/pack/packer/start/lualine.nvim",
url = "https://github.com/nvim-lualine/lualine.nvim"
},
["nui.nvim"] = {
loaded = true,
path = "/Users/thomasnaderer/.local/share/nvim/site/pack/packer/start/nui.nvim",
url = "https://github.com/MunifTanjim/nui.nvim"
},
["nvim-autopairs"] = {
loaded = true,
path = "/Users/thomasnaderer/.local/share/nvim/site/pack/packer/start/nvim-autopairs",
url = "https://github.com/windwp/nvim-autopairs"
},
["nvim-tree.lua"] = {
config = { "\27LJ\2\n?\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\22plugins.nvim-tree\frequire\0" },
loaded = true,
path = "/Users/thomasnaderer/.local/share/nvim/site/pack/packer/start/nvim-tree.lua",
url = "https://github.com/nvim-tree/nvim-tree.lua"
},
["nvim-treesitter"] = {
loaded = true,
path = "/Users/thomasnaderer/.local/share/nvim/site/pack/packer/start/nvim-treesitter",
url = "https://github.com/nvim-treesitter/nvim-treesitter"
},
["nvim-web-devicons"] = {
loaded = false,
needs_bufread = false,
path = "/Users/thomasnaderer/.local/share/nvim/site/pack/packer/opt/nvim-web-devicons",
url = "https://github.com/kyazdani42/nvim-web-devicons"
},
orgmode = {
config = { "\27LJ\2\n9\0\0\3\0\3\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\1K\0\1\0\nsetup\forgmode\frequire\0" },
loaded = true,
path = "/Users/thomasnaderer/.local/share/nvim/site/pack/packer/start/orgmode",
url = "https://github.com/nvim-orgmode/orgmode"
},
["outline.nvim"] = {
config = { "\27LJ\2\n=\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\20plugins.outline\frequire\0" },
loaded = true,
path = "/Users/thomasnaderer/.local/share/nvim/site/pack/packer/start/outline.nvim",
url = "https://github.com/hedyhli/outline.nvim"
},
["packer.nvim"] = {
loaded = true,
path = "/Users/thomasnaderer/.local/share/nvim/site/pack/packer/start/packer.nvim",
url = "https://github.com/wbthomason/packer.nvim"
},
["plenary.nvim"] = {
loaded = true,
path = "/Users/thomasnaderer/.local/share/nvim/site/pack/packer/start/plenary.nvim",
url = "https://github.com/nvim-lua/plenary.nvim"
},
["rainbow-delimiters.nvim"] = {
loaded = true,
path = "/Users/thomasnaderer/.local/share/nvim/site/pack/packer/start/rainbow-delimiters.nvim",
url = "https://github.com/HiPhish/rainbow-delimiters.nvim"
},
["telescope.nvim"] = {
config = { "\27LJ\2\n\3\0\0\6\0\16\0!6\0\0\0009\0\1\0009\0\2\0'\2\3\0'\3\4\0'\4\5\0005\5\6\0B\0\5\0016\0\0\0009\0\1\0009\0\2\0'\2\3\0'\3\a\0'\4\b\0005\5\t\0B\0\5\0016\0\0\0009\0\1\0009\0\2\0'\2\3\0'\3\n\0'\4\v\0005\5\f\0B\0\5\0016\0\0\0009\0\1\0009\0\2\0'\2\3\0'\3\r\0'\4\14\0005\5\15\0B\0\5\1K\0\1\0\1\0\2\fnoremap\2\vsilent\2\29:Telescope help_tags<CR>\15<leader>fh\1\0\2\fnoremap\2\vsilent\2\27:Telescope buffers<CR>\15<leader>fb\1\0\2\fnoremap\2\vsilent\2\29:Telescope live_grep<CR>\15<leader>fg\1\0\2\fnoremap\2\vsilent\2\30:Telescope find_files<CR>\15<leader>ff\6n\20nvim_set_keymap\bapi\bvim\0" },
loaded = true,
path = "/Users/thomasnaderer/.local/share/nvim/site/pack/packer/start/telescope.nvim",
url = "https://github.com/nvim-telescope/telescope.nvim"
},
["tokyonight.nvim"] = {
loaded = true,
path = "/Users/thomasnaderer/.local/share/nvim/site/pack/packer/start/tokyonight.nvim",
url = "https://github.com/folke/tokyonight.nvim"
},
["vim-fugitive"] = {
loaded = true,
path = "/Users/thomasnaderer/.local/share/nvim/site/pack/packer/start/vim-fugitive",
url = "https://github.com/tpope/vim-fugitive"
},
["vim-surround"] = {
loaded = true,
path = "/Users/thomasnaderer/.local/share/nvim/site/pack/packer/start/vim-surround",
url = "https://github.com/tpope/vim-surround"
},
vimtex = {
loaded = true,
path = "/Users/thomasnaderer/.local/share/nvim/site/pack/packer/start/vimtex",
url = "https://github.com/lervag/vimtex"
}
}
time([[Defining packer_plugins]], false)
-- Config for: orgmode
time([[Config for orgmode]], true)
try_loadstring("\27LJ\2\n9\0\0\3\0\3\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\1K\0\1\0\nsetup\forgmode\frequire\0", "config", "orgmode")
time([[Config for orgmode]], false)
-- Config for: outline.nvim
time([[Config for outline.nvim]], true)
try_loadstring("\27LJ\2\n=\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\20plugins.outline\frequire\0", "config", "outline.nvim")
time([[Config for outline.nvim]], false)
-- Config for: auto-save.nvim
time([[Config for auto-save.nvim]], true)
try_loadstring("\27LJ\2\n;\0\0\3\0\3\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\1K\0\1\0\nsetup\14auto-save\frequire\0", "config", "auto-save.nvim")
time([[Config for auto-save.nvim]], false)
-- Config for: telescope.nvim
time([[Config for telescope.nvim]], true)
try_loadstring("\27LJ\2\n\3\0\0\6\0\16\0!6\0\0\0009\0\1\0009\0\2\0'\2\3\0'\3\4\0'\4\5\0005\5\6\0B\0\5\0016\0\0\0009\0\1\0009\0\2\0'\2\3\0'\3\a\0'\4\b\0005\5\t\0B\0\5\0016\0\0\0009\0\1\0009\0\2\0'\2\3\0'\3\n\0'\4\v\0005\5\f\0B\0\5\0016\0\0\0009\0\1\0009\0\2\0'\2\3\0'\3\r\0'\4\14\0005\5\15\0B\0\5\1K\0\1\0\1\0\2\fnoremap\2\vsilent\2\29:Telescope help_tags<CR>\15<leader>fh\1\0\2\fnoremap\2\vsilent\2\27:Telescope buffers<CR>\15<leader>fb\1\0\2\fnoremap\2\vsilent\2\29:Telescope live_grep<CR>\15<leader>fg\1\0\2\fnoremap\2\vsilent\2\30:Telescope find_files<CR>\15<leader>ff\6n\20nvim_set_keymap\bapi\bvim\0", "config", "telescope.nvim")
time([[Config for telescope.nvim]], false)
-- Config for: nvim-tree.lua
time([[Config for nvim-tree.lua]], true)
try_loadstring("\27LJ\2\n?\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\22plugins.nvim-tree\frequire\0", "config", "nvim-tree.lua")
time([[Config for nvim-tree.lua]], false)
-- Load plugins in order defined by `after`
time([[Sequenced loading]], true)
vim.cmd [[ packadd nvim-treesitter ]]
vim.cmd [[ packadd headlines.nvim ]]
-- Config for: headlines.nvim
try_loadstring("\27LJ\2\n7\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\14headlines\frequire\0", "config", "headlines.nvim")
time([[Sequenced loading]], false)
_G._packer.inside_compile = false
if _G._packer.needs_bufread == true then
vim.cmd("doautocmd BufRead")
end
_G._packer.needs_bufread = false
if should_profile then save_profiles() end
end)
if not no_errors then
error_msg = error_msg:gsub('"', '\\"')
vim.api.nvim_command('echohl ErrorMsg | echom "Error in packer_compiled: '..error_msg..'" | echom "Please check your config for correctness" | echohl None')
end

36
scripts/start-kanata.sh Executable file
View File

@@ -0,0 +1,36 @@
#!/bin/bash
# Kanata Startup Script
# Starts Kanata with proper configuration and logging
KANATA_CONFIG="$HOME/Library/Application Support/kanata/kanata.kbd"
LOG_FILE="$HOME/Library/Logs/kanata.log"
# Create log directory if it doesn't exist
mkdir -p "$(dirname "$LOG_FILE")"
# Check if kanata is already running
if pgrep -x "kanata" > /dev/null; then
echo "$(date): Kanata is already running" >> "$LOG_FILE"
exit 0
fi
# Check if config file exists
if [ ! -f "$KANATA_CONFIG" ]; then
echo "$(date): ERROR - Kanata config file not found: $KANATA_CONFIG" >> "$LOG_FILE"
exit 1
fi
# Start Kanata
echo "$(date): Starting Kanata with config: $KANATA_CONFIG" >> "$LOG_FILE"
# Run kanata in the background with logging
/opt/homebrew/bin/kanata -c "$KANATA_CONFIG" >> "$LOG_FILE" 2>&1 &
# Get the PID
KANATA_PID=$!
# Save PID for easier management
echo "$KANATA_PID" > "$HOME/.kanata.pid"
echo "$(date): Kanata started with PID: $KANATA_PID" >> "$LOG_FILE"

32
scripts/stop-kanata.sh Executable file
View File

@@ -0,0 +1,32 @@
#!/bin/bash
# Kanata Stop Script
# Stops Kanata process gracefully
LOG_FILE="$HOME/Library/Logs/kanata.log"
PID_FILE="$HOME/.kanata.pid"
# Check if PID file exists
if [ -f "$PID_FILE" ]; then
KANATA_PID=$(cat "$PID_FILE")
# Check if process is running
if ps -p "$KANATA_PID" > /dev/null 2>&1; then
echo "$(date): Stopping Kanata (PID: $KANATA_PID)" >> "$LOG_FILE"
sudo kill "$KANATA_PID"
rm -f "$PID_FILE"
echo "$(date): Kanata stopped" >> "$LOG_FILE"
else
echo "$(date): Kanata process not found (PID: $KANATA_PID)" >> "$LOG_FILE"
rm -f "$PID_FILE"
fi
else
# Try to kill any running kanata process
if pgrep -x "kanata" > /dev/null; then
echo "$(date): Killing all Kanata processes" >> "$LOG_FILE"
sudo pkill kanata
echo "$(date): Kanata processes killed" >> "$LOG_FILE"
else
echo "$(date): No Kanata processes found" >> "$LOG_FILE"
fi
fi

View File

@@ -1,20 +1,47 @@
#!/bin/zsh #!/bin/zsh
set -euo pipefail
# Auto-remount TN shares when network changes.
# Credentials should be stored in macOS Keychain (connect once via Finder, remember password).
# User Configuration
USER="AK127132" # Insert Your AK Number
PASSWORD="enzfcj4bhg!mwr8BUH" # Insert your password
SERVER="140.78.8.107" SERVER="140.78.8.107"
SHARE1="TNGROUP/tn-group/ipec"
SHARE2="TNHOME/home/AK127132"
# Mount TNGROUP # Use URL-encoded path segments for spaces if needed.
echo "Mounting TNGROUP..." SHARE1_URL="smb://$SERVER/TNGROUP/tn-group/ipec"
osascript -e "try" -e "mount volume \"smb://$USER:$PASSWORD@$SERVER/$SHARE1\"" -e "end try" SHARE2_URL="smb://$SERVER/TNHOME/home/AK127132"
# Mount TNHOME # Expected mount points under /Volumes (adjust if your Finder mount names differ)
echo "Mounting TNHOME..." MOUNT1="/Volumes/ipec"
osascript -e "try" -e "mount volume \"smb://$USER:$PASSWORD@$SERVER/$SHARE2\"" -e "end try" MOUNT2="/Volumes/AK127132"
echo "Mounting complete." log() {
echo "[tnmount] $*"
}
is_mounted() {
local mountpoint="$1"
mount | grep -q " on ${mountpoint} "
}
mount_if_missing() {
local mountpoint="$1"
local url="$2"
if is_mounted "$mountpoint"; then
log "Already mounted: $mountpoint"
else
log "Mounting: $url"
open "$url"
fi
}
# Skip when server is unreachable (offsite/no VPN), try again on next interval.
if ! nc -zw2 "$SERVER" 445 >/dev/null 2>&1; then
log "Server $SERVER:445 not reachable; skipping"
exit 0
fi
mount_if_missing "$MOUNT1" "$SHARE1_URL"
mount_if_missing "$MOUNT2" "$SHARE2_URL"
log "Done"

32
starship.toml Normal file
View File

@@ -0,0 +1,32 @@
# Starship - Standard sane config
# Path: ~/.config/starship.toml
format = "$directory$git_branch$git_status$line_break$character"
add_newline = true
[character]
success_symbol = "[](bold green)"
error_symbol = "[](bold red)"
[directory]
truncation_length = 3
truncation_symbol = "…/"
style = "bold blue"
[git_branch]
symbol = " "
style = "bold purple"
[git_status]
style = "red"
format = '([$all_status$ahead_behind]($style) )'
conflicted = "=${count}"
ahead = "⇡${count}"
behind = "⇣${count}"
diverged = "⇕⇡${ahead_count}⇣${behind_count}"
untracked = "?${count}"
stashed = "*${count}"
modified = "!${count}"
staged = "+${count}"
renamed = ">${count}"
deleted = "x${count}"

View File

@@ -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'

Submodule tmux/plugins/tmux-urlview added at b84c876cff

View File

@@ -0,0 +1,28 @@
# Catppuccin Mocha - powerline style
# Status bar
set -g status-style "bg=#1e1e2e,fg=#cdd6f4"
# Pane borders
set -g pane-border-style "fg=#313244"
set -g pane-active-border-style "fg=#cba6f7,bold"
set -g pane-border-format "#[fg=#cdd6f4] #P #[fg=#6c7086]| #[fg=#89b4fa]#{pane_current_command} #[fg=#6c7086]| #[fg=#a6adc8]#{pane_current_path}"
# Message styling
set -g message-style "bg=#cba6f7,fg=#1e1e2e,bold"
set -g message-command-style "bg=#cba6f7,fg=#1e1e2e,bold"
# Mode styling
set -g mode-style "bg=#cba6f7,fg=#1e1e2e,bold"
# Window tabs - inactive subtle, active with powerline arrows
set -g window-status-style "fg=#6c7086,bg=#1e1e2e"
set -g window-status-format " #[fg=#6c7086]#I #W "
set -g window-status-current-style "fg=#1e1e2e,bg=#cba6f7,bold"
set -g window-status-current-format "#[fg=#cba6f7,bg=#1e1e2e] #[fg=#1e1e2e,bg=#cba6f7,bold] #I #[fg=#cba6f7,bg=#89b4fa] #[fg=#1e1e2e,bg=#89b4fa,bold] #W #[fg=#89b4fa,bg=#1e1e2e,nobold] "
set -g window-status-separator ""
# Status bar content
set -g status-left "#[fg=#1e1e2e,bg=#cba6f7,bold] 󰅬 #S #[fg=#cba6f7,bg=#1e1e2e] "
set -g status-right "#[fg=#cba6f7,bg=#1e1e2e]#[fg=#1e1e2e,bg=#cba6f7] %H:%M %d %b "
set -g status-justify left

16
tmux/themes/gruvbox.tmux Normal file
View File

@@ -0,0 +1,16 @@
# Gruvbox theme preset (sleek minimal)
set -g status-style "bg=#282828,fg=#ebdbb2"
set -g pane-border-style "fg=#928374"
set -g pane-active-border-style "fg=#d79921,bold"
set -g message-style "bg=#d79921,fg=#282828,bold"
set -g mode-style "bg=#d79921,fg=#282828,bold"
set -g window-status-style "fg=#928374,bg=#282828"
set -g window-status-format " #[fg=#928374]#I #[fg=#928374]#W "
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=#fabd2f,bold]#W "
set -g status-left "#[fg=#d79921,bold] #S "
set -g status-right "#[fg=#928374]#{pane_current_command} #[fg=#928374]| #[fg=#ebdbb2]%H:%M #[fg=#928374]| #[fg=#ebdbb2]%a %d %b "
set -g window-status-separator ""
set -g status-justify left

View File

@@ -0,0 +1,22 @@
# This tmux statusbar config was created by tmuxline.vim
# on Sun, 01 Mar 2026
# Reworked: Tokyo Night Moon — readable, transparent, not loud
set -g status-justify "centre"
set -g status "on"
set -g status-left-style "none"
set -g message-command-style "fg=#c8d3f5,bg=default"
set -g status-right-style "none"
set -g pane-active-border-style "fg=#82aaff"
set -g status-style "none,bg=default"
set -g message-style "fg=#c8d3f5,bg=default"
set -g pane-border-style "fg=#3b4261"
set -g status-right-length "100"
set -g status-left-length "100"
setw -g window-status-activity-style "underscore,fg=#444a73,bg=default"
setw -g window-status-separator ""
setw -g window-status-style "none,fg=#636da6,bg=default"
set -g status-left "#[fg=#636da6,bg=default] #S #[fg=default,bg=default,nobold,nounderscore,noitalics]"
set -g status-right "#[fg=default,bg=default,nobold,nounderscore,noitalics]#[fg=#636da6,bg=default] %H:%M #[fg=default,bg=default,nobold,nounderscore,noitalics]#[fg=#636da6,bg=default] %d %b "
setw -g window-status-format "#[fg=default,bg=default,nobold,nounderscore,noitalics]#[fg=#636da6,bg=default] #I #W#{?window_zoomed_flag, [Z],} #[fg=default,bg=default,nobold,nounderscore,noitalics]"
setw -g window-status-current-format "#[fg=#2d3f76,bg=default,nobold,nounderscore,noitalics]#[fg=#c8d3f5,bg=#2d3f76] #I #W#{?window_zoomed_flag, [Z],} #[fg=#2d3f76,bg=default,nobold,nounderscore,noitalics]"

22
tmux/themes/tmuxline.tmux Normal file
View File

@@ -0,0 +1,22 @@
# This tmux statusbar config was created by tmuxline.vim
# on Sun, 01 Mar 2026
# Reworked: Catppuccin Mocha — readable, transparent, not loud
set -g status-justify "centre"
set -g status "on"
set -g status-left-style "none"
set -g message-command-style "fg=#cdd6f4,bg=default"
set -g status-right-style "none"
set -g pane-active-border-style "fg=#cba6f7"
set -g status-style "none,bg=default"
set -g message-style "fg=#cdd6f4,bg=default"
set -g pane-border-style "fg=#313244"
set -g status-right-length "100"
set -g status-left-length "100"
setw -g window-status-activity-style "none,fg=#45475a,bg=default"
setw -g window-status-separator ""
setw -g window-status-style "none,fg=#6c7086,bg=default"
set -g status-left "#[fg=#6c7086,bg=default] #S #[fg=default,bg=default,nobold,nounderscore,noitalics]"
set -g status-right "#[fg=default,bg=default,nobold,nounderscore,noitalics]#[fg=#6c7086,bg=default] %H:%M #[fg=default,bg=default,nobold,nounderscore,noitalics]#[fg=#6c7086,bg=default] %d %b "
setw -g window-status-format "#[fg=default,bg=default,nobold,nounderscore,noitalics]#[fg=#6c7086,bg=default] #I #W#{?window_zoomed_flag, 󰁌,} #[fg=default,bg=default,nobold,nounderscore,noitalics]"
setw -g window-status-current-format "#[fg=#313244,bg=default,nobold,nounderscore,noitalics]#[fg=#b4befe,bg=#313244] #I #W#{?window_zoomed_flag, 󰁌,} #[fg=#313244,bg=default,nobold,nounderscore,noitalics]"

View File

@@ -0,0 +1,16 @@
# Tokyonight theme preset (sleek minimal)
set -g status-style "bg=#1a1b26,fg=#c0caf5"
set -g pane-border-style "fg=#9aa5ce"
set -g pane-active-border-style "fg=#7aa2f7,bold"
set -g message-style "bg=#7aa2f7,fg=#1a1b26,bold"
set -g mode-style "bg=#7aa2f7,fg=#1a1b26,bold"
set -g window-status-style "fg=#9aa5ce,bg=#1a1b26"
set -g window-status-format " #[fg=#9aa5ce]#I #[fg=#9aa5ce]#W "
set -g window-status-current-style "fg=#1a1b26,bg=#73daca,bold"
set -g window-status-current-format " #[fg=#1a1b26,bg=#73daca,bold]#I #[fg=#1a1b26,bg=#73daca,bold]#W "
set -g status-left "#[fg=#7aa2f7,bold] #S "
set -g status-right "#[fg=#9aa5ce]#{pane_current_command} #[fg=#9aa5ce]| #[fg=#c0caf5]%H:%M #[fg=#9aa5ce]| #[fg=#c0caf5]%a %d %b "
set -g window-status-separator ""
set -g status-justify left

View File

@@ -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
@@ -37,8 +37,9 @@ set -g renumber-windows on
# Increase scrollback buffer size # Increase scrollback buffer size
set -g history-limit 10000 set -g history-limit 10000
# Enable automatic renaming for nerd font icons # Let tmux auto-name unnamed windows, but keep manual names sticky.
set-option -g allow-rename on # `allow-rename` lets shells/apps overwrite names via terminal title escapes.
set-option -g allow-rename off
set-option -g automatic-rename on set-option -g automatic-rename on
# Reduce escape time for neovim # Reduce escape time for neovim
@@ -53,8 +54,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 +65,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 +85,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 +106,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 +121,49 @@ 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 'tmux-plugins/tmux-copycat'
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 "#{?pane_active,#[fg=#282828,bg=#fabd2f,bold] ACTIVE #[default],#[fg=#928374] pane #[default]}#[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,30 +175,38 @@ 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
# ============================================ # ============================================
# Toggle top status bar on/off (Prefix + b) source-file ~/.config/tmux/themes/tmuxline.tmux
bind b if -F "#{==:#{status},on}" "set -g status off" "set -g status on"
# Reload config file with message # ============================================
# KEYBINDINGS
# ============================================
# Clear stale bindings removed from older config revisions
unbind /
# Three-way toggle: top → bottom → hidden → top
bind b if -F "#{==:#{status},off}" \
"set -g status on ; set -g status-position top ; set -g pane-border-status top" \
"if -F '#{==:#{status-position},top}' \
'set -g status-position bottom' \
'set -g status off ; set -g pane-border-status off'"
# Reload config
bind r source-file ~/.config/tmux/tmux.conf \; display-message "󰑓 Config reloaded!" bind r source-file ~/.config/tmux/tmux.conf \; display-message "󰑓 Config reloaded!"
# SessionX in window mode on demand
bind O run-shell 'old_mode="$(tmux show-option -gqv @sessionx-window-mode)"; tmux set-option -g @sessionx-window-mode on; ~/.config/tmux/plugins/tmux-sessionx/sessionx.tmux >/dev/null 2>&1; ~/.config/tmux/plugins/tmux-sessionx/scripts/sessionx.sh; if [ -n "$old_mode" ]; then tmux set-option -g @sessionx-window-mode "$old_mode"; else tmux set-option -gu @sessionx-window-mode; fi; ~/.config/tmux/plugins/tmux-sessionx/sessionx.tmux >/dev/null 2>&1'
# Initialize TMUX plugin manager (keep this line at the very bottom) # Initialize TMUX plugin manager (keep this line at the very bottom)
run '~/.config/tmux/plugins/tpm/tpm' run '~/.config/tmux/plugins/tpm/tpm'

View File

@@ -100,10 +100,73 @@ keymap = [
{ on = [ "c", "d" ], run = "copy dirname", desc = "Copy the directory path" }, { on = [ "c", "d" ], run = "copy dirname", desc = "Copy the directory path" },
{ on = [ "c", "f" ], run = "copy filename", desc = "Copy the filename" }, { on = [ "c", "f" ], run = "copy filename", desc = "Copy the filename" },
{ on = [ "c", "n" ], run = "copy name_without_ext", desc = "Copy the filename without extension" }, { on = [ "c", "n" ], run = "copy name_without_ext", desc = "Copy the filename without extension" },
{ on = [ "c", "y" ], run = "shell --block 'osascript -e \"on run argv\" -e \"set fList to {}\" -e \"repeat with p in argv\" -e \"set end of fList to (POSIX file p as alias)\" -e \"end repeat\" -e \"tell application \\\"Finder\\\" to set the clipboard to fList\" -e \"end run\" \"$@\" || printf \"%s\\n\" \"$@\" | pbcopy' --confirm", desc = "Copy selected files to Finder clipboard (fallback: copy paths as text)" },
# 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/Studies/BWL/' --confirm", desc = "Copy to JKU/Studies/BWL" },
{ on = [ "<C-y>", "j", "r" ], run = "shell 'cp -r \"$@\" ~/Documents/JKU/Research/' --confirm", desc = "Copy to JKU/Research" },
{ on = [ "<C-y>", "j", "s" ], run = "shell 'cp -r \"$@\" ~/Documents/JKU/Studies/' --confirm", desc = "Copy to JKU/Studies" },
{ on = [ "<C-y>", "j", "a" ], run = "shell 'cp -r \"$@\" ~/Documents/JKU/Admin/' --confirm", desc = "Copy to JKU/Admin" },
# Copy to Projects
{ on = [ "<C-y>", "p", "<Space>" ], run = "shell 'cp -r \"$@\" ~/Projects/' --confirm", desc = "Copy to Projects" },
{ on = [ "<C-y>", "p", "a" ], run = "shell 'cp -r \"$@\" ~/Projects/adonis-ag/' --confirm", desc = "Copy to Projects/adonis-ag" },
{ on = [ "<C-y>", "p", "c" ], run = "shell 'cp -r \"$@\" ~/Projects/crypto/' --confirm", desc = "Copy to Projects/crypto" },
{ on = [ "<C-y>", "p", "j" ], run = "shell 'cp -r \"$@\" ~/Projects/jku/' --confirm", desc = "Copy to Projects/jku" },
{ on = [ "<C-y>", "p", "n" ], run = "shell 'cp -r \"$@\" ~/Projects/naderer.digital/' --confirm", desc = "Copy to Projects/naderer.digital" },
{ on = [ "<C-y>", "p", "p" ], run = "shell 'cp -r \"$@\" ~/Projects/personal/' --confirm", desc = "Copy to Projects/personal" },
# 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/Studies/BWL/' --confirm", desc = "Move to JKU/Studies/BWL" },
{ on = [ "<C-x>", "j", "r" ], run = "shell 'mv \"$@\" ~/Documents/JKU/Research/' --confirm", desc = "Move to JKU/Research" },
{ on = [ "<C-x>", "j", "s" ], run = "shell 'mv \"$@\" ~/Documents/JKU/Studies/' --confirm", desc = "Move to JKU/Studies" },
{ on = [ "<C-x>", "j", "a" ], run = "shell 'mv \"$@\" ~/Documents/JKU/Admin/' --confirm", desc = "Move to JKU/Admin" },
# Move to Projects
{ on = [ "<C-x>", "p", "<Space>" ], run = "shell 'mv \"$@\" ~/Projects/' --confirm", desc = "Move to Projects" },
{ on = [ "<C-x>", "p", "a" ], run = "shell 'mv \"$@\" ~/Projects/adonis-ag/' --confirm", desc = "Move to Projects/adonis-ag" },
{ on = [ "<C-x>", "p", "c" ], run = "shell 'mv \"$@\" ~/Projects/crypto/' --confirm", desc = "Move to Projects/crypto" },
{ on = [ "<C-x>", "p", "j" ], run = "shell 'mv \"$@\" ~/Projects/jku/' --confirm", desc = "Move to Projects/jku" },
{ on = [ "<C-x>", "p", "n" ], run = "shell 'mv \"$@\" ~/Projects/naderer.digital/' --confirm", desc = "Move to Projects/naderer.digital" },
{ on = [ "<C-x>", "p", "p" ], run = "shell 'mv \"$@\" ~/Projects/personal/' --confirm", desc = "Move to Projects/personal" },
# 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" },
@@ -134,32 +197,50 @@ keymap = [
{ on = [ "g", "D" ], run = "cd ~/Documents", desc = "Goto ~/Documents" }, { on = [ "g", "D" ], run = "cd ~/Documents", desc = "Goto ~/Documents" },
{ on = [ "g", "t" , "<Space>" ], run = "cd ~/Torrents", desc = "Goto ~/Torrents" }, { on = [ "g", "t" , "<Space>" ], run = "cd ~/Torrents", desc = "Goto ~/Torrents" },
{ on = [ "g", "t", "b"], run = "cd ~/Torrents/Books", desc = "Goto Books" }, { 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", "a"], run = "cd ~/Torrents/Audiobooks", desc = "Goto Audiobooks" },
{ on = [ "g", "t", "s"], run = "cd ~/Torrents/Shows", desc = "Goto Shows" }, { on = [ "g", "t", "s"], run = "cd ~/Torrents/Shows", desc = "Goto Shows" },
{ on = [ "g", "t", "m"], run = "cd ~/Torrents/Movies", desc = "Goto Shows" }, { on = [ "g", "t", "m"], run = "cd ~/Torrents/Movies", desc = "Goto Movies" },
{ on = [ "g", "s" ], run = "cd \"~/Music/Sheet Music/Alto Saxophone\"", desc = "Goto Sax Sheets" }, { on = [ "g", "s" ], run = "cd \"~/Music/Sheet Music/Alto Saxophone\"", desc = "Goto Sax Sheets" },
#Studies #JKU
{ on = [ "g", "j", "b" ], run = "cd \"~/Documents/JKU/Studium/BWL\"", desc = "Goto BWL" }, { on = [ "g", "j", "<Space>" ], run = "cd ~/Documents/JKU", desc = "Goto JKU" },
{ on = [ "g", "j", "w" ], run = "cd \"~/Documents/JKU/Work\"", desc = "Goto Work(local)" }, { on = [ "g", "j", "b" ], run = "cd \"~/Documents/JKU/Studies/BWL\"", desc = "Goto JKU/Studies/BWL" },
{ on = [ "g", "w" ], run = "cd \"~/Pictures/Wallpapers\"", desc = "Goto Wallpapers)" }, { on = [ "g", "j", "r" ], run = "cd \"~/Documents/JKU/Research\"", desc = "Goto JKU/Research" },
{ on = [ "g", "o", "p" ], run = "cd ~/Library/Mobile\\ Documents/iCloud~md~obsidian/Documents/Privat/", desc = "Goto Obsidian/Privat" }, { on = [ "g", "j", "s" ], run = "cd \"~/Documents/JKU/Studies\"", desc = "Goto JKU/Studies" },
{ on = [ "g", "j", "a" ], run = "cd \"~/Documents/JKU/Admin\"", desc = "Goto JKU/Admin" },
{ on = [ "g", "w" ], run = "cd \"~/Pictures/Wallpapers\"", desc = "Goto Wallpapers" },
{ on = [ "g", "o", "p" ], run = "cd ~/Library/Mobile\\ Documents/iCloud~md~obsidian/Documents/Private/", desc = "Goto Obsidian/Private" },
{ 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 #Local Projects
{ on = [ "g", "a", "<Space>" ], run = "cd /Volumes/AK127132", desc = "Goto AK127132" }, { on = [ "g", "p", "<Space>" ], run = "cd ~/Projects", desc = "Goto Projects" },
{ on = [ "g", "a", "z" ], run = "cd /Volumes/AK127132/Zeitaufzeichnung", desc = "Goto Zeitaufzeichnung" }, { on = [ "g", "p", "a" ], run = "cd ~/Projects/adonis-ag", desc = "Goto Projects/adonis-ag" },
{ on = [ "g", "p", "c" ], run = "cd ~/Projects/crypto", desc = "Goto Projects/crypto" },
{ on = [ "g", "p", "j" ], run = "cd ~/Projects/jku", desc = "Goto Projects/jku" },
{ on = [ "g", "p", "n" ], run = "cd ~/Projects/naderer.digital", desc = "Goto Projects/naderer.digital" },
{ on = [ "g", "p", "p" ], run = "cd ~/Projects/personal", desc = "Goto Projects/personal" },
#Network drive - Personal (TNHOME)
{ on = [ "g", "a", "<Space>" ], run = "cd /Volumes/TNHOME/home/AK127132", desc = "Goto AK127132" },
{ on = [ "g", "a", "z" ], run = "cd /Volumes/TNHOME/home/AK127132/Zeitaufzeichnung", desc = "Goto Zeitaufzeichnung" },
#Network drive - IPPD/Internal
{ 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", "i", "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", "i", "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", "i", "p", "m", "<Space>" ], run = "cd \"/Volumes/ipec/intern/02_Projekte/P62_MoNoQEL\"", desc = "Goto MoNoQEL" },
{ on = [ "g", "i", "p" ], run = "cd \"/Volumes/ipec/intern/05_Institutsbesprechungen/Projektstatusberichte\"", desc = "Goto Projektstatusberichte" }, { on = [ "g", "i", "p", "m", "p" ], run = "cd \"/Volumes/ipec/intern/02_Projekte/P62_MoNoQEL/02 Projektmanagemant/\"", desc = "Goto MoNoQEL/Projektmanagement" },
{ on = [ "g", "i", "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", "i", "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", "i", "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", "i", "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", "i", "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", "i", "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", "b", "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" },
{ on = [ "g", "<Space>" ], run = "cd --interactive", desc = "Jump interactively" }, { on = [ "g", "<Space>" ], run = "cd --interactive", desc = "Jump interactively" },
{ on = "R", run = "open -a Finder .", desc = "Open current folder in Finder" }, { on = "E", run = "shell 'open -a Finder \"$(pwd)\"'", desc = "Open current folder in Finder" },
# Tabs # Tabs
{ on = "t", run = "tab_create --current", desc = "Create a new tab with CWD" }, { on = "t", run = "tab_create --current", desc = "Create a new tab with CWD" },
@@ -395,6 +476,36 @@ on = "l"
run = "plugin smart-enter" run = "plugin smart-enter"
desc = "Enter the child directory, or open the file" desc = "Enter the child directory, or open the file"
[[mgr.prepend_keymap]]
on = "T"
run = "plugin toggle-pane --args max-preview"
desc = "Maximize preview pane"
[[mgr.prepend_keymap]]
on = "I"
run = "plugin toggle-pane --args min-preview"
desc = "Hide/show preview pane"
[[mgr.prepend_keymap]]
on = ["c", "m"]
run = "plugin chmod"
desc = "Chmod selected files"
[[mgr.prepend_keymap]]
on = [",", "d"]
run = "plugin diff"
desc = "Diff selected files"
[[mgr.prepend_keymap]]
on = "+"
run = "plugin zoom 1"
desc = "Zoom into image preview"
[[mgr.prepend_keymap]]
on = "-"
run = "plugin zoom -1"
desc = "Zoom out of image preview"
[[plugin.prepend_fetchers]] [[plugin.prepend_fetchers]]
id = "git" id = "git"

View File

@@ -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"

View File

@@ -1,22 +1,37 @@
[[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]] [[plugin.deps]]
use = "yazi-rs/plugins:git" use = "yazi-rs/plugins:zoom"
rev = "2ad42fa" rev = "1962818"
hash = "e01006bfb38951ea89031bd918b20dbb" hash = ""
[[plugin.deps]]
use = "yazi-rs/plugins:toggle-pane"
rev = "1962818"
hash = ""
[[plugin.deps]]
use = "yazi-rs/plugins:chmod"
rev = "1962818"
hash = ""
[[plugin.deps]]
use = "yazi-rs/plugins:diff"
rev = "1962818"
hash = ""
[flavor] [flavor]
deps = [] deps = []

View File

@@ -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.

View File

@@ -1,32 +0,0 @@
# full-border.yazi
Add a full border to Yazi to make it look fancier.
![full-border](https://github.com/yazi-rs/plugins/assets/17523360/ef81b560-2465-4d36-abf2-5d21dcb7b987)
## Installation
```sh
ya pkg add yazi-rs/plugins:full-border
```
## Usage
Add this to your `init.lua` to enable the plugin:
```lua
require("full-border"):setup()
```
Or you can customize the border type:
```lua
require("full-border"):setup {
-- Available values: ui.Border.PLAIN, ui.Border.ROUNDED
type = ui.Border.ROUNDED,
}
```
## License
This plugin is MIT-licensed. For more information check the [LICENSE](LICENSE) file.

View File

@@ -1,43 +0,0 @@
--- @since 25.2.26
local function setup(_, opts)
local type = opts and opts.type or ui.Border.ROUNDED
local old_build = Tab.build
Tab.build = function(self, ...)
local bar = function(c, x, y)
if x <= 0 or x == self._area.w - 1 or th.mgr.border_symbol ~= "" then
return ui.Bar(ui.Edge.TOP)
end
return ui.Bar(ui.Edge.TOP)
:area(
ui.Rect { x = x, y = math.max(0, y), w = ya.clamp(0, self._area.w - x, 1), h = math.min(1, self._area.h) }
)
:symbol(c)
end
local c = self._chunks
self._chunks = {
c[1]:pad(ui.Pad.y(1)),
c[2]:pad(ui.Pad(1, c[3].w > 0 and 0 or 1, 1, c[1].w > 0 and 0 or 1)),
c[3]:pad(ui.Pad.y(1)),
}
local style = th.mgr.border_style
self._base = ya.list_merge(self._base or {}, {
ui.Border(ui.Edge.ALL):area(self._area):type(type):style(style),
ui.Bar(ui.Edge.RIGHT):area(self._chunks[1]):style(style),
ui.Bar(ui.Edge.LEFT):area(self._chunks[3]):style(style),
bar("", c[1].right - 1, c[1].y),
bar("", c[1].right - 1, c[1].bottom - 1),
bar("", c[2].right, c[2].y),
bar("", c[2].right, c[2].bottom - 1),
})
old_build(self, ...)
end
end
return { setup = setup }

View File

@@ -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.

View File

@@ -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.

View 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 }

View File

@@ -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
View 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",

View File

@@ -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

View File

@@ -1,4 +1,4 @@
--- @since 25.5.28 --- @since 25.5.31
local AVAILABLE_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789." local AVAILABLE_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789."

View File

@@ -0,0 +1,771 @@
[app]
overall = { bg = "#1e1e2e" }
[mgr]
cwd = { fg = "#94e2d5" }
find_keyword = { fg = "#f9e2af", italic = true }
find_position = { fg = "#f5c2e7", bg = "reset", italic = true }
marker_copied = { fg = "#a6e3a1", bg = "#a6e3a1" }
marker_cut = { fg = "#f38ba8", bg = "#f38ba8" }
marker_marked = { fg = "#94e2d5", bg = "#94e2d5" }
marker_selected = { fg = "#b4befe", bg = "#b4befe" }
count_copied = { fg = "#1e1e2e", bg = "#a6e3a1" }
count_cut = { fg = "#1e1e2e", bg = "#f38ba8" }
count_selected = { fg = "#1e1e2e", bg = "#b4befe" }
border_symbol = "│"
border_style = { fg = "#7f849c" }
syntect_theme = "~/.config/yazi/Catppuccin-mocha.tmTheme"
[tabs]
active = { fg = "#1e1e2e", bg = "#cdd6f4", bold = true }
inactive = { fg = "#cdd6f4", bg = "#45475a" }
[mode]
normal_main = { fg = "#1e1e2e", bg = "#b4befe", bold = true }
normal_alt = { fg = "#b4befe", bg = "#313244"}
select_main = { fg = "#1e1e2e", bg = "#a6e3a1", bold = true }
select_alt = { fg = "#a6e3a1", bg = "#313244"}
unset_main = { fg = "#1e1e2e", bg = "#f2cdcd", bold = true }
unset_alt = { fg = "#f2cdcd", bg = "#313244"}
[indicator]
parent = { fg = "#1e1e2e", bg = "#cdd6f4" }
current = { fg = "#1e1e2e", bg = "#b4befe" }
preview = { fg = "#1e1e2e", bg = "#cdd6f4" }
[status]
sep_left = { open = "", close = "" }
sep_right = { open = "", close = "" }
progress_label = { fg = "#ffffff", bold = true }
progress_normal = { fg = "#a6e3a1", bg = "#45475a" }
progress_error = { fg = "#f9e2af", bg = "#f38ba8" }
perm_type = { fg = "#89b4fa" }
perm_read = { fg = "#f9e2af" }
perm_write = { fg = "#f38ba8" }
perm_exec = { fg = "#a6e3a1" }
perm_sep = { fg = "#7f849c" }
[input]
border = { fg = "#b4befe" }
title = {}
value = {}
selected = { reversed = true }
[pick]
border = { fg = "#b4befe" }
active = { fg = "#f5c2e7" }
inactive = {}
[confirm]
border = { fg = "#b4befe" }
title = { fg = "#b4befe" }
body = {}
list = {}
btn_yes = { reversed = true }
btn_no = {}
[cmp]
border = { fg = "#b4befe" }
[tasks]
border = { fg = "#b4befe" }
title = {}
hovered = { fg = "#f5c2e7", bold = true }
[which]
mask = { bg = "#313244" }
cand = { fg = "#94e2d5" }
rest = { fg = "#9399b2" }
desc = { fg = "#f5c2e7" }
separator = "  "
separator_style = { fg = "#585b70" }
[help]
on = { fg = "#94e2d5" }
run = { fg = "#f5c2e7" }
desc = { fg = "#9399b2" }
hovered = { bg = "#585b70", bold = true }
footer = { fg = "#cdd6f4", bg = "#45475a" }
[notify]
title_info = { fg = "#94e2d5" }
title_warn = { fg = "#f9e2af" }
title_error = { fg = "#f38ba8" }
[filetype]
rules = [
# Media
{ mime = "image/*", fg = "#94e2d5" },
{ mime = "{audio,video}/*", fg = "#f9e2af" },
# Archives
{ mime = "application/*zip", fg = "#f5c2e7" },
{ mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}", fg = "#f5c2e7" },
# Documents
{ mime = "application/{pdf,doc,rtf}", fg = "#a6e3a1" },
# Virtual file system
{ mime = "vfs/{absent,stale}", fg = "#45475a" },
# Special file
{ url = "*", is = "orphan", bg = "#f38ba8" },
{ url = "*", is = "exec" , fg = "#a6e3a1" },
# Dummy file
{ url = "*", is = "dummy", bg = "#f38ba8" },
{ url = "*/", is = "dummy", bg = "#f38ba8" },
# Fallback
{ url = "*/", fg = "#b4befe" },
]
[spot]
border = { fg = "#b4befe" }
title = { fg = "#b4befe" }
tbl_cell = { fg = "#b4befe", reversed = true }
tbl_col = { bold = true }
[icon]
files = [
{ name = "kritadisplayrc", text = "", fg = "#cba6f7" },
{ name = ".gtkrc-2.0", text = "", fg = "#f5e0dc" },
{ name = "bspwmrc", text = "", fg = "#313244" },
{ name = "webpack", text = "󰜫", fg = "#74c7ec" },
{ name = "tsconfig.json", text = "", fg = "#74c7ec" },
{ name = ".vimrc", text = "", fg = "#a6e3a1" },
{ name = "gemfile$", text = "", fg = "#313244" },
{ name = "xmobarrc", text = "", fg = "#f38ba8" },
{ name = "avif", text = "", fg = "#7f849c" },
{ name = "fp-info-cache", text = "", fg = "#f5e0dc" },
{ name = ".zshrc", text = "", fg = "#a6e3a1" },
{ name = "robots.txt", text = "󰚩", fg = "#6c7086" },
{ name = "dockerfile", text = "󰡨", fg = "#89b4fa" },
{ name = ".git-blame-ignore-revs", text = "", fg = "#fab387" },
{ name = ".nvmrc", text = "", fg = "#a6e3a1" },
{ name = "hyprpaper.conf", text = "", fg = "#74c7ec" },
{ name = ".prettierignore", text = "", fg = "#89b4fa" },
{ name = "rakefile", text = "", fg = "#313244" },
{ name = "code_of_conduct", text = "", fg = "#f38ba8" },
{ name = "cmakelists.txt", text = "", fg = "#cdd6f4" },
{ name = ".env", text = "", fg = "#f9e2af" },
{ name = "copying.lesser", text = "", fg = "#f9e2af" },
{ name = "readme", text = "󰂺", fg = "#f5e0dc" },
{ name = "settings.gradle", text = "", fg = "#585b70" },
{ name = "gruntfile.coffee", text = "", fg = "#fab387" },
{ name = ".eslintignore", text = "", fg = "#585b70" },
{ name = "kalgebrarc", text = "", fg = "#89b4fa" },
{ name = "kdenliverc", text = "", fg = "#89b4fa" },
{ name = ".prettierrc.cjs", text = "", fg = "#89b4fa" },
{ name = "cantorrc", text = "", fg = "#89b4fa" },
{ name = "rmd", text = "", fg = "#74c7ec" },
{ name = "vagrantfile$", text = "", fg = "#6c7086" },
{ name = ".Xauthority", text = "", fg = "#fab387" },
{ name = "prettier.config.ts", text = "", fg = "#89b4fa" },
{ name = "node_modules", text = "", fg = "#f38ba8" },
{ name = ".prettierrc.toml", text = "", fg = "#89b4fa" },
{ name = "build.zig.zon", text = "", fg = "#fab387" },
{ name = ".ds_store", text = "", fg = "#45475a" },
{ name = "PKGBUILD", text = "", fg = "#89b4fa" },
{ name = ".prettierrc", text = "", fg = "#89b4fa" },
{ name = ".bash_profile", text = "", fg = "#a6e3a1" },
{ name = ".npmignore", text = "", fg = "#f38ba8" },
{ name = ".mailmap", text = "󰊢", fg = "#fab387" },
{ name = ".codespellrc", text = "󰓆", fg = "#a6e3a1" },
{ name = "svelte.config.js", text = "", fg = "#fab387" },
{ name = "eslint.config.ts", text = "", fg = "#585b70" },
{ name = "config", text = "", fg = "#7f849c" },
{ name = ".gitlab-ci.yml", text = "", fg = "#fab387" },
{ name = ".gitconfig", text = "", fg = "#fab387" },
{ name = "_gvimrc", text = "", fg = "#a6e3a1" },
{ name = ".xinitrc", text = "", fg = "#fab387" },
{ name = "checkhealth", text = "󰓙", fg = "#89b4fa" },
{ name = "sxhkdrc", text = "", fg = "#313244" },
{ name = ".bashrc", text = "", fg = "#a6e3a1" },
{ name = "tailwind.config.mjs", text = "󱏿", fg = "#74c7ec" },
{ name = "ext_typoscript_setup.txt", text = "", fg = "#fab387" },
{ name = "commitlint.config.ts", text = "󰜘", fg = "#94e2d5" },
{ name = "py.typed", text = "", fg = "#f9e2af" },
{ name = ".nanorc", text = "", fg = "#313244" },
{ name = "commit_editmsg", text = "", fg = "#fab387" },
{ name = ".luaurc", text = "", fg = "#89b4fa" },
{ name = "fp-lib-table", text = "", fg = "#f5e0dc" },
{ name = ".editorconfig", text = "", fg = "#f5e0dc" },
{ name = "justfile", text = "", fg = "#7f849c" },
{ name = "kdeglobals", text = "", fg = "#89b4fa" },
{ name = "license.md", text = "", fg = "#f9e2af" },
{ name = ".clang-format", text = "", fg = "#7f849c" },
{ name = "docker-compose.yaml", text = "󰡨", fg = "#89b4fa" },
{ name = "copying", text = "", fg = "#f9e2af" },
{ name = "go.mod", text = "", fg = "#74c7ec" },
{ name = "lxqt.conf", text = "", fg = "#89b4fa" },
{ name = "brewfile", text = "", fg = "#313244" },
{ name = "gulpfile.coffee", text = "", fg = "#f38ba8" },
{ name = ".dockerignore", text = "󰡨", fg = "#89b4fa" },
{ name = ".settings.json", text = "", fg = "#6c7086" },
{ name = "tailwind.config.js", text = "󱏿", fg = "#74c7ec" },
{ name = ".clang-tidy", text = "", fg = "#7f849c" },
{ name = ".gvimrc", text = "", fg = "#a6e3a1" },
{ name = "nuxt.config.cjs", text = "󱄆", fg = "#a6e3a1" },
{ name = "xsettingsd.conf", text = "", fg = "#fab387" },
{ name = "nuxt.config.js", text = "󱄆", fg = "#a6e3a1" },
{ name = "eslint.config.cjs", text = "", fg = "#585b70" },
{ name = "sym-lib-table", text = "", fg = "#f5e0dc" },
{ name = ".condarc", text = "", fg = "#a6e3a1" },
{ name = "xmonad.hs", text = "", fg = "#f38ba8" },
{ name = "tmux.conf", text = "", fg = "#a6e3a1" },
{ name = "xmobarrc.hs", text = "", fg = "#f38ba8" },
{ name = ".prettierrc.yaml", text = "", fg = "#89b4fa" },
{ name = ".pre-commit-config.yaml", text = "󰛢", fg = "#fab387" },
{ name = "i3blocks.conf", text = "", fg = "#f5e0dc" },
{ name = "xorg.conf", text = "", fg = "#fab387" },
{ name = ".zshenv", text = "", fg = "#a6e3a1" },
{ name = "vlcrc", text = "󰕼", fg = "#fab387" },
{ name = "license", text = "", fg = "#f9e2af" },
{ name = "unlicense", text = "", fg = "#f9e2af" },
{ name = "tmux.conf.local", text = "", fg = "#a6e3a1" },
{ name = ".SRCINFO", text = "󰣇", fg = "#89b4fa" },
{ name = "tailwind.config.ts", text = "󱏿", fg = "#74c7ec" },
{ name = "security.md", text = "󰒃", fg = "#bac2de" },
{ name = "security", text = "󰒃", fg = "#bac2de" },
{ name = ".eslintrc", text = "", fg = "#585b70" },
{ name = "gradle.properties", text = "", fg = "#585b70" },
{ name = "code_of_conduct.md", text = "", fg = "#f38ba8" },
{ name = "PrusaSlicerGcodeViewer.ini", text = "", fg = "#fab387" },
{ name = "PrusaSlicer.ini", text = "", fg = "#fab387" },
{ name = "procfile", text = "", fg = "#7f849c" },
{ name = "mpv.conf", text = "", fg = "#1e1e2e" },
{ name = ".prettierrc.json5", text = "", fg = "#89b4fa" },
{ name = "i3status.conf", text = "", fg = "#f5e0dc" },
{ name = "prettier.config.mjs", text = "", fg = "#89b4fa" },
{ name = ".pylintrc", text = "", fg = "#7f849c" },
{ name = "prettier.config.cjs", text = "", fg = "#89b4fa" },
{ name = ".luacheckrc", text = "", fg = "#89b4fa" },
{ name = "containerfile", text = "󰡨", fg = "#89b4fa" },
{ name = "eslint.config.mjs", text = "", fg = "#585b70" },
{ name = "gruntfile.js", text = "", fg = "#fab387" },
{ name = "bun.lockb", text = "", fg = "#f5e0dc" },
{ name = ".gitattributes", text = "", fg = "#fab387" },
{ name = "gruntfile.ts", text = "", fg = "#fab387" },
{ name = "pom.xml", text = "", fg = "#313244" },
{ name = "favicon.ico", text = "", fg = "#f9e2af" },
{ name = "package-lock.json", text = "", fg = "#313244" },
{ name = "build", text = "", fg = "#a6e3a1" },
{ name = "package.json", text = "", fg = "#f38ba8" },
{ name = "nuxt.config.ts", text = "󱄆", fg = "#a6e3a1" },
{ name = "nuxt.config.mjs", text = "󱄆", fg = "#a6e3a1" },
{ name = "mix.lock", text = "", fg = "#7f849c" },
{ name = "makefile", text = "", fg = "#7f849c" },
{ name = "gulpfile.js", text = "", fg = "#f38ba8" },
{ name = "lxde-rc.xml", text = "", fg = "#9399b2" },
{ name = "kritarc", text = "", fg = "#cba6f7" },
{ name = "gtkrc", text = "", fg = "#f5e0dc" },
{ name = "ionic.config.json", text = "", fg = "#89b4fa" },
{ name = ".prettierrc.mjs", text = "", fg = "#89b4fa" },
{ name = ".prettierrc.yml", text = "", fg = "#89b4fa" },
{ name = ".npmrc", text = "", fg = "#f38ba8" },
{ name = "weston.ini", text = "", fg = "#f9e2af" },
{ name = "gulpfile.babel.js", text = "", fg = "#f38ba8" },
{ name = "i18n.config.ts", text = "󰗊", fg = "#7f849c" },
{ name = "commitlint.config.js", text = "󰜘", fg = "#94e2d5" },
{ name = ".gitmodules", text = "", fg = "#fab387" },
{ name = "gradle-wrapper.properties", text = "", fg = "#585b70" },
{ name = "hypridle.conf", text = "", fg = "#74c7ec" },
{ name = "vercel.json", text = "▲", fg = "#f5e0dc" },
{ name = "hyprlock.conf", text = "", fg = "#74c7ec" },
{ name = "go.sum", text = "", fg = "#74c7ec" },
{ name = "kdenlive-layoutsrc", text = "", fg = "#89b4fa" },
{ name = "gruntfile.babel.js", text = "", fg = "#fab387" },
{ name = "compose.yml", text = "󰡨", fg = "#89b4fa" },
{ name = "i18n.config.js", text = "󰗊", fg = "#7f849c" },
{ name = "readme.md", text = "󰂺", fg = "#f5e0dc" },
{ name = "gradlew", text = "", fg = "#585b70" },
{ name = "go.work", text = "", fg = "#74c7ec" },
{ name = "gulpfile.ts", text = "", fg = "#f38ba8" },
{ name = "gnumakefile", text = "", fg = "#7f849c" },
{ name = "FreeCAD.conf", text = "", fg = "#f38ba8" },
{ name = "compose.yaml", text = "󰡨", fg = "#89b4fa" },
{ name = "eslint.config.js", text = "", fg = "#585b70" },
{ name = "hyprland.conf", text = "", fg = "#74c7ec" },
{ name = "docker-compose.yml", text = "󰡨", fg = "#89b4fa" },
{ name = "groovy", text = "", fg = "#585b70" },
{ name = "QtProject.conf", text = "", fg = "#a6e3a1" },
{ name = "platformio.ini", text = "", fg = "#fab387" },
{ name = "build.gradle", text = "", fg = "#585b70" },
{ name = ".nuxtrc", text = "󱄆", fg = "#a6e3a1" },
{ name = "_vimrc", text = "", fg = "#a6e3a1" },
{ name = ".zprofile", text = "", fg = "#a6e3a1" },
{ name = ".xsession", text = "", fg = "#fab387" },
{ name = "prettier.config.js", text = "", fg = "#89b4fa" },
{ name = ".babelrc", text = "", fg = "#f9e2af" },
{ name = "workspace", text = "", fg = "#a6e3a1" },
{ name = ".prettierrc.json", text = "", fg = "#89b4fa" },
{ name = ".prettierrc.js", text = "", fg = "#89b4fa" },
{ name = ".Xresources", text = "", fg = "#fab387" },
{ name = ".gitignore", text = "", fg = "#fab387" },
{ name = ".justfile", text = "", fg = "#7f849c" },
]
exts = [
{ name = "otf", text = "", fg = "#f5e0dc" },
{ name = "import", text = "", fg = "#f5e0dc" },
{ name = "krz", text = "", fg = "#cba6f7" },
{ name = "adb", text = "", fg = "#94e2d5" },
{ name = "ttf", text = "", fg = "#f5e0dc" },
{ name = "webpack", text = "󰜫", fg = "#74c7ec" },
{ name = "dart", text = "", fg = "#585b70" },
{ name = "vsh", text = "", fg = "#7f849c" },
{ name = "doc", text = "󰈬", fg = "#585b70" },
{ name = "zsh", text = "", fg = "#a6e3a1" },
{ name = "ex", text = "", fg = "#7f849c" },
{ name = "hx", text = "", fg = "#fab387" },
{ name = "fodt", text = "", fg = "#74c7ec" },
{ name = "mojo", text = "", fg = "#fab387" },
{ name = "templ", text = "", fg = "#f9e2af" },
{ name = "nix", text = "", fg = "#74c7ec" },
{ name = "cshtml", text = "󱦗", fg = "#585b70" },
{ name = "fish", text = "", fg = "#585b70" },
{ name = "ply", text = "󰆧", fg = "#7f849c" },
{ name = "sldprt", text = "󰻫", fg = "#a6e3a1" },
{ name = "gemspec", text = "", fg = "#313244" },
{ name = "mjs", text = "", fg = "#f9e2af" },
{ name = "csh", text = "", fg = "#585b70" },
{ name = "cmake", text = "", fg = "#cdd6f4" },
{ name = "fodp", text = "", fg = "#fab387" },
{ name = "vi", text = "", fg = "#f9e2af" },
{ name = "msf", text = "", fg = "#89b4fa" },
{ name = "blp", text = "󰺾", fg = "#89b4fa" },
{ name = "less", text = "", fg = "#45475a" },
{ name = "sh", text = "", fg = "#585b70" },
{ name = "odg", text = "", fg = "#f9e2af" },
{ name = "mint", text = "󰌪", fg = "#a6e3a1" },
{ name = "dll", text = "", fg = "#11111b" },
{ name = "odf", text = "", fg = "#f38ba8" },
{ name = "sqlite3", text = "", fg = "#f5e0dc" },
{ name = "Dockerfile", text = "󰡨", fg = "#89b4fa" },
{ name = "ksh", text = "", fg = "#585b70" },
{ name = "rmd", text = "", fg = "#74c7ec" },
{ name = "wv", text = "", fg = "#74c7ec" },
{ name = "xml", text = "󰗀", fg = "#fab387" },
{ name = "markdown", text = "", fg = "#cdd6f4" },
{ name = "qml", text = "", fg = "#a6e3a1" },
{ name = "3gp", text = "", fg = "#fab387" },
{ name = "pxi", text = "", fg = "#89b4fa" },
{ name = "flac", text = "", fg = "#6c7086" },
{ name = "gpr", text = "", fg = "#cba6f7" },
{ name = "huff", text = "󰡘", fg = "#585b70" },
{ name = "json", text = "", fg = "#f9e2af" },
{ name = "gv", text = "󱁉", fg = "#585b70" },
{ name = "bmp", text = "", fg = "#7f849c" },
{ name = "lock", text = "", fg = "#bac2de" },
{ name = "sha384", text = "󰕥", fg = "#7f849c" },
{ name = "cobol", text = "⚙", fg = "#585b70" },
{ name = "cob", text = "⚙", fg = "#585b70" },
{ name = "java", text = "", fg = "#f38ba8" },
{ name = "cjs", text = "", fg = "#f9e2af" },
{ name = "qm", text = "", fg = "#74c7ec" },
{ name = "ebuild", text = "", fg = "#45475a" },
{ name = "mustache", text = "", fg = "#fab387" },
{ name = "terminal", text = "", fg = "#a6e3a1" },
{ name = "ejs", text = "", fg = "#f9e2af" },
{ name = "brep", text = "󰻫", fg = "#a6e3a1" },
{ name = "rar", text = "", fg = "#fab387" },
{ name = "gradle", text = "", fg = "#585b70" },
{ name = "gnumakefile", text = "", fg = "#7f849c" },
{ name = "applescript", text = "", fg = "#7f849c" },
{ name = "elm", text = "", fg = "#74c7ec" },
{ name = "ebook", text = "", fg = "#fab387" },
{ name = "kra", text = "", fg = "#cba6f7" },
{ name = "tf", text = "", fg = "#585b70" },
{ name = "xls", text = "󰈛", fg = "#585b70" },
{ name = "fnl", text = "", fg = "#f9e2af" },
{ name = "kdbx", text = "", fg = "#a6e3a1" },
{ name = "kicad_pcb", text = "", fg = "#f5e0dc" },
{ name = "cfg", text = "", fg = "#7f849c" },
{ name = "ape", text = "", fg = "#74c7ec" },
{ name = "org", text = "", fg = "#94e2d5" },
{ name = "yml", text = "", fg = "#7f849c" },
{ name = "swift", text = "", fg = "#fab387" },
{ name = "eln", text = "", fg = "#7f849c" },
{ name = "sol", text = "", fg = "#74c7ec" },
{ name = "awk", text = "", fg = "#585b70" },
{ name = "7z", text = "", fg = "#fab387" },
{ name = "apl", text = "⍝", fg = "#fab387" },
{ name = "epp", text = "", fg = "#fab387" },
{ name = "app", text = "", fg = "#45475a" },
{ name = "dot", text = "󱁉", fg = "#585b70" },
{ name = "kpp", text = "", fg = "#cba6f7" },
{ name = "eot", text = "", fg = "#f5e0dc" },
{ name = "hpp", text = "", fg = "#7f849c" },
{ name = "spec.tsx", text = "", fg = "#585b70" },
{ name = "hurl", text = "", fg = "#f38ba8" },
{ name = "cxxm", text = "", fg = "#74c7ec" },
{ name = "c", text = "", fg = "#89b4fa" },
{ name = "fcmacro", text = "", fg = "#f38ba8" },
{ name = "sass", text = "", fg = "#f38ba8" },
{ name = "yaml", text = "", fg = "#7f849c" },
{ name = "xz", text = "", fg = "#fab387" },
{ name = "material", text = "󰔉", fg = "#f38ba8" },
{ name = "json5", text = "", fg = "#f9e2af" },
{ name = "signature", text = "λ", fg = "#fab387" },
{ name = "3mf", text = "󰆧", fg = "#7f849c" },
{ name = "jpg", text = "", fg = "#7f849c" },
{ name = "xpi", text = "", fg = "#fab387" },
{ name = "fcmat", text = "", fg = "#f38ba8" },
{ name = "pot", text = "", fg = "#74c7ec" },
{ name = "bin", text = "", fg = "#45475a" },
{ name = "xlsx", text = "󰈛", fg = "#585b70" },
{ name = "aac", text = "", fg = "#74c7ec" },
{ name = "kicad_sym", text = "", fg = "#f5e0dc" },
{ name = "xcstrings", text = "", fg = "#74c7ec" },
{ name = "lff", text = "", fg = "#f5e0dc" },
{ name = "xcf", text = "", fg = "#585b70" },
{ name = "azcli", text = "", fg = "#6c7086" },
{ name = "license", text = "", fg = "#f9e2af" },
{ name = "jsonc", text = "", fg = "#f9e2af" },
{ name = "xaml", text = "󰙳", fg = "#585b70" },
{ name = "md5", text = "󰕥", fg = "#7f849c" },
{ name = "xm", text = "", fg = "#74c7ec" },
{ name = "sln", text = "", fg = "#6c7086" },
{ name = "jl", text = "", fg = "#7f849c" },
{ name = "ml", text = "", fg = "#fab387" },
{ name = "http", text = "", fg = "#89b4fa" },
{ name = "x", text = "", fg = "#89b4fa" },
{ name = "wvc", text = "", fg = "#74c7ec" },
{ name = "wrz", text = "󰆧", fg = "#7f849c" },
{ name = "csproj", text = "󰪮", fg = "#585b70" },
{ name = "wrl", text = "󰆧", fg = "#7f849c" },
{ name = "wma", text = "", fg = "#74c7ec" },
{ name = "woff2", text = "", fg = "#f5e0dc" },
{ name = "woff", text = "", fg = "#f5e0dc" },
{ name = "tscn", text = "", fg = "#7f849c" },
{ name = "webmanifest", text = "", fg = "#f9e2af" },
{ name = "webm", text = "", fg = "#fab387" },
{ name = "fcbak", text = "", fg = "#f38ba8" },
{ name = "log", text = "󰌱", fg = "#cdd6f4" },
{ name = "wav", text = "", fg = "#74c7ec" },
{ name = "wasm", text = "", fg = "#585b70" },
{ name = "styl", text = "", fg = "#a6e3a1" },
{ name = "gif", text = "", fg = "#7f849c" },
{ name = "resi", text = "", fg = "#f38ba8" },
{ name = "aiff", text = "", fg = "#74c7ec" },
{ name = "sha256", text = "󰕥", fg = "#7f849c" },
{ name = "igs", text = "󰻫", fg = "#a6e3a1" },
{ name = "vsix", text = "", fg = "#6c7086" },
{ name = "vim", text = "", fg = "#a6e3a1" },
{ name = "diff", text = "", fg = "#45475a" },
{ name = "drl", text = "", fg = "#eba0ac" },
{ name = "erl", text = "", fg = "#f38ba8" },
{ name = "vhdl", text = "󰍛", fg = "#a6e3a1" },
{ name = "🔥", text = "", fg = "#fab387" },
{ name = "hrl", text = "", fg = "#f38ba8" },
{ name = "fsi", text = "", fg = "#74c7ec" },
{ name = "mm", text = "", fg = "#74c7ec" },
{ name = "bz", text = "", fg = "#fab387" },
{ name = "vh", text = "󰍛", fg = "#a6e3a1" },
{ name = "kdb", text = "", fg = "#a6e3a1" },
{ name = "gz", text = "", fg = "#fab387" },
{ name = "cpp", text = "", fg = "#74c7ec" },
{ name = "ui", text = "", fg = "#6c7086" },
{ name = "txt", text = "󰈙", fg = "#a6e3a1" },
{ name = "spec.ts", text = "", fg = "#74c7ec" },
{ name = "ccm", text = "", fg = "#f38ba8" },
{ name = "typoscript", text = "", fg = "#fab387" },
{ name = "typ", text = "", fg = "#89dceb" },
{ name = "txz", text = "", fg = "#fab387" },
{ name = "test.ts", text = "", fg = "#74c7ec" },
{ name = "tsx", text = "", fg = "#585b70" },
{ name = "mk", text = "", fg = "#7f849c" },
{ name = "webp", text = "", fg = "#7f849c" },
{ name = "opus", text = "", fg = "#6c7086" },
{ name = "bicep", text = "", fg = "#74c7ec" },
{ name = "ts", text = "", fg = "#74c7ec" },
{ name = "tres", text = "", fg = "#7f849c" },
{ name = "torrent", text = "", fg = "#94e2d5" },
{ name = "cxx", text = "", fg = "#74c7ec" },
{ name = "iso", text = "", fg = "#f2cdcd" },
{ name = "ixx", text = "", fg = "#74c7ec" },
{ name = "hxx", text = "", fg = "#7f849c" },
{ name = "gql", text = "", fg = "#f38ba8" },
{ name = "tmux", text = "", fg = "#a6e3a1" },
{ name = "ini", text = "", fg = "#7f849c" },
{ name = "m3u8", text = "󰲹", fg = "#f38ba8" },
{ name = "image", text = "", fg = "#f2cdcd" },
{ name = "tfvars", text = "", fg = "#585b70" },
{ name = "tex", text = "", fg = "#45475a" },
{ name = "cbl", text = "⚙", fg = "#585b70" },
{ name = "flc", text = "", fg = "#f5e0dc" },
{ name = "elc", text = "", fg = "#7f849c" },
{ name = "test.tsx", text = "", fg = "#585b70" },
{ name = "twig", text = "", fg = "#a6e3a1" },
{ name = "sql", text = "", fg = "#f5e0dc" },
{ name = "test.jsx", text = "", fg = "#74c7ec" },
{ name = "htm", text = "", fg = "#fab387" },
{ name = "gcode", text = "󰐫", fg = "#6c7086" },
{ name = "test.js", text = "", fg = "#f9e2af" },
{ name = "ino", text = "", fg = "#74c7ec" },
{ name = "tcl", text = "󰛓", fg = "#585b70" },
{ name = "cljs", text = "", fg = "#74c7ec" },
{ name = "tsconfig", text = "", fg = "#fab387" },
{ name = "img", text = "", fg = "#f2cdcd" },
{ name = "t", text = "", fg = "#74c7ec" },
{ name = "fcstd1", text = "", fg = "#f38ba8" },
{ name = "out", text = "", fg = "#45475a" },
{ name = "jsx", text = "", fg = "#74c7ec" },
{ name = "bash", text = "", fg = "#a6e3a1" },
{ name = "edn", text = "", fg = "#74c7ec" },
{ name = "rss", text = "", fg = "#fab387" },
{ name = "flf", text = "", fg = "#f5e0dc" },
{ name = "cache", text = "", fg = "#f5e0dc" },
{ name = "sbt", text = "", fg = "#f38ba8" },
{ name = "cppm", text = "", fg = "#74c7ec" },
{ name = "svelte", text = "", fg = "#fab387" },
{ name = "mo", text = "∞", fg = "#7f849c" },
{ name = "sv", text = "󰍛", fg = "#a6e3a1" },
{ name = "ko", text = "", fg = "#f5e0dc" },
{ name = "suo", text = "", fg = "#6c7086" },
{ name = "sldasm", text = "󰻫", fg = "#a6e3a1" },
{ name = "icalendar", text = "", fg = "#313244" },
{ name = "go", text = "", fg = "#74c7ec" },
{ name = "sublime", text = "", fg = "#fab387" },
{ name = "stl", text = "󰆧", fg = "#7f849c" },
{ name = "mobi", text = "", fg = "#fab387" },
{ name = "graphql", text = "", fg = "#f38ba8" },
{ name = "m3u", text = "󰲹", fg = "#f38ba8" },
{ name = "cpy", text = "⚙", fg = "#585b70" },
{ name = "kdenlive", text = "", fg = "#89b4fa" },
{ name = "pyo", text = "", fg = "#f9e2af" },
{ name = "po", text = "", fg = "#74c7ec" },
{ name = "scala", text = "", fg = "#f38ba8" },
{ name = "exs", text = "", fg = "#7f849c" },
{ name = "odp", text = "", fg = "#fab387" },
{ name = "dump", text = "", fg = "#f5e0dc" },
{ name = "stp", text = "󰻫", fg = "#a6e3a1" },
{ name = "step", text = "󰻫", fg = "#a6e3a1" },
{ name = "ste", text = "󰻫", fg = "#a6e3a1" },
{ name = "aif", text = "", fg = "#74c7ec" },
{ name = "strings", text = "", fg = "#74c7ec" },
{ name = "cp", text = "", fg = "#74c7ec" },
{ name = "fsscript", text = "", fg = "#74c7ec" },
{ name = "mli", text = "", fg = "#fab387" },
{ name = "bak", text = "󰁯", fg = "#7f849c" },
{ name = "ssa", text = "󰨖", fg = "#f9e2af" },
{ name = "toml", text = "", fg = "#585b70" },
{ name = "makefile", text = "", fg = "#7f849c" },
{ name = "php", text = "", fg = "#7f849c" },
{ name = "zst", text = "", fg = "#fab387" },
{ name = "spec.jsx", text = "", fg = "#74c7ec" },
{ name = "kbx", text = "󰯄", fg = "#6c7086" },
{ name = "fbx", text = "󰆧", fg = "#7f849c" },
{ name = "blend", text = "󰂫", fg = "#fab387" },
{ name = "ifc", text = "󰻫", fg = "#a6e3a1" },
{ name = "spec.js", text = "", fg = "#f9e2af" },
{ name = "so", text = "", fg = "#f5e0dc" },
{ name = "desktop", text = "", fg = "#45475a" },
{ name = "sml", text = "λ", fg = "#fab387" },
{ name = "slvs", text = "󰻫", fg = "#a6e3a1" },
{ name = "pp", text = "", fg = "#fab387" },
{ name = "ps1", text = "󰨊", fg = "#6c7086" },
{ name = "dropbox", text = "", fg = "#6c7086" },
{ name = "kicad_mod", text = "", fg = "#f5e0dc" },
{ name = "bat", text = "", fg = "#a6e3a1" },
{ name = "slim", text = "", fg = "#fab387" },
{ name = "skp", text = "󰻫", fg = "#a6e3a1" },
{ name = "css", text = "", fg = "#89b4fa" },
{ name = "xul", text = "", fg = "#fab387" },
{ name = "ige", text = "󰻫", fg = "#a6e3a1" },
{ name = "glb", text = "", fg = "#fab387" },
{ name = "ppt", text = "󰈧", fg = "#f38ba8" },
{ name = "sha512", text = "󰕥", fg = "#7f849c" },
{ name = "ics", text = "", fg = "#313244" },
{ name = "mdx", text = "", fg = "#74c7ec" },
{ name = "sha1", text = "󰕥", fg = "#7f849c" },
{ name = "f3d", text = "󰻫", fg = "#a6e3a1" },
{ name = "ass", text = "󰨖", fg = "#f9e2af" },
{ name = "godot", text = "", fg = "#7f849c" },
{ name = "ifb", text = "", fg = "#313244" },
{ name = "cson", text = "", fg = "#f9e2af" },
{ name = "lib", text = "", fg = "#11111b" },
{ name = "luac", text = "", fg = "#74c7ec" },
{ name = "heex", text = "", fg = "#7f849c" },
{ name = "scm", text = "󰘧", fg = "#f5e0dc" },
{ name = "psd1", text = "󰨊", fg = "#7f849c" },
{ name = "sc", text = "", fg = "#f38ba8" },
{ name = "scad", text = "", fg = "#f9e2af" },
{ name = "kts", text = "", fg = "#6c7086" },
{ name = "svh", text = "󰍛", fg = "#a6e3a1" },
{ name = "mts", text = "", fg = "#74c7ec" },
{ name = "nfo", text = "", fg = "#f9e2af" },
{ name = "pck", text = "", fg = "#7f849c" },
{ name = "rproj", text = "󰗆", fg = "#a6e3a1" },
{ name = "rlib", text = "", fg = "#fab387" },
{ name = "cljd", text = "", fg = "#74c7ec" },
{ name = "ods", text = "", fg = "#a6e3a1" },
{ name = "res", text = "", fg = "#f38ba8" },
{ name = "apk", text = "", fg = "#a6e3a1" },
{ name = "haml", text = "", fg = "#f5e0dc" },
{ name = "d.ts", text = "", fg = "#fab387" },
{ name = "razor", text = "󱦘", fg = "#585b70" },
{ name = "rake", text = "", fg = "#313244" },
{ name = "patch", text = "", fg = "#45475a" },
{ name = "cuh", text = "", fg = "#7f849c" },
{ name = "d", text = "", fg = "#f38ba8" },
{ name = "query", text = "", fg = "#a6e3a1" },
{ name = "psb", text = "", fg = "#74c7ec" },
{ name = "nu", text = ">", fg = "#a6e3a1" },
{ name = "mov", text = "", fg = "#fab387" },
{ name = "lrc", text = "󰨖", fg = "#f9e2af" },
{ name = "pyx", text = "", fg = "#89b4fa" },
{ name = "pyw", text = "", fg = "#89b4fa" },
{ name = "cu", text = "", fg = "#a6e3a1" },
{ name = "bazel", text = "", fg = "#a6e3a1" },
{ name = "obj", text = "󰆧", fg = "#7f849c" },
{ name = "pyi", text = "", fg = "#f9e2af" },
{ name = "pyd", text = "", fg = "#f9e2af" },
{ name = "exe", text = "", fg = "#45475a" },
{ name = "pyc", text = "", fg = "#f9e2af" },
{ name = "fctb", text = "", fg = "#f38ba8" },
{ name = "part", text = "", fg = "#94e2d5" },
{ name = "blade.php", text = "", fg = "#f38ba8" },
{ name = "git", text = "", fg = "#fab387" },
{ name = "psd", text = "", fg = "#74c7ec" },
{ name = "qss", text = "", fg = "#a6e3a1" },
{ name = "csv", text = "", fg = "#a6e3a1" },
{ name = "psm1", text = "󰨊", fg = "#7f849c" },
{ name = "dconf", text = "", fg = "#f5e0dc" },
{ name = "config.ru", text = "", fg = "#313244" },
{ name = "prisma", text = "", fg = "#6c7086" },
{ name = "conf", text = "", fg = "#7f849c" },
{ name = "clj", text = "", fg = "#a6e3a1" },
{ name = "o", text = "", fg = "#45475a" },
{ name = "mp4", text = "", fg = "#fab387" },
{ name = "cc", text = "", fg = "#f38ba8" },
{ name = "kicad_prl", text = "", fg = "#f5e0dc" },
{ name = "bz3", text = "", fg = "#fab387" },
{ name = "asc", text = "󰦝", fg = "#6c7086" },
{ name = "png", text = "", fg = "#7f849c" },
{ name = "android", text = "", fg = "#a6e3a1" },
{ name = "pm", text = "", fg = "#74c7ec" },
{ name = "h", text = "", fg = "#7f849c" },
{ name = "pls", text = "󰲹", fg = "#f38ba8" },
{ name = "ipynb", text = "", fg = "#fab387" },
{ name = "pl", text = "", fg = "#74c7ec" },
{ name = "ads", text = "", fg = "#f5e0dc" },
{ name = "sqlite", text = "", fg = "#f5e0dc" },
{ name = "pdf", text = "", fg = "#585b70" },
{ name = "pcm", text = "", fg = "#6c7086" },
{ name = "ico", text = "", fg = "#f9e2af" },
{ name = "a", text = "", fg = "#f5e0dc" },
{ name = "R", text = "󰟔", fg = "#6c7086" },
{ name = "ogg", text = "", fg = "#6c7086" },
{ name = "pxd", text = "", fg = "#89b4fa" },
{ name = "kdenlivetitle", text = "", fg = "#89b4fa" },
{ name = "jxl", text = "", fg = "#7f849c" },
{ name = "nswag", text = "", fg = "#a6e3a1" },
{ name = "nim", text = "", fg = "#f9e2af" },
{ name = "bqn", text = "⎉", fg = "#6c7086" },
{ name = "cts", text = "", fg = "#74c7ec" },
{ name = "fcparam", text = "", fg = "#f38ba8" },
{ name = "rs", text = "", fg = "#fab387" },
{ name = "mpp", text = "", fg = "#74c7ec" },
{ name = "fdmdownload", text = "", fg = "#94e2d5" },
{ name = "pptx", text = "󰈧", fg = "#f38ba8" },
{ name = "jpeg", text = "", fg = "#7f849c" },
{ name = "bib", text = "󱉟", fg = "#f9e2af" },
{ name = "vhd", text = "󰍛", fg = "#a6e3a1" },
{ name = "m", text = "", fg = "#89b4fa" },
{ name = "js", text = "", fg = "#f9e2af" },
{ name = "eex", text = "", fg = "#7f849c" },
{ name = "tbc", text = "󰛓", fg = "#585b70" },
{ name = "astro", text = "", fg = "#f38ba8" },
{ name = "sha224", text = "󰕥", fg = "#7f849c" },
{ name = "xcplayground", text = "", fg = "#fab387" },
{ name = "el", text = "", fg = "#7f849c" },
{ name = "m4v", text = "", fg = "#fab387" },
{ name = "m4a", text = "", fg = "#74c7ec" },
{ name = "cs", text = "󰌛", fg = "#585b70" },
{ name = "hs", text = "", fg = "#7f849c" },
{ name = "tgz", text = "", fg = "#fab387" },
{ name = "fs", text = "", fg = "#74c7ec" },
{ name = "luau", text = "", fg = "#89b4fa" },
{ name = "dxf", text = "󰻫", fg = "#a6e3a1" },
{ name = "download", text = "", fg = "#94e2d5" },
{ name = "cast", text = "", fg = "#fab387" },
{ name = "qrc", text = "", fg = "#a6e3a1" },
{ name = "lua", text = "", fg = "#74c7ec" },
{ name = "lhs", text = "", fg = "#7f849c" },
{ name = "md", text = "", fg = "#cdd6f4" },
{ name = "leex", text = "", fg = "#7f849c" },
{ name = "ai", text = "", fg = "#f9e2af" },
{ name = "lck", text = "", fg = "#bac2de" },
{ name = "kt", text = "", fg = "#6c7086" },
{ name = "bicepparam", text = "", fg = "#7f849c" },
{ name = "hex", text = "", fg = "#6c7086" },
{ name = "zig", text = "", fg = "#fab387" },
{ name = "bzl", text = "", fg = "#a6e3a1" },
{ name = "cljc", text = "", fg = "#a6e3a1" },
{ name = "kicad_dru", text = "", fg = "#f5e0dc" },
{ name = "fctl", text = "", fg = "#f38ba8" },
{ name = "f#", text = "", fg = "#74c7ec" },
{ name = "odt", text = "", fg = "#74c7ec" },
{ name = "conda", text = "", fg = "#a6e3a1" },
{ name = "vala", text = "", fg = "#585b70" },
{ name = "erb", text = "", fg = "#313244" },
{ name = "mp3", text = "", fg = "#74c7ec" },
{ name = "bz2", text = "", fg = "#fab387" },
{ name = "coffee", text = "", fg = "#f9e2af" },
{ name = "cr", text = "", fg = "#f5e0dc" },
{ name = "f90", text = "󱈚", fg = "#585b70" },
{ name = "jwmrc", text = "", fg = "#6c7086" },
{ name = "c++", text = "", fg = "#f38ba8" },
{ name = "fcscript", text = "", fg = "#f38ba8" },
{ name = "fods", text = "", fg = "#a6e3a1" },
{ name = "cue", text = "󰲹", fg = "#f38ba8" },
{ name = "srt", text = "󰨖", fg = "#f9e2af" },
{ name = "info", text = "", fg = "#f9e2af" },
{ name = "hh", text = "", fg = "#7f849c" },
{ name = "sig", text = "λ", fg = "#fab387" },
{ name = "html", text = "", fg = "#fab387" },
{ name = "iges", text = "󰻫", fg = "#a6e3a1" },
{ name = "kicad_wks", text = "", fg = "#f5e0dc" },
{ name = "hbs", text = "", fg = "#fab387" },
{ name = "fcstd", text = "", fg = "#f38ba8" },
{ name = "gresource", text = "", fg = "#f5e0dc" },
{ name = "sub", text = "󰨖", fg = "#f9e2af" },
{ name = "ical", text = "", fg = "#313244" },
{ name = "crdownload", text = "", fg = "#94e2d5" },
{ name = "pub", text = "󰷖", fg = "#f9e2af" },
{ name = "vue", text = "", fg = "#a6e3a1" },
{ name = "gd", text = "", fg = "#7f849c" },
{ name = "fsx", text = "", fg = "#74c7ec" },
{ name = "mkv", text = "", fg = "#fab387" },
{ name = "py", text = "", fg = "#f9e2af" },
{ name = "kicad_sch", text = "", fg = "#f5e0dc" },
{ name = "epub", text = "", fg = "#fab387" },
{ name = "env", text = "", fg = "#f9e2af" },
{ name = "magnet", text = "", fg = "#45475a" },
{ name = "elf", text = "", fg = "#45475a" },
{ name = "fodg", text = "", fg = "#f9e2af" },
{ name = "svg", text = "󰜡", fg = "#fab387" },
{ name = "dwg", text = "󰻫", fg = "#a6e3a1" },
{ name = "docx", text = "󰈬", fg = "#585b70" },
{ name = "pro", text = "", fg = "#f9e2af" },
{ name = "db", text = "", fg = "#f5e0dc" },
{ name = "rb", text = "", fg = "#313244" },
{ name = "r", text = "󰟔", fg = "#6c7086" },
{ name = "scss", text = "", fg = "#f38ba8" },
{ name = "cow", text = "󰆚", fg = "#fab387" },
{ name = "gleam", text = "", fg = "#f5c2e7" },
{ name = "v", text = "󰍛", fg = "#a6e3a1" },
{ name = "kicad_pro", text = "", fg = "#f5e0dc" },
{ name = "liquid", text = "", fg = "#a6e3a1" },
{ name = "zip", text = "", fg = "#fab387" },
]

View File

@@ -1,16 +1,17 @@
# Temporarily disable all config for testing
max_width=3000
max_height=3000
[opener] [opener]
play = [ play = [
{ run = 'open -a IINA "$@"', orphan = true, for = "unix", desc='IINA'} { run = 'open -a IINA "$@"', orphan = true, for = "unix", desc='IINA'}
] ]
# [mgr] [image]
# ratio = [2, 6, 5] # left, center, right pane width ratios renderer = "auto"
[preview]
max_width = 2000
max_height = 2000
[plugin] [plugin]
prepend_previewers = [ prepend_previewers = [
{ name = "*.md", run = "glow" }, { name = "*.md", run = "glow" },
{ mime = "image/*", run = "zoom" },
] ]

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -1,92 +0,0 @@
: 1735721099:0;l
: 1735721105:0;h
: 1735721106:0;l
: 1735721117:0;y
: 1735721152:0;exec zsh
: 1735721153:0;l
: 1735721165:0;p10k configure
: 1735721180:0;.zshrc
: 1735721185:0;n .zshrc
: 1735721196:0;n .zshenv
: 1735721237:0;mv .zshrc .zshrc_backup
: 1735721238:0;l
: 1735721246:0;rm .zsh_history
: 1735721247:0;l
: 1735721248:0;ksadlfjk
: 1735721249:0;klsdfjkl
: 1735721250:0;l
: 1735721257:0;exec zsh
: 1735721258:0;l
: 1735721265:0;rm .zshrc_backup
: 1735721266:0;l
: 1735721271:0;nz
: 1735721275:0;y
: 1735721438:0;source .zshrc
: 1735721443:0;l
: 1735721451:0;exec zsh
: 1735721459:0;ne
: 1735721469:0;n .zshenv
: 1735721472:0;..
: 1735721473:0;h
: 1735721474:0;l
: 1735721479:0;n .zshenv
: 1735721569:0;source .zshenv
: 1735721573:0;exec zsh
: 1735721574:0;l
: 1735721589:0;nz
: 1735721623:0;exec zsh
: 1735721624:0;l
: 1735721635:0;nvim .zshenv
: 1735721645:0;ll
: 1735721651:0;y
: 1735721657:0;nz
: 1735721661:0;l
: 1735721680:0;source .config/zsh/.zshrc
: 1735721735:0;nz
: 1735721753:0;l
: 1735721772:0;n .zshenv
: 1735721793:0;zoxide
: 1735721797:0;nz
: 1735721896:0;n .zshenv
: 1735721941:0;l
: 1735722093:0;y
: 1735722123:0;pwd Dhamma\ Wheel.jpg
: 1735722132:0;pwd Dhamma Wheel.jpg
: 1735722134:0;l
: 1735722144:0;pwd 'Dhamma Wheel.jpg'| xclip
: 1735722150:0;pwd 'Dhamma Wheel.jpg'
: 1735722157:0;pwd
: 1735722281:0;l
: 1735722353:0;y
: 1735722410:0;l
: 1735722411:0;y
: 1735722433:0;l
: 1735722453:0;y
: 1735722572:0;l
: 1735722579:0;y
: 1735722622:0;l
: 1735722645:0;y
: 1735722671:0;l
: 1735722673:0;y
: 1735723245:0;l
: 1735723250:0;y
: 1735723410:0;l
: 1735723414:0;y
: 1735723448:0;exit
: 1735723509:0;l
: 1735723514:0;y
: 1735723558:0;l
: 1735724181:0;y
: 1735724209:0;brew list
: 1735727868:0;y
: 1735729702:0;telnet towel.blinkenlights.nl
: 1735729774:0;y
: 1735761687:0;git diff plugins.lua
: 1735761723:0;n plugins.lua
: 1735761758:0;n
: 1735761765:0;l
: 1735761774:0;n keymaps.lua
: 1735761786:0;n
: 1735761793:0;n keymaps.lua
: 1735761812:0;git commit
: 1735761828:0;git add ../../zsh/

View File

@@ -16,6 +16,9 @@ export MANPAGER="nvim +Man!"
## Use IINA CLI ## Use IINA CLI
export YTFZF_PLAYER="iina" export YTFZF_PLAYER="iina"
# Doom Emacs
export PATH="$HOME/.emacs.d/bin:$PATH"
# }}} # }}}
# # ~/.config/secrets/.env # # ~/.config/secrets/.env
@@ -23,14 +26,27 @@ for f in ~/.config/secrets/.env; do
export $(grep -v '^#' "$f" | xargs) export $(grep -v '^#' "$f" | xargs)
done done
# Prompt engine toggle {{{
# 1 = Starship, 0 = Powerlevel10k
export USE_STARSHIP=1
# }}}
# Load Oh My Zsh {{{ # Load Oh My Zsh {{{
export ZSH="$XDG_CONFIG_HOME/.oh-my-zsh" # set path to Oh My Zsh export ZSH="$XDG_CONFIG_HOME/.oh-my-zsh" # set path to Oh My Zsh
ZSH_THEME="powerlevel10k/powerlevel10k" # set theme to Powerlevel10k BEFORE loading Oh My Zsh if [[ "$USE_STARSHIP" == "1" ]]; then
ZSH_THEME="" # disable OMZ theme when using starship
else
ZSH_THEME="powerlevel10k/powerlevel10k"
fi
source $ZSH/oh-my-zsh.sh # load Oh My Zsh framework (plugins, completions, themes) source $ZSH/oh-my-zsh.sh # load Oh My Zsh framework (plugins, completions, themes)
# }}} # }}}
# Theme and prompt {{{ # Theme and prompt {{{
source $XDG_CONFIG_HOME/p10k/.p10k.zsh # load Powerlevel10k configuration if [[ "$USE_STARSHIP" == "1" ]]; then
eval "$(starship init zsh)"
else
source $XDG_CONFIG_HOME/p10k/.p10k.zsh # load Powerlevel10k configuration
fi
# }}} # }}}
# ZSH Plugins {{{ # ZSH Plugins {{{
@@ -47,6 +63,17 @@ export KEYTIMEOUT=1 # make ESC faster when using vi keybindings
# }}} # }}}
# Aliases and Functions {{{ # Aliases and Functions {{{
alias openclaw='/Users/thomasnaderer/.nvm/versions/node/v22.22.0/bin/node /Users/thomasnaderer/.nvm/versions/node/v22.22.0/bin/openclaw'
openclaw_tui() {
local token
token="$(jq -r '.gateway.auth.token // empty' "$HOME/.openclaw/openclaw.json" 2>/dev/null)"
if [ -z "$token" ]; then
echo "openclaw_tui: missing gateway token in ~/.openclaw/openclaw.json"
return 1
fi
OPENCLAW_GATEWAY_TOKEN="$token" openclaw tui --token "$token" "$@"
}
alias octui='openclaw_tui'
alias wfy="ssh ftp5794822\@www76.world4you.com" alias wfy="ssh ftp5794822\@www76.world4you.com"
alias h="cd ~" # go to home folder alias h="cd ~" # go to home folder
alias f="open ." # open current folder in Finder alias f="open ." # open current folder in Finder
@@ -56,6 +83,7 @@ alias tni="cd /Volumes/ipec/intern" # quick cd to mounted volume intern
alias l='eza --color=always --icons -la --group-directories-first' # fancy ls with icons and sorting alias l='eza --color=always --icons -la --group-directories-first' # fancy ls with icons and sorting
alias n='nvim' # shortcut for Neovim alias n='nvim' # shortcut for Neovim
alias m='neomutt' # open Neomutt mail client alias m='neomutt' # open Neomutt mail client
alias tm='tmux' # open Tmux Terminal Multiplexer
# Quick Access to Config Files # Quick Access to Config Files
alias ne='nvim ~/.zshenv' # edit global zshenv alias ne='nvim ~/.zshenv' # edit global zshenv
@@ -79,15 +107,14 @@ alias g='git' # shorthand for git
alias gs='git status' # git status alias gs='git status' # git status
alias gc='git commit' # git commit alias gc='git commit' # git commit
alias gt='git log --oneline --graph --decorate --all' # git log in graph(tree) format alias gt='git log --oneline --graph --decorate --all' # git log in graph(tree) format
alias lg='lazygit' # open Lazygit
# Docker
alias ld='lazydocker' # open Lazydocker
# Scripts # Scripts
alias mnt='sh $HOME/.config/scripts/tnmount.sh' # run tnmount.sh script alias mnt='sh $HOME/.config/scripts/tnmount.sh' # run tnmount.sh script
# Quick access to notes
alias nt='nvim ~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/Privat/TODO.md' # open TODO list
alias ne='nvim ~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/Privat/Einkaufsliste.md' # open shopping list
alias nb='nvim ~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/Privat/Persönliches/Bucketlists/2025.md' # open 2025 bucket list
# Custom Functions # Custom Functions
# Start yazi with "y", and when you quit yazi, your shell will "cd" to the folder you navigated to in yazi # Start yazi with "y", and when you quit yazi, your shell will "cd" to the folder you navigated to in yazi
function y() { function y() {
@@ -103,10 +130,6 @@ function y() {
} }
# }}} # }}}
# iTerm2 shell integration {{{
source $XDG_CONFIG_HOME/iterm2/.iterm2_shell_integration.zsh # load iTerm2 shell integration (enables iTerm2 features)
# }}}
# Conda initialize {{{ # Conda initialize {{{
# export PATH="/opt/homebrew/anaconda3/bin:$PATH" # commented out by conda initialize # export PATH="/opt/homebrew/anaconda3/bin:$PATH" # commented out by conda initialize
# >>> conda initialize >>> # >>> conda initialize >>>
@@ -129,3 +152,12 @@ export NVM_DIR="$HOME/.nvm"
[ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh" # This loads nvm [ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh" # This loads nvm
[ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" # This loads nvm bash_completion [ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" # This loads nvm bash_completion
export PATH="$HOME/.local/bin:$PATH"
export PATH="$HOME/.local/bin:$PATH"
# fzf + fd integration
export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git'
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
# fzf shell integration (keybindings + completion)
eval "$(fzf --zsh)"