blob: e4ce6a8bde1c5cb2f295035d04741eb989c4820e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
pragma Singleton
import Quickshell
import Quickshell.Io
import QtQuick
Singleton {
id: root
readonly property alias running: props.running
readonly property alias paused: props.paused
readonly property alias elapsed: props.elapsed
property bool needsStart
property list<string> startArgs
property bool needsStop
property bool needsPause
function start(extraArgs: list<string>): void {
needsStart = true;
startArgs = extraArgs;
checkProc.running = true;
}
function stop(): void {
needsStop = true;
checkProc.running = true;
}
function togglePause(): void {
needsPause = true;
checkProc.running = true;
}
PersistentProperties {
id: props
property bool running: false
property bool paused: false
property real elapsed: 0 // Might get too large for int
reloadableId: "recorder"
}
Process {
id: checkProc
running: true
command: ["pidof", "gpu-screen-recorder"]
onExited: code => {
props.running = code === 0;
if (code === 0) {
if (root.needsStop) {
Quickshell.execDetached(["caelestia", "record"]);
props.running = false;
props.paused = false;
} else if (root.needsPause) {
Quickshell.execDetached(["caelestia", "record", "-p"]);
props.paused = !props.paused;
}
} else if (root.needsStart) {
Quickshell.execDetached(["caelestia", "record", ...root.startArgs]);
props.running = true;
props.paused = false;
props.elapsed = 0;
}
root.needsStart = false;
root.needsStop = false;
root.needsPause = false;
}
}
Connections {
target: Time
// enabled: props.running && !props.paused
function onSecondsChanged(): void {
props.elapsed++;
}
}
}
|