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