diff --git a/.config/shell/arch b/.config/shell/arch index 779e0a3..b213d80 100644 --- a/.config/shell/arch +++ b/.config/shell/arch @@ -10,44 +10,48 @@ alias yau='yay -Syu --nobatchinstall' # Helper function to integrate yay and fzf yzf() { - pos=$1 - shift - sed "s/ /\t/g" | - fzf --nth=$pos --multi --history="${FZF_HISTDIR:-$XDG_STATE_HOME/fzf}/history-yzf$pos" \ - --preview-window=60%,border-left \ - --bind="double-click:execute(xdg-open 'https://archlinux.org/packages/{$pos}'),alt-enter:execute(xdg-open 'https://aur.archlinux.org/packages?K={$pos}&SB=p&SO=d&PP=100')" \ - "$@" | cut -f$pos | xargs + pos=$1 + shift + sed "s/ /\t/g" | + fzf --nth=$pos --multi --history="${FZF_HISTDIR:-$XDG_STATE_HOME/fzf}/history-yzf$pos" \ + --preview-window=60%,border-left \ + --bind="double-click:execute(xdg-open 'https://archlinux.org/packages/{$pos}'),alt-enter:execute(xdg-open 'https://aur.archlinux.org/packages?K={$pos}&SB=p&SO=d&PP=100')" \ + "$@" | cut -f$pos | xargs } # Dev note: print -s adds a shell history entry # List installable packages into fzf and install selection yas() { - cache_dir="/tmp/yas-$USER" - test "$1" = "-y" && rm -rf "$cache_dir" && shift - mkdir -p "$cache_dir" - preview_cache="$cache_dir/preview_{2}" - list_cache="$cache_dir/list" - { test "$(cat "$list_cache$@" | wc -l)" -lt 50000 && rm "$list_cache$@"; } 2>/dev/null - pkg=$( (cat "$list_cache$@" 2>/dev/null || { pacman --color=always -Sl "$@"; yay --color=always -Sl aur "$@" } | sed 's/ [^ ]*unknown-version[^ ]*//' | tee "$list_cache$@") | - yzf 2 --tiebreak=index --preview="cat $preview_cache 2>/dev/null | grep -v 'Querying' | grep . || yay --color always -Si {2} | tee $preview_cache") - if test -n "$pkg" - then echo "Installing $pkg..." - cmd="yay -S $pkg" - print -s "$cmd" - eval "$cmd" || yay -Sy $pkg - rehash - fi + cache_dir="/tmp/yas-$USER" + test "$1" = "-y" && rm -rf "$cache_dir" && shift + mkdir -p "$cache_dir" + preview_cache="$cache_dir/preview_{2}" + list_cache="$cache_dir/list$*" + { test "$(cat "$list_cache" | wc -l)" -lt 50000 && rm "$list_cache"; } 2>/dev/null + pkg=$( + ( cat "$list_cache" 2>/dev/null || + { pacman --color=always -Sl "$@"; yay --color=always -Sl aur "$@" } | + sed 's/ [^ ]*unknown-version[^ ]*//' | tee "$list_cache" ) | + yzf 2 --tiebreak=index --preview="cat $preview_cache 2>/dev/null | grep -v 'Querying' | grep . || yay --color always -Si {2} | tee $preview_cache" + ) + if test -n "$pkg" + then echo "Installing $pkg..." + cmd="yay -S $pkg" + print -s "$cmd" + eval "$cmd" || yay -Sy $pkg + rehash + fi } # List installed packages into fzf and remove selection # Tip: use -e to list only explicitly installed packages yar() { - pkg=$(yay --color=always -Q "$@" | yzf 1 --tiebreak=length --preview="yay --color always -Qli {1}") - if test -n "$pkg" - then echo "Removing $pkg..." - cmd="yay -R --cascade --recursive $pkg" - print -s "$cmd" - eval "$cmd" - fi + pkg=$(yay --color=always -Q "$@" | yzf 1 --tiebreak=length --preview="yay --color always -Qli {1}") + if test -n "$pkg" + then echo "Removing $pkg..." + cmd="yay -R --cascade --recursive $pkg" + print -s "$cmd" + eval "$cmd" + fi } diff --git a/.local/bin/scripts/arg-test b/.local/bin/scripts/arg-test index a7f30bf..08fa481 100755 --- a/.local/bin/scripts/arg-test +++ b/.local/bin/scripts/arg-test @@ -1,6 +1,7 @@ #!/bin/sh { echo "$# Args: $@" +#echo "Starred: $*" #echo "${@:-default}" | sed 's/\w\+/\0-w/g' for last; do true; done echo "Last arg: $last"