33 lines
1.3 KiB
Bash
Executable File
33 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# omarchy:summary=Shut down after closing application windows
|
|
# omarchy:examples=omarchy shutdown | omarchy system shutdown
|
|
# omarchy:aliases=omarchy shutdown
|
|
|
|
if [[ ${1:-} == "--inhibited" ]]; then
|
|
# Close windows in the background so they cannot delay power-off.
|
|
(
|
|
omarchy-osd -i shutdown -m "Shutting down" -d 5000
|
|
omarchy-state clear re*-required
|
|
omarchy-hyprland-window-close-all
|
|
) &
|
|
|
|
sleep 2 # Allow apps like Chrome to shut down correctly
|
|
systemctl poweroff --no-wall
|
|
elif [[ ${1:-} == "--inhibit" ]]; then
|
|
# Report failures from inside the service, independently of the launching terminal.
|
|
# Block lid handling explicitly: it ignores high-level sleep inhibitors.
|
|
systemd-inhibit --what=sleep:idle:handle-lid-switch \
|
|
--who=Omarchy --why="Shutdown in progress" --mode=block \
|
|
"$0" --inhibited || {
|
|
status=$?
|
|
omarchy-notification-send -u critical "Shutdown failed" "Could not complete shutdown. Please try again."
|
|
exit "$status"
|
|
}
|
|
else
|
|
# Schedule the shutdown in the user manager so closing the terminal's systemd
|
|
# scope cannot terminate it before it runs.
|
|
systemd-run --user --collect --quiet --property=Type=exec --property=RuntimeMaxSec=30s \
|
|
"$OMARCHY_PATH/bin/omarchy-system-shutdown" --inhibit
|
|
fi
|