×

[PR]この広告は3ヶ月以上更新がないため表示されています。
ホームページを更新後24時間以内に表示されなくなります。

サイトトップまとめドキュメントGUI環境Zenity ≫ Zenityの各ダイアログごとの説明と使用例

Zenityの各ダイアログごとの説明と使用例

カレンダーダイアログ

OKが押されると--date-format=オプションに指定した形式で出力が得られる。この中のパーセント記号付きの文字列はC言語のstrftime()関数と同様に変換されて出力される。

初期値は--year(年),--month(月),--day(日)オプションでそれぞれ指定できる。

例94 Zenityのカレンダー使用例

$ o=$(zenity --calendar --title "日付を指定" --text "日付を指定してください" --date-format="%Y|%m|%d" --year 2010 --month 1 --day 1); echo "戻り値:'${?}' 出力:'${o}'"; unset o
(日付を選択してOKした場合)
戻り値:'0' 出力:'[西暦年]|[月(01-12)]|日(01-31)'

Zenityのカレンダー使用例


1行テキスト入力(テキスト・エントリ)ダイアログ

1行のテキスト入力(長いと横にスクロールする)を受け付け、OKが押されるとこれを出力する。

例95 Zenityのテキスト・エントリ使用例

$ o=$(zenity --entry --title "テキスト入力" --text "文字列"); echo "戻り値:'${?}' 出力:'${o}'"; unset o
(OKした場合)
戻り値:'0' 出力:'[入力した文字列]'

Zenityのテキスト・エントリ使用例


エラーダイアログ

エラーのアイコンとともに--textオプションのメッセージを表示する。

例96 Zenityのエラーダイアログ使用例

$ zenity --error --title "エラー" --text "メッセージ"

Zenityのエラーダイアログ使用例


情報ダイアログ

情報のアイコンとともに--textオプションのメッセージを表示する。

例97 Zenityの情報ダイアログ使用例

$ zenity --info --title "エラー" --text "メッセージ"

Zenityの情報ダイアログ使用例


ファイル選択ダイアログ

各種ファイル選択ダイアログを表示し、OKが押されると決定されたパスを返す。

  • 操作は開く(既定),保存(--save),ディレクトリ指定(--directory)の3つがある

  • 開く操作では--multipleオプションで複数選択可となる

  • 保存操作では--confirm-overwriteオプションで上書き確認を行う

  • 初期値は--filenameオプションで指定可

例98 Zenityのファイル選択ダイアログ(開く)使用例

$ o=$(zenity --file-selection --title "ファイルを選択"); echo "戻り値:'${?}' 出力:'${o}'"; unset o
(OKした場合)
戻り値:'0' 出力:'[選択したファイルのパス]'

Zenityのファイル選択ダイアログ(開く)使用例 [拡大画像]


例99 Zenityのファイル選択ダイアログ(保存)使用例

$ o=$(zenity --file-selection --title "保存ファイル選択" --save --confirm-overwrite); echo "戻り値:'${?}' 出力:'${o}'"; unset o
(OKした場合)
戻り値:'0' 出力:'[保存ファイルのパス]'

Zenityのファイル選択ダイアログ(保存)使用例 [拡大画像]


例100 Zenityのファイル選択ダイアログ(ディレクトリ)使用例

$ o=$(zenity --file-selection --directory --title=ディレクトリ選択); echo "戻り値:'${?}' 出力:'${o}'"; unset o
(OKした場合)
戻り値:'0' 出力:'[選択したディレクトリのパス]'

Zenityのファイル選択ダイアログ(ディレクトリ)使用例 [拡大画像]


リストダイアログ

GTK+のツリービュー上にリストを表示し、OKが押されると選択された項目の1つ目のコラムの値が返される。

  • --column [各コラムの説明]オプションをコラムの数だけ続け、その後ろにデータを続けて引数に記述していく(コラムの数ずつ項目として区切られていく)

  • --hide-column [コラム番号]で指定されたコラム(1番から始まる)は隠され、1番を隠すと、コマンドの出力として用いられるコラムを非表示にして、シェルスクリプトから扱いやすい文字列を出力するようにできる

  • --radiolistオプションで先頭コラムがラジオボタンに、--checklistオプションではチェックボックスになり、データ部分にはtrue(オン)/false(オフ)のいずれかを記述する・OKを押すと先頭された項目の2番目のコラムの選択項目が「|」で区切られて返される

例101 Zenityのリストダイアログ使用例

(選択肢の文字列がそのまま返される形)
$ o=$(zenity --list --title "リスト" --text "質問" --column 項目 "選択肢A" "選択肢B"); echo "戻り値:'${?}' 出力:'${o}'"; unset o
(OKした場合)
戻り値:'0' 出力:'選択肢A'

