mirror of
https://github.com/danbulant/dots-hyprland
synced 2026-05-24 12:22:09 +00:00
53 lines
No EOL
1.9 KiB
QML
53 lines
No EOL
1.9 KiB
QML
pragma Singleton
|
|
pragma ComponentBehavior: Bound
|
|
|
|
import QtQuick
|
|
import Quickshell
|
|
import Quickshell.Io
|
|
|
|
Singleton {
|
|
property string distroName: "Unknown"
|
|
property string distroId: "unknown"
|
|
property string distroIcon: "linux-symbolic"
|
|
|
|
Timer {
|
|
interval: 1
|
|
running: true
|
|
repeat: false
|
|
onTriggered: {
|
|
fileOsRelease.reload()
|
|
const textOsRelease = fileOsRelease.text()
|
|
|
|
// Extract the friendly name (PRETTY_NAME field, fallback to NAME)
|
|
const prettyNameMatch = textOsRelease.match(/^PRETTY_NAME="(.+?)"/m)
|
|
const nameMatch = textOsRelease.match(/^NAME="(.+?)"/m)
|
|
distroName = prettyNameMatch ? prettyNameMatch[1] : (nameMatch ? nameMatch[1].replace(/Linux/i, "").trim() : "Unknown")
|
|
|
|
// Extract the ID (LOGO field, fallback to "unknown")
|
|
const logoMatch = textOsRelease.match(/^LOGO=(.+)$/m)
|
|
distroId = logoMatch ? logoMatch[1].replace(/"/g, "") : "unknown"
|
|
|
|
// Update the distroIcon property based on distroId
|
|
switch (distroId) {
|
|
case "arch": distroIcon = "arch-symbolic"; break;
|
|
case "endeavouros": distroIcon = "endeavouros-symbolic"; break;
|
|
case "cachyos": distroIcon = "cachyos-symbolic"; break;
|
|
case "nixos": distroIcon = "nixos-symbolic"; break;
|
|
case "fedora": distroIcon = "fedora-symbolic"; break;
|
|
case "linuxmint":
|
|
case "ubuntu":
|
|
case "zorin":
|
|
case "popos": distroIcon = "ubuntu-symbolic"; break;
|
|
case "debian":
|
|
case "raspbian":
|
|
case "kali": distroIcon = "debian-symbolic"; break;
|
|
default: distroIcon = "linux-symbolic"; break;
|
|
}
|
|
}
|
|
}
|
|
|
|
FileView {
|
|
id: fileOsRelease
|
|
path: "/etc/os-release"
|
|
}
|
|
} |