mirror of
https://github.com/GRFreire/scripts.git
synced 2026-01-09 20:59:37 +00:00
simple-power-menu: convert to posix compliant
This commit is contained in:
parent
693905cb08
commit
6a8321b312
@ -1 +1 @@
|
|||||||
../simple-power-menu/simple-power-menu.bash
|
../simple-power-menu/simple-power-menu.sh
|
||||||
@ -1,79 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
if [ "$(command -v rofi)" ]; then
|
|
||||||
CMD='rofi -dmenu';
|
|
||||||
elif [ "$(command -v dmenu)" ]; then
|
|
||||||
CMD='dmenu';
|
|
||||||
else
|
|
||||||
echo 'Could not find either dmenu or rofi, exiting'
|
|
||||||
exit 1;
|
|
||||||
fi
|
|
||||||
|
|
||||||
fn_logout() {
|
|
||||||
if [[ $DESKTOP_SESSION =~ ^.*openbox$ ]]; then
|
|
||||||
openbox --exit
|
|
||||||
elif [[ $DESKTOP_SESSION =~ ^.*i3$ ]]; then
|
|
||||||
i3-msg exit
|
|
||||||
elif [[ $DESKTOP_SESSION =~ ^.*qtile$ ]]; then
|
|
||||||
qtile shell -c 'shutdown()'
|
|
||||||
elif [[ $DESKTOP_SESSION =~ ^.*fluxbox$ ]]; then
|
|
||||||
killall fluxbox
|
|
||||||
elif [[ $DESKTOP_SESSION =~ ^.*bspwm$ ]]; then
|
|
||||||
bspc quit 1
|
|
||||||
else
|
|
||||||
loginctl terminate-session "${XDG_SESSION_ID-}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
OPTIONS=(
|
|
||||||
"Shutdown"
|
|
||||||
"Reboot"
|
|
||||||
"Suspend"
|
|
||||||
"Log out"
|
|
||||||
)
|
|
||||||
|
|
||||||
OPTIONS_CMD=(
|
|
||||||
"systemctl poweroff"
|
|
||||||
"systemctl reboot"
|
|
||||||
"systemctl suspend"
|
|
||||||
"fn_logout"
|
|
||||||
)
|
|
||||||
|
|
||||||
PROMPT=$(printf "%s\\\\n" "${OPTIONS[@]}")
|
|
||||||
PROMPT="${PROMPT%??}"
|
|
||||||
|
|
||||||
PROMPT_LENGHT="${#OPTIONS[@]}"
|
|
||||||
|
|
||||||
CHOICE=$(echo -e "$PROMPT" | $CMD -l "$PROMPT_LENGHT" -p "Power Menu")
|
|
||||||
|
|
||||||
if [[ -z $CHOICE ]]; then
|
|
||||||
exit 0;
|
|
||||||
fi
|
|
||||||
|
|
||||||
CAN_PROCEDE=0
|
|
||||||
for i in "${!OPTIONS[@]}"; do
|
|
||||||
if [[ "${OPTIONS[$i]}" = "${CHOICE}" ]]; then
|
|
||||||
CAN_PROCEDE=1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ $CAN_PROCEDE -eq 0 ]; then
|
|
||||||
exit 0;
|
|
||||||
fi
|
|
||||||
|
|
||||||
CONFIRMATION_CHOICES="no\nyes"
|
|
||||||
CONFIRMATION=$(echo -e $CONFIRMATION_CHOICES | $CMD -l 2 -p "Do you want to $CHOICE")
|
|
||||||
|
|
||||||
if [ -z "$CONFIRMATION" ]; then
|
|
||||||
exit 0;
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$CONFIRMATION" != yes ]; then
|
|
||||||
exit 0;
|
|
||||||
fi
|
|
||||||
|
|
||||||
for i in "${!OPTIONS[@]}"; do
|
|
||||||
if [[ "${OPTIONS[$i]}" = "${CHOICE}" ]]; then
|
|
||||||
${OPTIONS_CMD[i]}
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
56
simple-power-menu/simple-power-menu.sh
Executable file
56
simple-power-menu/simple-power-menu.sh
Executable file
@ -0,0 +1,56 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ "$(command -v rofi)" ]; then
|
||||||
|
CMD='rofi -dmenu';
|
||||||
|
elif [ "$(command -v dmenu)" ]; then
|
||||||
|
CMD='dmenu';
|
||||||
|
else
|
||||||
|
echo 'Could not find either dmenu or rofi, exiting'
|
||||||
|
exit 1;
|
||||||
|
fi
|
||||||
|
|
||||||
|
fn_logout() {
|
||||||
|
case "$DESKTOP_SESSION" in
|
||||||
|
*openbox*) openbox --exit;;
|
||||||
|
*i3*) i3-msg exit;;
|
||||||
|
*qtile*) qtile shell -c 'shutdown()';;
|
||||||
|
*fluxbox*) killall fluxbox;;
|
||||||
|
*bspwm*) bspc quit 1;;
|
||||||
|
*) loginctl terminate-session "${XDG_SESSION_ID-}";;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
OPTIONS="\
|
||||||
|
Shutdown \tsystemctl poweroff
|
||||||
|
Reboot \tsystemctl reboot
|
||||||
|
Suspend \tsystemctl suspend
|
||||||
|
Log out \tfn_logout"
|
||||||
|
|
||||||
|
PROMPT="$(echo "$OPTIONS" | awk -F"\t" '{print $1}')"
|
||||||
|
|
||||||
|
PROMPT_LENGHT="$(echo "$PROMPT" | wc -l)"
|
||||||
|
|
||||||
|
CHOICE="$(echo "$PROMPT" | $CMD -l "$PROMPT_LENGHT" -p "Power Menu" | xargs)"
|
||||||
|
|
||||||
|
if [ -z "$CHOICE" ]; then
|
||||||
|
exit 0;
|
||||||
|
fi
|
||||||
|
|
||||||
|
COMMAND="$(echo "$OPTIONS" | grep "$CHOICE" | awk -F"\t" '{print $2}')"
|
||||||
|
|
||||||
|
if [ -z "$COMMAND" ]; then
|
||||||
|
exit 0;
|
||||||
|
fi
|
||||||
|
|
||||||
|
CONFIRMATION_CHOICES="no\nyes"
|
||||||
|
CONFIRMATION="$(echo $CONFIRMATION_CHOICES | $CMD -l 2 -p "Do you want to $CHOICE")"
|
||||||
|
|
||||||
|
if [ -z "$CONFIRMATION" ]; then
|
||||||
|
exit 0;
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$CONFIRMATION" != yes ]; then
|
||||||
|
exit 0;
|
||||||
|
fi
|
||||||
|
|
||||||
|
$COMMAND
|
||||||
Loading…
Reference in New Issue
Block a user