feat: add idle monitor
Replaces hypridle
This commit is contained in:
parent
f484642971
commit
24922be5e9
5 changed files with 56 additions and 1 deletions
|
|
@ -252,6 +252,11 @@ default, you must create it manually.
|
||||||
"apps": {
|
"apps": {
|
||||||
"terminal": ["foot"],
|
"terminal": ["foot"],
|
||||||
"audio": ["pavucontrol"]
|
"audio": ["pavucontrol"]
|
||||||
|
},
|
||||||
|
"idle": {
|
||||||
|
"lockTimeout": 180,
|
||||||
|
"dpmsTimeout": 300,
|
||||||
|
"sleepTimeout": 600
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"background": {
|
"background": {
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ import Quickshell.Io
|
||||||
|
|
||||||
JsonObject {
|
JsonObject {
|
||||||
property Apps apps: Apps {}
|
property Apps apps: Apps {}
|
||||||
|
property Idle idle: Idle {}
|
||||||
|
|
||||||
component Apps: JsonObject {
|
component Apps: JsonObject {
|
||||||
property list<string> terminal: ["foot"]
|
property list<string> terminal: ["foot"]
|
||||||
|
|
@ -9,4 +10,10 @@ JsonObject {
|
||||||
property list<string> playback: ["mpv"]
|
property list<string> playback: ["mpv"]
|
||||||
property list<string> explorer: ["thunar"]
|
property list<string> explorer: ["thunar"]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
component Idle: JsonObject {
|
||||||
|
property real lockTimeout: 180 // 3 mins
|
||||||
|
property real dpmsTimeout: 300 // 5 mins
|
||||||
|
property real sleepTimeout: 600 // 10 mins
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
37
modules/IdleMonitors.qml
Normal file
37
modules/IdleMonitors.qml
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
import "lock"
|
||||||
|
import qs.config
|
||||||
|
import qs.services
|
||||||
|
import Quickshell
|
||||||
|
import Quickshell.Wayland
|
||||||
|
|
||||||
|
Scope {
|
||||||
|
id: root
|
||||||
|
|
||||||
|
required property Lock lock
|
||||||
|
|
||||||
|
IdleMonitor {
|
||||||
|
timeout: Config.general.idle.lockTimeout
|
||||||
|
onIsIdleChanged: {
|
||||||
|
if (isIdle)
|
||||||
|
root.lock.lock.locked = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
IdleMonitor {
|
||||||
|
timeout: Config.general.idle.dpmsTimeout
|
||||||
|
onIsIdleChanged: {
|
||||||
|
if (isIdle)
|
||||||
|
Hypr.dispatch("dpms off");
|
||||||
|
else
|
||||||
|
Hypr.dispatch("dpms on");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
IdleMonitor {
|
||||||
|
timeout: Config.general.idle.sleepTimeout
|
||||||
|
onIsIdleChanged: {
|
||||||
|
if (isIdle)
|
||||||
|
Quickshell.execDetached(["systemctl", "suspend-then-hibernate"]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -6,6 +6,7 @@ import Quickshell.Io
|
||||||
import Quickshell.Wayland
|
import Quickshell.Wayland
|
||||||
|
|
||||||
Scope {
|
Scope {
|
||||||
|
property alias lock: lock
|
||||||
|
|
||||||
WlSessionLock {
|
WlSessionLock {
|
||||||
id: lock
|
id: lock
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,12 @@ ShellRoot {
|
||||||
Background {}
|
Background {}
|
||||||
Drawers {}
|
Drawers {}
|
||||||
AreaPicker {}
|
AreaPicker {}
|
||||||
Lock {}
|
Lock {
|
||||||
|
id: lock
|
||||||
|
}
|
||||||
|
|
||||||
Shortcuts {}
|
Shortcuts {}
|
||||||
|
IdleMonitors {
|
||||||
|
lock: lock
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue