diff --git a/.config/rofi/modes/powermenu b/.config/rofi/modes/powermenu index f03b2e4..9d53439 100755 --- a/.config/rofi/modes/powermenu +++ b/.config/rofi/modes/powermenu @@ -1,34 +1,65 @@ #!/usr/bin/env sh -#### User Options ### +#### Environment Variable Options ### +# Interface options +# ROFI_POWERMENU_SHOW_ICONS=1 +# ROFI_POWERMENU_SHOW_TEXT=0 +# Command options +# ROFI_POWERMENU_SHUTDOWN_CMD="" +# ROFI_POWERMENU_REBOOT_CMD="" +# ROFI_POWERMENU_LOCKSCREEN_CMD="" +# ROFI_POWERMENU_LOGOUT_CMD="" +# ROFI_POWERMENU_SUSPEND_CMD="" #### Menu Options ### -power_off_btn="" -reboot_btn="" -lock_btn="" -suspend_btn="鈴" -logout_btn="" +if [ "${ROFI_POWERMENU_SHOW_TEXT:-0}" -eq 0 ] && [ "${ROFI_POWERMENU_SHOW_ICONS:-1}" -eq 0 ]; then + echo "You disabled both text and icons for rofi-powermenu, nothing can be shown." + exit 1 +elif [ "${ROFI_POWERMENU_SHOW_ICONS:-1}" -eq 1 ]; then + power_off_btn="" + reboot_btn="" + lock_btn="" + suspend_btn="鈴" + logout_btn="" +fi +if [ "${ROFI_POWERMENU_SHOW_TEXT:-0}" -eq 1 ]; then + power_off_btn="${power_off_btn} Shut Down" + reboot_btn="${reboot_btn} Restart" + lock_btn="${lock_btn} Lock Screen" + suspend_btn="${suspend_btn} Suspend" + logout_btn="${logout_btn} Log Out" +fi # grep -a since it assumes with our nullcodes etc that this is a binary file # grep -o to only leave the things we grep for case $(echo "$*" | grep -a -o -e "Shutdown" -e "Reboot" -e "Lockscreen" -e "Logout" -e "Suspend") in "Shutdown") - systemctl poweroff + if [ -n "$ROFI_POWERMENU_SHUTDOWN_CMD" ]; then eval "$ROFI_POWERMENU_SHUTDOWN_CMD"; else + systemctl poweroff + fi ;; "Reboot") - systemctl reboot + if [ -n "$ROFI_POWERMENU_REBOOT_CMD" ]; then eval "$ROFI_POWERMENU_REBOOT_CMD"; else + systemctl reboot + fi ;; "Lockscreen") # Completely detach from the parent script # If in/outputs are not redirected, rofi will wait for the forked process as well. - lockscreen rofi /dev/null 2>/dev/null & + if [ -n "$ROFI_POWERMENU_LOCKSCREEN_CMD" ]; then eval "$ROFI_POWERMENU_LOCKSCREEN_CMD"; else + lockscreen rofi /dev/null 2>/dev/null & + fi ;; "Logout") - i3-msg exit + if [ -n "$ROFI_POWERMENU_LOGOUT_CMD" ]; then eval "$ROFI_POWERMENU_LOGOUT_CMD"; else + i3-msg exit + fi ;; "Suspend") - lockscreen rofi /dev/null 2>/dev/null & - systemctl suspend + if [ -n "$ROFI_POWERMENU_SUSPEND_CMD" ]; then eval "$ROFI_POWERMENU_SUSPEND_CMD"; else + lockscreen rofi /dev/null 2>/dev/null & + systemctl suspend + fi ;; esac