(隠しコラムの文字列により、処理しやすい形式の出力を行う)
$ o=$(zenity --list --title "リスト" --text "質問" --hide-column 1 --column dummy --column 項目 A "選択肢A" B "選択肢B"); echo "戻り値:'${?}' 出力:'${o}'"; unset o
(OKした場合)
戻り値:'0' 出力:'A'

Zenityのリストダイアログ使用例


例102 Zenityのラジオリストダイアログ使用例

$ o=$(zenity --list --title "ラジオリスト" --text "質問" --radiolist --hide-column 2 --column 選択 --column dummy --column 項目 true A "選択肢A" false B "選択肢B"); echo "戻り値:'${?}' 出力:'${o}'"; unset o
(OKした場合)
戻り値:'0' 出力:'A'

Zenityのラジオリストダイアログ使用例


例103 Zenityのチェックリストダイアログ使用例

$ o=$(zenity --list --title "チェックリスト" --text "質問" --checklist --hide-column 2 --column 選択 --column dummy --column 項目 true A "選択肢A" false B "選択肢B"); echo "戻り値:'${?}' 出力:'${o}'"; unset o
(両方にチェックしてOKした場合)
戻り値:'0' 出力:'A|B'

Zenityのチェックリストダイアログ使用例


進行状況ダイアログ

パーセンテージ値を標準入力から受け取って進行状況バーを制御する。

  • パーセンテージ値が分からない場合は--pulsateオプションを付けると標準入力から文字列を受け取る度に左右に四角が動く形となる

  • --auto-closeオプションを付けると完了時に自動的にダイアログを閉じる

  • 標準入力から受け取った文字列は端末には出ないため、これを確認するにはteeコマンドで分岐させておくと便利

例104 Zenityの進行状況ダイアログ使用例

(受け取った文字列は標準されない)
$ for ((i = 0; i < 100; i += 10)); do echo ${i}; sleep 0.5; done | zenity --progress --text "経過の表示"
(受け取った文字列が端末に表示される)
$ for ((i = 0; i < 100; i += 10)); do echo ${i}; sleep 0.5; done | tee >(zenity --progress --text "経過の表示")
(実際の例・端末に値を表示する)
$ wget -c [URL] 2>&1 | sed -u 's/.* \+\([0-9]\+%\).*$/\1/' | tee >(zenity --progress --title "ダウンロードの状態" --text "ダウンロード中...")
(実際の例・端末に値を表示しない)
$ wget -c [URL] 2>&1 | sed -u 's/.* \+\([0-9]\+%\).*$/\1/' | zenity --progress --title "ダウンロードの状態" --text "ダウンロード中..."

Zenityの進行状況ダイアログ使用例


関連セクション

libnotifyを用いた通知(システムトレイアイコン上のバルーン)

[注意]注意

この機能はZenityがlibnotifyサポートを有効にしてビルドされていないと使えない。

  • システムトレイに任意のアイコンを表示し、シェルからコマンドを送ることでメッセージを表示したりツールチップを設定(変更)したりできる

  • システムトレイアイコンからメニューを表示する機能はない

  • libnotifyの仕様により、バルーン通知内の本文テキストはPango Text Attribute Markup Languageというマークアップ言語により装飾を行える

  • このモードには--notificationオプションが必要で、--window-iconオプションでアイコン、--textオプションで初期時のツールチップが指定される

  • シェルからコマンドを受け取って動的にツールチップやアイコンを変更したりメッセージを表示したりしたい場合は--listenオプションが必要

[注記]メモ

システムトレイ通知用Zenityの実行/システムトレイ通知の終了を除く以下の子セクションで扱う機能は--listenオプション使用時に使用できる。

例の中で用いている3という値(ファイル記述子値)は起動時からずっと同じ値を用い、かつ3以上であれば他の値でもよい。

システムトレイ通知用Zenityの実行

例105 システムトレイ通知用Zenityの実行例(ファイル記述子値:3)

$ exec 3> >(zenity --notification --window-icon [アイコン画像のパス] --text [ツールチップ] --listen)

通知バルーンの表示

ここのメッセージ内容にPango Text Attribute Markup Languageが利用可能。

例106 システムトレイ通知用Zenityの通知バルーン表示例(ファイル記述子値:3)

$ echo "message: [メッセージ]" >&3

システムトレイアイコンのツールチップ変更

例107 システムトレイ通知用Zenityのツールチップ変更例(ファイル記述子値:3)

$ echo "tooltip: [ツールチップ]" >&3

システムトレイアイコンのアイコン変更

例108 システムトレイ通知用Zenityのアイコン変更例(ファイル記述子値:3)

$ echo "icon: [アイコン画像のパス]" >&3

システムトレイアイコンの表示状態変更

例109 システムトレイ通知用Zenityの表示状態変更例(ファイル記述子値:3)

$ echo "visible: [true(表示)もしくはfalse(非表示)]" >&3

システムトレイ通知の終了

例110 システムトレイ通知用Zenityの終了例(ファイル記述子値:3)

$ exec 3>&-