From 150f3629987fed18dd4d9e9c67495d7237e6c02e Mon Sep 17 00:00:00 2001 From: rope Date: Wed, 17 Jun 2026 14:43:09 +0100 Subject: [PATCH] =?UTF-8?q?quickshell:=20restack=20media=20card=20?= =?UTF-8?q?=E2=80=94=20art+controls=20row,=20then=20title/artist/volume?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 --- settings/quickshell.nix | 61 +++++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/settings/quickshell.nix b/settings/quickshell.nix index fd1cf28..2eb6ee1 100644 --- a/settings/quickshell.nix +++ b/settings/quickshell.nix @@ -2424,14 +2424,16 @@ in anchors.margins: 8 spacing: 8 - Row { + // Album art + transport controls share + // the top row, so the art can be large. + Item { width: parent.width - height: 48 - spacing: 10 + height: 64 Rectangle { - width: 48; height: 48 + width: 64; height: 64 radius: Theme.radiusSmall + anchors.left: parent.left anchors.verticalCenter: parent.verticalCenter color: Theme.base02 clip: true @@ -2440,7 +2442,7 @@ in visible: albumArt.status !== Image.Ready text: "music_note" color: Theme.base04 - font.pixelSize: 22 + font.pixelSize: 28 } Image { id: albumArt @@ -2450,30 +2452,10 @@ in } } - Column { - width: parent.width - 48 - 10 - 88 - 10 - anchors.verticalCenter: parent.verticalCenter - spacing: 2 - SText { - width: parent.width - text: mediaCard.modelData.trackTitle - color: Theme.base05 - font.pixelSize: 12 - font.weight: Font.Medium - elide: Text.ElideRight - } - SText { - width: parent.width - text: mediaCard.modelData.trackArtist - color: Theme.base04 - font.pixelSize: 11 - elide: Text.ElideRight - } - } - Row { + anchors.right: parent.right anchors.verticalCenter: parent.verticalCenter - spacing: 2 + spacing: 4 Repeater { model: [ { glyph: "skip_previous", act: "prev" }, @@ -2483,7 +2465,7 @@ in HoverRow { id: mediaBtn required property var modelData - width: 28; height: 28; radius: 14 + width: 36; height: 36; radius: 18 onClicked: { let p = mediaCard.modelData; if (!p) return; @@ -2495,13 +2477,34 @@ in anchors.centerIn: parent text: mediaBtn.modelData.glyph color: Theme.base05 - font.pixelSize: 18 + font.pixelSize: 24 } } } } } + // Title, then artist, stacked below. + Column { + width: parent.width + spacing: 2 + SText { + width: parent.width + text: mediaCard.modelData.trackTitle + color: Theme.base05 + font.pixelSize: 13 + font.weight: Font.Medium + elide: Text.ElideRight + } + SText { + width: parent.width + text: mediaCard.modelData.trackArtist + color: Theme.base04 + font.pixelSize: 11 + elide: Text.ElideRight + } + } + // Per-source volume — same per-app path // as the volume widget. Shown when the // player's Pipewire stream is matched.