#!/usr/bin/env sh #### 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 ### 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") if [ -n "$ROFI_POWERMENU_SHUTDOWN_CMD" ]; then eval "$ROFI_POWERMENU_SHUTDOWN_CMD"; else systemctl poweroff fi ;; "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. if [ -n "$ROFI_POWERMENU_LOCKSCREEN_CMD" ]; then eval "$ROFI_POWERMENU_LOCKSCREEN_CMD"; else lockscreen rofi /dev/null 2>/dev/null & fi ;; "Logout") if [ -n "$ROFI_POWERMENU_LOGOUT_CMD" ]; then eval "$ROFI_POWERMENU_LOGOUT_CMD"; else i3-msg exit fi ;; "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 if [ -z "$*" ]; then printf "\x00prompt\x1fPower> \n" # we can use pango markup to hide text which we can then search. Neat! printf "\0markup-rows\x1ftrue\n" printf " %s\n" "$power_off_btn" printf " %s\n" "$reboot_btn" printf " %s\n" "$lock_btn" printf " %s\n" "$suspend_btn" printf " %s\n" "$logout_btn" fi