feat: add idle inhibitor for ipc

This commit is contained in:
JPratama7 2025-07-27 18:11:48 +07:00
parent ef1274d42b
commit c74a248e1d
No known key found for this signature in database
GPG key ID: CD3EB7D0490C5F4B
3 changed files with 58 additions and 0 deletions

View file

@ -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) {

43
Helpers/IdleInhibitor.qml Normal file
View file

@ -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()
}
}
}

View file

@ -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 {