aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/home/.config
Commit message (Collapse)AuthorAgeFilesLines
* fix: query zellij tab index dynamically on each promptLibravatar sommerfeld44 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 sommerfeld44 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 sommerfeld44 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 sommerfeld44 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 sommerfeld44 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 sommerfeld44 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 sommerfeld44 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 sommerfeld44 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 sommerfeld44 hours1-0/+13
| | | | | Replicates tmux prefix+number behavior. Available in all modes except locked.
* feat: prefix zellij tab name with tab numberLibravatar sommerfeld44 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 sommerfeld44 hours1-6/+3
|
* feat: auto-rename zellij tabs as dir:cmd (tmux-style)Libravatar sommerfeld44 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 sommerfeld44 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 sommerfeld44 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 sommerfeld44 hours1-0/+5
| | | | | Replaces tmux-yank's prefix+y functionality with a native zsh widget that copies $BUFFER to clipboard via wl-copy.
* chore: remove tmux configLibravatar sommerfeld44 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 sommerfeld44 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 sommerfeld44 hours5-7/+41
| | | | | | | | | | - 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 sommerfeld44 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 sommerfeld44 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 sommerfeld44 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 sommerfeld44 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 sommerfeld44 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 sommerfeld44 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 sommerfeld44 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 sommerfeld44 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 sommerfeld44 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 sommerfeld44 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 sommerfeld44 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 sommerfeld44 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 sommerfeld44 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 sommerfeld44 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 sommerfeld44 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 sommerfeld44 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 sommerfeld44 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 sommerfeld44 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)
* chore: delete obsolete shell config filesLibravatar sommerfeld44 hours3-310/+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 sommerfeld44 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 sommerfeld44 hours1-1/+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)
* chore: remove shadafile=NONE optionLibravatar sommerfeld44 hours1-1/+0
| | | | Re-enable shada for persistent marks, registers, and command history.
* docs: document every option in options.luaLibravatar sommerfeld44 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 sommerfeld44 hours1-5/+0
| | | | Immediately overridden by tiny-inline-diagnostic setup in lsp.lua.
* chore: remove redundant Space-to-Nop mappingLibravatar sommerfeld44 hours1-2/+0
| | | | Has no effect when mapleader is already set to Space.
* chore: remove redundant vim.loader.enable()Libravatar sommerfeld44 hours1-2/+0
| | | | Bytecode caching is enabled by default in Neovim 0.12.
* chore: remove stale filetypes from close_with_q autocmdLibravatar sommerfeld44 hours1-3/+0
| | | | grug-far, spectre_panel, tsplayground are not installed plugins.
* fix: use native treesitter indentexpr instead of plugin APILibravatar sommerfeld44 hours1-1/+1
| | | | | Neovim 0.12 provides vim.treesitter.indentexpr() natively, replacing the nvim-treesitter plugin's indentexpr function.
* fix: wrap tblgen_lsp_server enable in pcallLibravatar sommerfeld44 hours1-1/+1
| | | | | Server binary may not be installed on all machines. Wrap in pcall to prevent startup errors when tblgen_lsp_server is unavailable.
* fix: use doas instead of sudo in DoasWrite commandLibravatar sommerfeld44 hours1-6/+6
| | | | | | System uses doas for privilege escalation. Renamed SudoWrite → DoasWrite and switched from sudo -p '' -S to doas -S with newline-terminated password input.
* fix: correct inlay_hint.is_enabled API for Neovim 0.12Libravatar sommerfeld44 hours1-1/+1
| | | | | Neovim 0.12 changed the signature from a table { bufnr = N } to a plain integer bufnr parameter.
* fix: use branch for blink.download (no semver tags)Libravatar sommerfeld44 hours1-1/+1
|