
Mpris自定义Hud
(仅限 Linux)CustomHud 和 Hudder 的 Mpris 音乐信息插件
MprisCustomHud
重要
描述
用于 CustomHud 和 Hudder 的变量,通过 Mpris DBus 规范显示当前正在播放的音乐。
支持 CustomHud v4 所支持的所有版本!
在 1.21.9/10 版本上与 Hudder 8.x、9.x 兼容,在 1.21.11/26.1.x 版本上与 10.x 兼容
它深受 Hudify 启发,所以感谢 Lightningtow 的工作,我猜 :)
注意
- 并非所有变量都必须/会由播放器/音乐应用程序填充
通用变量
| 名称 | 类型 | 描述 |
|---|---|---|
mpris_busname |
字符串 | 总线名称 |
mpris_track |
字符串 | 曲目名称 |
mpris_trackid |
字符串 | 唯一的 mpris 曲目 ID(主要用于调试) |
mpris_album |
字符串 | 曲目所属专辑的名称 |
mpris_repeat |
字符串 | 重复状态 - "None"、"Track" 或 "Playlist" |
mpris_artist |
字符串 | 来自 mpris 的第一位艺术家的名称 |
mpris_name |
字符串 | 来自 org.mpris.MediaPlayer2 的 Identity 属性的友好播放器名称 |
mpris_lyrics |
字符串 | xesam:asText |
mpris_created_at |
字符串 | xesam:contentCreated |
mpris_first_played |
字符串 | xesam:firstUsed |
mpris_last_played |
字符串 | xesam:lastUsed |
mpris_art_url |
字符串 | xesam:artUrl |
mpris_url |
字符串 | xesam:url |
mpris_shuffle |
布尔值 | 随机播放是否开启 |
mpris_playing |
布尔值 | 歌曲正在播放还是已暂停/停止 |
mpris_exists |
布尔值 | 当前曲目是真实的还是占位符 |
mpris_has_album_art |
布尔值 | 曲目是否有专辑封面/是否已加载 |
mpris_data_age |
数字 | 元数据信息(曲目、曲目 ID、专辑、艺术家、艺术家列表、时长……)的年龄,以毫秒为单位 |
mpris_progress |
数字 | 进度,以毫秒为单位 |
mpris_duration |
数字 | 曲目时长,以毫秒为单位 |
mpris_rate |
数字 | 音乐播放的速率/速度,为浮点数 |
mpris_volume |
数字 | 音乐播放的音量,为浮点数(通常在 0 到 1 之间) |
mpris_bpm |
数字 | xesam:audioBPM |
mpris_disc |
数字 | xesam:discNumber |
mpris_number |
数字 | xesam:trackNumber |
mpris_times_played |
数字 | xesam:useCount |
mpris_auto_rating |
数字 | xesam:autoRating |
mpris_user_rating |
数字 | xesam:userRating |
mpris_album_width |
数字 | 专辑封面的绝对像素宽度 |
mpris_album_height |
数字 | 专辑封面的绝对像素高度 |
mpris_album_color |
数字 | 专辑封面主色的 rgb 值 |
mpris_artists |
字符串列表 | 当前播放器的艺术家列表 |
mpris_album_artists |
字符串列表 | 当前播放器的 xesam:albumArtist |
mpris_comments |
字符串列表 | 当前播放器的 xesam:comment |
mpris_composers |
字符串列表 | 当前播放器的 xesam:composer |
mpris_genres |
字符串列表 | 当前播放器的 xesam:genre |
mpris_lyricists |
字符串列表 | 当前播放器的 xesam:lyricist |
CustomHud 特有内容
- 据我所知,将列表作为字段/属性并不容易实现,所以这里仅提供当前播放器的列表
- 所有字符串变量要么不为空,要么为
null - 列表的默认前缀(用于迭代)为变量名中
mpris_之后 的前四个字母 - PlayerInfo 对象拥有所有通用变量 +
mpris_album_art作为字段,但移除了mpris_前缀
| 名称 | 类型/用法 | 描述 |
|---|---|---|
mpris_player |
{mpris_player:<field>} 或 {mpris_player:<player>:<field>} |
公开 PlayerInfo 对象的字段;player 可以是完整总线名称,也可以只是最后一部分 |
mpris_players |
类似 PlayerInfo 的对象列表 | 当前活动 PlayerInfo 对象的列表(与上述相同的 <fields>) |
mpris_album_art |
图标 | 将当前播放器的专辑封面图像绘制到屏幕上 |
有关 xesam:<name> 和 mpris:<name> 变量的详细信息,请参见 https://www.freedesktop.org/wiki/Specifications/mpris-spec/metadata。
Hudder 特有内容
变量
| 名称 | 类型 | 描述 |
|---|---|---|
has_mpris |
布尔值 | 始终为 true |
mpris_player |
对象/PlayerInfo | 当前选中播放器的 PlayerInfo 对象,或 null |
mpris_players |
List<PlayerInfo> | 当前被跟踪的播放器列表 |
函数/方法
| 名称 | 参数 | 效果 |
|---|---|---|
mpris_player |
String name |
返回总线名称为 org.mpris.MediaPlayer2.<name> 的 PlayerInfo 对象,或 null |
mpris_album_art |
String name 或 AlbumArt albumArt、int x、int y、int width、int height |
绘制专辑封面图像;如果曲目没有专辑封面,则绘制备用图像;如果宽度或高度为 0,则保留原始宽高比;如果两者都为 0,则使用像素尺寸(太大了哈哈) |
对象
PlayerInfo:
String busname- 总线名称String name- 播放器名称String repeat- 重复状态 - 参见mpris_repeatboolean shuffle- 随机播放状态boolean playing- 音乐是否正在播放double rate- 音乐播放的速率double volume- 音乐播放的音量(通常在 0 到 1 之间)Metadata metadata- 元数据long progress()- 返回当前进度(以毫秒为单位)
Metadata:
String track- 当前曲目 -xesam:titleString trackid- 当前曲目 ID -mpris:trackidString album- 当前专辑 -xesam:albumString artist- 第一位艺术家String art_url-mpris:artUrlString lyrics-xesam:asTextString created_at-xesam:contentCreatedString first_played-xesam:firstUsedString last_played-xesam:lastUsedString url-xesam:urlList<String> artists- 所有艺术家 -xesam:artistList<String> album_artists-xesam:albumArtistList<String> comments-xesam:commentList<String> composers-xesam:composerList<String> genres-xesam:genreList<String> lyricists-xesam:lyricistint bpm-xesam:audioBPMint disc-xesam:discNumberint number-xesam:trackNumberint times_played-xesam:useCountfloat auto_rating-xesam:autoRatingfloat user_rating-xesam:userRatinglong duration- 当前曲目的时长(以毫秒为单位)AlbumArt album_art- 专辑封面信息long data_age()- 返回对象的年龄(以毫秒为单位)
AlbumArt:
int width- 像素宽度int height- 像素高度int color- 专辑封面主色的 rgb 值boolean exists()- 对象使用真实图像还是备用图像
控制
有播放/暂停、下一首、上一首、刷新以及循环切换活动播放器的按键绑定,它们都有对应的命令。
配置
默认情况下,会从活动播放器中选择一个。要循环切换当前活动的播放器,请使用 mpriscustomhud cycle 命令(仅在 onlyPreferred 被禁用时有效(默认禁用))。
你可以使用 mpriscustomhud preferred <player> 选择一个优先于其他播放器的播放器,这样只要它处于活动状态就会始终显示它。
如果你不想看到其他播放器(只显示首选播放器),可以使用 mpriscustomhud onlyPreferred true。如果你没有设置首选播放器,这将导致不会选择任何播放器。
使用 mpriscustomhud player,你可以获取当前活动的播放器;使用 mpriscustomhud onlyPreferred 和 mpriscustomhud preferred 获取其值;使用 mpriscustomhud refresh,你可以刷新这些变量。
Flatpak 注意事项
- 当你在 Flatpak 沙箱中运行 Minecraft 时,必须将
org.mpris.MediaPlayer2.*添加到你的启动器可以与之通信的已知会话总线名称列表中,例如使用 Flatseal
问题/待办
- 目前没有专辑封面变量;也许我会在某个时候尝试添加它 已完成
使用的库
- dbus-java
- freedesktop.org 提供的 Java DBus 库的改进版本 https://dbus.freedesktop.org/doc/dbus-java
许可证
本模组采用 MIT 许可证授权
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。