トップ «前の日記(2007-12-22) 最新 次の日記(2008-01-06)» 編集

ORCA愉快日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|10|11|12|
2012|01|02|09|
2013|04|

2007-12-30 Zenityでシェルスクリプトから簡単ダイアログ

_ [Linux] Zenityでシェルスクリプトから簡単ダイアログ

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 
----------------------------------------------------------

_ [Linux] GUIでroot権限のパスワードを入力させる方法

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

トップ «前の日記(2007-12-22) 最新 次の日記(2008-01-06)» 編集