feat: add configurable label and text sizing controls

This commit is contained in:
2026-05-23 13:18:56 +00:00
parent 023b869e9c
commit 4551a63c32
5 changed files with 71 additions and 10 deletions
+1
View File
@@ -97,6 +97,7 @@ make hooks-install
The widget appearance can be tuned from the Plasma widget settings, including: The widget appearance can be tuned from the Plasma widget settings, including:
- custom multiline label text - custom multiline label text
- independent label, title, and artist font sizes
- title/artist vertical spacing - title/artist vertical spacing
- NOW/PLAYING label vertical spacing - NOW/PLAYING label vertical spacing
- separator gap from labels - separator gap from labels
+12
View File
@@ -13,6 +13,18 @@
<label>Font family</label> <label>Font family</label>
<default>Noto Sans</default> <default>Noto Sans</default>
</entry> </entry>
<entry name="labelFontSize" type="Int">
<label>Now Playing label font size</label>
<default>16</default>
</entry>
<entry name="titleFontSize" type="Int">
<label>Track title font size</label>
<default>28</default>
</entry>
<entry name="artistFontSize" type="Int">
<label>Track artist font size</label>
<default>26</default>
</entry>
<entry name="labelVisibilityMode" type="String"> <entry name="labelVisibilityMode" type="String">
<label>Now Playing label visibility mode</label> <label>Now Playing label visibility mode</label>
<default>auto</default> <default>auto</default>
+11 -3
View File
@@ -8,6 +8,9 @@ MouseArea {
id: mediaControlsMouseArea id: mediaControlsMouseArea
property string configuredFontFamily: "Noto Sans" property string configuredFontFamily: "Noto Sans"
property int configuredLabelFontSize: 16
property int configuredTitleFontSize: 28
property int configuredArtistFontSize: 26
property string configuredLabelVisibilityMode: "auto" property string configuredLabelVisibilityMode: "auto"
property string configuredLabelPlacement: "left" property string configuredLabelPlacement: "left"
property string configuredLabelText: "NOW\nPLAYING" property string configuredLabelText: "NOW\nPLAYING"
@@ -31,6 +34,9 @@ MouseArea {
readonly property string effectiveBackgroundColor: configuredBackgroundColor || "transparent" readonly property string effectiveBackgroundColor: configuredBackgroundColor || "transparent"
readonly property int effectiveBackgroundRadius: Math.max(0, configuredBackgroundRadius) readonly property int effectiveBackgroundRadius: Math.max(0, configuredBackgroundRadius)
readonly property string effectiveForegroundColor: configuredForegroundColor || "white" 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 effectiveTrackTextVerticalSpacing: configuredTrackTextVerticalSpacing
readonly property int effectiveLabelVerticalSpacing: configuredLabelVerticalSpacing readonly property int effectiveLabelVerticalSpacing: configuredLabelVerticalSpacing
readonly property int effectiveSeparatorGapLabel: Math.max(0, configuredSeparatorGapLabel) readonly property int effectiveSeparatorGapLabel: Math.max(0, configuredSeparatorGapLabel)
@@ -115,6 +121,7 @@ MouseArea {
id: nowPlayingLabels id: nowPlayingLabels
Layout.alignment: mediaControlsMouseArea.labelsOnRight ? Qt.AlignLeft : Qt.AlignRight Layout.alignment: mediaControlsMouseArea.labelsOnRight ? Qt.AlignLeft : Qt.AlignRight
Layout.fillWidth: true
spacing: mediaControlsMouseArea.effectiveLabelVerticalSpacing spacing: mediaControlsMouseArea.effectiveLabelVerticalSpacing
visible: mediaControlsMouseArea.nowPlayingLabelsVisible visible: mediaControlsMouseArea.nowPlayingLabelsVisible
@@ -125,11 +132,12 @@ MouseArea {
required property string modelData required property string modelData
Layout.alignment: mediaControlsMouseArea.labelsOnRight ? Qt.AlignLeft : Qt.AlignRight Layout.alignment: mediaControlsMouseArea.labelsOnRight ? Qt.AlignLeft : Qt.AlignRight
Layout.fillWidth: true
shadowEnabled: mediaControlsMouseArea.configuredTextShadowEnabled shadowEnabled: mediaControlsMouseArea.configuredTextShadowEnabled
text: modelData text: modelData
lineHeight: 0.8 lineHeight: 0.8
font.bold: true font.bold: true
font.pixelSize: 16 font.pixelSize: mediaControlsMouseArea.effectiveLabelFontSize
font.family: mediaControlsMouseArea.configuredFontFamily font.family: mediaControlsMouseArea.configuredFontFamily
color: mediaControlsMouseArea.effectiveForegroundColor color: mediaControlsMouseArea.effectiveForegroundColor
horizontalAlignment: mediaControlsMouseArea.labelsOnRight ? Text.AlignLeft : Text.AlignRight horizontalAlignment: mediaControlsMouseArea.labelsOnRight ? Text.AlignLeft : Text.AlignRight
@@ -256,7 +264,7 @@ MouseArea {
Layout.fillWidth: true Layout.fillWidth: true
shadowEnabled: mediaControlsMouseArea.configuredTextShadowEnabled shadowEnabled: mediaControlsMouseArea.configuredTextShadowEnabled
text: player.title text: player.title
font.pixelSize: 28 font.pixelSize: mediaControlsMouseArea.effectiveTitleFontSize
font.bold: true font.bold: true
font.family: mediaControlsMouseArea.configuredFontFamily font.family: mediaControlsMouseArea.configuredFontFamily
color: mediaControlsMouseArea.effectiveForegroundColor color: mediaControlsMouseArea.effectiveForegroundColor
@@ -270,7 +278,7 @@ MouseArea {
Layout.alignment: mediaControlsMouseArea.labelsOnRight ? Qt.AlignRight : Qt.AlignLeft Layout.alignment: mediaControlsMouseArea.labelsOnRight ? Qt.AlignRight : Qt.AlignLeft
shadowEnabled: mediaControlsMouseArea.configuredTextShadowEnabled shadowEnabled: mediaControlsMouseArea.configuredTextShadowEnabled
text: player.artists text: player.artists
font.pixelSize: 26 font.pixelSize: mediaControlsMouseArea.effectiveArtistFontSize
font.family: mediaControlsMouseArea.configuredFontFamily font.family: mediaControlsMouseArea.configuredFontFamily
color: mediaControlsMouseArea.effectiveForegroundColor color: mediaControlsMouseArea.effectiveForegroundColor
lineHeight: 0.8 lineHeight: 0.8
+34 -7
View File
@@ -10,6 +10,9 @@ KCM.SimpleKCM {
property alias cfg_opacity: opacitySpinBox.value property alias cfg_opacity: opacitySpinBox.value
property string cfg_fontFamily 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_labelVisibilityMode
property string cfg_labelPlacement property string cfg_labelPlacement
property alias cfg_labelText: labelTextArea.text property alias cfg_labelText: labelTextArea.text
@@ -106,6 +109,30 @@ KCM.SimpleKCM {
onActivated: configRoot.cfg_fontFamily = currentText 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 { QQC2.ComboBox {
id: labelVisibilityModeComboBox id: labelVisibilityModeComboBox
@@ -206,23 +233,23 @@ KCM.SimpleKCM {
QQC2.SpinBox { QQC2.SpinBox {
id: trackTextVerticalSpacingSpinBox id: trackTextVerticalSpacingSpinBox
Kirigami.FormData.label: i18n("Title/artist spacing:") Kirigami.FormData.label: i18n("Title/artist spacing (negatives possible):")
from: -12 from: -200
to: 24 to: 200
} }
QQC2.SpinBox { QQC2.SpinBox {
id: labelVerticalSpacingSpinBox id: labelVerticalSpacingSpinBox
Kirigami.FormData.label: i18n("NOW/PLAYING spacing:") Kirigami.FormData.label: i18n("Label line spacing (negatives possible):")
from: -12 from: -200
to: 24 to: 200
} }
QQC2.SpinBox { QQC2.SpinBox {
id: separatorGapLabelSpinBox id: separatorGapLabelSpinBox
Kirigami.FormData.label: i18n("Separator gap from labels:") Kirigami.FormData.label: i18n("Separator gap from label:")
from: 0 from: 0
to: 24 to: 24
} }
+13
View File
@@ -14,8 +14,15 @@ PlasmoidItem {
// qmllint disable missing-property // qmllint disable missing-property
property string configuredFontFamily: plasmoid.configuration.fontFamily property string configuredFontFamily: plasmoid.configuration.fontFamily
// qmllint disable missing-property // 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 property string configuredLabelVisibilityMode: plasmoid.configuration.labelVisibilityMode
// qmllint disable missing-property // qmllint disable missing-property
// qmllint disable missing-property
property string configuredLabelPlacement: plasmoid.configuration.labelPlacement property string configuredLabelPlacement: plasmoid.configuration.labelPlacement
// qmllint disable missing-property // qmllint disable missing-property
property string configuredLabelText: plasmoid.configuration.labelText property string configuredLabelText: plasmoid.configuration.labelText
@@ -66,6 +73,9 @@ PlasmoidItem {
Layout.preferredWidth: root.width Layout.preferredWidth: root.width
Layout.preferredHeight: root.height Layout.preferredHeight: root.height
configuredFontFamily: root.configuredFontFamily configuredFontFamily: root.configuredFontFamily
configuredLabelFontSize: root.configuredLabelFontSize
configuredTitleFontSize: root.configuredTitleFontSize
configuredArtistFontSize: root.configuredArtistFontSize
configuredLabelVisibilityMode: root.configuredLabelVisibilityMode configuredLabelVisibilityMode: root.configuredLabelVisibilityMode
configuredLabelPlacement: root.configuredLabelPlacement configuredLabelPlacement: root.configuredLabelPlacement
configuredLabelText: root.configuredLabelText configuredLabelText: root.configuredLabelText
@@ -87,6 +97,9 @@ PlasmoidItem {
Layout.preferredWidth: root.width Layout.preferredWidth: root.width
Layout.preferredHeight: root.height Layout.preferredHeight: root.height
configuredFontFamily: root.configuredFontFamily configuredFontFamily: root.configuredFontFamily
configuredLabelFontSize: root.configuredLabelFontSize
configuredTitleFontSize: root.configuredTitleFontSize
configuredArtistFontSize: root.configuredArtistFontSize
configuredLabelVisibilityMode: root.configuredLabelVisibilityMode configuredLabelVisibilityMode: root.configuredLabelVisibilityMode
configuredLabelPlacement: root.configuredLabelPlacement configuredLabelPlacement: root.configuredLabelPlacement
configuredLabelText: root.configuredLabelText configuredLabelText: root.configuredLabelText