• 作成:

xmonadとPulseAudioを使ってキーボードで音量ミュートをトグルする方法

私はウィンドウマネージャにはxmonad, オーディオ管理にはPulseAudioを使っています.

ラップトップPCを使う時, 時たまスピーカーで音楽を聞きたいことがありますが, 普段は通知音などはミュートにしておかなければなりません.

そういう時, 今まで私は, ミュートをトグルするために一々pavucontrolを起動して切り替えていました.

xmonadからPulseAudioを操作してミュートをトグルするスマートな方法がわからなかったためです.

xmonadでミュートキーを受け取る方法はわかる. PulseAudioを操作するCLIがpactlなのもわかる. しかし, 現在再生に使っているソースのインデックスを取得する方法がわかりませんでした.

しかし, 今日なんとなく調べ直してみたら, あっさり方法が見つかりました.

ヒント: デフォルトのソースは、コマンド内で @DEFAULT_SOURCE@ として参照できます。たとえば: $ pactl set-source-mute @DEFAULT_SOURCE@ toggle

PulseAudio/サンプル - ArchWiki

後はこれを実行するようにキーマップに追加するだけですね. 私はXMonad.Util.EZConfigを使っているためキーマップはXMonad.Util.EZConfigを参考にします.

    , ("<XF86AudioMute>", spawn "pactl set-sink-mute @DEFAULT_SINK@ toggle")
    , ("<XF86AudioLowerVolume>", spawn "pactl set-sink-volume @DEFAULT_SINK@ -1%")
    , ("<XF86AudioRaiseVolume>", spawn "pactl set-sink-volume @DEFAULT_SINK@ +1%")

少なくとも今の環境のデスクトップPCではちゃんと動きました.

他の方はボリュームをxmobarに表示したりしていますが私はそこまで求めません. 操作が出来れば良いです.