summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEzekiel Gonzales <141341590+notsoeazy@users.noreply.github.com>2026-03-15 15:55:55 +0800
committerGitHub <noreply@github.com>2026-03-15 18:55:55 +1100
commitb68f0bae14227a4d65303654fef4801c76f57ac0 (patch)
tree51ccf89eb184f271c0d243d6a6e077969b68736b
parentbar/osicon: fix blurriness (#1271) (diff)
downloadcaelestia-shell-b68f0bae14227a4d65303654fef4801c76f57ac0.tar.gz
caelestia-shell-b68f0bae14227a4d65303654fef4801c76f57ac0.tar.bz2
caelestia-shell-b68f0bae14227a4d65303654fef4801c76f57ac0.zip
bar/activewindow: add compact option (#1201)
Co-authored-by: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>
-rw-r--r--README.md4
-rw-r--r--config/BarConfig.qml1
-rw-r--r--config/Config.qml4
-rw-r--r--modules/bar/components/ActiveWindow.qml14
-rw-r--r--modules/controlcenter/taskbar/TaskbarPane.qml70
5 files changed, 73 insertions, 20 deletions
diff --git a/README.md b/README.md
index 6518815..0b0ec20 100644
--- a/README.md
+++ b/README.md
@@ -331,6 +331,10 @@ default, you must create it manually.
}
},
"bar": {
+ "activeWindow": {
+ "compact": false,
+ "inverted": false
+ },
"clock": {
"showIcon": true
},
diff --git a/config/BarConfig.qml b/config/BarConfig.qml
index 62d6b17..6254d94 100644
--- a/config/BarConfig.qml
+++ b/config/BarConfig.qml
@@ -82,6 +82,7 @@ JsonObject {
}
component ActiveWindow: JsonObject {
+ property bool compact: false
property bool inverted: false
}
diff --git a/config/Config.qml b/config/Config.qml
index 07530fc..2a261e7 100644
--- a/config/Config.qml
+++ b/config/Config.qml
@@ -178,6 +178,10 @@ Singleton {
capitalisation: bar.workspaces.capitalisation,
specialWorkspaceIcons: bar.workspaces.specialWorkspaceIcons
},
+ activeWindow: {
+ compact: bar.activeWindow.compact,
+ inverted: bar.activeWindow.inverted
+ },
tray: {
background: bar.tray.background,
recolour: bar.tray.recolour,
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)
+ }))
}
}
}