3 Commits

Author SHA1 Message Date
ruinivist 34ce24c192 merge: sync remote main 2026-07-12 10:01:11 +00:00
ruinivist a3ae405280 feat: add source whitelist mode (#21) 2026-07-12 09:55:50 +00:00
ruinivist c5f24dbb67 docs: shorter + done update 2026-06-07 03:13:49 +02:00
5 changed files with 28 additions and 45 deletions
+2 -44
View File
@@ -2,9 +2,9 @@
NowPlaying is a KDE Plasma 6 widget inspired by the Cleartext Rainmeter widget. It displays the current song and artist with compact media controls, and is meant to live on the desktop rather than in a panel.
Now on KDE 6: https://www.pling.com/p/2195583/
https://www.pling.com/p/2195583/
> Too little too late but I plan to update it regularly now if any issues are created - ruinivist
> I think this is pretty much in a "done" state now feature-wise, except of course any bug fixes
## Prerequisites
@@ -50,48 +50,6 @@ Create a distributable package:
make package
```
The package is written to `build/org.ruiny.NowPlaying.plasmoid`.
## Project Structure
```text
.
├── package/
│ ├── metadata.json
│ └── contents/
│ ├── config/
│ │ ├── config.qml
│ │ └── main.xml
│ └── ui/
│ ├── configGeneral.qml
│ ├── main.qml
│ ├── Player.qml
│ └── Representation.qml
├── scripts/
│ └── watch.sh
└── Makefile
```
## Maintenance
Format files:
```bash
make format
```
Run lint checks:
```bash
make lint
```
Enable the repository pre-commit hook:
```bash
make hooks-install
```
## Customization
The widget appearance can be tuned from the Plasma widget settings, including:
+4
View File
@@ -74,6 +74,10 @@ PLAYING]]></default>
<label>Source priority</label>
<default></default>
</entry>
<entry name="sourceWhitelist" type="Bool">
<label>Only use listed sources</label>
<default>false</default>
</entry>
<entry name="trackTextVerticalSpacing" type="Int">
<label>Track text vertical spacing</label>
<default>5</default>
+4
View File
@@ -14,6 +14,7 @@ QtObject {
readonly property int containerRole: Qt.UserRole + 1
property string sourceName: "any"
property string sourcePriority: ""
property bool sourceWhitelist: false
property var mpris2Model
property int modelRevision: 0
readonly property var normalizedSourcePriority: parseSourcePriority(sourcePriority)
@@ -99,6 +100,9 @@ QtObject {
return matchedPlayer;
}
if (sourceWhitelist && normalizedSourcePriority.length > 0)
return null;
return mpris2Model.currentPlayer || null;
}
+15 -1
View File
@@ -26,6 +26,7 @@ KCM.SimpleKCM {
property alias cfg_textShadowEnabled: textShadowCheckBox.checked
property alias cfg_showMediaControls: showMediaControlsCheckBox.checked
property alias cfg_sourcePriority: sourcePriorityField.text
property alias cfg_sourceWhitelist: sourceWhitelistCheckBox.checked
property alias cfg_trackTextVerticalSpacing: trackTextVerticalSpacingSpinBox.value
property alias cfg_labelVerticalSpacing: labelVerticalSpacingSpinBox.value
property alias cfg_separatorGapLabel: separatorGapLabelSpinBox.value
@@ -59,6 +60,9 @@ KCM.SimpleKCM {
"text": i18n("Solid background"),
"value": "default"
}]
readonly property bool hasSourcePriorityEntries: sourcePriorityField.text.split(",").some((entry) => {
return normalizeDesktopEntry(entry).length > 0;
})
function syncComboByValue(comboBox, options, configuredValue, fallbackValue) {
const requestedValue = configuredValue || fallbackValue;
@@ -97,6 +101,7 @@ KCM.SimpleKCM {
detectedSources = sources;
}
Component.onCompleted: cfg_sourceWhitelist = hasSourcePriorityEntries && cfg_sourceWhitelist
onCfg_fontFamilyChanged: {
const index = availableFonts.indexOf(cfg_fontFamily);
if (index >= 0 && fontFamilyComboBox.currentIndex !== index)
@@ -222,7 +227,16 @@ KCM.SimpleKCM {
Kirigami.FormData.label: i18n("Source priority:")
Layout.fillWidth: true
placeholderText: i18n("spotify, firefox")
placeholderText: i18n("example: spotify, firefox")
onTextChanged: configRoot.cfg_sourceWhitelist = configRoot.hasSourcePriorityEntries && configRoot.cfg_sourceWhitelist
}
QQC2.CheckBox {
id: sourceWhitelistCheckBox
Kirigami.FormData.label: ""
text: i18n("Only use listed sources")
enabled: configRoot.hasSourcePriorityEntries
}
QQC2.Label {
+3
View File
@@ -45,6 +45,8 @@ PlasmoidItem {
// qmllint disable missing-property
property string configuredSourcePriority: plasmoid.configuration.sourcePriority
// qmllint disable missing-property
property bool configuredSourceWhitelist: plasmoid.configuration.sourceWhitelist
// qmllint disable missing-property
property int configuredTrackTextVerticalSpacing: plasmoid.configuration.trackTextVerticalSpacing
// qmllint disable missing-property
property int configuredLabelVerticalSpacing: plasmoid.configuration.labelVerticalSpacing
@@ -77,6 +79,7 @@ PlasmoidItem {
id: player
sourcePriority: root.configuredSourcePriority
sourceWhitelist: root.configuredSourceWhitelist
}
fullRepresentation: Representation {