diff --git a/Helpers/IPCHandlers.qml b/Helpers/IPCHandlers.qml index 9e723952..f0659cda 100644 --- a/Helpers/IPCHandlers.qml +++ b/Helpers/IPCHandlers.qml @@ -1,11 +1,18 @@ import Quickshell.Io +import "./IdleInhibitor.qml" + IpcHandler { property var appLauncherPanel property var lockScreen + property IdleInhibitor idleInhibitor target: "globalIPC" + function toggleIdleInhibitor(): void { + idleInhibitor.toggle() + } + // Toggle Applauncher visibility function toggleLauncher(): void { if (!appLauncherPanel) { diff --git a/Helpers/IdleInhibitor.qml b/Helpers/IdleInhibitor.qml new file mode 100644 index 00000000..de78a99d --- /dev/null +++ b/Helpers/IdleInhibitor.qml @@ -0,0 +1,43 @@ +import Quickshell.Io + +Process { + id: idleRoot + + // Example: systemd-inhibit to prevent idle/sleep + command: ["systemd-inhibit", "--what=idle:sleep", "--who=noctalia", "--why=User requested", "sleep", "infinity"] + + // Keep process running in background + property bool isRunning: running + + onStarted: { + console.log("[IdleInhibitor] Process started - idle inhibited") + } + + onExited: function(exitCode, exitStatus) { + console.log("[IdleInhibitor] Process finished:", exitCode) + } + + // Control functions + function start() { + if (!running) { + console.log("[IdleInhibitor] Starting idle inhibitor...") + running = true + } + } + + function stop() { + if (running) { + // Force stop the process by setting running to false + running = false + console.log("[IdleInhibitor] Stopping idle inhibitor...") + } + } + + function toggle() { + if (running) { + stop() + } else { + start() + } + } +} diff --git a/shell.qml b/shell.qml index a78bae58..74e41cab 100644 --- a/shell.qml +++ b/shell.qml @@ -11,6 +11,9 @@ import qs.Widgets.Notification import qs.Settings import qs.Helpers +import "./Helpers/IdleInhibitor.qml" +import "./Helpers/IPCHandlers.qml" + Scope { id: root @@ -50,6 +53,10 @@ Scope { } } + IdleInhibitor { + id: idleInhibitor + } + NotificationServer { id: notificationServer onNotification: function (notification) { @@ -88,6 +95,7 @@ Scope { IPCHandlers { appLauncherPanel: appLauncherPanel lockScreen: lockScreen + idleInhibitor: idleInhibitor } Connections {