nosignal-shell/utils/SysInfo.qml
2025-08-11 15:14:04 +10:00

47 lines
1.3 KiB
QML

pragma Singleton
import Quickshell
import Quickshell.Io
Singleton {
id: root
property string osName
property string osPrettyName
property string osId
property list<string> osIdLike
property string logo
property string osIcon: ""
readonly property string user: Quickshell.env("USER")
readonly property string wm: Quickshell.env("XDG_CURRENT_DESKTOP") || Quickshell.env("XDG_SESSION_DESKTOP")
readonly property string shell: Quickshell.env("SHELL").split("/").pop()
FileView {
id: osRelease
path: "/etc/os-release"
onLoaded: {
const lines = text().split("\n");
const fd = key => lines.find(l => l.startsWith(`${key}=`))?.split("=")[1].replace(/"/g, "") ?? "";
root.osName = fd("NAME");
root.osPrettyName = fd("PRETTY_NAME");
root.osId = fd("ID");
root.osIdLike = fd("ID_LIKE").split(" ");
root.logo = fd("LOGO");
const osIcons = Icons.osIcons;
if (osIcons.hasOwnProperty(root.osId)) {
root.osIcon = osIcons[root.osId];
} else {
for (const id of root.osIdLike) {
if (osIcons.hasOwnProperty(id)) {
root.osIcon = osIcons[id];
}
}
}
}
}
}