zenity のフォークであるところの yad で遊んでみた
シェル・スクリプト中で使って「なんちゃって GUI」を作るのに使える zenity というものがある。GTK のダイアログを出してユーザーに入力を求め、標準出力に出すというツールだ。その zenity のフォークで yad というやつがわりと使われているようなので試してみた。
zenity より機能が増えている。カレンダー・ダイアログの初期値を決められるなどの、地味な改善点もある。オプションが 100 以上あって混乱してきたので、ささやかなメモを作成した。あくまでもマニュアルから自分の使いそうな機能を写しただけだけど。
yad を使ってみて気づくことは、自分では定型的な作業だと思っていたのに、想定していなかったことがしょっちゅう発生するということ。その都度判断が必要な作業が思いほほか多いのだ。苦労して GUI を作っても、次から次へと改善したい点が出てくる。5 行くらいで済むはずだったものが、数十行になる。もっとも、これは zenity や yad が悪いのでは全然なくて、自分の見積りが甘いわけである。
せっかくだから、何かひとつくらい簡単なのを載せておこう。これは、お昼寝タイマー。「第一引数」分後に、音楽をかける。yad にタイムアウト時間を設定して、時間進行バーを出させるのだ。
#!/bin/sh
music="~/somewhere/somemusic.mp3"
timeout=$(expr $1 \* 60)
yad --form \
--timeout=$timeout \
--timeout-indicator=top \
--on-top --sticky
if [ $? -eq 70 ]
then
mpg123 "$music"
fi
フォームダイアログ(--form)にタイマー(--timeout)を設置して残り時間バー(--timeout-indicator)を表示。すべてのワークスペースで(--sticky)常に他のウィンドウより前面に表示(--on-top)することにする。キャンセルせずにタイムアウトした場合(終了ステータスが 70 のとき)には音楽を演奏。
@kabipanotoko