parent
a6deec963c
commit
95fc1c7fba
3 changed files with 53 additions and 29 deletions
18
README.md
18
README.md
|
|
@ -279,9 +279,21 @@ default, you must create it manually.
|
|||
},
|
||||
"idle": {
|
||||
"inhibitWhenAudio": true,
|
||||
"lockTimeout": 180,
|
||||
"dpmsTimeout": 300,
|
||||
"sleepTimeout": 600
|
||||
"timeouts": [
|
||||
{
|
||||
"timeout": 180,
|
||||
"idleAction": "lock"
|
||||
},
|
||||
{
|
||||
"timeout": 300,
|
||||
"idleAction": "dpms off",
|
||||
"returnAction": "dpms on"
|
||||
},
|
||||
{
|
||||
"timeout": 600,
|
||||
"idleAction": ["systemctl", "suspend-then-hibernate"]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"background": {
|
||||
|
|
|
|||
|
|
@ -14,9 +14,21 @@ JsonObject {
|
|||
|
||||
component Idle: JsonObject {
|
||||
property bool inhibitWhenAudio: true
|
||||
property real lockTimeout: 180 // 3 mins
|
||||
property real dpmsTimeout: 300 // 5 mins
|
||||
property real sleepTimeout: 600 // 10 mins
|
||||
property list<var> timeouts: [
|
||||
{
|
||||
timeout: 180,
|
||||
idleAction: "lock"
|
||||
},
|
||||
{
|
||||
timeout: 300,
|
||||
idleAction: "dpms off",
|
||||
returnAction: "dpms on"
|
||||
},
|
||||
{
|
||||
timeout: 600,
|
||||
idleAction: ["systemctl", "suspend-then-hibernate"]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
component Battery: JsonObject {
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
pragma ComponentBehavior: Bound
|
||||
|
||||
import "lock"
|
||||
import qs.config
|
||||
import qs.services
|
||||
|
|
@ -10,32 +12,30 @@ Scope {
|
|||
required property Lock lock
|
||||
readonly property bool enabled: !Config.general.idle.inhibitWhenAudio || !Players.list.some(p => p.isPlaying)
|
||||
|
||||
IdleMonitor {
|
||||
enabled: root.enabled
|
||||
timeout: Config.general.idle.lockTimeout
|
||||
onIsIdleChanged: {
|
||||
if (isIdle)
|
||||
function handleIdleAction(action: var): void {
|
||||
if (!action)
|
||||
return;
|
||||
|
||||
if (action === "lock")
|
||||
root.lock.lock.locked = true;
|
||||
}
|
||||
}
|
||||
|
||||
IdleMonitor {
|
||||
enabled: root.enabled
|
||||
timeout: Config.general.idle.dpmsTimeout
|
||||
onIsIdleChanged: {
|
||||
if (isIdle)
|
||||
Hypr.dispatch("dpms off");
|
||||
else if (action === "unlock")
|
||||
root.lock.lock.locked = false;
|
||||
else if (typeof action === "string")
|
||||
Hypr.dispatch(action);
|
||||
else
|
||||
Hypr.dispatch("dpms on");
|
||||
}
|
||||
Quickshell.execDetached(action);
|
||||
}
|
||||
|
||||
Variants {
|
||||
model: Config.general.idle.timeouts
|
||||
|
||||
IdleMonitor {
|
||||
enabled: root.enabled
|
||||
timeout: Config.general.idle.sleepTimeout
|
||||
onIsIdleChanged: {
|
||||
if (isIdle)
|
||||
Quickshell.execDetached(["systemctl", "suspend-then-hibernate"]);
|
||||
required property var modelData
|
||||
|
||||
enabled: root.enabled && (modelData.enabled ?? true)
|
||||
timeout: modelData.timeout
|
||||
respectInhibitors: modelData.respectInhibitors ?? true
|
||||
onIsIdleChanged: root.handleIdleAction(isIdle ? modelData.idleAction : modelData.returnAction)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue