* Consolidate fzf options and other small improvements
authorUrban Wallasch <urban.wallasch@freenet.de>
Mon, 13 Apr 2020 11:04:58 +0000 (13:04 +0200)
committerUrban Wallasch <urban.wallasch@freenet.de>
Mon, 13 Apr 2020 11:04:58 +0000 (13:04 +0200)
XbpsUI.sh

index 20d4ab1b5f07427a75a4c30d72ffff3ebd1475eb..6640c0fe9d7dfd73377cb4f9f35e4a39e1e331e5 100755 (executable)
--- 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 $?
 }