| #!/usr/bin/env bash | |
| # author: unknown | |
| # sentby: MoreChannelNoise (https://www.youtube.com/user/MoreChannelNoise) | |
| # editby: gotbletu (https://www.youtube.com/user/gotbletu) | |
| 
 | |
| # demo: https://www.youtube.com/watch?v=kxJClZIXSnM | |
| # info: this is a script to launch other rofi scripts, | |
| #       saves us the trouble of binding multiple hotkeys for each script, | |
| #       when we can just use one hotkey for everything. | |
| 
 | |
| declare -A LABELS | |
| declare -A COMMANDS | |
| 
 | |
| ### | |
| # List of defined 'bangs' | |
| 
 | |
| # launch programs | |
| COMMANDS["apps"]="dmenu_run -i -m 0 -fn 'Inconsolata:size=10' -nb '#222222' -nf '#bbbbbb' -sb '#005577' -sf '#eeeeee'" | |
| LABELS["apps"]="" | |
| 
 | |
| # clipboard | |
| COMMANDS["clipboard"]="greenclip print | dmenu -i -l 10 -m 0 -fn 'Inconsolata:size=10' -nb '#222222' -nf '#bbbbbb' -sb '#005577' -sf '#eeeeee' -p 'clipboard: ' | xclip -selection clipboard" | |
| LABELS["clipboard"]="" | |
| 
 | |
| # search local files | |
| COMMANDS["emoji"]="~/.bin/dmenu-scripts/dmenu-emoji" | |
| LABELS["emoji"]="" | |
| 
 | |
| # mount drives | |
| COMMANDS["mount"]="sudo ~/.bin/dmenu-scripts/dmenu-mount" | |
| LABELS["mount"]="" | |
| 
 | |
| # umount drives | |
| COMMANDS["unmount"]="sudo ~/.bin/dmenu-scripts/dmenu-mount unmount" | |
| LABELS["unmount"]="" | |
| 
 | |
| # shutdown | |
| COMMANDS["shutdown"]="sudo ~/.bin/dmenu-scripts/dmenu-shutdown" | |
| LABELS["shutdown"]="" | |
| 
 | |
| # PDF man pages | |
| COMMANDS["man"]="~/.bin/dmenu-scripts/dmenu-man" | |
| LABELS["man"]="" | |
| 
 | |
| # locate files | |
| COMMANDS["locate"]="~/.bin/dmenu-scripts/dmenu-locate" | |
| LABELS["locate"]="" | |
| 
 | |
| ################################################################################ | |
| # 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 | sort | dmenu -i -m 0 -fn "Inconsolata:size=10" -nb "#222222" -nf "#bbbbbb" -sb "#005577" -sf "#eeeeee" -p "dmenu 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 | |
| 	eval ${COMMANDS[$choice]} | |
| else | |
| 	eval  $choice | dmenu | |
| fi
 |