Headless daemon (`cliamp -d`) omits `mpris:artUrl` from MPRIS metadata
Maintainers usually reply within 6 days
Nobody has claimed this yet.
Assessment
- Difficulty
- 1/5
- Estimated time
- Under an hour
- Newbie friendliness
- 92/100
Research direction
Read daemon.go at snapshotState() and compare how ui/model/notifications.go copies album art into the playback track. Add the missing AlbumArtURL mapping to the headless path, then confirm MPRIS metadata includes mpris:artUrl for a playlist track with a cover URL.
Written by the indexing model from the issue text.
Description
Summary
When cliamp runs in headless daemon mode (cliamp -d), MPRIS metadata contains
title/artist/album but not mpris:artUrl, even when the loaded playlist has
a valid album_art_url.
The same playlist in TUI mode does expose mpris:artUrl, so the playlist parser
and the cover URL are fine. The omission is specific to the headless daemon.
Environment
- cliamp: v2.3.0
- OS: Fedora 44, Linux x86_64
- Session: Wayland / Niri
- MPRIS client:
playerctl - Media shell: Noctalia (cover is visible only when MPRIS exposes
mpris:artUrl)
Reproduction
Create a playlist containing a stream track with an album art URL:
[[track]]
path = "https://music.163.com/#/song?id=2699649656"
title = "Mock Cover Stream"
artist = "Test Artist"
album = "Test Album"
album_art_url = "https://p4.music.126.net/My7NFFe1Pa8SE1mSDmPlyg==/109951170919292311.jpg"
track_number = 1
duration_secs = 389
Start the headless daemon and load it:
```bash
cliamp -d
cliamp load mock-stream
playerctl -p cliamp metadata
Actual
MPRIS metadata contains:
xesam:title
xesam:url
mpris:length
xesam:artist
xesam:album
xesam:trackNumber
mpris:trackid
No mpris:artUrl.
cliamp remote state still shows the cover URL, so it is parsed correctly:
{
"track": {
"title": "Mock Cover Stream",
"album_art_url": "https://p4.music.126.net/..."
}
}
Expected
MPRIS metadata should include:
mpris:artUrl https://p4.music.126.net/...
The same playlist loaded in TUI mode does expose it.
Root cause
In [daemon.go](https://github.com/bjarneo/cliamp/daemon.go), snapshotState() builds the playback.Track for the MPRIS
notifier but does not copy AlbumArtURL:
Track: playback.Track{
Title: track.Title,
Artist: track.Artist,
Album: track.Album,
Genre: track.Genre,
TrackNumber: track.TrackNumber,
URL: track.Path,
Duration: d.player.Duration(),
},
The TUI path in [ui/model/notifications.go](https://github.com/bjarneo/cliamp/ui/model/notifications.go) does include it:
ArtURL: track.AlbumArtURL,
mediactl.makeMetadata() only publishes mpris:artUrl when ArtURL is
non-empty, so headless mode silently drops the cover.
Suggested fix
Add the missing field in [daemon.go](https://github.com/bjarneo/cliamp/daemon.go):
@@
Genre: track.Genre,
TrackNumber: track.TrackNumber,
URL: track.Path,
+ ArtURL: track.AlbumArtURL,
Duration: d.player.Duration(),
},
Verification
I applied this one-line patch locally, rebuilt v2.3.0, and restarted the
headless service. playerctl -p cliamp metadata then reported:
cliamp mpris:artUrl https://p3.music.126.net/...jpg
- Dominant language
- Go
- Stars
- 4.4k
- Forks
- 307
- Avg merge
- 3d 6h
- Merged PRs (30d)
- 26
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- No contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from bjarneo/cliamp
-
Show the Podcast episodes in newest first orderPossibly taken @lchojnack claimed this 7 days ago. Openenhancement
Difficulty 2/5 1-3 hours Newbie friendliness 69/100
Maintainers usually reply within 6 days
-
No "Open YouTube Music provider" action (unlike every other provider)Possibly taken A pull request linked to this issue is open or already merged. Openbug
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
Maintainers usually reply within 6 days
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
bjarneo/cliamp#520 · 2 reactions ·
Maintainers usually reply within 6 days
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
Maintainers usually reply within 6 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 6 days
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
area/frontend/library-panels automated-triage type/bug type/ux
Difficulty 1/5 Under an hour Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
microsoft/azure-linux-image-tools#954 ·
Maintainers usually reply within 1 day
-
panic "time: missing Location in call to Time.In" on MySQL via aws_rds since v0.8.0Possibly taken @tylertechgraves claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
open-policy-agent/opa-control-plane#452 · 1 comment ·
Maintainers usually reply within 1 day
-
[bug bash] Actor logs are controlled by Kubernetes RBAC on the pool namespace, not atespace rolesOpenarea/cli area/security bug-bash kind/docs
Difficulty 1/5 1-3 hours Newbie friendliness 80/100
agent-substrate/substrate#3242 ·
Maintainers usually reply within 1 day