Gnome Shell や XFce4 などでは NotePC の音量コントロールボタンで音量のUp/Down 及びミュートが操作出来ましたが, Awesome ではそのままでは動作しないようです.ということで設定してみました.
(以下の時の設定では unmute がうまく行っていなかった & 解りやすく修正.)
キーコードを調べる
まずはボタンのキーコードを調べました.xev
コマンドを実行しながら該当ボタンを押して調べます.手元のマシンでは以下のようになりました.
ThinkPad X201s のボリュームキー情報(xev で確認)
- VolUp
KeyRelease event, serial 33, synthetic NO, window 0x1800001,root 0x98, subw 0x0, time 74266491, , root:,state 0x0, keycode 123 , same_screen YES,XLookupString gives 0 bytes:XFilterEvent returns: False
- VolDown
KeyRelease event, serial 33, synthetic NO, window 0x1800001,root 0x98, subw 0x0, time 74268735, , root:,state 0x0, keycode 122 , same_screen YES,XLookupString gives 0 bytes:XFilterEvent returns: False
- ミュート
KeyPress event, serial 30, synthetic NO, window 0x3e00001,root 0x98, subw 0x0, time 107269062, , root:,state 0x0, keycode 121 , same_screen YES,XLookupString gives 0 bytes:XmbLookupString gives 0 bytes:XFilterEvent returns: False
ということでこうなりました.
- ミュートボタン -> XF86AudioMute
- 音量Upボタン -> XF86AudioRaiseVolume
- 音量Downボタン -> XF86AudioLowerVolume
音量の操作コマンドを調べる
alsa の操作をコマンドで実行できる amixer
で操作するサウンドカードなどを確認します.amixer
でサウンドカードを確認して,amixer -c 0
などとしてサウンドカードの内訳を確認したり出来ます.-c 0
は0番目のカードという意味になります.2枚目のカードは,-c 1
というオプションで指定できます.
今回は sound card 0 の Master を操作します.以下のコマンドで情報の表示や操作ができます.
-
sound card 0 の Master の状態確認
% amixer -c 0 get MasterSimple mixer control 'Master',0Capabilities: pvolume pvolume-joined pswitch pswitch-joinedPlayback channels: MonoLimits: Playback 0 - 74Mono: Playback 58 [78%] [-16.00dB] [off] -
sound card 0 の Master を無音に
% amixer -c 0 set Master muteSimple mixer control 'Master',0Capabilities: pvolume pvolume-joined pswitch pswitch-joinedPlayback channels: MonoLimits: Playback 0 - 74Mono: Playback 58 [78%] [-16.00dB] [off] -
sound card 0 の Master の音を有効に
% amixer -c 0 set Master unmuteSimple mixer control 'Master',0Capabilities: pvolume pvolume-joined pswitch pswitch-joinedPlayback channels: MonoLimits: Playback 0 - 74Mono: Playback 58 [78%] [-16.00dB] [on]
Master の unmute だけだとスピーカーがミュートになったままなのでスピーカーも unmute します.
-
sound card 0 の Speaker の音を有効に
-
sound card 0 の Master の音量を 2dB 上げる
% amixer -c 0 set Master 2dB+Simple mixer control 'Master',0Capabilities: pvolume pvolume-joined pswitch pswitch-joinedPlayback channels: MonoLimits: Playback 0 - 74Mono: Playback 60 [81%] [-14.00dB] [off] -
sound card 0 の Master の音量を 2dB 下げる
% amixer -c 0 set Master 2dB-Simple mixer control 'Master',0Capabilities: pvolume pvolume-joined pswitch pswitch-joinedPlayback channels: MonoLimits: Playback 0 - 74Mono: Playback 58 [78%] [-16.00dB] [off]
Script にする
~/script/awesome-audio.bash
という名前のscript にしました.引数にキーコードを渡して実行すると,ミュートボタンを押すとミュート状態ならミュートを解除,そうでないならミュートに,音量ボタンで 2dB ずつUp/Down するようになっています.
それだけだと状態がわかりにくかったので,notify-send
コマンドでアイコンとメッセージを表示するようにしました.
メッセージの表示は awesome 的には naughty.notify
で行うのが正しいと思うのですが,使い方がよく解らずorz
まあ notify-send
なら awesome 以外の環境でも動くのでいいかなと.
#!/bin/bashamixer -c 0 get Master | tail -1 | cut -d '[' -f 2 | sed s/\]//
以下のように実行して動作確認しておきます.
notify-send
でデスクトップには以下のような通知が表示されます.
awesome の設定を行う
音量コントロールボタンで script を呼ぶように awesome の設定ファイル ~/.config/awesome/rc.lua
に以下の設定を追記します.追記場所は `-- Standard program
の後ろ辺りでok です.
-- Audio Controleawful.key({ }, "XF86AudioMute", function () awful.util.spawn("/home/mk/script/awesome-audio.bash XF86AudioMute",false) end),awful.key({ }, "XF86AudioRaiseVolume", function () awful.util.spawn("/home/mk/script/awesome-audio.bash XF86AudioRaiseVolume",false) end),awful.key({ }, "XF86AudioLowerVolume", function () awful.util.spawn("/home/mk/script/awesome-audio.bash XF86AudioLowerVolume",false) end),
ここまで設定できたら awesome を restart します.
>
メニュー -> awesome -> restart
音量コントロールボタンで操作ができるようになったら出来上がりです :)