🎧

playerctlでLinuxの音楽鑑賞を便利にする

2021/07/05に公開

playerctlとは?

各種メディアプレイヤーの再生コントロール(一時停止、再生、その他)をコマンドラインから行えるツールです。MPRISに対応したアプリならなんでも制御できます。

# 再生/停止をトグル
playerctl play-pause
# アーティストやタイトルを書式指定しつつ出力
playerctl metadata --format "{{ status }}: {{ artist }} - {{ title }}"

MPRISとは

MPRISは、メディアプレイヤーを操作するための標準的なインターフェースです。IPCにはD-Busを利用しています。MPRISに対応しているアプリケーションなら、実際に使用しているのがどのソフトウェアか気にすることなく、一貫して統一的に再生や一時停止などの操作を行えます。

対応アプリケーション

playerctlはブラウザ、メディアプレイヤー、音楽プレイヤーなどさまざまなソフトに対応しています(正確に言うと、さまざまなソフトがMPRISに対応しています)。

  • Chromium
  • Firefox
  • MPD(Music Player Daemon)
  • VLC
  • mpv(拡張スクリプトをインストールする必要あり)
  • Spotify(公式Linuxクライアント)
  • Rhythmbox
  • Audacious
  • Lollypop

MPRISはかなり普及している規格なので、特に音楽再生ソフトはここに載っていないものでもだいたい対応している気がします。場合によっては追加の設定が必要かもしれません。

mpvをMPRISに対応させる

mpvはデフォルトだとMPRISに対応していませんが、MPRISに対応するための拡張スクリプトが存在します。

mpv-mpris

makeでビルドできるので、make installをするか、生成されたmpris.so~/.config/mpv/scriptsにコピーすると動きます。詳しくはREADMEを見てください。

Arch Linuxを使っている人はAURから入れればいいと思います。

実際の活用法

バーに表示する

playerctlを使ってpolybarにSpotifyの曲情報を表示する

ほぼこのリンクのままですが……

たとえば、polybarを使う場合はこんな感じになります。-Fオプションをつけると再生してた曲が変わったり再生・停止の状態が変わったりするたびに出力されるようになります。これはpolybarのtailオプションと極めて相性がいいです。さらに、音楽の表示をクリックすると再生・停止をトグルできます。

[module/nowplaying]
type = custom/script
exec = nowplaying
tail = true
click-left = "playerctl play-pause"
#!/bin/sh
# nowplaying
playerctl -F metadata --format "{{ status }}: {{ artist }} - {{ title }}" 2>/dev/null

Discussion