编辑:我删除并重写了大部分帖子,以使问题更直接,并使帖子更短。您当然可以查看编辑历史以获取以前的版本。
在 Arch Linux 上使用 bspwm。playerctl
控制媒体,sxhkd
将媒体键绑定到 playerctl 命令。
我正在尝试找到一种方法来获取最新的活动媒体播放器,因此当我使用媒体键播放/暂停歌曲/电影/.. 时,我的电脑会自动控制最新的活动媒体播放器。
例如,当 Spotify 恰好在后台打开并且我正在 VLC 上观看某些内容时,当我按下媒体键时,它知道控制 VLC 而不是 Spotify。现在,如果两者都打开,VLC 总是从 playerctl 获得优先权。
我需要的是一种询问 dbus 哪个媒体播放器当前正在播放歌曲的方法,这样我就可以将它保存在一个文件中。
编辑:我找到了一种方法来询问每个 spotify 和 vlc 使用:
qdbus org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlaybackStatus
和
qdbus org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlaybackStatus
但我想自动询问所有媒体播放器,而不是每个人的名字。我试图用它来做,org.mpris.MediaPlayer2.*
但这不起作用。
有任何想法吗?
我是这样做的:
这是一个始终运行以检查哪个播放器当前处于活动状态/上次处于活动状态的脚本,并将该播放器存储在一个文件中:
这是一个向当前活动的播放器(基于该文件)发送 dbus 命令(如 play/pause/etc/)的脚本。该脚本被 sxhkd 调用,它监听我的按键。
在最新版本中,您可以使用playerctld。
这将启动一个持续的进程来监控玩家的活动并将命令发送给活跃的玩家。