From b75342bf933d7076839229d4f4433ae928177b0c Mon Sep 17 00:00:00 2001 From: bbedward Date: Mon, 18 Aug 2025 14:14:23 -0400 Subject: [PATCH] Add FocusedApp compact mode and fix SystemTray to use IconImage --- Common/SettingsData.qml | 6 ++++++ Modules/Settings/WidgetsTab.qml | 6 ++++++ Modules/Settings/WidgetsTabSection.qml | 22 +++++++++++++++++----- Modules/TopBar/FocusedApp.qml | 7 ++++--- Modules/TopBar/SystemTrayBar.qml | 5 +++-- Modules/TopBar/TopBar.qml | 1 - 6 files changed, 36 insertions(+), 11 deletions(-) diff --git a/Common/SettingsData.qml b/Common/SettingsData.qml index 8a66dafe..ae0b5cf1 100644 --- a/Common/SettingsData.qml +++ b/Common/SettingsData.qml @@ -42,6 +42,7 @@ Singleton { property bool showWorkspacePadding: false property var workspaceNameIcons: ({}) property bool clockCompactMode: false + property bool focusedWindowCompactMode: false property string clockDateFormat: "ddd d" property string lockDateFormat: "dddd, MMMM d" property int mediaSize: 1 @@ -329,6 +330,11 @@ Singleton { saveSettings(); } + function setFocusedWindowCompactMode(enabled) { + focusedWindowCompactMode = enabled; + saveSettings(); + } + function setClockDateFormat(format) { clockDateFormat = format; saveSettings(); diff --git a/Modules/Settings/WidgetsTab.qml b/Modules/Settings/WidgetsTab.qml index e1c94970..6dfcb828 100644 --- a/Modules/Settings/WidgetsTab.qml +++ b/Modules/Settings/WidgetsTab.qml @@ -593,6 +593,8 @@ Item { SettingsData.setClockCompactMode(value) } else if (widgetId === "music") { SettingsData.setMediaSize(value) + } else if (widgetId === "focusedWindow") { + SettingsData.setFocusedWindowCompactMode(value) } } onGpuSelectionChanged: (sectionId, widgetIndex, selectedIndex) => { @@ -636,6 +638,8 @@ Item { SettingsData.setClockCompactMode(value) } else if (widgetId === "music") { SettingsData.setMediaSize(value) + } else if (widgetId === "focusedWindow") { + SettingsData.setFocusedWindowCompactMode(value) } } onGpuSelectionChanged: (sectionId, widgetIndex, selectedIndex) => { @@ -679,6 +683,8 @@ Item { SettingsData.setClockCompactMode(value) } else if (widgetId === "music") { SettingsData.setMediaSize(value) + } else if (widgetId === "focusedWindow") { + SettingsData.setFocusedWindowCompactMode(value) } } onGpuSelectionChanged: (sectionId, widgetIndex, selectedIndex) => { diff --git a/Modules/Settings/WidgetsTabSection.qml b/Modules/Settings/WidgetsTabSection.qml index 5c3e972e..07c15a9f 100644 --- a/Modules/Settings/WidgetsTabSection.qml +++ b/Modules/Settings/WidgetsTabSection.qml @@ -238,7 +238,7 @@ Column { Row { spacing: Theme.spacingXS - visible: modelData.id === "clock" || modelData.id === "music" + visible: modelData.id === "clock" || modelData.id === "music" || modelData.id === "focusedWindow" DankActionButton { id: smallSizeButton @@ -279,12 +279,24 @@ Column { DankActionButton { id: compactModeButton buttonSize: 28 - visible: modelData.id === "clock" - iconName: SettingsData.clockCompactMode ? "zoom_out" : "zoom_in" + visible: modelData.id === "clock" || modelData.id === "focusedWindow" + iconName: { + if (modelData.id === "clock") return SettingsData.clockCompactMode ? "zoom_out" : "zoom_in" + if (modelData.id === "focusedWindow") return SettingsData.focusedWindowCompactMode ? "zoom_out" : "zoom_in" + return "zoom_in" + } iconSize: 16 - iconColor: SettingsData.clockCompactMode ? Theme.primary : Theme.outline + iconColor: { + if (modelData.id === "clock") return SettingsData.clockCompactMode ? Theme.primary : Theme.outline + if (modelData.id === "focusedWindow") return SettingsData.focusedWindowCompactMode ? Theme.primary : Theme.outline + return Theme.outline + } onClicked: { - root.compactModeChanged("clock", !SettingsData.clockCompactMode) + if (modelData.id === "clock") { + root.compactModeChanged("clock", !SettingsData.clockCompactMode) + } else if (modelData.id === "focusedWindow") { + root.compactModeChanged("focusedWindow", !SettingsData.focusedWindowCompactMode) + } } } diff --git a/Modules/TopBar/FocusedApp.qml b/Modules/TopBar/FocusedApp.qml index befc2c99..eac4a750 100644 --- a/Modules/TopBar/FocusedApp.qml +++ b/Modules/TopBar/FocusedApp.qml @@ -6,7 +6,7 @@ import qs.Widgets Rectangle { id: root - property bool compactMode: false + property bool compactMode: SettingsData.focusedWindowCompactMode property int availableWidth: 400 readonly property int baseWidth: contentRow.implicitWidth + Theme.spacingS * 2 readonly property int maxNormalWidth: 456 @@ -48,6 +48,7 @@ Rectangle { elide: Text.ElideRight maximumLineCount: 1 width: Math.min(implicitWidth, compactMode ? 80 : 180) + visible: !compactMode && text.length > 0 } StyledText { @@ -55,7 +56,7 @@ Rectangle { font.pixelSize: Theme.fontSizeSmall color: Theme.outlineButton anchors.verticalCenter: parent.verticalCenter - visible: appText.text && titleText.text + visible: !compactMode && appText.text && titleText.text } StyledText { @@ -68,7 +69,7 @@ Rectangle { anchors.verticalCenter: parent.verticalCenter elide: Text.ElideRight maximumLineCount: 1 - width: Math.min(implicitWidth, compactMode ? 180 : 250) + width: Math.min(implicitWidth, compactMode ? 280 : 250) visible: text.length > 0 } } diff --git a/Modules/TopBar/SystemTrayBar.qml b/Modules/TopBar/SystemTrayBar.qml index 1dfd2d0d..cd931076 100644 --- a/Modules/TopBar/SystemTrayBar.qml +++ b/Modules/TopBar/SystemTrayBar.qml @@ -1,6 +1,7 @@ import QtQuick import Quickshell import Quickshell.Services.SystemTray +import Quickshell.Widgets import qs.Common Rectangle { @@ -74,14 +75,14 @@ Rectangle { } } - Image { + IconImage { anchors.centerIn: parent width: 18 height: 18 source: parent.iconSource asynchronous: true smooth: true - fillMode: Image.PreserveAspectFit + mipmap: true } MouseArea { diff --git a/Modules/TopBar/TopBar.qml b/Modules/TopBar/TopBar.qml index 4b057168..6eb20df3 100644 --- a/Modules/TopBar/TopBar.qml +++ b/Modules/TopBar/TopBar.qml @@ -651,7 +651,6 @@ PanelWindow { id: focusedWindowComponent FocusedApp { - compactMode: topBarContent.spacingTight availableWidth: topBarContent.leftToMediaGap } }