aboutsummaryrefslogtreecommitdiffstatshomepage
Commit message (Collapse)AuthorAgeFilesLines
...
* feat: emit OSC 7 CWD for zellij pane/tab inheritanceLibravatar sommerfeld28 hours1-0/+7
|
* chore: commit nvim pack lockfile with plugin revisionsLibravatar sommerfeld28 hours1-1/+220
|
* refactor: audit and fix neovim keybindsLibravatar sommerfeld28 hours4-36/+30
| | | | | | | | | | | | - fix visual p register clobbering: use "_dP black-hole pattern - remove ; -> : mapping: restore native repeat-find motion - remove <C-a>/<C-e> -> ^/$ emacs mappings: anti-vim-philosophy - map dial.nvim to <C-a>/<C-x>/g<C-a>/g<C-x> (standard increment keys) - remove redundant <leader>oq diagnostic loclist (covered by <leader>tl) - collapse <leader>{,v,x,t}D type-def onto g{v,x,t}t pattern (0.12 grt) - move <leader>oc/<leader>ic calls to <leader>co/<leader>ci (Code group) - add gvr/gxr/gtr for references in splits - remove empty <leader>s and <leader>d which-key group declarations
* fix: replace deprecated codelens.refresh with codelens.enableLibravatar sommerfeld28 hours1-11/+1
| | | | | | vim.lsp.codelens.refresh({ bufnr }) is deprecated in 0.12. Use vim.lsp.codelens.enable(true, { bufnr }) which handles the autocmds internally.
* feat: add Alt+q keybind to detach from zellijLibravatar sommerfeld28 hours1-0/+3
|
* chore: set ghostty as default terminalLibravatar sommerfeld28 hours1-1/+1
|
* feat: set block blinking cursor in ghosttyLibravatar sommerfeld28 hours1-0/+5
|
* feat: add minimal ghostty terminal configLibravatar sommerfeld28 hours1-0/+26
| | | | | | | | | | | | | | | Minimal Ghostty config for use with zellij multiplexer: - Gruvbox Dark theme (built-in) - No window decorations (bspwm manages windows) - OSC 52 clipboard-read allowed (for zellij clipboard sync) - All built-in tab/split keybinds unbound (zellij handles this) - Scroll keybinds matching alacritty setup (Alt+U/D/G/Shift+G) - Font inherited from fontconfig monospace alias (Fira Code) Removed all redundant-with-defaults options: mouse-hide-while-typing, copy-on-select, clipboard-write, cursor-style-blink, scrollback-limit, gtk-titlebar, gtk-tabs-location, window-save-state (macOS-only)
* fix: restore WINIT_X11_SCALE_FACTOR for correct font scalingLibravatar sommerfeld28 hours1-0/+3
| | | | | Without this override, fonts render disproportionately large on X11 due to DPI auto-detection.
* chore: clean up alacritty minor optionsLibravatar sommerfeld28 hours1-4/+4
| | | | | | | - Enable live_config_reload (apply config changes without restart) - Remove WINIT_X11_SCALE_FACTOR env override (no longer needed) - Add terminal.osc52 = CopyPaste for full clipboard via OSC 52 (used by zellij for clipboard sync)
* fix: remap alacritty scroll bindings to avoid zellij conflictLibravatar sommerfeld28 hours1-4/+4
| | | | | | | | Alt+[/] for ScrollLineUp/Down conflicted with zellij's Alt+[/] GoToPreviousTab/GoToNextTab — alacritty intercepted them before zellij could see them. Remap to Ctrl+Shift+Up/Down which don't conflict.
* fix: restore dynamic tab number prefixLibravatar sommerfeld28 hours1-2/+3
| | | | | | | The compact bar does not show tab numbers on its own, so the prefix is needed. The index is queried dynamically via current-tab-info on each prompt. Inactive tabs may briefly show a stale number after a tab close but correct on focus.
* fix: drop tab number prefix from zellij tab namesLibravatar sommerfeld28 hours1-3/+2
| | | | | | | The number prefix was redundant with zellij's compact bar which already shows tab numbers. Worse, inactive tabs showed stale numbers after tab closes since each shell can only update its own tab name on prompt. Now tabs show just dir or dir:cmd.
* fix: query zellij tab index dynamically on each promptLibravatar sommerfeld28 hours1-4/+3
| | | | | | | The tab index was captured once at shell startup and cached in a variable. When tabs were closed and renumbered, the stale index persisted, showing wrong numbers. Now _zellij_tab_idx is a function that queries current-tab-info on every precmd/preexec call.
* feat: add keybinds and compact UI for zellijLibravatar sommerfeld28 hours1-0/+18
| | | | | | | | | | | | | Keybindings (all in shared_except locked): - Alt+t: new tab, Alt+[/]: cycle tabs - Alt+w: zoom/fullscreen toggle (like tmux prefix+z) - Alt+x: close focused pane (like tmux prefix+x) - Alt+e: edit scrollback in $EDITOR (opens in nvim) - Alt+-/=: quick pane resize without entering resize mode UI options: - pane_frames false: hide pane borders for cleaner look - default_layout compact: single bottom status bar, no top bar
* fix: disable zellij startup tips and release notes popupsLibravatar sommerfeld28 hours1-0/+4
| | | | | | | | | | | These floating popups (tips, release notes) appear on startup when not explicitly disabled. Dismissing them with Ctrl+C triggers zellij's Reconfigure with write_config_to_disk=true, which backs up the config to .bak and writes a 600-line autogenerated version, destroying stow symlinks. Setting both to false in the config prevents the popups from appearing and the destructive write from ever being triggered.
* fix: remove redundant ZELLIJ_CONFIG_FILE env varLibravatar sommerfeld28 hours1-1/+0
| | | | | | | | | | | | The env var pointed to the same default path zellij already uses ($XDG_CONFIG_HOME/zellij/config.kdl). It was added as a workaround to prevent config overwrites, but investigating the zellij source (config.rs, lib.rs) confirmed the overwrite is caused by the setup wizard's Reconfigure instruction, not a path resolution issue. The real protection: deploy stow before first zellij launch so the config file exists and write_config_to_disk_if_it_does_not_exist() returns false, preventing the wizard from appearing.
* fix: prevent zellij from overwriting stow-managed configLibravatar sommerfeld28 hours1-12/+12
| | | | | | | Set ZELLIJ_CONFIG_FILE to explicitly point at the XDG config path. Without this, zellij overwrites the stow symlink with an auto-generated default config on startup. Also remove KDL v1 semicolons from MessagePlugin child nodes.
* fix: prevent zellij from overwriting stow-managed configLibravatar sommerfeld28 hours1-0/+1
| | | | | | Set ZELLIJ_CONFIG_FILE to explicitly point at the XDG config path. Without this, zellij auto-migrates the config on startup, replacing the stow symlink with a regular file.
* refactor: clean up zellij config and update vim-zellij-navigatorLibravatar sommerfeld28 hours1-19/+10
| | | | | | | Restore minimal config after accidental dump-config overwrite. Remove clear-defaults=true (custom bindings merge with defaults). Remove support_kitty_keyboard_protocol (debug leftover). Update vim-zellij-navigator from v0.2.1 to v0.3.0.
* fix: create XDG state dir for chpwd recent dirsLibravatar sommerfeld28 hours1-7/+11
| | | | | | | | | The chpwd_recent_dirs handler errors when $XDG_STATE_HOME/zsh/ doesn't exist. Add a mkdir -p guard before setting the zstyle. Also rewrites za() to properly handle zellij list-sessions output by splitting into a zsh array and filtering empty lines. Adds a $ZELLIJ nesting guard and passes explicit session name to attach.
* feat: add Alt+1-9 keybinds for direct tab navigationLibravatar sommerfeld28 hours1-0/+13
| | | | | Replicates tmux prefix+number behavior. Available in all modes except locked.
* feat: prefix zellij tab name with tab numberLibravatar sommerfeld28 hours1-2/+4
| | | | | Queries tab position once at shell init (cached, no per-prompt cost) and prepends it: '1:dotfiles', '2:~:nvim', etc.
* fix: show ~ for home directory in zellij tab nameLibravatar sommerfeld28 hours1-6/+3
|
* feat: auto-rename zellij tabs as dir:cmd (tmux-style)Libravatar sommerfeld28 hours1-0/+12
| | | | | | | Uses precmd/preexec hooks to rename the active zellij tab: - At prompt: shows directory name (e.g. 'dotfiles') - During command: shows dir:cmd (e.g. 'dotfiles:nvim') Only active inside zellij ($ZELLIJ is set).
* fix: make za smart-attach (create/attach/pick based on session count)Libravatar sommerfeld28 hours1-2/+11
| | | | | | 0 sessions: create new. 1 session: attach directly. Multiple: open the welcome picker. Replaces broken 'zellij attach -c' which required a session name argument.
* fix: use OSC 52 for clipboard instead of wl-copyLibravatar sommerfeld28 hours2-4/+3
| | | | | | | System uses Xorg, not Wayland. OSC 52 is terminal-native and works on both X11 and Wayland without external tools. Alacritty supports it natively. Removes copy_command from zellij config (OSC 52 is the default when no copy_command is set).
* feat: add Ctrl-Y widget to copy command line to clipboardLibravatar sommerfeld28 hours1-0/+5
| | | | | Replaces tmux-yank's prefix+y functionality with a native zsh widget that copies $BUFFER to clipboard via wl-copy.
* docs: add zellij section to copilot-instructionsLibravatar sommerfeld28 hours1-0/+4
| | | | | Document the terminal multiplexer setup: zellij config location, vim-zellij-navigator + smart-splits.nvim integration.
* chore: remove tmux configLibravatar sommerfeld28 hours1-82/+0
| | | | | | | Fully migrated to zellij. All 14 TPM plugins are replaced by zellij built-ins or smart-splits.nvim. Session resurrection, clipboard, mouse mode, pane management, gruvbox theme, and session manager are all native zellij features.
* refactor: replace tmux aliases with zellij in .zshrcLibravatar sommerfeld28 hours1-3/+2
| | | | | | - Remove ta/tas tmux aliases - Add za (zellij attach -c): attach or create session Usage: za (default session), za myname (named session)
* refactor: replace tmux.nvim with smart-splits.nvim for zellijLibravatar sommerfeld28 hours67-23/+447
| | | | | | | | | | - Swap aserowy/tmux.nvim for mrjones2014/smart-splits.nvim in init.lua - Configure Ctrl h/j/k/l navigation keymaps (same keys as before) - Add vim-zellij-navigator WASM plugin keybindings to zellij config - Remove tmux treesitter parser (no longer needed) smart-splits.nvim auto-detects zellij as the multiplexer and provides seamless split/pane navigation across neovim and zellij boundaries.
* feat: add zellij config with gruvbox-dark themeLibravatar sommerfeld28 hours1-0/+22
| | | | | | | | | | | | Migrate from tmux to zellij. Most tmux plugin features are zellij built-ins: session resurrection, mouse mode, clipboard integration, pane/tab management, session manager, and search. - gruvbox-dark theme (built-in, replaces tmux-gruvbox plugin) - serialize_pane_viewport for full session resurrection - copy_on_select with wl-copy for Wayland clipboard - 50k line scrollback buffer - attach_to_session for auto-reattach
* chore: clean up gitignore, extend mergiraf, add colorMovedWSLibravatar sommerfeld28 hours3-6/+8
| | | | | | | | - gitignore: remove redundant */node_modules/ (node_modules/ already matches at any depth), consolidate clangd cache pattern to **/ - attributes: add .tsx and .lua to mergiraf merge driver - config: add diff.colorMovedWS = allow-indentation-change to complement colorMoved, ignoring whitespace in moved blocks
* refactor: clean up git aliasesLibravatar sommerfeld28 hours1-1/+2
| | | | | | - Remove 'stage = add' — redundant with 'a = add'. - Add 'cp = cherry-pick' — common operation without a shortcut. - Add 'lg = log --graph --oneline' — visual branch graph.
* refactor: improve safety of autocorrect and remove undo aliasLibravatar sommerfeld28 hours1-3/+4
| | | | | | | | - Change help.autocorrect from 1 (0.1s auto-execute) to 'prompt' (asks before executing the guessed command). Prevents accidental execution of wrong commands. - Remove 'undo = reset --hard' alias — destructive with no confirmation, could silently discard uncommitted work.
* feat: add modern git optionsLibravatar sommerfeld28 hours1-0/+5
| | | | | | | | | - rebase.updateRefs = true: auto-update dependent branches when rebasing a stack. Essential for stacked branch workflows. - rerere.enabled = true: remember conflict resolutions and auto-apply them when the same conflict is encountered again. - column.ui = auto: display branches and tags in columns instead of a long vertical list.
* chore: remove unnecessary core.autocrlf on LinuxLibravatar sommerfeld28 hours1-1/+0
| | | | | | core.autocrlf = input does nothing on a Linux-only system — no files will have CRLF line endings natively. The modern approach for cross-platform repos is per-repo .gitattributes.
* fix: remove invalid whitespace value and enable histogram diffLibravatar sommerfeld28 hours1-2/+2
| | | | | | | - Remove 'fix' from core.whitespace — it's an apply.whitespace action, not a valid whitespace type. Was silently ignored. - Uncomment diff.algorithm = histogram — produces better diffs than the default myers algorithm, especially for moved code blocks.
* refactor: strip terminal keys section to essentialsLibravatar sommerfeld28 hours1-29/+7
| | | | | | | | | | Remove 9 explicit key bindings (Home, End, Insert, Backspace, Delete, Left, Right, PageUp, PageDown) — all already work OOTB in emacs mode on modern terminals. Keep only: - Application mode block (ensures terminfo works during zle) - Up/Down key lookup (needed for substring-search bindings below)
* docs: document every completion zstyleLibravatar sommerfeld28 hours1-10/+15
| | | | | Each line now has an inline comment explaining what it does and why. The completer pipeline gets a multi-line breakdown of each stage.
* fix: declare ZSH_HIGHLIGHT_STYLES before subscript assignmentLibravatar sommerfeld28 hours1-0/+1
| | | | | | | With extendedglob on, ZSH_HIGHLIGHT_STYLES[comment] triggers 'assignment to invalid subscript range' because the array doesn't exist yet and [comment] is parsed as a glob pattern. Explicitly declare it as an associative array first.
* feat: add Ctrl-Z toggle for foreground/backgroundLibravatar sommerfeld28 hours1-0/+14
| | | | | | Single Ctrl-Z press suspends a process AND resumes it — no need to type 'fg' manually. If no jobs are suspended, clears the screen instead. Very ergonomic for editor/build workflows.
* feat: add zoxide for smart directory jumpingLibravatar sommerfeld28 hours1-0/+5
| | | | | | | | z foo → jump to best frecency-ranked directory matching "foo" zi → interactive fzf picker for directory history Much more powerful than cdr — learns from usage patterns across all sessions and ranks by frequency + recency (frecency algorithm).
* feat: add modern word-navigation keybindingsLibravatar sommerfeld28 hours1-0/+8
| | | | | | | | | Ctrl-Right/Left and Alt-Right/Left for word-by-word navigation. Ctrl-Backspace/Delete for word-by-word deletion. The key insight: Ctrl-Right (forward-word) with zsh-autosuggestions installed automatically accepts the next word of the suggestion, giving fish's killer partial-accept feature for free.
* refactor: modernize aliases and clean up LESS flagsLibravatar sommerfeld28 hours2-4/+4
| | | | | | | | | - Replace fgrep/egrep aliases with grep -F/grep -E (POSIX deprecated the standalone fgrep/egrep commands) - Rename gdb alias to gdbr (gdb auto-started with args is a convenience shortcut, not a replacement for plain gdb) - Remove LESS -X flag (legacy workaround for old less versions that didn't properly use alternate screen)
* chore: remove outdated exports from .zprofileLibravatar sommerfeld28 hours1-4/+0
| | | | | | | - AWT_TOOLKIT=MToolkit: removed in Java 7 (2011), does nothing - GTK_RC_FILES for gtk-1.0: GTK1 is from 1998, no apps use it - PYTHON_EGG_CACHE: eggs deprecated, pip/setuptools use wheels - WORKON_HOME: virtualenvwrapper not used (modern Python uses venv/uv)
* feat: add history hardening and directory stack optionsLibravatar sommerfeld28 hours1-0/+8
| | | | | | | | | | | | | | History: - extended_history: save timestamps per entry - share_history: share across concurrent sessions - hist_ignore_all_dups: remove older duplicate on new entry - hist_find_no_dups: skip duplicates when searching - hist_reduce_blanks: trim superfluous whitespace - hist_ignore_space: leading space = private command Navigation: - auto_pushd: cd pushes onto dir stack (cd -<TAB> to browse) - pushd_ignore_dups: don't push duplicate dirs
* chore: remove redundant setopts (already zsh defaults)Libravatar sommerfeld28 hours1-3/+1
| | | | | appendhistory (<D>), nomatch (<C><Z>), and notify (<Z>) are all set by default in zsh emulation. Add a comment noting this for reference.
* fix: resolve multiple bugs in .zshrcLibravatar sommerfeld28 hours1-13/+8
| | | | | | | | | | | | | | | | - Move HISTFILE from XDG_CACHE_HOME to XDG_STATE_HOME (history is state, not cache — cache cleaners could delete it) - Fix compinit: add -d flag to put zcompdump in XDG_CACHE_HOME instead of polluting $HOME - Fix cdr: set recent-dirs-file to XDG_STATE_HOME location - Fix ZSH_HIGHLIGHT_HIGHLIGHTERS/STYLES: set BEFORE sourcing the plugin (required by plugin docs) - Fix zsh-history-substring-search: bind to Up/Down keys (was loaded but never bound — dead code) - Remove dead .../..../….. aliases (rationalise-dot widget intercepts every dot keystroke, making these unreachable) - Remove redundant ShiftTab reverse-menu-complete binding (overridden by autosuggest-accept)