URI:
       Remove local - qmenu - manage qubes os via dmenu (drkhsh fork)
  HTML git clone git://git.drkhsh.at/qmenu.git
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 0e8d3f47e982c98fd10d77306421832ad1107a2d
   DIR parent 175b92fc7a6f0d1dd8df5db155af913669be2a55
  HTML Author: sine3o14nnae <3o14@pm.me>
       Date:   Sun, 15 Sep 2019 18:13:04 +0200
       
       Remove local
       
       Diffstat:
         M qmenu-vm                            |     359 ++++++++++++++++---------------
       
       1 file changed, 180 insertions(+), 179 deletions(-)
       ---
   DIR diff --git a/qmenu-vm b/qmenu-vm
       @@ -1,12 +1,12 @@
        #!/bin/bash
        
       -fqvm_preferences() {
       +fqvm_preferences() (
        
       - local property=0
       +  property=0
        
         while [ -n "$property" ]; do
        
       -   local property=$(qvm-prefs $target_qube |\
       +    property=$(qvm-prefs $target_qube |\
             dmenu -l 45 -p "$target_qube:" $dmenu_fmc |\
             awk '{ print $1 }')
        
       @@ -16,7 +16,7 @@ fqvm_preferences() {
        
               autostart) 
               
       -         local value_selected=$(printf "False\nTrue" |\
       +          value_selected=$(printf "False\nTrue" |\
                   dmenu -i -p "Set autostart of $target_qube to:" $dmenu_fmc)
        
                 if [ -n "$value_selected" ]; then 
       @@ -26,7 +26,7 @@ fqvm_preferences() {
        
               debug) 
               
       -         local value_selected=$(printf "False\nTrue" |\
       +          value_selected=$(printf "False\nTrue" |\
                   dmenu -i -p "Set debug mode of $target_qube to:" $dmenu_fmc)
        
                 if [ -n "$value_selected" ]; then 
       @@ -45,20 +45,20 @@ fqvm_preferences() {
                 if qvm-prefs --get $n template_for_dispvms |\
                     grep True &>/dev/null; then
        
       -             local LIST_OF_DISPTEMP+="\n"$n
       +              LIST_OF_DISPTEMP+="\n"$n
                   fi
                 done 
        
       -         local value_selected=$(printf "(Default)\n(None)${LIST_OF_DISPTEMP[*]}" |\
       +          value_selected=$(printf "(Default)\n(None)${LIST_OF_DISPTEMP[*]}" |\
                   dmenu -l 50 -p "Select default dispvm for $target_qube" $dmenu_fmc)
        
                 if [ "$value_selected" = "(None)" ]; then 
                                
       -           local value_selected="None"
       +            value_selected="None"
        
                 elif [ "$value_selected" = "(Default)" ]; then
        
       -           local value_selected="--default"
       +            value_selected="--default"
                 fi
        
                 if [ -n "$value_selected" ]; then 
       @@ -68,7 +68,7 @@ fqvm_preferences() {
        
               default_user)
        
       -         local value_selected=$(echo "--default" |\
       +          value_selected=$(echo "--default" |\
                   dmenu -p "Enter the name of the default user for $target_qube"\
                   $dmenu_fmc)
        
       @@ -79,7 +79,7 @@ fqvm_preferences() {
               
               include_in_backups) 
               
       -         local value_selected=$(printf "False\nTrue" |\
       +          value_selected=$(printf "False\nTrue" |\
                   dmenu -i -p "Include $target_qube in backups?" $dmenu_fmc)
        
                 if [ -n "$value_selected" ]; then 
       @@ -89,12 +89,12 @@ fqvm_preferences() {
        
               kernel) 
               
       -         local value_selected=$(echo "--default" |\
       +          value_selected=$(echo "--default" |\
                   dmenu -p "Enter kernel to be used by $target_qube" $dmenu_fmc)
        
                 if [ -n "$value_selected" ]; then
        
       -           local answer_selected=$(printf "No\nYes" |\
       +            answer_selected=$(printf "No\nYes" |\
                     dmenu -i -p "Set kernel of $target_qube to $value_selected?"\
                     $dmenu_fmc)
        
       @@ -107,12 +107,12 @@ fqvm_preferences() {
        
               kernelopts) 
                   
       -         local value_selected=$(echo "--default" |\
       +          value_selected=$(echo "--default" |\
                   dmenu -p "Enter kernel options for $target_qube" $dmenu_fmc)
        
                 if [ -n "$value_selected" ]; then
        
       -           local answer_selected=$(printf "No\nYes" |\
       +            answer_selected=$(printf "No\nYes" |\
                     dmenu -i -p "Set kernel options for $target_qube to \"$value_selected\"?"\
                     $dmenu_fmc)
        
       @@ -132,7 +132,7 @@ fqvm_preferences() {
                     $dmenu_fmc &>/dev/null 
                 else
                   
       -           local value_selected=$(printf "Purple\nBlue\nGreen\nYellow\nOrange\nRed\nGray\nBlack" |\
       +            value_selected=$(printf "Purple\nBlue\nGreen\nYellow\nOrange\nRed\nGray\nBlack" |\
                     dmenu -i -l 8 -p "Select label for $target_qube" $dmenu_fmc |\
                     awk '{print tolower($0)}')
        
       @@ -149,12 +149,12 @@ fqvm_preferences() {
        
               mac) 
                   
       -         local value_selected=$(echo "--default" |\
       +          value_selected=$(echo "--default" |\
                   dmenu -p "Enter new MAC address for $target_qube" $dmenu_fmc) 
        
                 if [ -n "$value_selected" ]; then
        
       -           local answer_selected=$(printf "No\nYes" |\
       +            answer_selected=$(printf "No\nYes" |\
                     dmenu -i -p "Set MAC address of $target_qube to $value_selected?"\
                     $dmenu_fmc)
        
       @@ -172,13 +172,13 @@ fqvm_preferences() {
        
               maxmem) 
               
       -         local value_selected=$(echo "--default" |\
       +          value_selected=$(echo "--default" |\
                   dmenu -p "Enter the maximum amount of memory in MB to be allocated to $target_qube. Setting it to 0 will disable dynamic memory balancing."\
                   $dmenu_fmc)
        
                 if [ -n "$value_selected" ]; then
        
       -           local answer_selected=$(printf "No\nYes" |\
       +            answer_selected=$(printf "No\nYes" |\
                     dmenu -i -p "Set maximum memory of $target_qube to $value_selected MB?"\
                     $dmenu_fmc)
        
       @@ -191,13 +191,13 @@ fqvm_preferences() {
        
               memory) 
                   
       -         local value_selected=$(echo "--default" |\
       +          value_selected=$(echo "--default" |\
                   dmenu -p "Enter the amount of initial memory in MB to be allocated to $target_qube"\
                   $dmenu_fmc)
        
                 if [ -n "$value_selected" ]; then
        
       -           local answer_selected=$(printf "No\nYes" |\
       +            answer_selected=$(printf "No\nYes" |\
                     dmenu -i -p "Set initial memory of $target_qube to $value_selected MB?" $dmenu_fmc)
        
                   if [ "$answer_selected" = "Yes" ]; then
       @@ -210,17 +210,17 @@ fqvm_preferences() {
               netvm) 
                 
                 # List netvm's via 'qvm-ls'.
       -         local value_selected=$(printf "(Default)\n(None)\n$(qvm-ls --no-spinner --raw-data --fields NAME,FLAGS |\
       +          value_selected=$(printf "(Default)\n(None)\n$(qvm-ls --no-spinner --raw-data --fields NAME,FLAGS |\
                   grep '|...N....$' | cut -d '|' -f1)" |\
                   dmenu -l 50 -p "Select netvm for $target_qube" $dmenu_fmc)
        
                 if [ "$value_selected" = "(None)" ]; then 
                                  
       -           local value_selected="None"
       +            value_selected="None"
        
                 elif [ "$value_selected" = "(Default)" ]; then
        
       -           local value_selected="--default"
       +            value_selected="--default"
                 fi
        
                 if [ -n "$value_selected" ]; then 
       @@ -230,7 +230,7 @@ fqvm_preferences() {
        
               provides_network) 
                   
       -         local value_selected=$(printf "False\nTrue" |\
       +          value_selected=$(printf "False\nTrue" |\
                   dmenu -i -p "Should $target_qube provide networking for other qubes?"\
                   $dmenu_fmc)
        
       @@ -241,13 +241,13 @@ fqvm_preferences() {
        
               qrexec_timeout) 
              
       -         local value_selected=$(echo "--default" |\
       +          value_selected=$(echo "--default" |\
                   dmenu -p "Enter the time in seconds, after which qrexec attempt is deemed a failure for $target_qube"\
                   $dmenu_fmc)
        
                 if [ -n "$value_selected" ]; then
        
       -           local answer_selected=$(printf "No\nYes" |\
       +            answer_selected=$(printf "No\nYes" |\
                     dmenu -i -p "Set qrexec timeout for $target_qube to $value_selected seconds?"\
                     $dmenu_fmc)
        
       @@ -260,13 +260,13 @@ fqvm_preferences() {
        
               shutdown_timeout) 
                
       -         local value_selected=$(echo "--default" |\
       +          value_selected=$(echo "--default" |\
                   dmenu -p "Enter the time in seconds for shutdown, after which $target_qube may be forcefully powered off"\
                   $dmenu_fmc)
        
                 if [ -n "$value_selected" ]; then
        
       -           local answer_selected=$(printf "No\nYes" |\
       +            answer_selected=$(printf "No\nYes" |\
                     dmenu -i -p "Set shutdown timeout for $target_qube to $value_selected seconds?"\
                     $dmenu_fmc)
        
       @@ -287,13 +287,13 @@ fqvm_preferences() {
                 else
        
                   # List templatevm's via 'qvm-ls'.
       -           local value_selected=$(printf "(Default)\n$(qvm-ls --no-spinner --raw-data --fields NAME,FLAGS |\
       +            value_selected=$(printf "(Default)\n$(qvm-ls --no-spinner --raw-data --fields NAME,FLAGS |\
                     grep '|t.......$' | cut -d '|' -f1)" |\
                     dmenu -l 50 -p "Select template for $target_qube" $dmenu_fmc)
        
                   if [ "$value_selected" = "(Default)" ]; then
        
       -             local value_selected="--default"
       +              value_selected="--default"
                   fi
        
                   if [ -n "$value_selected" ]; then 
       @@ -305,7 +305,7 @@ fqvm_preferences() {
        
               template_for_dispvms) 
                   
       -         local value_selected=$(printf "False\nTrue" |\
       +          value_selected=$(printf "False\nTrue" |\
                   dmenu -i -p "Should $target_qube be used as a template for disposable qubes?"\
                   $dmenu_fmc)
        
       @@ -316,13 +316,13 @@ fqvm_preferences() {
        
               vcpus) 
               
       -         local value_selected=$(echo "--default" |\
       +          value_selected=$(echo "--default" |\
                   dmenu -p "Enter the number of CPU cores that should be made available to $target_qube"\
                   $dmenu_fmc)
        
                 if [ -n "$value_selected" ]; then
        
       -           local answer_selected=$(printf "No\nYes" |\
       +            answer_selected=$(printf "No\nYes" |\
                     dmenu -i -p "Set number of CPU cores available to $target_qube to $value_selected?"\
                     $dmenu_fmc)
        
       @@ -335,7 +335,7 @@ fqvm_preferences() {
        
               virt_mode) 
                   
       -         local value_selected=$(printf "PVH\nHVM\nPV" |\
       +          value_selected=$(printf "PVH\nHVM\nPV" |\
                   dmenu -i -l 3 -p "Select virtualisation mode for $target_qube"\
                   $dmenu_fmc)
        
       @@ -348,10 +348,10 @@ fqvm_preferences() {
             esac
           fi
         done
       -}
       +)
        
        
       -fqvm_pci() {
       +fqvm_pci() (
         
         if qvm-check --running $target_qube &>/dev/null; then 
        
       @@ -360,11 +360,11 @@ fqvm_pci() {
             $dmenu_fmc &>/dev/null   
         else
        
       -   local list_pci=$(qvm-pci)
       +    list_pci=$(qvm-pci)
        
           if ! qvm-prefs --get $target_qube maxmem | grep -w 0; then 
             
       -     local answer_memorybalancing=$(printf "Continue anyways\nDisable dynamic memory balancing" |\
       +      answer_memorybalancing=$(printf "Continue anyways\nDisable dynamic memory balancing" |\
               dmenu -l 2 -i -p "Dynamic memory balancing is enabled in $target_qube, some devices might not work!"\
               $dmenu_fmc | awk '{ print $1 }')
        
       @@ -376,13 +376,13 @@ fqvm_pci() {
        
           if qvm-prefs --get $target_qube virt_mode | grep -w pvh; then
             
       -     local answer_virtmode=$(printf "Continue anyways\nSelect another virtualisation mode" |\
       +      answer_virtmode=$(printf "Continue anyways\nSelect another virtualisation mode" |\
               dmenu -l 2 -i -p "$target_qube is using PVH for its virtualisation mode, which does not support PCI passthrough!"\
               $dmenu_fmc | awk '{ print $1 }')
        
             if [ "$answer_virtmode" = "Select" ]; then
        
       -       local virtmode_selected=$(printf "HVM\nPV" |\
       +        virtmode_selected=$(printf "HVM\nPV" |\
                 dmenu -l 2 -i -p "Select virtualisation mode for $target_qube" $dmenu_fmc) 
        
               if [ -n "$virtmode_selected" ]; then 
       @@ -392,21 +392,21 @@ fqvm_pci() {
             fi
           fi
             
       -   local device_selected=0
       +    device_selected=0
        
           while [ -n "$device_selected" ]; do
         
       -     local device_selected=$(echo "$list_pci" |\
       +      device_selected=$(echo "$list_pci" |\
               dmenu -l 30 -p "$target_qube:" $dmenu_fmc)
        
             if [ -n "$device_selected" ]; then
         
       -       local device_src=$(echo $device_selected | awk '{ print $1 }' | sed 's/:.*//')
       -       local device_bdf=$(echo $device_selected | awk '{ print $1 }' | sed 's/.*://')
       +        device_src=$(echo $device_selected | awk '{ print $1 }' | sed 's/:.*//')
       +        device_bdf=$(echo $device_selected | awk '{ print $1 }' | sed 's/.*://')
          
               if echo "$device_selected" | grep -w $target_qube; then
             
       -         local answer=$(printf "No\nYes" |\
       +          answer=$(printf "No\nYes" |\
                   dmenu -i -p "Detach \"$device_bdf\" from $target_qube?" $dmenu_fmc)
        
                 if [ "$answer" = "Yes" ]; then
       @@ -418,31 +418,31 @@ fqvm_pci() {
                       $dmenu_fmc &>/dev/null
                   fi
        
       -           local list_pci=$(qvm-pci)
       +            list_pci=$(qvm-pci)
                 fi
               else
        
       -         local answer=$(printf "No\nYes" |\
       +          answer=$(printf "No\nYes" |\
                   dmenu -i -p "Attach \"$device_bdf\" to $target_qube?" $dmenu_fmc)
        
                 if [ "$answer" = "Yes" ]; then
                   
                   # Check if there is more than one function
                   # that belongs to the same device.
       -           local bdf_count=$(echo "$list_pci" | awk '{ print $1 }' |\
       +            bdf_count=$(echo "$list_pci" | awk '{ print $1 }' |\
                     grep $(echo $device_bdf | sed 's/\..*//') | wc -l) 
        
                   if [ "$bdf_count" -gt 1 ]; then 
        
                     if [ -n "$pci_option" ]; then unset pci_option; fi
        
       -               local answer_nsrt=$(printf "No\nYes" |\
       +                answer_nsrt=$(printf "No\nYes" |\
                       dmenu -i -p "\"$device_bdf\" is most likely to be attached with the option 'no-strict-reset' enabled. Please be aware of the security implications! Do you want to attach \"$device_bdf\" with the option 'no-strict-reset' set to true?"\
                       $dmenu_fmc)
        
                     if [ "$answer_nsrt" = "Yes" ]; then 
                         
       -               local pci_option="-o no-strict-reset=True"
       +                pci_option="-o no-strict-reset=True"
                     fi
                   fi
        
       @@ -453,25 +453,25 @@ fqvm_pci() {
                       $dmenu_fmc &>/dev/null
                   fi
        
       -           local list_pci=$(qvm-pci)
       +            list_pci=$(qvm-pci)
                 fi
               fi
             fi
           done
         fi
       -}
       +)
        
        
       -fqvm_firewall() {
       +fqvm_firewall() (
        
         rule_selected=0        
                
         while [ -n "$rule_selected" ]; do
                
       -   local rule_selected=$(qvm-firewall $target_qube list |\
       +    rule_selected=$(qvm-firewall $target_qube list |\
             dmenu -l 50 -p "$target_qube:" $dmenu_fmc)
        
       -   local rulenumber_selected=$(echo $rule_selected | awk '{ print $1 }')
       +    rulenumber_selected=$(echo $rule_selected | awk '{ print $1 }')
        
           if [ -n "$rule_selected" ]; then
                 
       @@ -479,16 +479,16 @@ fqvm_firewall() {
             # instead of any existing rule.
             if [ "$rulenumber_selected" != "NO" ]; then 
                    
       -       local option=$(printf "Add new rule above rule $rulenumber_selected\nRemove rule $rulenumber_selected" |\
       +        option=$(printf "Add new rule above rule $rulenumber_selected\nRemove rule $rulenumber_selected" |\
                 dmenu -i -l 2 -p "$target_qube:" $dmenu_fmc | awk '{ print $1 }')
             else
                     
       -       local option="Add"
       +        option="Add"
             fi
        
             if [ "$option" = "Remove" ]; then
        
       -       local answer=$(printf "No\nYes" |\
       +        answer=$(printf "No\nYes" |\
                 dmenu -i -p "Remove rule $rulenumber_selected?" $dmenu_fmc)
        
               if [ "$answer" = "Yes" ]; then 
       @@ -500,75 +500,75 @@ fqvm_firewall() {
                
               if [ -n "${RULEARGS}" ]; then unset RULEARGS; fi
        
       -       local action=$(printf "Accept\nDrop" |\
       +        action=$(printf "Accept\nDrop" |\
                 dmenu -i -l 2 -p "Select action for the new firewall rule" $dmenu_fmc)
               
       -       local RULEARGS+="${action,,} "
       +        RULEARGS+="${action,,} "
        
               if [ -n "$action" ]; then 
        
       -         local specialtarget=$(true |\
       +          specialtarget=$(true |\
                   dmenu -p "ACTION=${RULEARGS[*]} <specialtarget>" $dmenu_fmc)
                     
                 if [ -n "$specialtarget" ]; then 
                         
       -           local RULEARGS+="SPECIALTARGET=$specialtarget "
       +            RULEARGS+="SPECIALTARGET=$specialtarget "
                 fi
                        
       -         local dsthost=$(true |\
       +          dsthost=$(true |\
                   dmenu -p "ACTION=${RULEARGS[*]} <dsthost>" $dmenu_fmc)
                         
                 if [ -n "$dsthost" ]; then 
                         
       -           local RULEARGS+="DSTHOST=$dsthost "
       +            RULEARGS+="DSTHOST=$dsthost "
                 fi
        
       -         local proto=$(true |\
       +          proto=$(true |\
                   dmenu -p "ACTION=${RULEARGS[*]} <proto>" $dmenu_fmc)
                         
                 if [ -n "$proto" ]; then 
                       
       -           local RULEARGS+="PROTO=$proto "
       +            RULEARGS+="PROTO=$proto "
                 fi
        
                 if [ "$proto" = "tcp" ] || [ "$proto" = "udp" ]; then
        
       -           local dstports=$(true |\
       +            dstports=$(true |\
                     dmenu -p "ACTION=${RULEARGS[*]} <dstports>" $dmenu_fmc)
                             
                   if [ -n "$dstports" ]; then
                          
       -             local RULEARGS+="DSTPORTS=$dstports "
       +              RULEARGS+="DSTPORTS=$dstports "
                   fi
        
                 elif [ "$proto" = "icmp" ]; then
        
       -           local icmptype=$(true |\
       +            icmptype=$(true |\
                     dmenu -p "ACTION=${RULEARGS[*]} <icmptype>" $dmenu_fmc)
                             
                   if [ -n "$icmptype" ]; then
                             
       -             local RULEARGS+="ICMPTYPE=$icmptype "
       +              RULEARGS+="ICMPTYPE=$icmptype "
                   fi
                 fi
        
       -         local expire=$(true |\
       +          expire=$(true |\
                   dmenu -p "ACTION=${RULEARGS[*]} <expire>" $dmenu_fmc)
                     
                 if [ -n "$expire" ]; then
                       
       -           local RULEARGS+="EXPIRE=$expire "
       +            RULEARGS+="EXPIRE=$expire "
                 fi
        
       -         local comment=$(true |\
       +          comment=$(true |\
                   dmenu -p "ACTION=${RULEARGS[*]} <comment>" $dmenu_fmc)
                         
                 if [ -n "$comment" ]; then
                       
       -           local RULEARGS+="COMMENT=$comment"
       +            RULEARGS+="COMMENT=$comment"
                 fi
                
       -         local answer=$(printf "No\nYes" |\
       +          answer=$(printf "No\nYes" |\
                   dmenu -i -p "Add the following rule to $target_qube? {{ ACTION=${RULEARGS[*]} }}"\
                   $dmenu_fmc) 
        
       @@ -578,7 +578,7 @@ fqvm_firewall() {
        
                   if [ "$rulenumber_selected" != "NO" ]; then 
                                 
       -             local beforerule=$(echo --before $rulenumber_selected)
       +              beforerule=$(echo --before $rulenumber_selected)
                   fi
        
                   if ! qvm-firewall $target_qube add $beforerule ${RULEARGS[*],,}; then
       @@ -592,10 +592,10 @@ fqvm_firewall() {
             fi
           fi
         done
       -}
       +)
        
        
       -fqvm_devices() {
       +fqvm_devices() (
        
         if ! qvm-check --running $target_qube &>/dev/null; then 
        
       @@ -608,47 +608,47 @@ fqvm_devices() {
           # 'awk' different fields later on.
           if [ "$chosefrom" = "Audio" ]; then
        
       -     local device_type="device mic"
       +      device_type="device mic"
          
       -     local awk_devicename0=2
       -     local awk_devicename1=10
       -     local awk_targetqube=3
       +      awk_devicename0=2
       +      awk_devicename1=10
       +      awk_targetqube=3
        
           elif [ "$chosefrom" = "Block" ]; then
        
       -     local device_type="block"
       +      device_type="block"
        
       -     local awk_devicename0=2
       -     local awk_devicename1=3
       -     local awk_targetqube=4
       +      awk_devicename0=2
       +      awk_devicename1=3
       +      awk_targetqube=4
        
           elif [ "$chosefrom" = "USB" ]; then
        
       -     local device_type="usb"
       +      device_type="usb"
        
       -     local awk_devicename0=2
       -     local awk_devicename1=10
       -     local awk_targetqube=3
       +      awk_devicename0=2
       +      awk_devicename1=10
       +      awk_targetqube=3
           fi
            
       -   local devices_list=$(qvm-$device_type)
       +    devices_list=$(qvm-$device_type)
        
       -   local device=$(echo "$devices_list" |\
       +    device=$(echo "$devices_list" |\
             dmenu -l 16 -p "$target_qube:" $dmenu_fmc)
        
       -   local device_id=$(echo $device | awk '{ print $1 }')
       +    device_id=$(echo $device | awk '{ print $1 }')
        
       -   local device_name=$(echo $device |\
       +    device_name=$(echo $device |\
             awk '{ print $'$awk_devicename0'$'$awk_devicename1' }')
        
           if [ -n "$device" ]; then
        
       -     local holds_qube=$(echo "$devices_list" | grep $device_id |\
       +      holds_qube=$(echo "$devices_list" | grep $device_id |\
               awk '{ print $'$awk_targetqube' }')
        
             if [ -z "$holds_qube" ]; then 
        
       -       local answer=$(printf "No\nYes" |\
       +        answer=$(printf "No\nYes" |\
                 dmenu -i -p "Attach $device_name to $target_qube?"\
                 $dmenu_fmc)
            
       @@ -659,7 +659,7 @@ fqvm_devices() {
        
             elif [ "$holds_qube" = "$target_qube" ]; then 
        
       -       local answer=$(printf "No\nYes" |\
       +        answer=$(printf "No\nYes" |\
                 dmenu -i -p "Detach $device_name from $target_qube?"\
                 $dmenu_fmc)
            
       @@ -669,7 +669,7 @@ fqvm_devices() {
               fi
             else
           
       -       local answer=$(printf "No\nYes" |\
       +        answer=$(printf "No\nYes" |\
                 dmenu -i -p "Detach $device_name from $holds_qube and attach it to $target_qube?"\
                 $dmenu_fmc)
            
       @@ -681,28 +681,28 @@ fqvm_devices() {
             fi
           fi
         fi
       -}
       +)
        
        
       -fqvm_applications() {
       +fqvm_applications() (
        
       - local option=0 
       +  option=0 
         
         while [ -n "$option" ]; do
                
       -   local option=$(printf "Add\nRemove" |\
       +    option=$(printf "Add\nRemove" |\
             dmenu -i -l 2 -p "$target_qube:" $dmenu_fmc)
        
           if [ "$option" = "Add" ]; then  
        
       -     local template=$(qvm-prefs $target_qube template)
       +      template=$(qvm-prefs $target_qube template)
        
       -     local application=0
       +      application=0
        
             while [ -n "$application" ]; do
                     
               # Only show applications that arent already selected for $target_qube via 'grep -v'.
       -       local application=$(qvm-appmenus --get-available --i-understand-format-is-unstable $target_qube |\
       +        application=$(qvm-appmenus --get-available --i-understand-format-is-unstable $target_qube |\
                 grep -v "$(qvm-appmenus --get-whitelist --i-understand-format-is-unstable $target_qube)" |\
                 dmenu -l 50 -p "$target_qube:" $dmenu_fmc | awk '{ print $1 }')
                     
       @@ -712,36 +712,36 @@ fqvm_applications() {
                 if qvm-appmenus --get-available --i-understand-format-is-unstable $target_qube |\
                   awk '{ print $1 }' | grep -w $application; then
        
       -           printf "\n$application" >> $HOME/.local/share/qubes-appmenus/$target_qube/whitelisted-appmenus.list
       +           printf "\n$application" >> $HOME/./share/qubes-appmenus/$target_qube/whitelisted-appmenus.list
                 
       -           local applications_modified=1
       +            applications_modified=1
                 fi
               fi
             done         
         
           elif [ "$option" = "Remove" ]; then 
        
       -     local application=0
       +      application=0
        
             while [ -n "$application" ]; do
        
               # Show complete application and .desktop names via 'grep'.
       -       local application=$(qvm-appmenus --get-available --i-understand-format-is-unstable $target_qube |\
       +        application=$(qvm-appmenus --get-available --i-understand-format-is-unstable $target_qube |\
                 grep "$(qvm-appmenus --get-whitelist --i-understand-format-is-unstable $target_qube)" |\
                 dmenu -l 50 -p "$target_qube:" $dmenu_fmc | awk '{ print $1 }')
        
               if [ -n "$application" ]; then
        
                 # Look up linenumber above $application in /whitelisted-appmenus.list and delete whitespace.
       -         local whitespace_app=$(cat $HOME/.local/share/qubes-appmenus/$target_qube/whitelisted-appmenus.list |\
       +          whitespace_app=$(cat $HOME/./share/qubes-appmenus/$target_qube/whitelisted-appmenus.list |\
                   grep -n $application | cut -c 1)
        
       -         local whitespace_app=$((whitespace_app - 1))
       +          whitespace_app=$((whitespace_app - 1))
        
       -         sed -i "${whitespace_app}{/^$/d;}" $HOME/.local/share/qubes-appmenus/$target_qube/whitelisted-appmenus.list
       -         sed -i "/$application/d" $HOME/.local/share/qubes-appmenus/$target_qube/whitelisted-appmenus.list
       +         sed -i "${whitespace_app}{/^$/d;}" $HOME/./share/qubes-appmenus/$target_qube/whitelisted-appmenus.list
       +         sed -i "/$application/d" $HOME/./share/qubes-appmenus/$target_qube/whitelisted-appmenus.list
        
       -         local applications_modified=1
       +          applications_modified=1
               fi
             done       
           fi
       @@ -753,16 +753,16 @@ fqvm_applications() {
             unset applications_modified 
           fi
         done
       -}
       -
       +)
        
       -fqvm_service() {
        
       - local service=0
       +fqvm_service() (
       + 
       +  service=0
         
         while [ -n "$service" ]; do
                
       -   local service=$(qvm-service $target_qube --list |\
       +    service=$(qvm-service $target_qube --list |\
             dmenu -l 32 -p "$target_qube:" $dmenu_fmc | awk '{ print $1 }')
        
           if [ -n "$service" ]; then
       @@ -771,10 +771,10 @@ fqvm_service() {
             # give option to unset it.
             if qvm-service $target_qube --list | grep -w $service; then
                 
       -       local unset="\nUnset"
       +        unset="\nUnset"
             fi
                 
       -     local value=$(printf "Disable\nEnable$unset" |\
       +      value=$(printf "Disable\nEnable$unset" |\
               dmenu -l 3 -i -p "Select value for '$service'" $dmenu_fmc)
             
             if [ "$value" = "Disable" ]; then
       @@ -805,28 +805,28 @@ fqvm_service() {
             if [ -n "$unset" ]; then unset unset; fi
           fi
         done
       -}
       +)
        
        
       -fqvm_disk() {
       +fqvm_disk() ( 
         
         # If $target_qube is template or standalone, give option to extend root storage.
         if [ "$(qvm-ls -O flags $target_qube | sed '2q;d' | cut -c 1)" = "t" ] ||\
           [ "$(qvm-ls -O flags $target_qube | sed '2q;d' | cut -c 1)" = "S" ]; then
        
       -   local volume=$(printf "Root\nPrivate" |\
       +    volume=$(printf "Root\nPrivate" |\
               dmenu -l 2 -i -p "$target_qube:" $dmenu_fmc | awk '{print tolower($0)}')
        
         else
        
       -   local volume="private"
       +    volume="private"
         fi
        
         if [ -n "$volume" ]; then
        
       -   local current_storage=$(( $(qvm-volume info $target_qube:$volume size) / 1024/1024 ))
       +    current_storage=$(( $(qvm-volume info $target_qube:$volume size) / 1024/1024 ))
        
       -   local mebibyte=$(echo "$current_storage" |\
       +    mebibyte=$(echo "$current_storage" |\
             dmenu -p "Enter the maximum size of $volume storage in MiB to be allocated to $target_qube"\
             $dmenu_fmc)
        
       @@ -834,9 +834,9 @@ fqvm_disk() {
        
             if [ "$mebibyte" -gt "$current_storage" ]; then 
                     
       -       local byte=$(( $mebibyte * 1024*1024 ))
       +        byte=$(( $mebibyte * 1024*1024 ))
        
       -       local answer=$(printf "No\nYes" |\
       +        answer=$(printf "No\nYes" |\
                 dmenu -i -p "Increase the maximum $volume storage size of $target_qube from $current_storage MiB to $mebibyte MiB?"\
                 $dmenu_fmc)
        
       @@ -852,27 +852,29 @@ fqvm_disk() {
             fi
           fi
         fi
       -}
       +)
        
        
       -fqvm_keyboard() {
       +fqvm_keyboard() ( 
         
       + if [ -n "$LAYOUT" ]; then unset layout; fi
       +
         # 'qmenu-vm' does not get informed about the installed layouts by the vm itself
         # so there is a chance that the selected layout is missing inside the vm.
         # Getting the info from the vm itself however would have security implications
         # so we will not switch to use that method.
       - local LAYOUT+=$(ls /usr/share/X11/xkb/symbols |\
       +  LAYOUT+=$(ls /usr/share/X11/xkb/symbols |\
           dmenu -l 50 -p "$target_qube:" $dmenu_fmc)
         
         if [ -n "$LAYOUT" ]; then
        
           if test -d /usr/share/X11/xkb/symbols/$LAYOUT; then
        
       -     local LAYOUT+="/"$(ls /usr/share/X11/xkb/symbols/$LAYOUT |\
       +      LAYOUT+="/"$(ls /usr/share/X11/xkb/symbols/$LAYOUT |\
               dmenu -l 50 -p "$target_qube:" $dmenu_fmc)
           fi
        
       -   local answer=$(printf "No\nYes" |\
       +    answer=$(printf "No\nYes" |\
             dmenu -i -p " Change the keyboard layout in $target_qube to '$LAYOUT'?"\
             $dmenu_fmc)
        
       @@ -886,11 +888,11 @@ fqvm_keyboard() {
             fi
           fi
         fi
       -}
       -
       +)
        
       -fqvm_remove() {
        
       +fqvm_remove() (
       + 
         if qvm-check --running $target_qube &>/dev/null; then 
        
           echo "Go back..." |\
       @@ -898,19 +900,19 @@ fqvm_remove() {
             $dmenu_fmc &>/dev/null 
         else
                
       -   local confirmation=$(true |\
       +    confirmation=$(true |\
             dmenu -p "Enter the name of the qube '$target_qube' in order to remove it"\
             $dmenu_fmc)
        
           if [ "$target_qube" = "$confirmation" ]; then
        
       -     local confirmation_semifinal=$(printf "No\nYes" |\
       +      confirmation_semifinal=$(printf "No\nYes" |\
               dmenu -i -p "Are you sure you want to remove $target_qube permanently?"\
               $dmenu_fmc)
        
             if [ "$confirmation_semifinal" = "Yes" ]; then
        
       -       local confirmation_final=$(printf "No\nYes" |
       +        confirmation_final=$(printf "No\nYes" |
                 dmenu -i -p "Are you really sure you want to remove $target_qube permanently?"\
                 $dmenu_fmc)
        
       @@ -921,30 +923,30 @@ fqvm_remove() {
             fi
           fi
         fi
       -}
       -
       +)
        
       -fqvm_clone() {
        
       - local clone_name=$(true |\
       +fqvm_clone() (
       + 
       +  clone_name=$(true |\
           dmenu -p "Enter the name for the clone of $target_qube" $dmenu_fmc)
        
         if [ -n "$clone_name" ]; then
        
       -   local option=0
       +    option=0
             
           while [ -n "$option" ]; do
        
       -     local option=$(printf "Create the clone\nPool" |\
       +      option=$(printf "Create the clone\nPool" |\
               dmenu -i -l 2 -p "$target_qube:" $dmenu_fmc | awk '{ print $1 }')
        
             if [ "$option" = "Pool" ]; then
        
       -       local pool=$(qvm-pool --list | sed '1d' |\
       +        pool=$(qvm-pool --list | sed '1d' |\
                 dmenu -i -l 10 -p "Select the pool to use for the new clone of $target_qube"\
                 $dmenu_fmc | awk '{ print $1 }')
        
       -       if [ -n "$pool" ]; then local pool="-P $pool"; fi
       +       if [ -n "$pool" ]; then  pool="-P $pool"; fi
           
             elif [ "$option" = "Create" ]; then
        
       @@ -954,17 +956,16 @@ fqvm_clone() {
             fi
           done
         fi
       -}
       -
       +)
        
       -fqvm_run() {
        
       - local command=$(true |\
       +fqvm_run() (
       + 
       +  command=$(true |\
           dmenu -p "Enter the command that is to be run in $target_qube" $dmenu_fmc)
        
         if [ -n "$command" ]; then qvm-run $target_qube $command& fi
       -}
       -
       +)
        
        
        get_qube_label() {
       @@ -992,13 +993,13 @@ get_qube_label() {
        
        
        
       -fdom0_preferences() {
       -
       - local property=0
       +fdom0_preferences() (
       + 
       +  property=0
        
         while [ -n "$property" ]; do
        
       -   local property=$(qubes-prefs |\
       +    property=$(qubes-prefs |\
             dmenu -l 16 -p "Global Preferences:" $dmenu_d0 |\
             awk '{ print $1 }')
                                                         
       @@ -1006,7 +1007,7 @@ fdom0_preferences() {
        
             check_updates_vm)
        
       -       local value_selected=$(printf "False\nTrue" |\
       +        value_selected=$(printf "False\nTrue" |\
                 dmenu -i -p "Should the system periodically check for domU updates?"\
                 $dmenu_d0)
        
       @@ -1018,7 +1019,7 @@ fdom0_preferences() {
             clockvm)
        
               # List netvm's via 'qvm-ls'.
       -       local value_selected=$(printf "$(qvm-ls --no-spinner --raw-data --fields NAME,FLAGS |\
       +        value_selected=$(printf "$(qvm-ls --no-spinner --raw-data --fields NAME,FLAGS |\
                 grep '|...N....$' | cut -d '|' -f1)" |\
                 dmenu -l 50 -p "Select new ClockVM" $dmenu_d0)
        
       @@ -1042,13 +1043,13 @@ fdom0_preferences() {
                 fi
               done 
        
       -       local value_selected=$(printf "(None)${LIST_OF_DISPTEMP[*]}" |\
       +        value_selected=$(printf "(None)${LIST_OF_DISPTEMP[*]}" |\
                 dmenu -l 50 -p "Select default dispvm"\
                 $dmenu_d0)
        
               if [ "$value_selected" = "(None)" ]; then 
               
       -         local value_selected="none"
       +          value_selected="none"
               fi
        
               if [ -n "$value_selected" ]; then 
       @@ -1058,13 +1059,13 @@ fdom0_preferences() {
        
             default_kernel)
        
       -       local value_selected=$(true |\
       +        value_selected=$(true |\
                 dmenu -p "Enter the kernel that is to be used as default"\
                 $dmenu_d0)
        
               if [ -n "$value_selected" ]; then
        
       -         local answer_selected=$(printf "No\nYes" |\
       +          answer_selected=$(printf "No\nYes" |\
                   dmenu -i -p "Set default kernel to $value_selected?"\
                   $dmenu_d0)
        
       @@ -1078,7 +1079,7 @@ fdom0_preferences() {
             default_netvm)
        
               # List netvm's via 'qvm-ls'.
       -       local value_selected=$(printf "$(qvm-ls --no-spinner --raw-data --fields NAME,FLAGS |\
       +        value_selected=$(printf "$(qvm-ls --no-spinner --raw-data --fields NAME,FLAGS |\
                 grep '|...N....$' | cut -d '|' -f1)" |\
                 dmenu -l 50 -p "Select netvm for $target_qube" $dmenu_d0)
        
       @@ -1089,7 +1090,7 @@ fdom0_preferences() {
        
             default_pool)
        
       -       local value_selected=$(qvm-pool --list | sed '1d' |\
       +        value_selected=$(qvm-pool --list | sed '1d' |\
                 dmenu -i -l 30 -p "Select default storage pool" \
                 $dmenu_d0 | awk '{ print $1 }')
        
       @@ -1100,7 +1101,7 @@ fdom0_preferences() {
        
             default_pool_kernel)
        
       -       local value_selected=$(qvm-pool --list | sed '1d' |\
       +        value_selected=$(qvm-pool --list | sed '1d' |\
                 dmenu -i -l 30 -p "Select default storage pool for kernel volumes" \
                 $dmenu_d0 | awk '{ print $1 }')
        
       @@ -1111,7 +1112,7 @@ fdom0_preferences() {
        
             default_pool_private)
        
       -       local value_selected=$(qvm-pool --list | sed '1d' |\
       +        value_selected=$(qvm-pool --list | sed '1d' |\
                 dmenu -i -l 30 -p "Select default storage pool for private volumes" \
                 $dmenu_d0 | awk '{ print $1 }')
        
       @@ -1122,7 +1123,7 @@ fdom0_preferences() {
        
             default_pool_root)
        
       -       local value_selected=$(qvm-pool --list | sed '1d' |\
       +        value_selected=$(qvm-pool --list | sed '1d' |\
                 dmenu -i -l 30 -p "Select default storage pool for root volumes" \
                 $dmenu_d0 | awk '{ print $1 }')
        
       @@ -1133,7 +1134,7 @@ fdom0_preferences() {
        
             default_pool_volatile)
        
       -       local value_selected=$(qvm-pool --list | sed '1d' |\
       +        value_selected=$(qvm-pool --list | sed '1d' |\
                 dmenu -i -l 30 -p "Select default storage pool for volatile volumes" \
                 $dmenu_d0 | awk '{ print $1 }')
        
       @@ -1144,7 +1145,7 @@ fdom0_preferences() {
        
             default_qrexec_timeout)
        
       -       local value_selected=$(qubes-prefs --get default_qrexec_timeout |\
       +        value_selected=$(qubes-prefs --get default_qrexec_timeout |\
                 dmenu -p "Enter the time in seconds, after which qrexec connection attempts are deemed a failure"\
                 $dmenu_d0)
        
       @@ -1155,7 +1156,7 @@ fdom0_preferences() {
        
             default_shutdown_timeout)
        
       -       local value_selected=$(qubes-prefs --get default_shutdown_timeout |\
       +        value_selected=$(qubes-prefs --get default_shutdown_timeout |\
                 dmenu -p "Enter the default time in seconds for vm shutdowns to complete"\
                 $dmenu_d0)
        
       @@ -1167,7 +1168,7 @@ fdom0_preferences() {
             default_template)
        
               # List templatevm's via 'qvm-ls'.
       -       local value_selected=$(qvm-ls --no-spinner --raw-data --fields NAME,FLAGS |\
       +        value_selected=$(qvm-ls --no-spinner --raw-data --fields NAME,FLAGS |\
                 grep '|t.......$' | cut -d '|' -f1 |\
                 dmenu -l 50 -p "Select default template for" $dmenu_d0)
        
       @@ -1196,7 +1197,7 @@ fdom0_preferences() {
                   fi
                 done 
        
       -         local value_selected=$(printf "${LIST_OF_DISPTEMP[*]}" |\
       +          value_selected=$(printf "${LIST_OF_DISPTEMP[*]}" |\
                   dmenu -l 50 -p "Select management dispvm"\
                   $dmenu_d0)
        
       @@ -1207,7 +1208,7 @@ fdom0_preferences() {
        
             stats_interval) 
        
       -       local value_selected=$(true  |\
       +        value_selected=$(true  |\
                 dmenu -p "Enter interval in seconds for VM stats reporting" $dmenu_d0)
        
               if [ -n "$stats_interval" ]; then
       @@ -1218,7 +1219,7 @@ fdom0_preferences() {
             updatevm) 
        
               # List netvm's via 'qvm-ls'.
       -       local value_selected=$(printf "$(qvm-ls --no-spinner --raw-data --fields NAME,FLAGS |\
       +        value_selected=$(printf "$(qvm-ls --no-spinner --raw-data --fields NAME,FLAGS |\
                 grep '|...N....$' | cut -d '|' -f1)" |\
                 dmenu -l 50 -p "Select new UpdateVM" $dmenu_d0)
        
       @@ -1239,7 +1240,7 @@ fdom0_preferences() {
             *)
           esac
         done
       -}
       +)