From 8e3e60a0b1810500618558be491e2b45814d95de Mon Sep 17 00:00:00 2001 From: Kainoa Kanter Date: Thu, 2 Oct 2025 14:46:41 -0700 Subject: [PATCH 1/6] fix: never scroll on pause --- Modules/Bar/Widgets/MediaMini.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/Bar/Widgets/MediaMini.qml b/Modules/Bar/Widgets/MediaMini.qml index 5fe8d42c..75fdfed9 100644 --- a/Modules/Bar/Widgets/MediaMini.qml +++ b/Modules/Bar/Widgets/MediaMini.qml @@ -208,7 +208,7 @@ Item { property bool isResetting: false property real textWidth: fullTitleMetrics.contentWidth property real containerWidth: 0 - property bool needsScrolling: textWidth > containerWidth + property bool needsScrolling: textWidth > containerWidth && MediaService.isPlaying // Timer for "always" mode with delay Timer { From 8303452525333c14914d92ee9f625f415b9de65d Mon Sep 17 00:00:00 2001 From: Kainoa Kanter Date: Fri, 3 Oct 2025 11:28:21 -0700 Subject: [PATCH 2/6] create zed settings file for qmlfmt --- .zed/settings.json | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .zed/settings.json diff --git a/.zed/settings.json b/.zed/settings.json new file mode 100644 index 00000000..ce0e0856 --- /dev/null +++ b/.zed/settings.json @@ -0,0 +1,22 @@ +{ + "languages": { + "QML": { + "format_on_save": "on", + "formatter": { + "external": { + "command": "qmlfmt", + "arguments": [ + "-e", + "-b", + "360", + "-t", + "2", + "-i", + "2", + "{buffer_path}" + ] + } + } + } + } +} From d6da01859114e197ef75f78618abf49590d21fcb Mon Sep 17 00:00:00 2001 From: Ly-sec Date: Sat, 4 Oct 2025 00:30:08 +0200 Subject: [PATCH 3/6] MatugenTemplates: add #409 again --- Services/MatugenTemplates.qml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Services/MatugenTemplates.qml b/Services/MatugenTemplates.qml index c285896e..bbf3a711 100644 --- a/Services/MatugenTemplates.qml +++ b/Services/MatugenTemplates.qml @@ -14,6 +14,7 @@ Singleton { // Build the base TOML using current settings function buildConfigToml() { var lines = [] + var mode = Settings.data.colorSchemes.darkMode ? "dark" : "light"; lines.push("[config]") if (Settings.data.colorSchemes.useWallpaperColors) { @@ -51,10 +52,12 @@ Singleton { lines.push("\n[templates.gtk3]") lines.push('input_path = "' + Quickshell.shellDir + '/Assets/MatugenTemplates/gtk.css"') lines.push('output_path = "~/.config/gtk-3.0/gtk.css"') + lines.push("post_hook = 'gsettings set org.gnome.desktop.interface color-scheme prefer-" + mode + "'"); lines.push("\n[templates.gtk4]") lines.push('input_path = "' + Quickshell.shellDir + '/Assets/MatugenTemplates/gtk.css"') lines.push('output_path = "~/.config/gtk-4.0/gtk.css"') + lines.push("post_hook = 'gsettings set org.gnome.desktop.interface color-scheme prefer-" + mode + "'"); } if (Settings.data.templates.qt) { From 2b39d1a17ab83bbaf39ba23d9b0fe191f9116166 Mon Sep 17 00:00:00 2001 From: Ly-sec Date: Sat, 4 Oct 2025 00:38:34 +0200 Subject: [PATCH 4/6] Launcher: resolve odd flickering on pin/unpin button hover (fixes #406) --- Modules/Launcher/Launcher.qml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Modules/Launcher/Launcher.qml b/Modules/Launcher/Launcher.qml index 195512fd..72e1f730 100644 --- a/Modules/Launcher/Launcher.qml +++ b/Modules/Launcher/Launcher.qml @@ -511,6 +511,9 @@ NPanel { z: -1 hoverEnabled: true cursorShape: Qt.PointingHandCursor + onEntered: { + selectedIndex = index + } onClicked: mouse => { if (mouse.button === Qt.LeftButton) { selectedIndex = index From a9965583cdb4855b968e02d37f658e5264f41866 Mon Sep 17 00:00:00 2001 From: Ly-sec Date: Sat, 4 Oct 2025 01:00:26 +0200 Subject: [PATCH 5/6] NotificationHistoryPanel: add expand option for long notification text (fixes #408) --- Assets/Translations/de.json | 3 +- Assets/Translations/en.json | 3 +- Assets/Translations/es.json | 3 +- Assets/Translations/fr.json | 3 +- Assets/Translations/pt.json | 3 +- Assets/Translations/zh-CN.json | 3 +- .../Notification/NotificationHistoryPanel.qml | 63 ++++++++++++++++++- Services/MatugenTemplates.qml | 6 +- 8 files changed, 76 insertions(+), 11 deletions(-) diff --git a/Assets/Translations/de.json b/Assets/Translations/de.json index ce3cb820..51f14180 100644 --- a/Assets/Translations/de.json +++ b/Assets/Translations/de.json @@ -1056,7 +1056,8 @@ "panel": { "title": "Benachrichtigungen", "no-notifications": "Keine Benachrichtigungen", - "description": "Ihre Benachrichtigungen werden hier angezeigt, sobald sie eintreffen." + "description": "Ihre Benachrichtigungen werden hier angezeigt, sobald sie eintreffen.", + "click-to-expand": "Zum Erweitern klicken" } }, "wallpaper": { diff --git a/Assets/Translations/en.json b/Assets/Translations/en.json index bd8f124b..7c9ba114 100644 --- a/Assets/Translations/en.json +++ b/Assets/Translations/en.json @@ -1037,7 +1037,8 @@ "panel": { "title": "Notifications", "no-notifications": "No notifications", - "description": "Your notifications will show up here as they arrive." + "description": "Your notifications will show up here as they arrive.", + "click-to-expand": "Click to expand" } }, "wallpaper": { diff --git a/Assets/Translations/es.json b/Assets/Translations/es.json index 303bf206..2d82ae6b 100644 --- a/Assets/Translations/es.json +++ b/Assets/Translations/es.json @@ -1035,7 +1035,8 @@ "panel": { "title": "Notificaciones", "no-notifications": "No hay notificaciones", - "description": "Tus notificaciones aparecerán aquí a medida que lleguen." + "description": "Tus notificaciones aparecerán aquí a medida que lleguen.", + "click-to-expand": "Haz clic para expandir" } }, "wallpaper": { diff --git a/Assets/Translations/fr.json b/Assets/Translations/fr.json index 57698e94..31cda752 100644 --- a/Assets/Translations/fr.json +++ b/Assets/Translations/fr.json @@ -1035,7 +1035,8 @@ "panel": { "title": "Notifications", "no-notifications": "Aucune notification", - "description": "Vos notifications apparaîtront ici à mesure qu'elles arriveront." + "description": "Vos notifications apparaîtront ici à mesure qu'elles arriveront.", + "click-to-expand": "Cliquez pour développer" } }, "wallpaper": { diff --git a/Assets/Translations/pt.json b/Assets/Translations/pt.json index b9703420..7268ac19 100644 --- a/Assets/Translations/pt.json +++ b/Assets/Translations/pt.json @@ -1035,7 +1035,8 @@ "panel": { "title": "Notificações", "no-notifications": "Nenhuma notificação", - "description": "Suas notificações aparecerão aqui assim que chegarem." + "description": "Suas notificações aparecerão aqui assim que chegarem.", + "click-to-expand": "Clique para expandir" } }, "wallpaper": { diff --git a/Assets/Translations/zh-CN.json b/Assets/Translations/zh-CN.json index 76ab1337..ccc2954a 100644 --- a/Assets/Translations/zh-CN.json +++ b/Assets/Translations/zh-CN.json @@ -1035,7 +1035,8 @@ "panel": { "title": "通知", "no-notifications": "无通知", - "description": "您的通知将在到达时显示在此处。" + "description": "您的通知将在到达时显示在此处。", + "click-to-expand": "点击展开" } }, "wallpaper": { diff --git a/Modules/Notification/NotificationHistoryPanel.qml b/Modules/Notification/NotificationHistoryPanel.qml index 3bdcdbd4..59894e55 100644 --- a/Modules/Notification/NotificationHistoryPanel.qml +++ b/Modules/Notification/NotificationHistoryPanel.qml @@ -129,8 +129,12 @@ NPanel { boundsBehavior: Flickable.StopAtBounds visible: NotificationService.historyList.count > 0 + // Track which notification is expanded + property string expandedId: "" + delegate: Rectangle { property string notificationId: model.id + property bool isExpanded: notificationList.expandedId === notificationId width: notificationList.width height: notificationLayout.implicitHeight + (Style.marginM * scaling * 2) @@ -139,6 +143,13 @@ NPanel { border.color: Qt.alpha(Color.mOutline, Style.opacityMedium) border.width: Math.max(1, Style.borderS * scaling) + Behavior on height { + NumberAnimation { + duration: Style.animationNormal + easing.type: Easing.InOutQuad + } + } + // Smooth color transition on hover Behavior on color { ColorAnimation { @@ -146,6 +157,21 @@ NPanel { } } + // Click to expand/collapse + MouseArea { + anchors.fill: parent + // Don't capture clicks on the delete button + anchors.rightMargin: 48 * scaling + onClicked: { + if (notificationList.expandedId === notificationId) { + notificationList.expandedId = "" + } else { + notificationList.expandedId = notificationId + } + } + cursorShape: Qt.PointingHandCursor + } + RowLayout { id: notificationLayout anchors.fill: parent @@ -174,6 +200,7 @@ NPanel { Layout.fillWidth: true Layout.alignment: Qt.AlignTop spacing: Style.marginXS * scaling + Layout.rightMargin: -(Style.marginM + Style.baseWidgetSize * 0.6) * scaling // Header row with app name and timestamp RowLayout { @@ -216,6 +243,7 @@ NPanel { // Summary NText { + id: summaryText text: model.summary || I18n.tr("general.no-summary") pointSize: Style.fontSizeM * scaling font.weight: Font.Medium @@ -223,22 +251,53 @@ NPanel { textFormat: Text.PlainText wrapMode: Text.Wrap Layout.fillWidth: true - maximumLineCount: 2 + maximumLineCount: isExpanded ? 999 : 2 elide: Text.ElideRight } // Body NText { + id: bodyText text: model.body || "" pointSize: Style.fontSizeS * scaling color: Color.mOnSurfaceVariant textFormat: Text.PlainText wrapMode: Text.Wrap Layout.fillWidth: true - maximumLineCount: 3 + maximumLineCount: isExpanded ? 999 : 3 elide: Text.ElideRight visible: text.length > 0 } + + // Spacer for expand indicator + Item { + Layout.fillWidth: true + Layout.preferredHeight: (!isExpanded && (summaryText.truncated || bodyText.truncated)) ? (Style.marginS * scaling) : 0 + } + + // Expand indicator + RowLayout { + Layout.fillWidth: true + visible: !isExpanded && (summaryText.truncated || bodyText.truncated) + spacing: Style.marginXS * scaling + + Item { + Layout.fillWidth: true + } + + NText { + text: I18n.tr("notifications.panel.click-to-expand") || "Click to expand" + pointSize: Style.fontSizeXS * scaling + color: Color.mPrimary + font.weight: Font.Medium + } + + NIcon { + icon: "chevron-down" + pointSize: Style.fontSizeS * scaling + color: Color.mPrimary + } + } } // Delete button diff --git a/Services/MatugenTemplates.qml b/Services/MatugenTemplates.qml index bbf3a711..8f091f8d 100644 --- a/Services/MatugenTemplates.qml +++ b/Services/MatugenTemplates.qml @@ -14,7 +14,7 @@ Singleton { // Build the base TOML using current settings function buildConfigToml() { var lines = [] - var mode = Settings.data.colorSchemes.darkMode ? "dark" : "light"; + var mode = Settings.data.colorSchemes.darkMode ? "dark" : "light" lines.push("[config]") if (Settings.data.colorSchemes.useWallpaperColors) { @@ -52,12 +52,12 @@ Singleton { lines.push("\n[templates.gtk3]") lines.push('input_path = "' + Quickshell.shellDir + '/Assets/MatugenTemplates/gtk.css"') lines.push('output_path = "~/.config/gtk-3.0/gtk.css"') - lines.push("post_hook = 'gsettings set org.gnome.desktop.interface color-scheme prefer-" + mode + "'"); + lines.push("post_hook = 'gsettings set org.gnome.desktop.interface color-scheme prefer-" + mode + "'") lines.push("\n[templates.gtk4]") lines.push('input_path = "' + Quickshell.shellDir + '/Assets/MatugenTemplates/gtk.css"') lines.push('output_path = "~/.config/gtk-4.0/gtk.css"') - lines.push("post_hook = 'gsettings set org.gnome.desktop.interface color-scheme prefer-" + mode + "'"); + lines.push("post_hook = 'gsettings set org.gnome.desktop.interface color-scheme prefer-" + mode + "'") } if (Settings.data.templates.qt) { From 56ac91e7914962ebafc966cc8571a61cb139e8fb Mon Sep 17 00:00:00 2001 From: Ly-sec Date: Sat, 4 Oct 2025 01:01:31 +0200 Subject: [PATCH 6/6] NotificationService: remove redundant logging --- Services/NotificationService.qml | 1 - 1 file changed, 1 deletion(-) diff --git a/Services/NotificationService.qml b/Services/NotificationService.qml index aab8b7de..5f849b47 100644 --- a/Services/NotificationService.qml +++ b/Services/NotificationService.qml @@ -47,7 +47,6 @@ Singleton { const req = imageQueue[0] if (status === Image.Ready) { - Logger.log("Notification", "Caching image to:", req.dest) Quickshell.execDetached(["mkdir", "-p", Settings.cacheDirImagesNotifications]) grabToImage(result => { if (result.saveToFile(req.dest))