mirror of
https://github.com/AquaMorph/dotfiles.git
synced 2026-09-29 20:04:21 +00:00
117 lines
3.4 KiB
QML
117 lines
3.4 KiB
QML
import QtQuick
|
|
import Quickshell
|
|
import Quickshell.Io
|
|
|
|
Scope {
|
|
id: root
|
|
|
|
property string connection: "Disconnected"
|
|
property int brightness: -1
|
|
property var wifiNetworks: []
|
|
|
|
function setBrightness(change) {
|
|
Quickshell.execDetached(["brightnessctl", "set", change]);
|
|
brightnessRefresh.restart();
|
|
}
|
|
|
|
function refreshWifi() {
|
|
if (!wifiQuery.running)
|
|
wifiQuery.running = true;
|
|
}
|
|
|
|
Process {
|
|
id: networkQuery
|
|
command: ["nmcli", "-t", "-f", "TYPE,NAME", "connection", "show", "--active"]
|
|
running: true
|
|
|
|
stdout: StdioCollector {
|
|
onStreamFinished: {
|
|
const lines = text.trim().split("\n");
|
|
for (let line of lines) {
|
|
const separator = line.indexOf(":");
|
|
const type = line.slice(0, separator);
|
|
if (type === "802-11-wireless" || type === "wifi") {
|
|
root.connection = line.slice(separator + 1);
|
|
return;
|
|
}
|
|
}
|
|
for (let line of lines) {
|
|
const separator = line.indexOf(":");
|
|
const type = line.slice(0, separator);
|
|
if (type === "802-3-ethernet" || type === "ethernet") {
|
|
root.connection = line.slice(separator + 1);
|
|
return;
|
|
}
|
|
}
|
|
root.connection = "Disconnected";
|
|
}
|
|
}
|
|
}
|
|
|
|
Timer {
|
|
interval: 5000
|
|
repeat: true
|
|
running: true
|
|
onTriggered: networkQuery.running = true
|
|
}
|
|
|
|
Process {
|
|
id: brightnessQuery
|
|
command: ["brightnessctl", "-m"]
|
|
running: true
|
|
|
|
stdout: StdioCollector {
|
|
onStreamFinished: {
|
|
const fields = text.trim().split(",");
|
|
root.brightness = fields.length >= 4
|
|
? parseInt(fields[3].replace("%", ""))
|
|
: -1;
|
|
}
|
|
}
|
|
}
|
|
|
|
Timer {
|
|
interval: 2000
|
|
repeat: true
|
|
running: true
|
|
onTriggered: brightnessQuery.running = true
|
|
}
|
|
|
|
Timer {
|
|
id: brightnessRefresh
|
|
interval: 250
|
|
onTriggered: brightnessQuery.running = true
|
|
}
|
|
|
|
Process {
|
|
id: wifiQuery
|
|
command: ["nmcli", "-t", "-f", "IN-USE,SSID,SIGNAL", "device", "wifi", "list", "--rescan", "auto"]
|
|
|
|
stdout: StdioCollector {
|
|
onStreamFinished: {
|
|
const networks = [];
|
|
const seen = {};
|
|
for (let line of text.trim().split("\n")) {
|
|
const fields = line.split(":");
|
|
if (fields.length < 3)
|
|
continue;
|
|
const active = fields.shift() === "*";
|
|
const signal = parseInt(fields.pop());
|
|
const ssid = fields.join(":").replace(/\\:/g, ":");
|
|
if (!ssid || seen[ssid])
|
|
continue;
|
|
seen[ssid] = true;
|
|
networks.push({
|
|
"ssid": ssid,
|
|
"signal": signal,
|
|
"active": active
|
|
});
|
|
if (networks.length >= 8)
|
|
break;
|
|
}
|
|
root.wifiNetworks = networks;
|
|
}
|
|
}
|
|
}
|
|
}
|