From b68f0bae14227a4d65303654fef4801c76f57ac0 Mon Sep 17 00:00:00 2001 From: Ezekiel Gonzales <141341590+notsoeazy@users.noreply.github.com> Date: Sun, 15 Mar 2026 15:55:55 +0800 Subject: bar/activewindow: add compact option (#1201) Co-authored-by: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> --- modules/bar/components/ActiveWindow.qml | 14 +++++- modules/controlcenter/taskbar/TaskbarPane.qml | 70 +++++++++++++++++++-------- 2 files changed, 64 insertions(+), 20 deletions(-) (limited to 'modules') diff --git a/modules/bar/components/ActiveWindow.qml b/modules/bar/components/ActiveWindow.qml index 0c9b21e..b21c525 100644 --- a/modules/bar/components/ActiveWindow.qml +++ b/modules/bar/components/ActiveWindow.qml @@ -13,6 +13,18 @@ Item { required property Brightness.Monitor monitor property color colour: Colours.palette.m3primary + readonly property string windowTitle: Hypr.activeToplevel?.title ?? qsTr("Desktop") + + function getCompactName() { + if (!root.windowTitle || root.windowTitle === qsTr("Desktop")) + return qsTr("Desktop"); + // " - " (standard hyphen), " — " (em dash), " – " (en dash) + const parts = root.windowTitle.split(/\s+[\-\u2013\u2014]\s+/); + if (parts.length > 1) + return parts[parts.length - 1].trim(); + return root.windowTitle; + } + readonly property int maxHeight: { const otherModules = bar.children.filter(c => c.id && c.item !== this && c.id !== "spacer"); const otherHeight = otherModules.reduce((acc, curr) => acc + (curr.item.nonAnimHeight ?? curr.height), 0); @@ -46,7 +58,7 @@ Item { TextMetrics { id: metrics - text: Hypr.activeToplevel?.title ?? qsTr("Desktop") + text: Config.bar.activeWindow.compact ? root.getCompactName() : root.windowTitle font.pointSize: Appearance.font.size.smaller font.family: Appearance.font.family.mono elide: Qt.ElideRight diff --git a/modules/controlcenter/taskbar/TaskbarPane.qml b/modules/controlcenter/taskbar/TaskbarPane.qml index 6c6b5e5..ba65c1e 100644 --- a/modules/controlcenter/taskbar/TaskbarPane.qml +++ b/modules/controlcenter/taskbar/TaskbarPane.qml @@ -19,6 +19,8 @@ Item { required property Session session + property bool activeWindowCompact: Config.bar.activeWindow.compact ?? false + property bool activeWindowInverted: Config.bar.activeWindow.inverted ?? false property bool clockShowIcon: Config.bar.clock.showIcon ?? true property bool persistent: Config.bar.persistent ?? true property bool showOnHover: Config.bar.showOnHover ?? true @@ -65,6 +67,8 @@ Item { } function saveConfig(entryIndex, entryEnabled) { + Config.bar.activeWindow.compact = root.activeWindowCompact; + Config.bar.activeWindow.inverted = root.activeWindowInverted; Config.bar.clock.showIcon = root.clockShowIcon; Config.bar.persistent = root.persistent; Config.bar.showOnHover = root.showOnHover; @@ -595,6 +599,34 @@ Item { } } } + + SectionContainer { + Layout.fillWidth: true + alignTop: true + + StyledText { + text: qsTr("Active window") + font.pointSize: Appearance.font.size.normal + } + + SwitchRow { + label: qsTr("Compact") + checked: root.activeWindowCompact + onToggled: checked => { + root.activeWindowCompact = checked; + root.saveConfig(); + } + } + + SwitchRow { + label: qsTr("Inverted") + checked: root.activeWindowInverted + onToggled: checked => { + root.activeWindowInverted = checked; + root.saveConfig(); + } + } + } } ColumnLayout { @@ -696,25 +728,25 @@ Item { rows: Math.ceil(root.monitorNames.length / 3) options: root.monitorNames.map(e => ({ - label: qsTr(e), - propertyName: `monitor${e}`, - onToggled: function (_) { - // if the given monitor is in the excluded list, it should be added back - let addedBack = excludedScreens.includes(e) - if (addedBack) { - const index = excludedScreens.indexOf(e); - if (index !== -1) { - excludedScreens.splice(index, 1); - } - } else { - if (!excludedScreens.includes(e)) { - excludedScreens.push(e); - } - } - root.saveConfig(); - }, - state: !Strings.testRegexList(root.excludedScreens, e) - })) + label: qsTr(e), + propertyName: `monitor${e}`, + onToggled: function (_) { + // if the given monitor is in the excluded list, it should be added back + let addedBack = excludedScreens.includes(e); + if (addedBack) { + const index = excludedScreens.indexOf(e); + if (index !== -1) { + excludedScreens.splice(index, 1); + } + } else { + if (!excludedScreens.includes(e)) { + excludedScreens.push(e); + } + } + root.saveConfig(); + }, + state: !Strings.testRegexList(root.excludedScreens, e) + })) } } } -- cgit v1.2.3-freya