From 28b009bedd8ad2cbfcb56372931e8ea2407c736c Mon Sep 17 00:00:00 2001 From: The-Repo-Club Date: Mon, 14 Aug 2023 00:27:01 +0100 Subject: [PATCH] Fix power menu --- qtile/.config/qtile/config.py | 2 +- rofi/.local/bin/rofi/powermenu | 323 +++++++++++++++------------------ xprofile/.zprofile | 13 -- 3 files changed, 149 insertions(+), 189 deletions(-) diff --git a/qtile/.config/qtile/config.py b/qtile/.config/qtile/config.py index c7921b13f..b3b15aa06 100644 --- a/qtile/.config/qtile/config.py +++ b/qtile/.config/qtile/config.py @@ -84,7 +84,7 @@ class Commands(object): passmenu = "passmenu" autostart = ["autostart"] - # configure = ['autorandr --load qtile'] + configure = ["youtube_subs -d"] ################## diff --git a/rofi/.local/bin/rofi/powermenu b/rofi/.local/bin/rofi/powermenu index 487f8d630..9cd0d456a 100755 --- a/rofi/.local/bin/rofi/powermenu +++ b/rofi/.local/bin/rofi/powermenu @@ -12,7 +12,7 @@ #Created: # Wed 07 December 2022, 11:01:52 PM [GMT] #Modified: -# Sat 22 July 2023, 09:46:55 PM [GMT+1] +# Mon 14 August 2023, 12:26:30 AM [GMT+1] # #Description: # This script defines just a mode for rofi instead of being a self-contained @@ -20,17 +20,16 @@ # running rofi inside this script as now the user can call rofi as one pleases. # For instance: # -# rofi -show powermenu -modi powermenu:~/.config/rofi/powermenu +# rofi -show powermenu -config ~/.config/rofi/powermenu.rasi # #Dependencies: # # # shellcheck disable=all -if [ -z "${ROFI_OUTSIDE}" ] -then - echo "run this script in rofi". - exit +if [ -z "${ROFI_OUTSIDE}" ]; then + echo "run this script in rofi". + exit fi set -e @@ -75,161 +74,144 @@ dryrun=false showsymbols=true getuptime() { - uptime -p >/dev/null 2>&1 - - if [ "$?" -eq 0 ]; then - # Supports most Linux distro - # when the machine is up for less than '0' minutes then - # 'uptime -p' returns ONLY 'up', so we need to set a default value - UP_SET_OR_EMPTY=$(uptime -p | awk -F 'up ' '{print $2}') - UP=${UP_SET_OR_EMPTY:-'less than a minute'} - else - # Supports Mac OS X, Debian 7, etc - UP=$(uptime | sed -E 's/^[^,]*up *//; s/mins/minutes/; s/hrs?/hours/; + state=$(uptime | sed -E 's/^[^,]*up *//; s/mins/minutes/; s/hrs?/hours/; s/([[:digit:]]+):0?([[:digit:]]+)/\1 hours, \2 minutes/; s/^1 hours/1 hour/; s/ 1 hours/ 1 hour/; s/min,/minutes,/; s/ 0 minutes,/ less than a minute,/; s/ 1 minutes/ 1 minute/; s/ / /; s/, *[[:digit:]]* users?.*//') - fi - - state="$UP" } function check_valid { - option="$1" - shift 1 - for entry in "${@}" - do - if [ -z "${actions[$entry]+x}" ] - then - echo "Invalid choice in $option: $entry" >&2 - exit 1 - fi - done + option="$1" + shift 1 + for entry in "${@}"; do + if [ -z "${actions[$entry]+x}" ]; then + echo "Invalid choice in $option: $entry" >&2 + exit 1 + fi + done } # Parse command-line options parsed=$(getopt --options=h --longoptions=help,dry-run,confirm:,choices:,choose:,symbols,no-symbols --name "$0" -- "$@") if [ $? -ne 0 ]; then - echo 'Terminating...' >&2 - exit 1 + echo 'Terminating...' >&2 + exit 1 fi eval set -- "$parsed" unset parsed while true; do - case "$1" in - "-h"|"--help") - echo "rofi-power-menu - a power menu mode for Rofi" - echo - echo "Usage: rofi-power-menu [--choices CHOICES] [--confirm CHOICES]" - echo " [--choose CHOICE] [--dry-run] [--symbols|--no-symbols]" - echo - echo "Use with Rofi in script mode. For instance, to ask for shutdown or reboot:" - echo - echo " rofi -show menu -modi \"menu:rofi-power-menu --choices=shutdown/reboot\"" - echo - echo "Available options:" - echo " --dry-run Don't perform the selected action but print it to stderr." - echo " --choices CHOICES Show only the selected choices in the given order. Use / " - echo " as the separator. Available choices are lockscreen, logout," - echo " suspend, hibernate, reboot and shutdown. By default, all" - echo " available choices are shown." - echo " --confirm CHOICES Require confirmation for the gives choices only. Use / as" - echo " the separator. Available choices are lockscreen, logout," - echo " suspend, hibernate, reboot and shutdown. By default, only" - echo " irreversible actions logout, reboot and shutdown require" - echo " confirmation." - echo " --choose CHOICE Preselect the given choice and only ask for a confirmation" - echo " (if confirmation is set to be requested). It is strongly" - echo " recommended to combine this option with --confirm=CHOICE" - echo " if the choice wouldn't require confirmation by default." - echo " Available choices are lockscreen, logout, suspend," - echo " hibernate, reboot and shutdown." - echo " --[no-]symbols Show Unicode symbols or not. Requires a font with support" - echo " for the symbols. Use, for instance, fonts from the" - echo " Nerdfonts collection. By default, they are shown" - echo " -h,--help Show this help text." - exit 0 - ;; - "--dry-run") - dryrun=true - shift 1 - ;; - "--confirm") - IFS='/' read -ra confirmations <<< "$2" - check_valid "$1" "${confirmations[@]}" - shift 2 - ;; - "--choices") - IFS='/' read -ra show <<< "$2" - check_valid "$1" "${show[@]}" - shift 2 - ;; - "--choose") - # Check that the choice is valid - check_valid "$1" "$2" - selectionID="$2" - shift 2 - ;; - "--symbols") - showsymbols=true - shift 1 - ;; - "--no-symbols") - showsymbols=false - shift 1 - ;; - "--") - shift - break - ;; - *) - echo "Internal error" >&2 - exit 1 - ;; - esac + case "$1" in + "-h" | "--help") + echo "rofi-power-menu - a power menu mode for Rofi" + echo + echo "Usage: rofi-power-menu [--choices CHOICES] [--confirm CHOICES]" + echo " [--choose CHOICE] [--dry-run] [--symbols|--no-symbols]" + echo + echo "Use with Rofi in script mode. For instance, to ask for shutdown or reboot:" + echo + echo " rofi -show menu -modi \"menu:rofi-power-menu --choices=shutdown/reboot\"" + echo + echo "Available options:" + echo " --dry-run Don't perform the selected action but print it to stderr." + echo " --choices CHOICES Show only the selected choices in the given order. Use / " + echo " as the separator. Available choices are lockscreen, logout," + echo " suspend, hibernate, reboot and shutdown. By default, all" + echo " available choices are shown." + echo " --confirm CHOICES Require confirmation for the gives choices only. Use / as" + echo " the separator. Available choices are lockscreen, logout," + echo " suspend, hibernate, reboot and shutdown. By default, only" + echo " irreversible actions logout, reboot and shutdown require" + echo " confirmation." + echo " --choose CHOICE Preselect the given choice and only ask for a confirmation" + echo " (if confirmation is set to be requested). It is strongly" + echo " recommended to combine this option with --confirm=CHOICE" + echo " if the choice wouldn't require confirmation by default." + echo " Available choices are lockscreen, logout, suspend," + echo " hibernate, reboot and shutdown." + echo " --[no-]symbols Show Unicode symbols or not. Requires a font with support" + echo " for the symbols. Use, for instance, fonts from the" + echo " Nerdfonts collection. By default, they are shown" + echo " -h,--help Show this help text." + exit 0 + ;; + "--dry-run") + dryrun=true + shift 1 + ;; + "--confirm") + IFS='/' read -ra confirmations <<<"$2" + check_valid "$1" "${confirmations[@]}" + shift 2 + ;; + "--choices") + IFS='/' read -ra show <<<"$2" + check_valid "$1" "${show[@]}" + shift 2 + ;; + "--choose") + # Check that the choice is valid + check_valid "$1" "$2" + selectionID="$2" + shift 2 + ;; + "--symbols") + showsymbols=true + shift 1 + ;; + "--no-symbols") + showsymbols=false + shift 1 + ;; + "--") + shift + break + ;; + *) + echo "Internal error" >&2 + exit 1 + ;; + esac done # Define the messages after parsing the CLI options so that it is possible to # configure them in the future. function write_message { - icon="$1" - text="$2" - if [ "$showsymbols" = "true" ] - then - echo -n "\u200e$icon \u2068$text\u2069" - else - echo -n "$text" - fi + icon="$1" + text="$2" + if [ "$showsymbols" = "true" ]; then + echo -n "\u200e$icon \u2068$text\u2069" + else + echo -n "$text" + fi } function print_selection { - echo -e "$1" | $(read -r -d '' entry; echo "echo $entry") + echo -e "$1" | $( + read -r -d '' entry + echo "echo $entry" + ) } declare -A messages declare -A confirmationMessages -for entry in "${all[@]}" -do - messages[$entry]=$(write_message "${icons[$entry]}" "${texts[$entry]^}") +for entry in "${all[@]}"; do + messages[$entry]=$(write_message "${icons[$entry]}" "${texts[$entry]^}") done -for entry in "${all[@]}" -do - confirmationMessages[$entry]=$(write_message "${icons[$entry]}" "Yes, ${texts[$entry]}") +for entry in "${all[@]}"; do + confirmationMessages[$entry]=$(write_message "${icons[$entry]}" "Yes, ${texts[$entry]}") done confirmationMessages[cancel]=$(write_message "${icons[cancel]}" "No, cancel") -if [ $# -gt 0 ] -then - # If arguments given, use those as the selection - selection="${*}" +if [ $# -gt 0 ]; then + # If arguments given, use those as the selection + selection="${*}" else - # Otherwise, use the CLI passed choice if given - if [ -n "${selectionID+x}" ] - then - selection="${messages[$selectionID]}" - fi + # Otherwise, use the CLI passed choice if given + if [ -n "${selectionID+x}" ]; then + selection="${messages[$selectionID]}" + fi fi # Don't allow custom entries @@ -237,54 +219,45 @@ echo -e "\0no-custom\x1ftrue" echo -e "\0markup-rows\x1ftrue" -if [ -z "${selection+x}" ] -then - getuptime - echo -e "\0prompt\x1fPower Menu" - echo -en "\0message\x1fUptime :: ${state^}\n" - for entry in "${show[@]}" - do - echo -e "${messages[$entry]}\0icon\x1f${icons[$entry]}" - done +if [ -z "${selection+x}" ]; then + getuptime + echo -e "\0prompt\x1fPower Menu" + echo -en "\0message\x1fUptime :: ${state^}\n" + for entry in "${show[@]}"; do + echo -e "${messages[$entry]}\0icon\x1f${icons[$entry]}" + done else - for entry in "${show[@]}" - do - if [ "$selection" = "$(print_selection "${messages[$entry]}")" ] - then - # Check if the selected entry is listed in confirmation requirements - for confirmation in "${confirmations[@]}" - do - if [ "$entry" = "$confirmation" ] - then - # Ask for confirmation - echo -e "\0prompt\x1fAre you sure" - echo -e "${confirmationMessages[$entry]}\0icon\x1f${icons[$entry]}" - echo -e "${confirmationMessages[cancel]}\0icon\x1f${icons[cancel]}" - exit 0 - fi - done - # If not, then no confirmation is required, so mark confirmed - selection=$(print_selection "${confirmationMessages[$entry]}") + for entry in "${show[@]}"; do + if [ "$selection" = "$(print_selection "${messages[$entry]}")" ]; then + # Check if the selected entry is listed in confirmation requirements + for confirmation in "${confirmations[@]}"; do + if [ "$entry" = "$confirmation" ]; then + # Ask for confirmation + echo -e "\0prompt\x1fAre you sure" + echo -e "${confirmationMessages[$entry]}\0icon\x1f${icons[$entry]}" + echo -e "${confirmationMessages[cancel]}\0icon\x1f${icons[cancel]}" + exit 0 fi - if [ "$selection" = "$(print_selection "${confirmationMessages[$entry]}")" ] - then - if [ $dryrun = true ] - then - # Tell what would have been done - echo "Selected: $entry" >&2 - else - # Perform the action - ${actions[$entry]} - fi - exit 0 - fi - if [ "$selection" = "$(print_selection "${confirmationMessages[cancel]}")" ] - then - # Do nothing - exit 0 - fi - done - # The selection didn't match anything, so raise an error - echo "Invalid selection: $selection" >&2 - exit 1 + done + # If not, then no confirmation is required, so mark confirmed + selection=$(print_selection "${confirmationMessages[$entry]}") + fi + if [ "$selection" = "$(print_selection "${confirmationMessages[$entry]}")" ]; then + if [ $dryrun = true ]; then + # Tell what would have been done + echo "Selected: $entry" >&2 + else + # Perform the action + ${actions[$entry]} + fi + exit 0 + fi + if [ "$selection" = "$(print_selection "${confirmationMessages[cancel]}")" ]; then + # Do nothing + exit 0 + fi + done + # The selection didn't match anything, so raise an error + echo "Invalid selection: $selection" >&2 + exit 1 fi diff --git a/xprofile/.zprofile b/xprofile/.zprofile index 314a0088b..8babb5cf9 100644 --- a/xprofile/.zprofile +++ b/xprofile/.zprofile @@ -9,19 +9,6 @@ if [ -f "$xprofile" ]; then source "$xprofile" fi -if [ -d "/usr/bin/husky" ]; then - export HUSKY_PATH="" - HUSKY_PATH="$HOME/.local/share/husky-repo/core" - HUSKY_PATH="$HOME/.local/share/husky-repo/extra:$HUSKY_PATH" - HUSKY_PATH="$HOME/.local/share/husky-repo/xorg:$HUSKY_PATH" - HUSKY_PATH="$HOME/.local/share/husky-repo/wayland:$HUSKY_PATH" - HUSKY_PATH="$HOME/.local/share/husky-repo/community:$HUSKY_PATH" - HUSKY_PATH="$HOME/.local/share/husky-repo/games:$HUSKY_PATH" - HUSKY_PATH="$HOME/.local/share/husky-repo/bin:$HUSKY_PATH" - HUSKY_PATH="$HOME/.local/share/husky-repo/git:$HUSKY_PATH" - HUSKY_PATH="$HOME/.local/share/husky-repo/testing:$HUSKY_PATH" -fi - # enable XDG_CONFIG_HOME if [[ -z "$XDG_CONFIG_HOME" ]]; then export XDG_CONFIG_HOME="$HOME/.config/"