Debian testing stretch に cowsay が降りてきたので久々に実行して遊んでみました.せっかくなので全部表示してみる.
実行は,% ls -1 /usr/share/cowsay/cows | xargs -n1 -I{} cowsay -f {} {} | xclip
な感じで.
Homepage が webarchive だ!
追記)xcowsay
も存在するのですね.
新しい kernel が降りてきたので再起動したのですが,Ctrl + a の行頭移動や,Ctrl + e の行末移動が使えず ^A^E
と表示されるようになってしまいました.Ctrl + U など利用できるものもある.環境は以下のような感じです.
GNU Screen を抜けると問題はありません.
最近 GNU Screen のアップデートがあった気がしたので,GNU Screen のせいかな?と思い以前野良ビルドした GNU Screen や Tmux で起動してみましたがこちらでも同じ現象が置きました.
% screen bash
の様にして bash を起動すると問題ありません.
GNU Screen 起動後でも bindkey
で以下のように設定すると動作します.
bindkey
のリストを確認すると GNU Screen 起動前 120行,GNU Screen 起動後では 34行と大分少なくなってしまっています.
とりあえず GNU Screen 起動前に ~/.zshrc
の precmd()
の中に bindkey -L
の結果を vim で :r!bindkey -L | sed -e 's/^/ /'
な感じで貼ってひとまず反映させました.
切り分けのために新しくユーザを作って chsh -s /bin/zsh
してまっさらな状態から試すと ~/.zshrc
を cp すると現象が起こりました.更に切り分けていくと .zshrc の中の export EDITOR=vim
でした.
% EDITOR=vim screen
で発症する.% EDITOR=emacs screen
はok…….その他 vi NG / jed, nano は ok と vi/vim を指定すると起きるよう.
検索するとこんなページが見つかりました.
環境変数 EDITOR
が vi/vim だと Zsh のキーバインドが vim モードになるということのようです.Esc -> 0
で行頭移動,Esc -> Shift+a
で行末に.確かに vim モードのようです.ということで ~/.zshrc
で emacs モードに設定することで解決しました.(上の方で設定した bindkey の設定は消しました)
腑に落ちないのは GNU Screen / Tmux 起動時には起こるけど普通の Zsh
起動時は起きないところ…….
の続きです.このシリーズは興味ある人ほとんど居ない気もしてますが…….
ボリュームコントロール用の script を書いていい感じでボリュームコントロールが使えている気がしていたのですが,いくつか不具合が見つかったので改良しました.
ミュート時に Master をミュートして,同様にアンミュート時に Master をアンミュートするのですが,ヘッドホン利用時にはヘッドホンがミュートされたままになってしまいます.
amixer -c 0 get Headphone
とかして確認すると,off のままです.
Headphone に対して unmute すると音が出るようになりました.
ということでアンミュート時に Master だけでなく Headphone
/ Speaker
もアンミュートするようにしました.Headphone
/ Speaker
は両方 on にしても排他利用になるようで両方 on にしても問題ないようです.
amixer -q -c 0 set Master unmute
これでヘッドホンやスピーカーを切り替えてもちゃんと切り替わるようになりました.
Master や Beep を mute しても beep音が出てしまいます.amixer でボリュームを 0% にしても音が出てしまいます.
ALSA ではなく基本の? xset で有効,無効にしたら効いたのでこれを設定しました.
xset -b
xset b
ボリュームUp / Down ボタンを押した時のメッセージがミュート状態にかかわらず同じものを表示していたので音量が小さくて聞こえないのかミュート状態だから音が出ていないのかわかりませんでした.
ミュート状態によりアイコンを変更するようにしました.ついでに Up/Down の矢印も表示するようにしました.
ということでそれぞれを反映してこんな感じになりました.
#!/bin/bashMUTE=`amixer -c 0 get Master|tail -1|cut -d '[' -f 4|sed s/\]//`
今のところ満足 :-)
の続きです.このシリーズは興味ある人ほとんど居ない気もしてますが…….
ボリュームコントロール用の script を書いていい感じでボリュームコントロールが使えている気がしていたのですが,いくつか不具合が見つかったので改良しました.
ミュート時に Master をミュートして,同様にアンミュート時に Master をアンミュートするのですが,ヘッドホン利用時にはヘッドホンがミュートされたままになってしまいます.
amixer -c 0 get Headphone
とかして確認すると,off のままです.
Headphone に対して unmute すると音が出るようになりました.
ということでアンミュート時に Master だけでなく Headphone
/ Speaker
もアンミュートするようにしました.Headphone
/ Speaker
は両方 on にしても排他利用になるようで両方 on にしても問題ないようです.
amixer -q -c 0 set Master unmute
これでヘッドホンやスピーカーを切り替えてもちゃんと切り替わるようになりました.
Master や Beep を mute しても beep音が出てしまいます.amixer でボリュームを 0% にしても音が出てしまいます.
ALSA ではなく基本の? xset で有効,無効にしたら効いたのでこれを設定しました.
xset -b
xset b
ボリュームUp / Down ボタンを押した時のメッセージがミュート状態にかかわらず同じものを表示していたので音量が小さくて聞こえないのかミュート状態だから音が出ていないのかわかりませんでした.
ミュート状態によりアイコンを変更するようにしました.ついでに Up/Down の矢印も表示するようにしました.
ということでそれぞれを反映してこんな感じになりました.
#!/bin/bashMUTE=`amixer -c 0 get Master|tail -1|cut -d '[' -f 4|sed s/\]//`
今のところ満足 :-)
Gnome Shell や XFce4 などでは NotePC の音量コントロールボタンで音量のUp/Down 及びミュートが操作出来ましたが, Awesome ではそのままでは動作しないようです.ということで設定してみました.
(以下の時の設定では unmute がうまく行っていなかった & 解りやすく修正.)
まずはボタンのキーコードを調べました.xev
コマンドを実行しながら該当ボタンを押して調べます.手元のマシンでは以下のようになりました.
ThinkPad X201s のボリュームキー情報(xev で確認)
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
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
ということでこうなりました.
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/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
でデスクトップには以下のような通知が表示されます.
音量コントロールボタンで 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
音量コントロールボタンで操作ができるようになったら出来上がりです :)