tmux のステータスラインに再生中の曲名を表示する

2025-01-08T14:57:37Z | 2分で読めます | 更新日時 2025-01-08T14:57:37Z

@
tmux のステータスラインに再生中の曲名を表示する

前置き

年末からターミナルを wezterm から ghostty に置き換えてみてるのですが、そのついでに tmux も導入してみています。 tmux にはテーマとして dracula 入れており、ステータスラインに可愛くバッテリーや CPU の状態を表示してくれて気に入っています。

ただ、どの数値もそこまで変化があるわけではなく、寂しい感じがしたので、再生中の曲名を表示するようにしてみました。

デフォルトの設定だと以下のような見た目になります。( README の画像を引用)

dracula のデフォルトの設定での見た目

曲名を表示するスクリプトの作成

このあたりは特に 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 のステータスラインに表示するには以下を行います。

  1. ~/.config/tmux/plugins/tmux/scripts/nowplaying.sh を配置

  2. tmux.conf に以下を追記

    set -g @dracula-plugins "custom:nowplaying.sh battery cpu-usage ram-usage weather time"
    

tmux の設定を再読み込みするとこのように曲名が表示されました!

tmuxのステータスラインに再生中の曲名が表示されている

他のテーマや特にテーマを使用していない場合や、別に tmux 以外の環境でも同様のスクリプトで表示できると思います。

余談

dracula は Spotify の表示に対応しているほか、mpc で再生中の曲を表示できるっぽいのですが、 設定の仕方がいまいちわなかったのと、mpc に気づいたタイミングが nowplaying-cli を見つけたあとだったので、今回は nowplaying-cli を使いました。

© 2024 - 2025 nabekou29 Blog

🌱 Powered by Hugo with theme Dream.

About Me

ソフトウェアエンジニア4年目。 主にフロントエンドの開発をしてます。

プロフィールのアイコンは昔に北海道で飲んだコーヒーです。