summaryrefslogtreecommitdiffstatshomepage
path: root/home/.config/zsh
Commit message (Collapse)AuthorAgeFilesLines
* refactor: remove stow home/ directory (preparing for chezmoi source state)sommerfeld2026-04-212-438/+0
|
* fix: set GPG_TTY per interactive shell, not just at loginsommerfeld2026-04-172-2/+3
| | | | | | GPG_TTY was set in .zprofile (login shell) to /dev/tty1, but terminal emulator shells get /dev/pts/N. Move the export to .zshrc so each interactive shell sets the correct TTY before telling the agent.
* refactor: revert GNUPGHOME to default ~/.gnupgsommerfeld2026-04-171-1/+0
| | | | | | | | | | | | | | Drop custom GNUPGHOME=~/.local/share/gnupg which required 6 systemd socket/service overrides with hardcoded directory hashes. GnuPG periodically changes its hash algorithm on updates, silently breaking systemd socket activation and pam-gnupg passphrase presetting. With default GNUPGHOME, stock systemd units work out of the box. - Move gpg.conf, gpg-agent.conf, sshcontrol to home/.gnupg/ - Delete all gpg-agent socket/service/dirmngr override dirs - Remove GNUPGHOME from .zprofile, .pam_environment, pam-gnupg - Remove GNUPGHOME from vdirsyncer and bridge service overrides
* fix: move GNUPGHOME before SSH_AUTH_SOCK in zprofilesommerfeld2026-04-171-1/+1
| | | | | | gpgconf --list-dirs agent-ssh-socket needs GNUPGHOME set to return the correct hashed socket path. Without it, SSH_AUTH_SOCK pointed to a non-existent socket, breaking GPG agent SSH authentication.
* refactor: remove dead code and defunct settingssommerfeld2026-04-171-3/+1
| | | | | | | | | | | | | | - streamlink: remove twitch-disable-hosting (removed 2022) and twitch-disable-ads (dropped by streamlink) - .zprofile: remove dead FZF_TMUX tmux check, GTK2_RC_FILES export (gtk-2.0 dir deleted), update qt5ct → qt6ct - gtk-3.0/settings.ini: remove 4 GTK2-only settings (toolbar-style, toolbar-icon-size, button-images, menu-images) - gtk-3.0/gtk.css: fix GTK2 selectors (GtkLabel→headerbar, GtkWindow→window), remove Nautilus rule (not used on sway) - npm/npmrc: remove init-module pointing to nonexistent file - mpv.conf: remove load-stats-overlay=no (references nonexistent script) - aerc.conf: change styleset nord → gruvbox for consistency
* fix: revert TERM hack for yazi in zellijsommerfeld2026-04-171-6/+2
| | | | | | | | Überzug++ Wayland overlay coordinates are wrong inside zellij panes, so the TERM=xterm-kitty workaround doesn't actually produce image previews. Image previews work natively outside zellij; inside zellij all image paths are broken until zellij adds Kitty graphics passthrough (zellij#775).
* feat: force ueberzug++ for yazi image previews inside zellijsommerfeld2026-04-171-2/+6
|
* feat: replace lf with yazi file managersommerfeld2026-04-171-0/+9
| | | | | | | | - Create minimal yazi.toml: show_hidden, scrolloff=10, mtime linemode - Create keymap.toml: shell access (!), bookmark dirs (g r/./x/s/S) - Add y() shell wrapper for cd-on-exit to zshrc - Add yazi section to KEYBINDS.md - Remove old lf config
* chore: remove all X11/Xorg configs and referencessommerfeld2026-04-172-2/+2
| | | | | | | | | | | | | | | Removed: - home/.config/{X11,bspwm,sxhkd,polybar,rofi,dunst,sxiv,sx,alacritty} - meta/{x-base,x-de,x-extra} metapackages - barscripts/ (polybar GPU scripts) - nvim sxhkdrc ftplugin and treesitter parser Updated: - mimeapps.list: sxiv → imv - ghostty config: bspwm → sway comment - .zshrc: alacritty → xterm-ghostty in TERM check - .zprofile: removed bspwm from comment - copilot-instructions.md: removed X11 references
* refactor: update shell config for waylandsommerfeld2026-04-172-24/+9
| | | | | | | | | - Remove X11 env vars (SXHKD_SHELL, GDK_DISPLAY, vblank_mode) - Remove X11 XDG cleanup vars (XAUTHORITY, XINITRC, etc.) - Add XDG_CURRENT_DESKTOP=sway, MOZ_ENABLE_WAYLAND=1 - Export XDG_SESSION_TYPE=wayland before launching sway - Auto-start sway on VT1 (replaces sx) - Remove xclip alias and whichkey function from .zshrc
* feat: emit OSC 7 CWD for zellij pane/tab inheritancesommerfeld2026-04-171-0/+7
|
* chore: set ghostty as default terminalsommerfeld2026-04-171-1/+1
|
* fix: restore dynamic tab number prefixsommerfeld2026-04-171-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 namessommerfeld2026-04-171-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 promptsommerfeld2026-04-171-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.
* fix: remove redundant ZELLIJ_CONFIG_FILE env varsommerfeld2026-04-171-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 configsommerfeld2026-04-171-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.
* fix: create XDG state dir for chpwd recent dirssommerfeld2026-04-171-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: prefix zellij tab name with tab numbersommerfeld2026-04-171-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 namesommerfeld2026-04-171-6/+3
|
* feat: auto-rename zellij tabs as dir:cmd (tmux-style)sommerfeld2026-04-171-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)sommerfeld2026-04-171-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-copysommerfeld2026-04-171-2/+2
| | | | | | | 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 clipboardsommerfeld2026-04-171-0/+5
| | | | | Replaces tmux-yank's prefix+y functionality with a native zsh widget that copies $BUFFER to clipboard via wl-copy.
* refactor: replace tmux aliases with zellij in .zshrcsommerfeld2026-04-171-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: strip terminal keys section to essentialssommerfeld2026-04-171-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 zstylesommerfeld2026-04-171-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 assignmentsommerfeld2026-04-171-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/backgroundsommerfeld2026-04-171-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 jumpingsommerfeld2026-04-171-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 keybindingssommerfeld2026-04-171-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 flagssommerfeld2026-04-172-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 .zprofilesommerfeld2026-04-171-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 optionssommerfeld2026-04-171-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)sommerfeld2026-04-171-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 .zshrcsommerfeld2026-04-171-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)
* refactor: rewrite .zshrc as unified interactive configsommerfeld2026-04-171-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 configsommerfeld2026-04-171-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)
* Add a lot of changessommerfeld2025-09-111-2/+27
|
* [zsh] Enable colors earliersommerfeld2025-01-311-2/+3
|
* [zsh] Fix autocompletion bugsommerfeld2024-06-121-0/+1
|
* [zsh] Add user completion directory to $fpathsommerfeld2024-05-221-0/+1
|
* first commitArnold Sommerfeld2023-10-182-0/+193