From 121eebc2b2ba73e84a3f1285df38fdfb9799ab7d Mon Sep 17 00:00:00 2001 From: Evie Litherland-Smith Date: Tue, 27 Jun 2023 15:11:01 +0100 Subject: [PATCH] Update powermenu to use hyprctl --- home/desktop/scripts/powermenu | 114 ++++++++++++++++----------------- 1 file changed, 57 insertions(+), 57 deletions(-) diff --git a/home/desktop/scripts/powermenu b/home/desktop/scripts/powermenu index 55787104..4720dfc0 100644 --- a/home/desktop/scripts/powermenu +++ b/home/desktop/scripts/powermenu @@ -58,53 +58,53 @@ preferred_launcher="rofi" usage="$(basename "$0") [-h] [-c] [-p name] -- display a menu for shutdown, reboot, lock etc. where: - -h show this help text - -c ask for user confirmation - -p preferred launcher (rofi or zenity) +-h show this help text +-c ask for user confirmation +-p preferred launcher (rofi or zenity) This script depends on: - - systemd, - - rofi or zenity." +- systemd, +- rofi or zenity." # Check whether the user-defined launcher is valid launcher_list=(rofi zenity) function check_launcher() { - if [[ ! "${launcher_list[@]}" =~ (^|[[:space:]])"$1"($|[[:space:]]) ]]; then +if [[ ! "${launcher_list[@]}" =~ (^|[[:space:]])"$1"($|[[:space:]]) ]]; then echo "Supported launchers: ${launcher_list[*]}" exit 1 - else +else # Get array with unique elements and preferred launcher first # Note: uniq expects a sorted list, so we cannot use it i=1 - launcher_list=($(for l in "$1" "${launcher_list[@]}"; do printf "%i %s\n" "$i" "$l"; let i+=1; done \ - | sort -uk2 | sort -nk1 | cut -d' ' -f2- | tr '\n' ' ')) - fi + launcher_list=("$(for l in "$1" "${launcher_list[@]}"; do printf "%i %s\n" "$i" "$l"; let i+=1; done \ + | sort -uk2 | sort -nk1 | cut -d' ' -f2- | tr '\n' ' ')") +fi } # Parse CLI arguments while getopts "hcp:" option; do - case "${option}" in - h) echo "${usage}" - exit 0 - ;; +case "$option" in + h) echo "$usage" + exit 0 + ;; c) enable_confirmation=true - ;; - p) preferred_launcher="${OPTARG}" - check_launcher "${preferred_launcher}" - ;; + ;; + p) preferred_launcher="$OPTARG" + check_launcher "$preferred_launcher" + ;; *) exit 1 - ;; - esac + ;; +esac done # Check whether a command exists function command_exists() { - command -v "$1" &> /dev/null 2>&1 +command -v "$1" &> /dev/null 2>&1 } # systemctl required if ! command_exists systemctl ; then - exit 1 +exit 1 fi # menu defined as an associative array @@ -113,13 +113,13 @@ typeset -A menu # Menu with keys/commands menu=( - [ Shutdown]="systemctl poweroff" - [ Reboot]="systemctl reboot" - [ Suspend]="systemctl suspend" - [ Hibernate]="systemctl hibernate" - [ Lock]="swaymsg exec swaylock" - [ Logout]="swaymsg exit" - [ Cancel]="" +[ Shutdown]="systemctl poweroff" +[ Reboot]="systemctl reboot" +[ Suspend]="systemctl suspend" +[ Hibernate]="systemctl hibernate" +[ Lock]="hyprctl dispatch exec swaylock" +[ Logout]="hyprctl dispatch exit" +[ Cancel]="" ) menu_nrows=${#menu[@]} @@ -132,54 +132,54 @@ launcher_options="" rofi_colors="" function prepare_launcher() { - if [[ "$1" == "rofi" ]]; then - rofi_colors=(-bc "${BORDER_COLOR}" -bg "${BG_COLOR}" -fg "${FG_COLOR}" \ - -hlfg "${HLFG_COLOR}" -hlbg "${HLBG_COLOR}") +if [[ "$1" == "rofi" ]]; then + rofi_colors=(-bc "$BORDER_COLOR" -bg "$BG_COLOR" -fg "$FG_COLOR" \ + -hlfg "$HLFG_COLOR" -hlbg "$HLBG_COLOR") launcher_exe="rofi" - launcher_options=(-dmenu -i -lines "${menu_nrows}" -p "${ROFI_TEXT}" \ - "${rofi_colors}" "${ROFI_OPTIONS[@]}") - elif [[ "$1" == "zenity" ]]; then + launcher_options=(-dmenu -i -lines "$menu_nrows" -p "$ROFI_TEXT" \ + "$rofi_colors" "${ROFI_OPTIONS[@]}") +elif [[ "$1" == "zenity" ]]; then launcher_exe="zenity" - launcher_options=(--list --title="${ZENITY_TITLE}" --text="${ZENITY_TEXT}" \ + launcher_options=(--list --title="$ZENITY_TITLE" --text="$ZENITY_TEXT" \ "${ZENITY_OPTIONS[@]}") - fi +fi } for l in "${launcher_list[@]}"; do - if command_exists "${l}" ; then - prepare_launcher "${l}" +if command_exists "$l" ; then + prepare_launcher "$l" break - fi +fi done # No launcher available -if [[ -z "${launcher_exe}" ]]; then - exit 1 +if [[ -z "$launcher_exe" ]]; then +exit 1 fi -launcher=(${launcher_exe} "${launcher_options[@]}") +launcher=("$launcher_exe" "${launcher_options[@]}") selection="$(printf '%s\n' "${!menu[@]}" | sort | "${launcher[@]}")" function ask_confirmation() { - if [ "${launcher_exe}" == "rofi" ]; then +if [ "$launcher_exe" == "rofi" ]; then confirmed=$(echo -e "Yes\nNo" | rofi -dmenu -i -lines 2 -p "${selection}?" \ - "${rofi_colors}" "${ROFI_OPTIONS[@]}") - [ "${confirmed}" == "Yes" ] && confirmed=0 - elif [ "${launcher_exe}" == "zenity" ]; then + "$rofi_colors" "${ROFI_OPTIONS[@]}") + [ "$confirmed" == "Yes" ] && confirmed=0 +elif [ "$launcher_exe" == "zenity" ]; then zenity --question --text "Are you sure you want to ${selection,,}?" confirmed=$? - fi +fi - if [ "${confirmed}" == 0 ]; then - ${menu[${selection}]} - fi +if [ "$confirmed" == 0 ]; then + "${menu[${selection}]}" +fi } if [[ $? -eq 0 && ! -z ${selection} ]]; then - if [[ "${enable_confirmation}" = true && \ - ${menu_confirm} =~ (^|[[:space:]])"${selection}"($|[[:space:]]) ]]; then - ask_confirmation - else - ${menu[${selection}]} - fi +if [[ "$enable_confirmation" = true && \ + ${menu_confirm} =~ (^|[[:space:]])"$selection"($|[[:space:]]) ]]; then + ask_confirmation + else + "${menu[${selection}]}" + fi fi