awesomeのツールバー表示を変える。
日時が出てないもんだから今の時刻がわからず、最近ついつい夜更かしをしてしまうことが増えた。これでは健康に悪いので改善しようってのが元々の動機。
実は現在の最新版(git版)だとやりかたが変更されている。ってわけで、現在のstableである1.3でのやりかたと2.0(予定)でのやりかたを順に解説する。
awesome 1.3の場合
awesomeの標準入力に流しこんでやればいい。ウチは確かこんな感じ。
[ -p $HOME/.status_bar ] || mkfifo $HOME/.status_bar $HOME/bin/output_date > $HOME/.status_bar & exec awesome <> $HOME/.status_bar
#!/bin/sh while true do date sleep 1 done
awesome 2.0の場合
awesome-clientというのが導入された。
これは標準入力に流しこまれるテキストを解釈し、引数で与えたDISPLAYにて起動中のawesomeにuicb関数を実行させる働きをする。
流しこむテキストのフォーマットは「ディスプレイ番号 uicb関数名 uicb関数への引数」をスペースで区切ったもの。
というわけでこんな感じになる。
#!/bin/sh while true do echo "0 setstatustext `date`" | awesome-client $DISPLAY sleep 1 done
これをテキトーなタイミングでバックグラウンド実行してやればOK。わざわざ$DISPLAYを与えているのは、与えない場合面倒が起きる環境がある為。(まあ、colinux+xming環境だからだけど)
10/29に追加されたばっかりの機能のためほとんどドキュメントが無く(メーリングリストに多少あったけど)、結局ソースを読んで理解した。
しかし読んでいて謎だったのが…
if(display) a_strcat(addr->sun_path, path_len, display + 1); else a_strcat(addr->sun_path, path_len, "0");
ここでdisplay + 1してるのは一体!?
おかげで~/.awesome_ctl.ocalhost:10.0とか変な名前になっちゃってるんだけど。英語で聞く度胸もないので謎のままにしておく。
まあとにかく
標準入力に流しこむだけって設計になっているおかげで、好き勝手できるようになっている。
ちょっと探せばメールチェックとかCPU使用率とか表示するスクリプトが見付かるはず。いろいろ遊んでみよう。