From 4551a63c3299758bc222d1bf7e964db2763a05f8 Mon Sep 17 00:00:00 2001 From: ruinivist Date: Sat, 23 May 2026 13:18:56 +0000 Subject: [PATCH] feat: add configurable label and text sizing controls --- README.md | 1 + package/contents/config/main.xml | 12 ++++++++ package/contents/ui/Representation.qml | 14 +++++++-- package/contents/ui/configGeneral.qml | 41 +++++++++++++++++++++----- package/contents/ui/main.qml | 13 ++++++++ 5 files changed, 71 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 5e124e6..85e4270 100644 --- a/README.md +++ b/README.md @@ -97,6 +97,7 @@ make hooks-install The widget appearance can be tuned from the Plasma widget settings, including: - custom multiline label text +- independent label, title, and artist font sizes - title/artist vertical spacing - NOW/PLAYING label vertical spacing - separator gap from labels diff --git a/package/contents/config/main.xml b/package/contents/config/main.xml index c0316fd..0be466a 100644 --- a/package/contents/config/main.xml +++ b/package/contents/config/main.xml @@ -13,6 +13,18 @@ Noto Sans + + + 16 + + + + 28 + + + + 26 + auto diff --git a/package/contents/ui/Representation.qml b/package/contents/ui/Representation.qml index 3624dab..a9ebd14 100644 --- a/package/contents/ui/Representation.qml +++ b/package/contents/ui/Representation.qml @@ -8,6 +8,9 @@ MouseArea { id: mediaControlsMouseArea property string configuredFontFamily: "Noto Sans" + property int configuredLabelFontSize: 16 + property int configuredTitleFontSize: 28 + property int configuredArtistFontSize: 26 property string configuredLabelVisibilityMode: "auto" property string configuredLabelPlacement: "left" property string configuredLabelText: "NOW\nPLAYING" @@ -31,6 +34,9 @@ MouseArea { readonly property string effectiveBackgroundColor: configuredBackgroundColor || "transparent" readonly property int effectiveBackgroundRadius: Math.max(0, configuredBackgroundRadius) readonly property string effectiveForegroundColor: configuredForegroundColor || "white" + readonly property int effectiveLabelFontSize: Math.max(1, configuredLabelFontSize) + readonly property int effectiveTitleFontSize: Math.max(1, configuredTitleFontSize) + readonly property int effectiveArtistFontSize: Math.max(1, configuredArtistFontSize) readonly property int effectiveTrackTextVerticalSpacing: configuredTrackTextVerticalSpacing readonly property int effectiveLabelVerticalSpacing: configuredLabelVerticalSpacing readonly property int effectiveSeparatorGapLabel: Math.max(0, configuredSeparatorGapLabel) @@ -115,6 +121,7 @@ MouseArea { id: nowPlayingLabels Layout.alignment: mediaControlsMouseArea.labelsOnRight ? Qt.AlignLeft : Qt.AlignRight + Layout.fillWidth: true spacing: mediaControlsMouseArea.effectiveLabelVerticalSpacing visible: mediaControlsMouseArea.nowPlayingLabelsVisible @@ -125,11 +132,12 @@ MouseArea { required property string modelData Layout.alignment: mediaControlsMouseArea.labelsOnRight ? Qt.AlignLeft : Qt.AlignRight + Layout.fillWidth: true shadowEnabled: mediaControlsMouseArea.configuredTextShadowEnabled text: modelData lineHeight: 0.8 font.bold: true - font.pixelSize: 16 + font.pixelSize: mediaControlsMouseArea.effectiveLabelFontSize font.family: mediaControlsMouseArea.configuredFontFamily color: mediaControlsMouseArea.effectiveForegroundColor horizontalAlignment: mediaControlsMouseArea.labelsOnRight ? Text.AlignLeft : Text.AlignRight @@ -256,7 +264,7 @@ MouseArea { Layout.fillWidth: true shadowEnabled: mediaControlsMouseArea.configuredTextShadowEnabled text: player.title - font.pixelSize: 28 + font.pixelSize: mediaControlsMouseArea.effectiveTitleFontSize font.bold: true font.family: mediaControlsMouseArea.configuredFontFamily color: mediaControlsMouseArea.effectiveForegroundColor @@ -270,7 +278,7 @@ MouseArea { Layout.alignment: mediaControlsMouseArea.labelsOnRight ? Qt.AlignRight : Qt.AlignLeft shadowEnabled: mediaControlsMouseArea.configuredTextShadowEnabled text: player.artists - font.pixelSize: 26 + font.pixelSize: mediaControlsMouseArea.effectiveArtistFontSize font.family: mediaControlsMouseArea.configuredFontFamily color: mediaControlsMouseArea.effectiveForegroundColor lineHeight: 0.8 diff --git a/package/contents/ui/configGeneral.qml b/package/contents/ui/configGeneral.qml index 1bc3423..fd1496a 100644 --- a/package/contents/ui/configGeneral.qml +++ b/package/contents/ui/configGeneral.qml @@ -10,6 +10,9 @@ KCM.SimpleKCM { property alias cfg_opacity: opacitySpinBox.value property string cfg_fontFamily + property alias cfg_labelFontSize: labelFontSizeSpinBox.value + property alias cfg_titleFontSize: titleFontSizeSpinBox.value + property alias cfg_artistFontSize: artistFontSizeSpinBox.value property string cfg_labelVisibilityMode property string cfg_labelPlacement property alias cfg_labelText: labelTextArea.text @@ -106,6 +109,30 @@ KCM.SimpleKCM { onActivated: configRoot.cfg_fontFamily = currentText } + QQC2.SpinBox { + id: labelFontSizeSpinBox + + Kirigami.FormData.label: i18n("Label font size:") + from: 8 + to: 72 + } + + QQC2.SpinBox { + id: titleFontSizeSpinBox + + Kirigami.FormData.label: i18n("Title font size:") + from: 8 + to: 96 + } + + QQC2.SpinBox { + id: artistFontSizeSpinBox + + Kirigami.FormData.label: i18n("Artist font size:") + from: 8 + to: 96 + } + QQC2.ComboBox { id: labelVisibilityModeComboBox @@ -206,23 +233,23 @@ KCM.SimpleKCM { QQC2.SpinBox { id: trackTextVerticalSpacingSpinBox - Kirigami.FormData.label: i18n("Title/artist spacing:") - from: -12 - to: 24 + Kirigami.FormData.label: i18n("Title/artist spacing (negatives possible):") + from: -200 + to: 200 } QQC2.SpinBox { id: labelVerticalSpacingSpinBox - Kirigami.FormData.label: i18n("NOW/PLAYING spacing:") - from: -12 - to: 24 + Kirigami.FormData.label: i18n("Label line spacing (negatives possible):") + from: -200 + to: 200 } QQC2.SpinBox { id: separatorGapLabelSpinBox - Kirigami.FormData.label: i18n("Separator gap from labels:") + Kirigami.FormData.label: i18n("Separator gap from label:") from: 0 to: 24 } diff --git a/package/contents/ui/main.qml b/package/contents/ui/main.qml index 78d468f..4da6a0e 100644 --- a/package/contents/ui/main.qml +++ b/package/contents/ui/main.qml @@ -14,8 +14,15 @@ PlasmoidItem { // qmllint disable missing-property property string configuredFontFamily: plasmoid.configuration.fontFamily // qmllint disable missing-property + property int configuredLabelFontSize: plasmoid.configuration.labelFontSize + // qmllint disable missing-property + property int configuredTitleFontSize: plasmoid.configuration.titleFontSize + // qmllint disable missing-property + property int configuredArtistFontSize: plasmoid.configuration.artistFontSize + // qmllint disable missing-property property string configuredLabelVisibilityMode: plasmoid.configuration.labelVisibilityMode // qmllint disable missing-property + // qmllint disable missing-property property string configuredLabelPlacement: plasmoid.configuration.labelPlacement // qmllint disable missing-property property string configuredLabelText: plasmoid.configuration.labelText @@ -66,6 +73,9 @@ PlasmoidItem { Layout.preferredWidth: root.width Layout.preferredHeight: root.height configuredFontFamily: root.configuredFontFamily + configuredLabelFontSize: root.configuredLabelFontSize + configuredTitleFontSize: root.configuredTitleFontSize + configuredArtistFontSize: root.configuredArtistFontSize configuredLabelVisibilityMode: root.configuredLabelVisibilityMode configuredLabelPlacement: root.configuredLabelPlacement configuredLabelText: root.configuredLabelText @@ -87,6 +97,9 @@ PlasmoidItem { Layout.preferredWidth: root.width Layout.preferredHeight: root.height configuredFontFamily: root.configuredFontFamily + configuredLabelFontSize: root.configuredLabelFontSize + configuredTitleFontSize: root.configuredTitleFontSize + configuredArtistFontSize: root.configuredArtistFontSize configuredLabelVisibilityMode: root.configuredLabelVisibilityMode configuredLabelPlacement: root.configuredLabelPlacement configuredLabelText: root.configuredLabelText