aboutsummaryrefslogtreecommitdiffstatshomepage
Commit message (Collapse)AuthorAgeFilesLines
...
* fix: restore dynamic tab number prefixLibravatar sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 hours1-0/+13
| | | | | Replicates tmux prefix+number behavior. Available in all modes except locked.
* feat: prefix zellij tab name with tab numberLibravatar sommerfeld35 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 sommerfeld35 hours1-6/+3
|
* feat: auto-rename zellij tabs as dir:cmd (tmux-style)Libravatar sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 hours1-0/+4
| | | | | Document the terminal multiplexer setup: zellij config location, vim-zellij-navigator + smart-splits.nvim integration.
* chore: remove tmux configLibravatar sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 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 sommerfeld35 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)
* docs: update copilot-instructions for new shell layoutLibravatar sommerfeld35 hours1-0/+40
| | | | | | Rewrite shell config section to reflect the zsh-only 3-file architecture (.zshenv, .zprofile, .zshrc). Remove references to deleted files (.profile, .bashrc, envrc, aliases, shinit).
* chore: delete obsolete shell config filesLibravatar sommerfeld35 hours6-394/+0
| | | | | | | | | | | | Remove files made redundant by the zsh-only rewrite: - home/.profile (POSIX login shell — replaced by .zprofile) - home/.bashrc (bash interactive — no longer needed) - home/.bash_logout (bash logout — no longer needed) - home/.config/sh/envrc (shared env vars — merged into .zprofile) - home/.config/sh/aliases (shared aliases — merged into .zshrc) - home/.config/sh/shinit (POSIX interactive init — merged into .zshrc) The inputrc file is kept for readline-based tools (python REPL, etc.).
* refactor: rewrite .zshrc as unified interactive configLibravatar sommerfeld35 hours1-127/+178
| | | | | | | | | | | | | | | | | | Merge aliases into .zshrc and fix multiple bugs: - Fix: remove duplicate zle application mode block (lines 110-115) - Fix: select-word-style called once (shell), was called twice (bash then shell) - Fix: remove contradictory no_complete_aliases/COMPLETE_ALIASES setopts - Fix: remove 'set zle_bracketed_paste' (wrong syntax, did nothing) - Remove: case $- guard (unnecessary — zsh only sources .zshrc interactively) - Remove: shinit sourcing (replaced by direct config in .zprofile/.zshrc) - Remove: safesource calls (direct source) - Remove: ZSH_AUTOSUGGEST_USE_ASYNC (deprecated, async is default) - Remove: run-help-sudo (system uses doas) - Remove: bash() wrapper function (no longer needed) - Remove: initial Up/Down bindings (immediately overridden by prefix search) - Organize into clearly labeled sections with comments - Consolidate compdef calls
* refactor: rewrite .zprofile as zsh login configLibravatar sommerfeld35 hours2-2/+133
| | | | | | | | | | | | | | | | | | Replace the symlink-to-.profile with a proper zsh-native .zprofile. Merges content from envrc into a single file. Changes: - Remove POSIX compat helpers (safesource, exists, ifexists) - Remove LESS_TERMCAP block (MANPAGER is nvim) - Remove deprecated MOZ_WEBRENDER, MOZ_X11_EGL, GPG_AGENT_INFO - Remove SENTRY_ACCESS_TOKEN, ENV export - Remove .zshrc dispatch (zsh handles this natively via ZDOTDIR) - Fix duplicate RUSTUP_HOME export - Fix work-envrc: was checking wrong file readability - Fix XAUTHORITY: also skip when over SSH - Use zsh idioms: typeset -U, $+commands, [[]] - Use $TTY for GPG_TTY (zsh sets this automatically) - Organize into clearly labeled sections with comments - Delete home/.zprofile (was symlink to .profile, now redundant)
* feat: add .zshenv bootstrap fileLibravatar sommerfeld35 hours1-0/+2
| | | | | Sets ZDOTDIR so zsh finds .zprofile and .zshrc in XDG_CONFIG_HOME/zsh instead of requiring files in $HOME.
* chore: remove shadafile=NONE optionLibravatar sommerfeld35 hours1-1/+0
| | | | Re-enable shada for persistent marks, registers, and command history.
* docs: document every option in options.luaLibravatar sommerfeld35 hours1-44/+61
| | | | | | Add inline comments explaining the intent and behavior of each setting, including non-obvious choices like shadafile=NONE, scrolloff=999, and the two-phase folding setup.
* chore: remove redundant vim.diagnostic.configLibravatar sommerfeld35 hours1-5/+0
| | | | Immediately overridden by tiny-inline-diagnostic setup in lsp.lua.
* chore: remove redundant Space-to-Nop mappingLibravatar sommerfeld35 hours1-2/+0
| | | | Has no effect when mapleader is already set to Space.
* chore: remove redundant vim.loader.enable()Libravatar sommerfeld35 hours1-2/+0
| | | | Bytecode caching is enabled by default in Neovim 0.12.
* chore: remove stale filetypes from close_with_q autocmdLibravatar sommerfeld35 hours1-3/+0
| | | | grug-far, spectre_panel, tsplayground are not installed plugins.