Integrate graceful shutdown into power menu
This commit is contained in:
parent
a427c8d48a
commit
806d8c41df
3 changed files with 39 additions and 6 deletions
|
@ -3,7 +3,6 @@
|
||||||
### TODO
|
### TODO
|
||||||
|
|
||||||
- Make rofi power menu work by removing password requirement from shutdown, reboot, etc., which is normally done with `visudo` (see [this Stack Overflow thread](https://askubuntu.com/a/168885) and [Nix `sudo` option](https://search.nixos.org/options?channel=22.05&from=0&size=50&sort=relevance&type=packages&query=sudo).
|
- Make rofi power menu work by removing password requirement from shutdown, reboot, etc., which is normally done with `visudo` (see [this Stack Overflow thread](https://askubuntu.com/a/168885) and [Nix `sudo` option](https://search.nixos.org/options?channel=22.05&from=0&size=50&sort=relevance&type=packages&query=sudo).
|
||||||
- Package safe poweroff bash script required by rofi power menu
|
|
||||||
- Theme GRUB
|
- Theme GRUB
|
||||||
- Find out how handling multiple hosts works so both desktop and ThinkPad configurations are buildable from flake
|
- Find out how handling multiple hosts works so both desktop and ThinkPad configurations are buildable from flake
|
||||||
- Load in vim configuration
|
- Load in vim configuration
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
substituteAll {
|
substituteAll {
|
||||||
name = "rofi-power";
|
name = "rofi-power";
|
||||||
src = ./power.sh;
|
src = ./power.sh;
|
||||||
|
inherit = wmctrl;
|
||||||
dir = "bin";
|
dir = "bin";
|
||||||
isExecutable = true;
|
isExecutable = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,13 +21,47 @@ if [[ $sure != $confirm ]]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $chosen != $SUSPEND ]]; then
|
if [[ $chosen != $SUSPEND ]]; then
|
||||||
sh /home/elnu/scripts/graceful-shutdown/graceful_shutdown.sh
|
# based on https://github.com/ardadem/graceful-shutdown
|
||||||
|
|
||||||
|
TIMEOUT=10
|
||||||
|
|
||||||
|
APPLIST_TO_TERMINATE=(Discord firefox)
|
||||||
|
|
||||||
|
close_windows () {
|
||||||
|
wmctrl -l | awk '{print $1}' | while read -r wId
|
||||||
|
do
|
||||||
|
wmctrl -i -c $wId
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
window_timeout_countdown () {
|
||||||
|
for i in $(seq 1 $TIMEOUT);
|
||||||
|
do
|
||||||
|
if [[ -z $(wmctrl -l) ]]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
terminate_processes () {
|
||||||
|
pidof ${APPLIST_TO_TERMINATE[@]} | tr ' ' '\n' | while read -r pId
|
||||||
|
do
|
||||||
|
kill -15 $pId
|
||||||
|
tail --pid=$pId -f /dev/null # wait until terminate it
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
close_windows
|
||||||
|
window_timeout_countdown
|
||||||
|
terminate_processes
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case "$chosen" in
|
case "$chosen" in
|
||||||
$POWER_OFF) sudo poweroff ;;
|
$POWER_OFF) poweroff ;;
|
||||||
$REBOOT) sudo reboot ;;
|
$REBOOT) reboot ;;
|
||||||
$SUSPEND) sudo systemctl suspend ;;
|
$SUSPEND) systemctl suspend ;;
|
||||||
$LOG_OUT) i3-msg exit ;;
|
$LOG_OUT) i3-msg exit ;;
|
||||||
*) exit 1 ;;
|
*) exit 1 ;;
|
||||||
esac
|
esac
|
||||||
|
|
Loading…
Add table
Reference in a new issue