diff --git a/.config/shell/arch b/.config/shell/arch index 0d0fcfb..852aaac 100644 --- a/.config/shell/arch +++ b/.config/shell/arch @@ -9,28 +9,39 @@ alias pacr='pac -R' alias yays='noglob yay -Sy --needed --ignore ferdi' alias yayr='noglob yay -R' +cache_dir="/tmp/yzf" yzf() { query=$(test "$1" = "Q" && echo " -l") sync=$(test "$1" = "S" && echo "true" || echo "") pos=$(test "$query" && echo 1 || echo 2) - cache_dir="/tmp/yzf" mkdir -p $cache_dir list_cache="$cache_dir/list_$1$2" - preview_cache="$cache_dir/preview_{$pos}" (test "$sync" && cat "$list_cache" 2>/dev/null || yay --color always -$1$2 | sed "s/ /\t/g" | tee "$list_cache") | - fzf --nth=$pos --multi --tiebreak=length --history=/var/tmp/fzf-history-yay \ + fzf --nth=$pos --multi --tiebreak=length --history=/var/tmp/fzf-history-yzf \ --bind="double-click:execute(xdg-open 'https://archlinux.org/packages/{$pos}')" \ - --preview "$(test "$sync" && echo "cat $preview_cache 2>/dev/null | grep -v 'Querying' | grep . ||") yay --color always -$1 -i $query {$pos} | tee $preview_cache" "${@:3}" --preview-window=wrap | - cut -f$pos + "${@:3}" --preview-window=60% | + cut -f$pos | tr '\n' ' ' # TODO get xdg-open URL for aur as well # yay -S -i {$pos} | grep URL | tail -1 | cut -d ':' -f2- | xargs xdg-open } +# print -s adds a history entry yas() { - pkg=$(yzf S l -q "$1" "${@:2}") - test "$pkg" && echo "Install $pkg..." && print -s "yay -S $pkg" && yay -S "$pkg" + preview_cache="$cache_dir/preview_{2}" + pkg=$(yzf S l -q "$1" "${@:2}" --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 "Install $pkg..." + cmd="yay -S $pkg" + print -s "$cmd" + eval "$cmd" + fi } yar() { - pkg=$(yzf Q "" -q "$1" "${@:2}") - test "$pkg" && echo "Removing $pkg..." && print -s "yay -R $pkg" && yay -R "$pkg" + pkg=$(yzf Q "" -q "$1" "${@:2}" --preview "yay --color always -Qli {1}") + if test -n "$pkg" + then echo "Removing $pkg..." + cmd="yay -R $pkg" + print -s "$cmd" + eval "$cmd" + fi }