Mpris自定义Hud

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_repeat
  • boolean shuffle - 随机播放状态
  • boolean playing - 音乐是否正在播放
  • double rate - 音乐播放的速率
  • double volume - 音乐播放的音量(通常在 0 到 1 之间)
  • Metadata metadata - 元数据
  • long progress() - 返回当前进度(以毫秒为单位)

Metadata:

  • String track - 当前曲目 - xesam:title
  • String trackid - 当前曲目 ID - mpris:trackid
  • String album - 当前专辑 - xesam:album
  • String artist - 第一位艺术家
  • String art_url - mpris:artUrl
  • String lyrics - xesam:asText
  • String created_at - xesam:contentCreated
  • String first_played - xesam:firstUsed
  • String last_played - xesam:lastUsed
  • String url - xesam:url
  • List<String> artists - 所有艺术家 - xesam:artist
  • List<String> album_artists - xesam:albumArtist
  • List<String> comments - xesam:comment
  • List<String> composers - xesam:composer
  • List<String> genres - xesam:genre
  • List<String> lyricists - xesam:lyricist
  • int bpm - xesam:audioBPM
  • int disc - xesam:discNumber
  • int number - xesam:trackNumber
  • int times_played - xesam:useCount
  • float auto_rating - xesam:autoRating
  • float user_rating - xesam:userRating
  • long 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

问题/待办

  • 目前没有专辑封面变量;也许我会在某个时候尝试添加它 已完成

使用的库

许可证

本模组采用 MIT 许可证授权