Zenityとは、シェルスクリプトから簡単にGtkのグラフィカルなダイアログを利用できるようにするツールです。Gnome1の頃にあったgdialogを再実装したものだそうです。試した環境はDebian Etchで、Zenityのバージョンは2.14.3。
zenityは、Gnomeのダイアログ作成ツールですが、KDEの場合だとkdialog、ターミナル上でncursesを利用して表示する場合は、dialogなどのパッケージが利用できます。オプションはそれぞれで異なるので、manなどで確認のこと。
□ zenityのコマンドラインオプション まずは、zenity --helpでコマンドオプションを確認。 各ダイアログごとのオプションを参照するには、zenity --help-<ダイアログ名>で参照する。 また、man zenityも参照のこと。 gnome - Zenity Desktop Application Manual V2.0 http://library.gnome.org/users/zenity/stable/ □ zenityのインストール gnomeデスクトップ環境などを入れていない場合は、zenityがインストールされていないので # aptitude install zenity などでインストールを行なう。(Debian等の場合) □ zenityのヘルプ一覧 $ zenity --help Usage: zenity [OPTION...] Help Options: -?, --help Show help options --help-all Show all help options --help-general 一般的なオプションを表示する --help-calendar カレンダのオプションを表示する --help-entry テキスト入力のオプションを表示する --help-error エラー・ダイアログのオプションを表示する --help-info 情報ダイアログのオプションを表示する --help-file-selection ファイル選択ダイアログのオプションを表示する --help-list 一覧ダイアログのオプションを表示する --help-notification 通知アイコンのオプションを表示する --help-progress 進捗表示ダイアログのオプションを表示する --help-question 質問ダイアログのオプションを表示する --help-warning 警告ダイアログのオプションを表示する --help-scale スケールのオプションを表示する --help-text-info テキスト情報のオプションを表示する --help-misc その他のオプションを表示する --help-gtk GTK+ のオプションを表示する Application Options: --calendar カレンダ・ダイアログを表示する --entry テキスト入力ダイアログを表示する --error エラー・ダイアログを表示する --info 情報ダイアログを表示する --file-selection ファイル選択ダイアログを表示する --list 一覧ダイアログを表示する --notification パネル通知エリアに表示する --progress 進捗表示ダイアログを表示する --question 質問ダイアログを表示する --warning 警告ダイアログを表示する --scale スケール・ダイアログを表示する --text-info テキスト情報ダイアログを表示する --display=DISPLAY X display to use
□ zenityのオプション例 * カレンダー (zenity --calendar) ただし、環境によっては $ zenity --calendar 2007年12月30日 のような形式で、標準出力に値が返されるので、少し不便。 その場合は、以下の例のようにすると、スクリプト中で処理しやすい。 --date-formatのオプションについては、man dateを参照のこと。 例) $ zenity --calendar --date-format %Y%m%d 20071231 * 入力ダイアログ (zenity --entry) テキストを変更する場合は、下記の例のように--textオプションをつける。 --textオプションはたいがいのダイアログで有効。 例) $ zenity --entry --text "あなたの名前を入力してください。" OKを押した場合、戻り値は0となり、標準出力に入力文字列が返される。 キャンセルを押した場合、戻り値は1となる。 * エラーダイアログ (zenity --error) --textオプションを利用して、表示されるメッセージを変更する。 * 情報ダイアログ (zenity --info) --textオプションを利用して、表示されるメッセージを変更する。 * ファイル選択ダイアログ (zenity --file-selection) 選択されたファイル名が、標準出力に返される。 例) $ zenity --file-selection /bin/bash * リストダイアログ (zenity --list) リストダイアログは、zenity --listだけだと $ zenity --list 一覧ダイアログに桁のタイトルが指定されていません というエラーが表示されるので、--columnも同時に指定しないといけない。 例) $ zenity --list --column test 値を与える場合は 例) $ echo -e "hoge\nfuga\nmoga" | zenity --list --column test のようにして、改行文字などで区切られた出力を送ると、各行が表示される。 さらに、複数列のチェックダイアログにする場合は、以下の例を参考に。 例) $ zenity --list --checklist --column "Buy" --column "Item" TRUE Apples TRUE Oranges FALSE Pears * 通知ダイアログ (zenity --notification) 通常左下の、通知エリアに表示されるアイコンを変更するには --window-icon=test.png のようなオプションを加える。 * 進捗ダイアログ (zenity --progress) 実行に時間のかかるコマンドを実行する場合に、進捗状況の表示ができる。 例) $ sleep 5 | zenity --progress 下記の例の場合、0-100までの数値を5ずつ増やしながら表示する。 例) $ for i in `seq 0 5 100`; do echo $i; sleep 0.3; done | zenity --progress 下記のように、実行途中に標準出力に出力があるようなコマンドの場合は --pulsateオプションを加えると、進捗表示バーが左右に動いて見える。 処理中であることを示したい場合に便利。 例) $ find / -name '*.sh' | zenity --progress --pulsate * 質問ダイアログ (zenity --question) --textオプションを利用して、表示されるメッセージを変更する。 OKを押した場合、戻り値は0、キャンセルを押した場合、戻り値は1となる。 例) $ zenity --question (ここでキャンセルを押した場合) $ echo $? 1 * 警告ダイアログ (zenity --warning) --textオプションを利用して、表示されるメッセージを変更する。 OKを押した場合、戻り値は0、キャンセルを押した場合、戻り値は1となる。 * スケールダイアログ (zenity --scale) スケールを移動させて、数値を取得するためのもの。 下記の例のように--print-partialオプションをつけると、スケールを移動して マウスを放すたびに標準出力に値が出力されるので、リアルタイムに設定を 反映させたい場合に便利。 例) $ zenity --scale --print-partial 32 48 59 また、--max-value、--min-valueオプションで最大最小を設定可能。 例) $ zenity --scale --min-value -256 --max-value 256 * テキスト情報ダイアログ (zenity --text-info) 何らかの文字列を表示させたい場合は 例) $ echo "hoge"| zenity --text-info のようにすると、与えられた文字列が表示される。 また、特定のファイルの内容を表示させるには 例) $ zenity --text-info --filename=/etc/hosts のようにすればOK。 (もちろん、ファイルに対するアクセス権があることが前提)
□ zenityを使ったスクリプトのサンプル ---------------------------------------------------------- #!/bin/sh zenity --question --text "プログラムを実行しますか?" if [ $? -eq 0 ]; then zenity --info --text "実行しています。" #ここに実行したいコマンドを書く else zenity --info --text "実行しませんでした。" fi ----------------------------------------------------------
GNOMEの場合、gksuを利用する。gksuはgksuパッケージとして独立しているが、各種のパッケージに依存しているため、gnome環境をインストールすれば、たいがい入っているはず。
KDEの場合、kdesuを利用する。kdesuはkdebase-binパッケージに含まれており、KDE環境をインストールすると自動的に含まれることになる。
追記: 2010年現在では、gksuはPolicykitに置き換わっていっています。
GUIでroot権限のパスワードを入力させる方法@Debian # aptitude update # aptitude install gksu □ suを利用する場合 (rootのパスワード) $ gksu (コマンド) □ sudoを利用する場合 (ユーザのパスワード、そのユーザでsudoが利用できること) $ gksudo (コマンド) もしくは $ gksu -S (コマンド) □ gksudo 関連のコマンド ---------------------------------------------------------------- $ ls /usr/bin/gksu* -rwxr-xr-x 1 root root 26748 2009-05-06 22:27 /usr/bin/gksu -rwxr-xr-x 1 root root 13880 2009-07-31 02:13 /usr/bin/gksu-properties lrwxrwxrwx 1 root root 4 2009-10-31 13:32 /usr/bin/gksudo -> gksu ---------------------------------------------------------------- gksudoはgksuのシンボリックリンクとなっている。 glsu-propertiesを実行すれば、gksuでの認証の方法や画面ロック時の 表示モードなどを設定することができる。 詳細は、man gksuやman gksu-propertiesで確認のこと。 Gnome.org - gksu http://live.gnome.org/gksu