From c74a248e1dc3d727acdae4176bd1bbc8edafcf28 Mon Sep 17 00:00:00 2001 From: JPratama7 Date: Sun, 27 Jul 2025 18:11:48 +0700 Subject: [PATCH] feat: add idle inhibitor for ipc --- Helpers/IPCHandlers.qml | 7 +++++++ Helpers/IdleInhibitor.qml | 43 +++++++++++++++++++++++++++++++++++++++ shell.qml | 8 ++++++++ 3 files changed, 58 insertions(+) create mode 100644 Helpers/IdleInhibitor.qml 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 {