2006年 6月 28日 水曜日
やっぱり Sun がスキ!
zenity
zenityで簡単GUIプログラミング
最新のGnomeデスクトップを使っていても古いUnixユーザーはすぐにターミナルエミュレータを開いてしまいがちです。エディターなどもコントロールキーを駆使し、マウスに手を伸ばすのが面倒くさいなどと豪語しますが、rmコマンドで誤ってファイルを削除し、ゴミ箱から取り戻せずに後悔なんかしたりします。確かにコマンド入力に慣れていればちょっとしたシェルスクリプトで簡単に作業効率を上げられますし、ログを残しておけばトラブル時の対処もスムーズです。しかし決してGUIが嫌いなわけではなく、とにかくGUIプログラミングが面倒くさいだけなのです。シェルスクリプトの延長で簡単に GUIを使えれば・・・そんなとき zenity はいかがでしょうか。
zenity は Gnome についてくる、ダイアログウインドウを表示するコマンドです。普通のコマンドなのでシェルスクリプトにも簡単に組み込むことができます。現在次のようなダイアログが使えます。
カレンダ・ダイアログ
zenity --calendar [--height=height] [--title=title] [--
width=width] [--window-icon=path] [--date-format=format] [-
-day=number] [--month=number] [--text=text] [--year=number]
一行文字列入力ダイアログ
zenity --entry [--height=height] [--title=title] [--
width=width] [--window-icon=path] [--entry-text=text] [--
hide-text] [--text=text]
エラー(情報/質問/警告)表示ダイアログ
zenity --error | --info | --question | --warning [--
height=height] [--title=title] [--width=width] [--window-
icon=path] [--text=text]
ファイル選択ダイアログ
zenity --file-selection [--height=height] [--title=title]
[--width=width] [--window-icon=path] [--filename=path] [--
multiple] [--separator=character]
リスト表示選択ダイアログ
zenity --list --column=text [--height=height] [--
title=title] [--width=width] [--window-icon=path] [--
checklist] [--editable] [--radiolist] [--
separator=character]
プログレスバー・ダイアログ
zenity --progress [--height=height] [--title=title] [--
width=width] [--window-icon=path] [--auto-close] [--
percentage=number] [--pulsate] [--text=text]
テキスト表示ダイアログ
zenity --text-info [--height=height] [--title=title] [--
width=width] [--window-icon=path] [--editable] [--
filename=path]
例えばカレンダ・ダイアログを表示してみます。
% zenity --calendar

日付を選んで「了解」をクリックすると標準出力にその日付を出力して終了します。
% zenity --calendar 06/19/06 %
一行文字列入力ダイアログは入力文字を隠してパスワード入力に使うこともできます。
% zenity --entry --hide-text --text="パスワードを入力してね"

% zenity --entry --hide-text --text="パスワードを入力してね" !mypasswd %
サンプルプログラムとして、指定したファイルを zip 圧縮するツールを作ってみました(あまり便利とは言えませんが)。
#!/bin/sh
FSEL=`zenity --file-selection`
if [ -z "${FSEL}" ]
then
exit
fi
cd `dirname $FSEL`
SRC=`basename $FSEL`
DST=`basename $FSEL|tr '.' '_'`
zip -r $DST $SRC
/bin/rm -f $SRC
zenity --info --text="$FSEL を圧縮しました"
ファイル選択ダイアログで選んだファイルを zip 圧縮し、完了時に情報ダイアログを表示します。
本格的なプログラムを作るにはまだまだ物足りないものがありますが、工夫次第ではいろいろつかえると思います。是非試してみてください。
Posted at 05:35午後 6 28, 2006 by masahiko in Sun | 投稿されたコメント[0]