#!/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"]="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[""]="~/.config/rofi/locate/rofi-locate.sh" # LABELS[""]="Locate" COMMANDS[""]="wlogout -P 1 -s -r 10 -c 10" LABELS[""]="Session Menu" # greenclip clipboard history # source: https://github.com/erebe/greenclip COMMANDS[""]='cliphist list | rofi -dmenu | cliphist decode | wl-copy' LABELS[""]="Clipboard" COMMANDS["󰖂"]='~/.config/rofi/nm-vpn/nm-vpn.sh' LABELS["󰖂"]='VPN Connection Manager' COMMANDS[""]='waypaper' LABELS[""]='Wallpaper Settings' COMMANDS["󰗅"]='~/.config/rofi/volume/volume.sh' LABELS["󰗅"]='Sound Manager' #COMMANDS[""]='~/.config/rofi/shortcuts/shortcuts.sh' #LABELS[""]='Hotkey List' COMMANDS["󰍹"]='wdisplays' LABELS["󰍹"]='Display Setup' COMMANDS[""]='nwg-look' LABELS[""]='Appearance Settings' COMMANDS["󱘆"]='noisetorch' LABELS["󱘆"]='Audio Noise Reduction' COMMANDS["󰋋"]='/home/dom/.local/share/headset-charge-indicator/headset-charge-indicator.py &' LABELS["󰋋"]='Headset Control' COMMANDS[""]='~/.config/rofi/bluetooth/bluetooth.sh' LABELS[""]='Bluetooth Control' COMMANDS["󰛳"]='nm-applet --indicator &' LABELS["󰛳"]='Networker Manager' COMMANDS["󰴱"]='hyprpicker -f hex -a' LABELS["󰴱"]='Color Picker' COMMANDS["󰚞"]='font-manager' LABELS["󰚞"]='Font Manager' COMMANDS["󱨑"]='gufw' LABELS["󱨑"]='Firewall Settings' COMMANDS[""]='env GTK_THEME=Adwaita:dark resources' LABELS[""]='System Resources' COMMANDS["󰓅"]='$HOME/.config/rofi/cpugov/rofi-cpugov.sh' LABELS["󰓅"]='CPU Modes' COMMANDS["󰓅"]='hardinfo' LABELS["󰓅"]='System Profiler and Benchmark' COMMANDS["󰀠"]='alarm-clock-applet' LABELS["󰀠"]='Alarm & Timer' COMMANDS["󱓞"]='~/.config/rofi/launcher/launcher.sh' LABELS["󱓞"]='App Launcher' ################################################################################ # 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 "?=>" title="MoonArch \ $USER \ $(date +"%H:%M") \ $(uptime -p | sed 's/up //')" print_menu | sort | rofi -theme $HOME/.config/rofi/settings-menu/settings-menu.rasi -show $title -dmenu -markup-rows -mesg "󰣇 $title" -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 eval echo "Executing: ${COMMANDS[$choice]}" eval ${COMMANDS[$choice]} else eval $choice | rofi # prefer my above so I can use this same script to also launch apps like geany or leafpad etc (DK) # echo "Unknown command: ${choice}" | rofi -dmenu -p "error" fi