From: Urban Wallasch Date: Mon, 13 Apr 2020 11:04:58 +0000 (+0200) Subject: * Consolidate fzf options and other small improvements X-Git-Url: https://git.packet-gain.de/?a=commitdiff_plain;h=d0f9b2901aef7b25968903b834a1ecb5c0e9f9eb;p=xbpsui.git * Consolidate fzf options and other small improvements --- diff --git a/XbpsUI.sh b/XbpsUI.sh index 20d4ab1..6640c0f 100755 --- a/XbpsUI.sh +++ b/XbpsUI.sh @@ -121,24 +121,29 @@ function reapOrphans() { $SUDO xbps-remove -ov } +# Fzf options common to all actions: +fzfOpt=( + -i + --multi + --exact + --no-sort + --cycle + --inline-info + --reverse + --prompt="filter> " + --margin="4%,1%,1%,2%" + --preview-window=right:55%:wrap +) +fzfHint=$'\nTAB toggle | ENTER proceed | ESC cancel' + # Install new packages: function instPkg() { pkg="$( xbps-query -Rs "" | awk '{print $1, $2}' | sort -u | - fzf -i \ - --multi \ - --exact \ - --no-sort \ - --cycle \ - --reverse \ - --margin="4%,1%,1%,2%" \ - --inline-info \ + fzf "${fzfOpt[@]}" \ --preview 'xbps-query -R {2} '\ - --preview-window=right:55%:wrap \ - --header="Select packages to install. -TAB toggle | ENTER proceed | ESC cancel" \ - --prompt="filter> " | + --header="Select packages to install.$fzfHint" | awk '{print $2}' )" if [[ -n "$pkg" ]] ; then @@ -156,19 +161,9 @@ function reinstPkg() { pkg="$( xbps-query -l | awk '{print $1, $2}' | sort -u | - fzf -i \ - --multi \ - --exact \ - --no-sort \ - --cycle \ - --reverse \ - --margin="4%,1%,1%,2%" \ - --inline-info \ + fzf "${fzfOpt[@]}" \ --preview 'xbps-query -R {2} '\ - --preview-window=right:55%:wrap \ - --header="Select packages to reinstall. -TAB toggle | ENTER proceed | ESC cancel" \ - --prompt="filter> " | + --header="Select packages to reinstall.$fzfHint" | awk '{print $2}' )" if [[ -n "$pkg" ]] ; then @@ -186,19 +181,9 @@ function purgePkg() { pkg="$( xbps-query -l | awk '{print $1, $2}' | sort -u | - fzf -i \ - --multi \ - --exact \ - --no-sort \ - --cycle \ - --reverse \ - --margin="4%,1%,1%,2%" \ - --inline-info \ + fzf "${fzfOpt[@]}" \ --preview 'xbps-query -S {2} '\ - --preview-window=right:55%:wrap \ - --header="Select packages to purge. -TAB toggle | ENTER proceed | ESC cancel" \ - --prompt="filter> " | + --header="Select packages to purge.$fzfHint" | awk '{print $2}' )" @@ -217,19 +202,9 @@ function reconfPkg() { pkg="$( xbps-query -l | awk '{print $1, $2}' | sort -u | - fzf -i \ - --multi \ - --exact \ - --no-sort \ - --cycle \ - --reverse \ - --margin="4%,1%,1%,2%" \ - --inline-info \ + fzf "${fzfOpt[@]}" \ --preview 'xbps-query -S {2} '\ - --preview-window=right:55%:wrap \ - --header="Select packages to reconfigure. -TAB toggle | ENTER proceed | ESC cancel" \ - --prompt="filter> " | + --header="Select packages to reconfigure.$fzfHint" | awk '{print $2}' )" @@ -248,19 +223,9 @@ function holdPkg() { pkg="$( xbps-query -l | awk '{print $2}' | sort -u | - fzf -i \ - --multi \ - --exact \ - --no-sort \ - --cycle \ - --reverse \ - --margin="4%,1%,1%,2%" \ - --inline-info \ + fzf "${fzfOpt[@]}" \ --preview 'xbps-query -S {1} '\ - --preview-window=right:55%:wrap \ - --header="Select packages to put on hold. -TAB toggle | ENTER proceed | ESC cancel" \ - --prompt="filter> " + --header="Select packages to put on hold.$fzfHint" )" if [[ -n "$pkg" ]] ; then @@ -277,19 +242,9 @@ TAB toggle | ENTER proceed | ESC cancel" \ function unholdPkg() { pkg="$( xbps-query -H | sort -u | - fzf -i \ - --multi \ - --exact \ - --no-sort \ - --cycle \ - --reverse \ - --margin="4%,1%,1%,2%" \ - --inline-info \ + fzf "${fzfOpt[@]}" \ --preview 'xbps-query -R {1} '\ - --preview-window=right:55%:wrap \ - --header="Select packages to unhold. -TAB toggle | ENTER proceed | ESC cancel" \ - --prompt="filter> " + --header="Select packages to unhold.$fzfHint" )" if [[ -n "$pkg" ]] ; then @@ -307,19 +262,9 @@ function markPkgManual() { pkg="$( xbps-query -l | awk '{print $2}' | sort -u | - fzf -i \ - --multi \ - --exact \ - --no-sort \ - --cycle \ - --reverse \ - --margin="4%,1%,1%,2%" \ - --inline-info \ + fzf "${fzfOpt[@]}" \ --preview 'xbps-query -S {1} '\ - --preview-window=right:55%:wrap \ - --header="Select packages to mark as manual. -TAB toggle | ENTER proceed | ESC cancel" \ - --prompt="filter> " + --header="Select packages to mark as manual.$fzfHint" )" if [[ -n "$pkg" ]] ; then @@ -336,19 +281,9 @@ TAB toggle | ENTER proceed | ESC cancel" \ function markPkgAuto() { pkg="$( xbps-query -m | sort -u | - fzf -i \ - --multi \ - --exact \ - --no-sort \ - --cycle \ - --reverse \ - --margin="4%,1%,1%,2%" \ - --inline-info \ + fzf "${fzfOpt[@]}" \ --preview 'xbps-query -R {1} '\ - --preview-window=right:55%:wrap \ - --header="Select packages to mark as as auto. -TAB toggle | ENTER proceed | ESC cancel" \ - --prompt="filter> " + --header="Select packages to mark as as auto.$fzfHint" )" if [[ -n "$pkg" ]] ; then @@ -396,15 +331,13 @@ function menu() { exec 3>&- clear if (( $res != 0 )) ; then - # quit / cancel dialog + # quit / cancel menu exit 0 fi else # Use fzf(1) for main menu. - nl=$'\n' - hstr="$nl$verstr$nl$nl" - choice="$( echo \ -$'sync Synchronize repository package database + choice="$( echo "\ +sync Synchronize repository package database upgrade Update all packages to their latest version install Install a new package reinstall Re-install an already installed package @@ -416,26 +349,26 @@ manual Mark packages as manually installed auto Mark packages as automatically installed hold Set packages on hold unhold Unhold held packages -quit Quit' | +quit Quit" | fzf -i \ --no-multi \ --exact \ + --bind q:abort,home:top,end:page-down \ --no-sort \ --cycle \ --reverse \ --margin="4%,1%,1%,2%" \ --inline-info \ - --header="$hstr" | + --header=$'\n'"$verstr"$'\n\n' | awk '{ print $1 }' )" - res=$? if [[ -z "$choice" ]] ; then - # quit / cancel dialog + # quit / cancel menu exit 0 fi fi - # Perform requested operation: + # Perform requested action: case "$choice" in "sync" ) syncRepo ;; "upgrade" ) distUpgrade ;; @@ -450,7 +383,7 @@ quit Quit' | "hold" ) holdPkg ;; "unhold" ) unholdPkg ;; "quit" ) exit 0 ;; - * ) echo "Unknown operation, WTF!?!" ; false ;; + * ) echo "Action not implemented, WTF!?!" ; false ;; esac return $? }