
前置き
年末からターミナルを wezterm から ghostty に置き換えてみてるのですが、そのついでに tmux も導入してみています。 tmux にはテーマとして dracula 入れており、ステータスラインに可愛くバッテリーや CPU の状態を表示してくれて気に入っています。
ただ、どの数値もそこまで変化があるわけではなく、寂しい感じがしたので、再生中の曲名を表示するようにしてみました。
デフォルトの設定だと以下のような見た目になります。( README の画像を引用)

曲名を表示するスクリプトの作成
このあたりは特に tmux とかは関係ないです。
Music アプリの曲名だけでよければ、 osascript
で取得できます。
$ osascript -e 'tell application "Music" to if player state is playing then name of current track & " - " & artist of current track'
月並みに輝け - 結束バンド
今回はブラウザで再生している YouTube の曲名なども取得したかったので、別のツールを使いました。
使用したのは nowplaying-cli というツールです。
nowplaying-cli について
brew
で導入可能で、get xxx
で曲名やアーティスト名を取得できます。
# インストール
$ brew install nowplaying-cli
# 使い方
$ nowplaying-cli get title
人として軸がぶれている
$ nowplaying-cli get title artist
人として軸がぶれている
大槻ケンヂと絶望少女達 (野中藍, 井上麻里奈, 小林ゆう, 沢城みゆき, 新谷良子)
tmux 向けのスクリプトの作成
#!/usr/bin/env bash
truncate() {
local input="$1"
local max_length="$2"
if [[ ${#input} -gt $max_length ]]; then
echo "${input:0:max_length}…"
else
echo "$input"
fi
}
title=$(nowplaying-cli get title)
artist=$(nowplaying-cli get artist)
title=$(truncate "$title" 20)
artist=$(truncate "$artist" 10)
if [[ -n "$title" && "$title" != "null" ]]; then
result=" $title"
else
result=""
fi
if [[ -n "$artist" && "$artist" != "null" ]]; then
result="$result - $artist"
fi
echo "$result"
ステータスラインに表示することを考えて、適当な文字数で省略するようにしました。 以下のように曲名とアーティスト名が取得できます。
$ chmod +x ./nowplaying.sh
$ ./nowplaying.sh
ギターと孤独と蒼い惑星 - 結束バンド
$ ./nowplaying.sh
空想ルンバ - 大槻ケンヂと絶望少女…
$ ./nowplaying.sh
このピアノでお前を8759632145回… - SLAVE.V-V-…
# Music アプリを起動していない場合
$ ./nowplaying.sh
tmux でステータスラインに表示する設定
dracula で tmux のステータスラインに表示するには以下を行います。
-
~/.config/tmux/plugins/tmux/scripts/
にnowplaying.sh
を配置 -
tmux.conf
に以下を追記set -g @dracula-plugins "custom:nowplaying.sh battery cpu-usage ram-usage weather time"
tmux の設定を再読み込みするとこのように曲名が表示されました!
他のテーマや特にテーマを使用していない場合や、別に tmux 以外の環境でも同様のスクリプトで表示できると思います。
余談
dracula は Spotify の表示に対応しているほか、mpc で再生中の曲を表示できるっぽいのですが、 設定の仕方がいまいちわなかったのと、mpc に気づいたタイミングが nowplaying-cli を見つけたあとだったので、今回は nowplaying-cli を使いました。