Repository navigation
【SPW】mpris:artUrl 指向的封面文件在切歌后立即失效,外部客户端取图失败 #2249
Copy link
Copy link
Closed
Labels
Bug不符合业务逻辑不符合业务逻辑WindowsSalt Player for WindowsSalt Player for Windows已完成/待发布已在开发中修复或完成功能开发,等待发布,用以指示里程碑 若发布后依旧存在问题请重新打开已在开发中修复或完成功能开发,等待发布,用以指示里程碑 若发布后依旧存在问题请重新打开
Milestone
Description
环境
- Salt Player for Windows 1.18.5(Steam,appid 3009140,buildid 25418401)
- 系统:Arch / CachyOS,Wayland(niri)
- 消费端:桌面歌词插件与媒体控件(读取 MPRIS),读取库
playerctl 2.4.1
现象
mpris:artUrl 给出的是本地文件路径,例如
file:/home/<user>/.local/share/Salt%20Player/cache/cover_2116719806.png,
但这个文件在切歌后很快被删除 —— 缓存目录里长期只有当前这一张封面。
外部客户端只要稍微晚一点(比如插件在切歌前后重试取图)就会拿到不存在的文件。
证据
1)目录里始终只有一张(当前曲目):
$ ls -la ~/.local/share/"Salt Player"/cache/
-rw-r--r-- 1 tc191 tc191 202829 10月13日 23:13 cover_2116719806.png
drwxr-xr-x 1 tc191 tc191 109310 10月14日 20:14 shared_cover
2)之前几首歌上报过的文件名,切歌后再查已不存在:
cover_-2053424282.png、cover_1367738176.png、cover_-1041516775.png(均已被删除)。
3)消费端日志(Noctalia 的 media 面板,拿到的正是播放器自己上报的 URL):
[WRN] [media_tab] artwork load failed
url="file:/home/tc191/.local/share/Salt%20Player/cache/cover_2116719806.png"
(第 3 条不排除客户端解转义 %20 也有问题,但 artUrl 指向的文件确实在切歌后消失,这一点是可复现的。)
期望
- 封面缓存按最近 N 首保留(或替换后仍短暂保留),保证
mpris:artUrl在一段时间内有效;或 - MPRIS 侧给一个稳定路径,例如固定文件名
cover_current.png、内容原地替换,消费端就不必抢时间窗。
顺带两处 MPRIS 字段偏差(供参考,同一批)
xesam:artist是单个字符串,多歌手用/拼接(实测:王朝1982/朱旭BooBoo)。MPRIS 规范要求它为字符串数组;按规范取[0]的客户端会只拿到一个字(王),导致匹配歌词/封面失败。DesktopEntry填的是显示名"Salt Player",规范要求是 desktop 文件 id(本机为com.xuncorp.voxzen);Identity也填成了总线名形式"salt-player",惯例是给人类可读名(如Salt Player)。
原始元数据
$ playerctl metadata
salt-player xesam:album 江郎才尽
salt-player xesam:albumArtist (空)
salt-player mpris:length 223600000
salt-player xesam:title 江郎才尽
salt-player xesam:artist 卦者灵风
salt-player mpris:artUrl file:/home/tc191/.local/share/Salt%20Player/cache/cover_156949672.png
salt-player xesam:trackNumber 0
salt-player mpris:trackid '/org/saltplayer/track/ztb4dw'
$ busctl --user get-property org.mpris.MediaPlayer2.salt-player /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2 Identity
s "salt-player"
$ busctl --user get-property org.mpris.MediaPlayer2.salt-player /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2 DesktopEntry
s "Salt Player"
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
Bug不符合业务逻辑不符合业务逻辑WindowsSalt Player for WindowsSalt Player for Windows已完成/待发布已在开发中修复或完成功能开发,等待发布,用以指示里程碑 若发布后依旧存在问题请重新打开已在开发中修复或完成功能开发,等待发布,用以指示里程碑 若发布后依旧存在问题请重新打开
Activity
GaodaGG commentedon Oct 14, 2026
应该是封面文件生命周期的问题,会在 1.19 中修复
目前会在写入新封面后立即删除上一张,随后才异步发布新的元数据
而固定文件名会导致客户端不更新封面,有些客户端在 URL 不变的情况下会继续使用缓存, 比如 KDE
GaodaGG commentedon Oct 15, 2026
开发完成,预计 1.19 版本上线