me like nix
1pragma Singleton
2
3import QtQuick
4import Quickshell
5import Quickshell.Io
6
7QtObject {
8 readonly property int percent: _percent
9 readonly property string status: _status
10 readonly property bool hasBattery: _hasBattery
11
12 property int _percent: 0
13 property string _status: "Unknown"
14 property bool _hasBattery: false
15
16 property var _detectProc: Process {
17 command: ["sh", "-c", "test -d /sys/class/power_supply/BAT1 && echo yes || echo no"]
18 stdout: SplitParser {
19 onRead: data => {
20 if (!data) return
21 _hasBattery = data.trim() === "yes"
22 }
23 }
24 Component.onCompleted: running = true
25 }
26
27 property var _capProc: Process {
28 command: ["sh", "-c", "cat /sys/class/power_supply/BAT1/capacity 2>/dev/null || echo 0"]
29 stdout: SplitParser {
30 onRead: data => {
31 if (!data) return
32 _percent = parseInt(data.trim()) || 0
33 }
34 }
35 Component.onCompleted: running = true
36 }
37
38 property var _statusProc: Process {
39 command: ["sh", "-c", "cat /sys/class/power_supply/BAT1/status 2>/dev/null || echo Unknown"]
40 stdout: SplitParser {
41 onRead: data => {
42 if (!data) return
43 _status = data.trim()
44 }
45 }
46 Component.onCompleted: running = true
47 }
48
49 property var _timer: Timer {
50 interval: 2000
51 running: true
52 repeat: true
53 onTriggered: {
54 _capProc.running = true
55 _statusProc.running = true
56 }
57 }
58}