summaryrefslogtreecommitdiff
path: root/dotfiles/common/.zsh/lib/ftb-switch-group
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-01-26 17:36:38 -0600
committerCraig Jennings <c@cjennings.net>2026-01-26 17:36:38 -0600
commitdada2f255daaa2fb493ec8c7d47e2a8123aea494 (patch)
tree0c0eeb84bb7b6e66a2d7f41cdfd061b25f80cc14 /dotfiles/common/.zsh/lib/ftb-switch-group
parentd50e5955837788fc69b4d5bc74cb574b859ed31a (diff)
refactor(dotfiles): rename system/ to common/ and remove unused configs
Rename dotfiles/system to dotfiles/common for clarity - indicates shared dotfiles used across all desktop environments (DWM, Hyprland). Removed config directories for uninstalled applications: - ghostty (using different terminal) - lf (using ranger instead) - mopidy (using mpd instead) - nitrogen (X11-only, obsolete for Wayland) - pychess (not installed) - JetBrains (not installed via archsetup) - youtube-dl (using yt-dlp with different config location) Kept audacious config for potential future use. Updated all references in archsetup, CLAUDE.md, todo.org, and validation.sh. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Diffstat (limited to 'dotfiles/common/.zsh/lib/ftb-switch-group')
-rw-r--r--dotfiles/common/.zsh/lib/ftb-switch-group38
1 files changed, 38 insertions, 0 deletions
diff --git a/dotfiles/common/.zsh/lib/ftb-switch-group b/dotfiles/common/.zsh/lib/ftb-switch-group
new file mode 100644
index 0000000..8d06956
--- /dev/null
+++ b/dotfiles/common/.zsh/lib/ftb-switch-group
@@ -0,0 +1,38 @@
+#!/hint/zsh
+emulate -L zsh -o extended_glob
+
+zmodload zsh/mapfile
+
+# receive arguments
+local pid=$1 header_lines=$2 tmp_dir=$3 offset=$@[-1]
+
+# read completion list
+local -a list=(${(f)mapfile[$tmp_dir/completions.$pid]})
+
+# get total group count
+if (( $#list > 10000 )); then
+ local -Ua total=(${(f)"$(print -l ${list:$header_lines} | grep -a -oP '^\x1b\[[0-9;]*m')"})
+else
+ local -Ua total=(${(M)${list:$header_lines}#$'\x1b['[0-9;]#*m})
+fi
+
+# get current group index, start from 2
+local current=2
+if [[ -f $tmp_dir/current-group.$pid ]]; then
+ current=$(( $(<$tmp_dir/current-group.$pid) + offset ))
+fi
+(( current > $#total )) && current=1
+(( current == 0 )) && current=$#total
+echo $current > $tmp_dir/current-group.$pid
+
+# print headers
+if (( header_lines != 0 )); then
+ print -l ${list[1,header_lines]/${total[current]}/$'\x1b[1m'}
+fi
+
+# print current group
+if (( $#list > 10000 )); then
+ print -l ${list:$header_lines} | grep -a -F "${total[current]}"
+else
+ print -l ${(M)${list:$header_lines}:#${total[current]}*}
+fi