diff --git a/quickshell/Modals/Settings/ProfileSection.qml b/quickshell/Modals/Settings/ProfileSection.qml index 5910ca73..881e7243 100644 --- a/quickshell/Modals/Settings/ProfileSection.qml +++ b/quickshell/Modals/Settings/ProfileSection.qml @@ -139,7 +139,7 @@ Rectangle { } StyledText { - text: DgopService.distribution || "Linux" + text: UserInfoService.hostname || "Linux" font.pixelSize: Theme.fontSizeMedium color: Theme.surfaceVariantText elide: Text.ElideRight diff --git a/quickshell/Modals/Settings/SettingsContent.qml b/quickshell/Modals/Settings/SettingsContent.qml index aa9e475a..805d96d5 100644 --- a/quickshell/Modals/Settings/SettingsContent.qml +++ b/quickshell/Modals/Settings/SettingsContent.qml @@ -12,9 +12,9 @@ FocusScope { Rectangle { anchors.fill: parent - anchors.leftMargin: 0 - anchors.rightMargin: Theme.spacingS - anchors.bottomMargin: Theme.spacingM + anchors.leftMargin: Theme.spacingS + anchors.rightMargin: 0 + anchors.bottomMargin: 0 anchors.topMargin: 0 color: "transparent" diff --git a/quickshell/Modals/Settings/SettingsSidebar.qml b/quickshell/Modals/Settings/SettingsSidebar.qml index 5a83f905..bc9f70b7 100644 --- a/quickshell/Modals/Settings/SettingsSidebar.qml +++ b/quickshell/Modals/Settings/SettingsSidebar.qml @@ -66,7 +66,7 @@ Rectangle { Column { id: sidebarColumn - width: parent.width + anchors.fill: parent anchors.leftMargin: Theme.spacingS anchors.rightMargin: Theme.spacingS anchors.bottomMargin: Theme.spacingS @@ -100,7 +100,7 @@ Rectangle { property bool isActive: sidebarContainer.currentIndex === index - width: sidebarColumn.width - Theme.spacingS * 2 + width: parent.width height: 44 radius: Theme.cornerRadius color: isActive ? Theme.primary : tabMouseArea.containsMouse ? Theme.surfaceHover : "transparent" diff --git a/quickshell/Modules/ProcessList/SystemTab.qml b/quickshell/Modules/ProcessList/SystemTab.qml index 8ee11973..17c53277 100644 --- a/quickshell/Modules/ProcessList/SystemTab.qml +++ b/quickshell/Modules/ProcessList/SystemTab.qml @@ -9,10 +9,10 @@ DankFlickable { contentHeight: systemColumn.implicitHeight clip: true Component.onCompleted: { - DgopService.addRef(["system", "hardware", "diskmounts"]); + DgopService.addRef(["system", "diskmounts"]); } Component.onDestruction: { - DgopService.removeRef(["system", "hardware", "diskmounts"]); + DgopService.removeRef(["system", "diskmounts"]); } Column { diff --git a/quickshell/Modules/Settings/AboutTab.qml b/quickshell/Modules/Settings/AboutTab.qml index 971d2327..921cd50d 100644 --- a/quickshell/Modules/Settings/AboutTab.qml +++ b/quickshell/Modules/Settings/AboutTab.qml @@ -75,7 +75,6 @@ Item { DankFlickable { anchors.fill: parent - anchors.topMargin: Theme.spacingL clip: true contentHeight: mainColumn.height contentWidth: width diff --git a/quickshell/Modules/Settings/DankBarTab.qml b/quickshell/Modules/Settings/DankBarTab.qml index 8f8a1523..ab0ef0e5 100644 --- a/quickshell/Modules/Settings/DankBarTab.qml +++ b/quickshell/Modules/Settings/DankBarTab.qml @@ -736,8 +736,6 @@ Item { DankFlickable { anchors.fill: parent - anchors.topMargin: Theme.spacingL - anchors.bottomMargin: Theme.spacingS clip: true contentHeight: mainColumn.height contentWidth: width diff --git a/quickshell/Modules/Settings/DisplaysTab.qml b/quickshell/Modules/Settings/DisplaysTab.qml index fc27073a..6e319720 100644 --- a/quickshell/Modules/Settings/DisplaysTab.qml +++ b/quickshell/Modules/Settings/DisplaysTab.qml @@ -75,8 +75,6 @@ Item { DankFlickable { anchors.fill: parent - anchors.topMargin: Theme.spacingL - anchors.bottomMargin: Theme.spacingS clip: true contentHeight: mainColumn.height contentWidth: width diff --git a/quickshell/Modules/Settings/DockTab.qml b/quickshell/Modules/Settings/DockTab.qml index 26e67818..23ae986b 100644 --- a/quickshell/Modules/Settings/DockTab.qml +++ b/quickshell/Modules/Settings/DockTab.qml @@ -10,7 +10,6 @@ Item { DankFlickable { anchors.fill: parent - anchors.topMargin: Theme.spacingL clip: true contentHeight: mainColumn.height contentWidth: width diff --git a/quickshell/Modules/Settings/LauncherTab.qml b/quickshell/Modules/Settings/LauncherTab.qml index d1ff5326..73a56678 100644 --- a/quickshell/Modules/Settings/LauncherTab.qml +++ b/quickshell/Modules/Settings/LauncherTab.qml @@ -24,7 +24,6 @@ Item { DankFlickable { anchors.fill: parent - anchors.topMargin: Theme.spacingL clip: true contentHeight: mainColumn.height contentWidth: width diff --git a/quickshell/Modules/Settings/PersonalizationTab.qml b/quickshell/Modules/Settings/PersonalizationTab.qml index c8145847..473f606f 100644 --- a/quickshell/Modules/Settings/PersonalizationTab.qml +++ b/quickshell/Modules/Settings/PersonalizationTab.qml @@ -68,7 +68,6 @@ Item { DankFlickable { anchors.fill: parent - anchors.topMargin: Theme.spacingL clip: true contentHeight: mainColumn.height contentWidth: width diff --git a/quickshell/Modules/Settings/PluginsTab.qml b/quickshell/Modules/Settings/PluginsTab.qml index 0da2d674..7e993692 100644 --- a/quickshell/Modules/Settings/PluginsTab.qml +++ b/quickshell/Modules/Settings/PluginsTab.qml @@ -19,7 +19,6 @@ FocusScope { DankFlickable { anchors.fill: parent - anchors.topMargin: Theme.spacingL clip: true contentHeight: mainColumn.height contentWidth: width diff --git a/quickshell/Modules/Settings/ThemeColorsTab.qml b/quickshell/Modules/Settings/ThemeColorsTab.qml index 499ec05c..3efd5d74 100644 --- a/quickshell/Modules/Settings/ThemeColorsTab.qml +++ b/quickshell/Modules/Settings/ThemeColorsTab.qml @@ -64,7 +64,6 @@ Item { DankFlickable { anchors.fill: parent - anchors.topMargin: Theme.spacingL clip: true contentHeight: mainColumn.height contentWidth: width diff --git a/quickshell/Modules/Settings/TimeWeatherTab.qml b/quickshell/Modules/Settings/TimeWeatherTab.qml index c366e220..93f47321 100644 --- a/quickshell/Modules/Settings/TimeWeatherTab.qml +++ b/quickshell/Modules/Settings/TimeWeatherTab.qml @@ -11,7 +11,6 @@ Item { DankFlickable { anchors.fill: parent - anchors.topMargin: Theme.spacingL clip: true contentHeight: mainColumn.height contentWidth: width diff --git a/quickshell/Modules/Settings/WidgetTweaksTab.qml b/quickshell/Modules/Settings/WidgetTweaksTab.qml index ee7aff83..2f196962 100644 --- a/quickshell/Modules/Settings/WidgetTweaksTab.qml +++ b/quickshell/Modules/Settings/WidgetTweaksTab.qml @@ -9,7 +9,6 @@ Item { DankFlickable { anchors.fill: parent - anchors.topMargin: Theme.spacingL clip: true contentHeight: mainColumn.height contentWidth: width diff --git a/quickshell/Services/DgopService.qml b/quickshell/Services/DgopService.qml index 2149e299..4448b7ca 100644 --- a/quickshell/Services/DgopService.qml +++ b/quickshell/Services/DgopService.qml @@ -228,10 +228,15 @@ Singleton { function initializeGpuMetadata() { if (!dgopAvailable) return - // Load GPU metadata once at startup for basic info gpuInitProcess.running = true } + function initializeSystemMetadata() { + if (!dgopAvailable) + return + systemInitProcess.running = true + } + function buildDgopCommand() { const cmd = ["dgop", "meta", "--json"] @@ -450,14 +455,14 @@ Singleton { bootTime = sys.boottime || "" } - if (data.hardware) { - const hw = data.hardware - hostname = hw.hostname || "" - kernelVersion = hw.kernel || "" - distribution = hw.distro || "" - architecture = hw.arch || "" - motherboard = (hw.bios && hw.bios.motherboard) || "" - biosVersion = (hw.bios && hw.bios.version) || "" + const hwData = data.hardware || (data.hostname || data.kernel || data.distro || data.arch) ? data : null + if (hwData) { + hostname = hwData.hostname || "" + kernelVersion = hwData.kernel || "" + distribution = hwData.distro || "" + architecture = hwData.arch || "" + motherboard = (hwData.bios && hwData.bios.motherboard) || "" + biosVersion = (hwData.bios && hwData.bios.version) || "" } isUpdating = false @@ -629,6 +634,29 @@ Singleton { } } + Process { + id: systemInitProcess + command: ["dgop", "hardware", "--json"] + running: false + onExited: exitCode => { + if (exitCode !== 0) { + console.warn("System init process failed with exit code:", exitCode) + } + } + stdout: StdioCollector { + onStreamFinished: { + if (text.trim()) { + try { + const data = JSON.parse(text.trim()) + parseData(data) + } catch (e) { + console.warn("Failed to parse system init JSON:", e) + } + } + } + } + } + Process { id: dgopCheckProcess command: ["which", "dgop"] @@ -637,12 +665,11 @@ Singleton { dgopAvailable = (exitCode === 0) if (dgopAvailable) { initializeGpuMetadata() - // Load persisted GPU PCI IDs from session state + initializeSystemMetadata() if (SessionData.enabledGpuPciIds && SessionData.enabledGpuPciIds.length > 0) { for (const pciId of SessionData.enabledGpuPciIds) { addGpuPciId(pciId) } - // Trigger update if we already have active modules if (refCount > 0 && enabledModules.length > 0) { updateAllStats() }