#!/usr/bin/env bash # ABOUTME: Rofi-based tool launcher that provides a searchable menu of system utilities. # ABOUTME: Includes VPN, sound, bluetooth, shortcuts, and other system management tools. declare -A LABELS declare -A COMMANDS ### # List of defined 'bangs' # launch programs # COMMANDS["apps"]="rofi -combi-modi window,drun -show combi" # LABELS["apps"]="" # open bookmarks # COMMANDS["bookmarks"]="~/.scripts/rofi-scripts-collection/rofi-surfraw-bookmarks.sh" # LABELS["bookmarks"]="" # search local files COMMANDS[""]="moonarch-locate" LABELS[""]="Locate" COMMANDS[""]="wlogout -P 1 -s -r 10 -c 10" LABELS[""]="Session Menu" # open custom web searches # COMMANDS["websearch"]="~/.scripts/rofi-scripts-collection/rofi-surfraw-websearch.sh" # LABELS["websearch"]="" # show clipboard history # source: https://bitbucket.org/pandozer/rofi-clipboard-manager/overview # COMMANDS["clipboard"]='rofi -modi "clipboard:~/.bin/rofi-clipboard-manager/mclip.py menu" -show clipboard && ~/.bin/rofi-clipboard-manager/mclip.py paste' # LABELS["clipboard"]="" # references -------------------------- # COMMANDS[";sr2"]="chromium 'wikipedia.org/search-redirect.php?search=\" \${input}\"" # LABELS[";sr2"]="" # COMMANDS[";piratebay"]="chromium --disk-cache-dir=/tmp/cache http://thepiratebay.org/search/\" \${input}\"" # LABELS[";piratebay"]="" # COMMANDS[".bin"]="spacefm -r '/home/dka/bin'" # LABELS[".bin"]=".bin" # COMMANDS["#screenshot"]='/home/dka/bin/screenshot-scripts/myscreenshot.sh' # LABELS["#screenshot"]="screenshot" # greenclip clipboard history # source: https://github.com/erebe/greenclip COMMANDS[""]='rofi -modi "clipboard:greenclip print" -show Clipboard' LABELS[""]="Clipboard" COMMANDS["󰖂"]='moonarch-vpn' LABELS["󰖂"]='VPN Connection Manager' COMMANDS["󰗅"]='moonarch-volume' LABELS["󰗅"]='Sound Manager' #COMMANDS[""]='shortcuts module was removed' #LABELS[""]='Hotkey List' COMMANDS["󰍹"]='wdisplays' LABELS["󰍹"]='Display Setup' COMMANDS[""]='nwg-look' LABELS[""]='Appearance Settings' COMMANDS["󱘆"]='noisetorch' LABELS["󱘆"]='Audio Noise Reduction' COMMANDS["󰋋"]='$HOME/.local/share/headset-charge-indicator/headset-charge-indicator.py &' LABELS["󰋋"]='Headset Control' COMMANDS[""]='moonarch-bluetooth' LABELS[""]='Bluetooth Control' COMMANDS["󰛳"]='nm-applet --indicator &' LABELS["󰛳"]='Networker Manager' COMMANDS["󰴱"]='wl-color-picker' LABELS["󰴱"]='Color Picker' COMMANDS["󰚞"]='font-manager' LABELS["󰚞"]='Font Manager' COMMANDS["󱨑"]='gufw' LABELS["󱨑"]='Firewall Settings' COMMANDS[""]='stacer' LABELS[" "]='System Maintenance' ################################################################################ # do not edit below ################################################################################ ## # Generate menu ## function print_menu() { for key in ${!LABELS[@]} do # echo "$key ${LABELS}" echo "$key ${LABELS[$key]}" # my top version just shows the first field in labels row, not two words side by side done } ## # Show rofi. ## function start() { # print_menu | rofi -dmenu -p "?=>" print_menu | sort | rofi -show "Tools" -dmenu -mesg " Tools" -i -p "rofi-bangs: " } # Run it value="$(start)" # Split input. # grab upto first space. choice=${value%%\ *} # graph remainder, minus space. input=${value:$((${#choice}+1))} ## # Cancelled? bail out ## if test -z ${choice} then exit fi # check if choice exists if test ${COMMANDS[$choice]+isset} then # Execute the choice ${COMMANDS[$choice]} else echo "Unknown command: ${choice}" | rofi -dmenu -p "error" fi