xmonadとPulseAudioを使ってキーボードで音量ミュートをトグルする方法
私はウィンドウマネージャにはxmonad, オーディオ管理にはPulseAudioを使っています.
ラップトップPCを使う時, 時たまスピーカーで音楽を聞きたいことがありますが, 普段は通知音などはミュートにしておかなければなりません.
そういう時,
今まで私は,
ミュートをトグルするために一々pavucontrol
を起動して切り替えていました.
xmonadからPulseAudioを操作してミュートをトグルするスマートな方法がわからなかったためです.
xmonadでミュートキーを受け取る方法はわかる.
PulseAudioを操作するCLIがpactl
なのもわかる.
しかし,
現在再生に使っているソースのインデックスを取得する方法がわかりませんでした.
しかし, 今日なんとなく調べ直してみたら, あっさり方法が見つかりました.
ヒント: デフォルトのソースは、コマンド内で
@DEFAULT_SOURCE@
として参照できます。たとえば:$ pactl set-source-mute @DEFAULT_SOURCE@ toggle
。
後はこれを実行するようにキーマップに追加するだけですね.
私は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に表示したりしていますが私はそこまで求めません. 操作が出来れば良いです.