From 7d490453085ae084ce0e3875952eae1d3ad7b1ab Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Mon, 26 Jan 2026 16:57:37 -0600 Subject: refactor(shell): reorganize shell config for proper separation Restructure shell configuration to follow standard conventions: - .profile: Environment variables only (POSIX compatible) - .bash_profile: NEW - sources .profile and .bashrc for login shells - .bashrc: Bash-specific settings, sources .bashrc.d/ - .zshrc: Zsh-specific settings, sources .zshrc.d/ New modular directories: - .bashrc.d/: aliases, emacs, fzf, git, media, utilities - .zshrc.d/: same as bashrc.d plus arch-downgrade (zsh-only) - .profile.d/: reduced to env-only files (display, framework, auto-tmux) Fixes: - Remove duplicate .profile sourcing in .bashrc - Remove broken XDG_CURRENT_DESKTOP=GNOME line from display.sh - Move aliases/functions from .profile to appropriate .d/ directories - Shell-specific init (zoxide, fzf) now in .bashrc/.zshrc directly - FreeBSD bindkey fix now in .zshrc directly Also adds CLAUDE.md session context file. Co-Authored-By: Claude Opus 4.5 --- dotfiles/system/.zshrc.d/arch-downgrade.sh | 47 ++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 dotfiles/system/.zshrc.d/arch-downgrade.sh (limited to 'dotfiles/system/.zshrc.d/arch-downgrade.sh') diff --git a/dotfiles/system/.zshrc.d/arch-downgrade.sh b/dotfiles/system/.zshrc.d/arch-downgrade.sh new file mode 100644 index 0000000..f1d01a7 --- /dev/null +++ b/dotfiles/system/.zshrc.d/arch-downgrade.sh @@ -0,0 +1,47 @@ +# arch-downgrade.sh +# Craig Jennings +# Downgrade Arch packages with fzf (zsh only) + +# Config: +# export DG_HELPER=pacman # or yay, paru, etc. +# export DG_FZF_OPTS="..." # optional extra fzf flags + +dg() { + emulate -L zsh + set -u + set -o pipefail + + local helper="${DG_HELPER:-pacman}" + + # Check dependencies + for cmd in "$helper" fzf sudo downgrade awk sort; do + if ! command -v "${cmd%% *}" >/dev/null 2>&1; then + print -u2 -- "Missing dependency: $cmd" + return 1 + fi + done + + # List explicitly installed packages + local selection + selection="$( + "$helper" -Qe 2>/dev/null \ + | fzf --no-multi \ + --prompt="Pick package to downgrade > " \ + --height=80% \ + --reverse \ + --delimiter=' ' \ + --preview-window=right:60%:wrap \ + --preview "$helper -Qi {1} 2>/dev/null || $helper -Si {1}" \ + ${DG_FZF_OPTS:-} + )" + + [[ $? -ne 0 || -z "$selection" ]] && return 0 + + local pkg + pkg="$(print -r -- "$selection" | head -n1 | awk '{print $1}')" + + if ! sudo downgrade "$pkg"; then + print -u2 -- "Downgrade failed for $pkg" + return 1 + fi +} -- cgit v1.2.3