kill all apps before shutting down/rebooting/etc

This commit is contained in:
end-4
2025-07-18 23:42:10 +07:00
parent 055da37987
commit 19ea9ea3d1
2 changed files with 14 additions and 8 deletions
@@ -15,6 +15,12 @@ Scope {
id: root id: root
property var focusedScreen: Quickshell.screens.find(s => s.name === Hyprland.focusedMonitor?.name) property var focusedScreen: Quickshell.screens.find(s => s.name === Hyprland.focusedMonitor?.name)
function closeAllWindows() {
HyprlandData.windowList.map(w => w.pid).forEach((pid) => {
Quickshell.execDetached(["kill", pid]);
});
}
Loader { Loader {
id: sessionLoader id: sessionLoader
active: false active: false
@@ -111,7 +117,7 @@ Scope {
id: sessionLogout id: sessionLogout
buttonIcon: "logout" buttonIcon: "logout"
buttonText: Translation.tr("Logout") buttonText: Translation.tr("Logout")
onClicked: { Quickshell.execDetached(["pkill", "Hyprland"]); sessionRoot.hide() } onClicked: { root.closeAllWindows(); Quickshell.execDetached(["pkill", "Hyprland"]); sessionRoot.hide() }
onFocusChanged: { if (focus) sessionRoot.subtitle = buttonText } onFocusChanged: { if (focus) sessionRoot.subtitle = buttonText }
KeyNavigation.left: sessionSleep KeyNavigation.left: sessionSleep
KeyNavigation.right: sessionTaskManager KeyNavigation.right: sessionTaskManager
@@ -140,7 +146,7 @@ Scope {
id: sessionShutdown id: sessionShutdown
buttonIcon: "power_settings_new" buttonIcon: "power_settings_new"
buttonText: Translation.tr("Shutdown") buttonText: Translation.tr("Shutdown")
onClicked: { Quickshell.execDetached(["bash", "-c", `systemctl poweroff || loginctl poweroff`]); sessionRoot.hide() } onClicked: { root.closeAllWindows(); Quickshell.execDetached(["bash", "-c", `systemctl poweroff || loginctl poweroff`]); sessionRoot.hide() }
onFocusChanged: { if (focus) sessionRoot.subtitle = buttonText } onFocusChanged: { if (focus) sessionRoot.subtitle = buttonText }
KeyNavigation.left: sessionHibernate KeyNavigation.left: sessionHibernate
KeyNavigation.right: sessionReboot KeyNavigation.right: sessionReboot
@@ -150,7 +156,7 @@ Scope {
id: sessionReboot id: sessionReboot
buttonIcon: "restart_alt" buttonIcon: "restart_alt"
buttonText: Translation.tr("Reboot") buttonText: Translation.tr("Reboot")
onClicked: { Quickshell.execDetached(["bash", "-c", `reboot || loginctl reboot`]); sessionRoot.hide() } onClicked: { root.closeAllWindows(); Quickshell.execDetached(["bash", "-c", `reboot || loginctl reboot`]); sessionRoot.hide() }
onFocusChanged: { if (focus) sessionRoot.subtitle = buttonText } onFocusChanged: { if (focus) sessionRoot.subtitle = buttonText }
KeyNavigation.left: sessionShutdown KeyNavigation.left: sessionShutdown
KeyNavigation.right: sessionFirmwareReboot KeyNavigation.right: sessionFirmwareReboot
@@ -160,7 +166,7 @@ Scope {
id: sessionFirmwareReboot id: sessionFirmwareReboot
buttonIcon: "settings_applications" buttonIcon: "settings_applications"
buttonText: Translation.tr("Reboot to firmware settings") buttonText: Translation.tr("Reboot to firmware settings")
onClicked: { Quickshell.execDetached(["bash", "-c", `systemctl reboot --firmware-setup || loginctl reboot --firmware-setup`]); sessionRoot.hide() } onClicked: { root.closeAllWindows(); Quickshell.execDetached(["bash", "-c", `systemctl reboot --firmware-setup || loginctl reboot --firmware-setup`]); sessionRoot.hide() }
onFocusChanged: { if (focus) sessionRoot.subtitle = buttonText } onFocusChanged: { if (focus) sessionRoot.subtitle = buttonText }
KeyNavigation.up: sessionTaskManager KeyNavigation.up: sessionTaskManager
KeyNavigation.left: sessionReboot KeyNavigation.left: sessionReboot
+4 -4
View File
@@ -7,18 +7,18 @@
{ {
"label" : "hibernate", "label" : "hibernate",
"action" : "systemctl hibernate || loginctl hibernate", "action" : "systemctl hibernate || loginctl hibernate",
"text" : "save", "text" : "downloading",
"keybind" : "h" "keybind" : "h"
} }
{ {
"label" : "logout", "label" : "logout",
"action" : "pkill Hyprland || pkill sway || pkill niri || loginctl terminate-user $USER", "action" : "hyprctl clients -j | jq -r '.[].pid' | xargs kill; pkill Hyprland || pkill sway || pkill niri || loginctl terminate-user $USER",
"text" : "logout", "text" : "logout",
"keybind" : "e" "keybind" : "e"
} }
{ {
"label" : "shutdown", "label" : "shutdown",
"action" : "systemctl poweroff || loginctl poweroff", "action" : "hyprctl clients -j | jq -r '.[].pid' | xargs kill; systemctl poweroff || loginctl poweroff",
"text" : "power_settings_new", "text" : "power_settings_new",
"keybind" : "s" "keybind" : "s"
} }
@@ -30,7 +30,7 @@
} }
{ {
"label" : "reboot", "label" : "reboot",
"action" : "systemctl reboot || loginctl reboot", "action" : "hyprctl clients -j | jq -r '.[].pid' | xargs kill; systemctl reboot || loginctl reboot",
"text" : "restart_alt", "text" : "restart_alt",
"keybind" : "r" "keybind" : "r"
} }