やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

zenity bashでGUI作成するコマンド

 ちょっとしたGUIが欲しいときに使える。

ヘルプ

$ zenity --help
用法:
  zenity [オプション...]

ヘルプのオプション:
  -h, --help                                        ヘルプのオプションを表示する
  --help-all                                        ヘルプのオプションをすべて表示する
  --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-color-selection                            色選択オプションを表示する
  --help-password                                   パスワードダイアログのオプションを表示する
  --help-forms                                      フォームダイアログのオプションを表示する
  --help-misc                                       その他のオプションを表示する
  --help-gtk                                        GTK+ のオプションを表示する

アプリケーションのオプション:
  --calendar                                        カレンダーダイアログを表示する
  --entry                                           テキスト入力ダイアログを表示する
  --error                                           エラーダイアログを表示する
  --info                                            情報ダイアログを表示する
  --file-selection                                  ファイル選択ダイアログを表示する
  --list                                            一覧ダイアログを表示する
  --notification                                    通知領域に表示する
  --progress                                        進捗表示ダイアログを表示する
  --question                                        質問ダイアログを表示する
  --warning                                         警告ダイアログを表示する
  --scale                                           スケールダイアログを表示する
  --text-info                                       テキスト情報ダイアログを表示する
  --color-selection                                 色選択ダイアログを表示する
  --password                                        パスワードダイアログを表示する
  --forms                                           フォームダイアログを表示する
  --display=DISPLAY                                 X display to use
引数 説明 UI
--calendar カレンダーダイアログを表示する 0
--entry テキスト入力ダイアログを表示する 0
--error エラーダイアログを表示する 0
--info 情報ダイアログを表示する 0
--file-selection ファイル選択ダイアログを表示する 0
--list 一覧ダイアログを表示する 0
--notification 通知領域に表示する 0
--progress 進捗表示ダイアログを表示する 0
--question 質問ダイアログを表示する 0
--warning 警告ダイアログを表示する 0
--scale スケールダイアログを表示する 0
--text-info テキスト情報ダイアログを表示する 0
--color-selection 色選択ダイアログを表示する 0
--password パスワードダイアログを表示する 0
--forms フォームダイアログを表示する 0

--help-general

$ zenity --help-general
用法:
  zenity [オプション...]

一般的なオプション
  --title=TITLE                                     ダイアログのタイトルを指定する
  --window-icon=ICONPATH                            ウィンドウのアイコンを指定する
  --width=WIDTH                                     幅を指定する
  --height=HEIGHT                                   高さを指定する
  --timeout=TIMEOUT                                 ダイアログのタイムアウトを秒単位で指定する
  --ok-label=TEXT                                   OK ボタンのラベルを指定する
  --cancel-label=TEXT                               キャンセルボタンのラベルを指定する
  --extra-button=TEXT                               Add an extra button
  --modal                                           ダイアログをモーダルにするよう、ヒントを設定する
  --attach=WINDOW                                   アタッチする親ウィンドウを指定する

entry

 テキストボックス。

$ zenity --help-entry
用法:
  zenity [オプション...]

テキスト入力ダイアログのオプション
  --entry                                           テキスト入力ダイアログを表示する
  --text=TEXT                                       ダイアログに表示する文字列を指定する
  --entry-text=TEXT                                 入力欄の初期値を指定する
  --hide-text                                       入力テキストを隠す
$ zenity --entry --text "入力してください。" --entry-text "入力値"

f:id:ytyaru:20190312175431p:plain

 --hide-textで値が隠される。パスワード入力などのときに。

$ zenity --entry --hide-text --entry-text "入力値"

f:id:ytyaru:20190312175813p:plain

password

$ zenity --help-password
用法:
  zenity [オプション...]

パスワードダイアログのオプション
  --password                                        パスワードダイアログを表示する
  --username                                        ユーザー名のオプションを表示する
$ zenity --password
pass

f:id:ytyaru:20190312195107p:plainf:id:ytyaru:20190312195114p:plain

$ zenity --password --username
name|pass

f:id:ytyaru:20190312195127p:plainf:id:ytyaru:20190312195133p:plain

  • --separator引数がない(|がusernameやpasswordに使われうるのでTABにしたい)

info

 メッセージを表示するダイアログ。

$ zenity --info --text "情報を表示する。\n\n複数行も表示できる。この通りでござる。"

f:id:ytyaru:20190312180348p:plain

 幅を指定してみる。

$ zenity --info --width 500 --text "情報を表示する。\n\n複数行も表示できる。この通りでござる。"

f:id:ytyaru:20190312180417p:plain

  • 左寄せして欲しかった
  • フォント指定したかった

 タイトル編集してみる。

$ zenity --info --width 500 --title "タイトルです" --text "情報を表示する。\n\n複数行も表示できる。この通りでござる。"

f:id:ytyaru:20190312180715p:plain

calendar

$ zenity --help-calendar
用法:
  zenity [オプション...]

カレンダーダイアログのオプション
  --calendar                                        カレンダーダイアログを表示する
  --text=TEXT                                       ダイアログに表示する文字列を指定する
  --day=DAY                                         カレンダーの日を指定する
  --month=MONTH                                     カレンダーの月を指定する
  --year=YEAR                                       カレンダーの年を指定する
  --date-format=PATTERN                             返却する日付の書式を指定する
$ zenity --calendar
20190312

0

$ zenity --calendar --year 2000 --month 12 --day 31
20001231

f:id:ytyaru:20190312181457p:plain

$ zenity --calendar --date-format "%Y-%m-%d"
2019-03-12

0

key 項目
Ctrl+ or
Ctrl+ or
,,,
  • 時間の入力も欲しかった
  • yyyy-MM-dd HH:mm:ss形式で入力するUIが欲しかった

file-selection

$ zenity --help-file-selection
用法:
  zenity [オプション...]

ファイル選択ダイアログのオプション
  --file-selection                                  ファイル選択ダイアログを表示する
  --filename=FILENAME                               ファイル名を指定する
  --multiple                                        複数のファイルを選択可能にする
  --directory                                       フォルダーのみ選択可能にする
  --save                                            保存モードにする
  --separator=SEPARATOR                             出力を区切る文字を指定する
  --confirm-overwrite                               ファイル名が既に存在していたら確認をとる
  --file-filter=NAME | PATTERN1 PATTERN2 ...        ファイル名をフィルターするパターンを指定する
$ zenity --fileselection

0

  • 文字列で入力したかった

progress

(
echo "10" ; sleep 1
echo "# 作業1" ; sleep 1
echo "20" ; sleep 1
echo "# 作業2" ; sleep 1
echo "50" ; sleep 1
echo "作業3" ; sleep 1
echo "75" ; sleep 1
echo "# 作業4" ; sleep 1
echo "100" ; sleep 1
) |
zenity --progress \
  --title="進捗" \
  --text="作業0" \
  --percentage=0

f:id:ytyaru:20190312184116p:plain

scale

$ zenity --help-scale
用法:
  zenity [オプション...]

スケールのオプション
  --scale                                           スケールダイアログを表示する
  --text=TEXT                                       ダイアログに表示する文字列を指定する
  --value=VALUE                                     初期値を指定する
  --min-value=VALUE                                 最小値を指定する
  --max-value=VALUE                                 最大値を指定する
  --step=VALUE                                      刻み幅を指定する
  --print-partial                                   値が変更されるたびに標準出力へ値を出力する
  --hide-value                                      ダイアログに値を表示しない
$ zenity --scale
100

f:id:ytyaru:20190312184506p:plain

color-selection

$ zenity --color-selection
rgb(165,255,142)
  • #RRGGBB形式で出力して欲しかった(透明度は不要)

 色の指定をしてみる。

$ zenity --color-selection --color "rgb(165,255,142)"
$ zenity --color-selection --color "#FFAA22"

forms

$ zenity --forms --text user --add-entry name --add-entry password --add-combo gender --combo-values="Male|Female" --add-calendar birth --forms-date-format %Y-%m-%d
a|b|Male|2019-03-12

f:id:ytyaru:20190312193744p:plainf:id:ytyaru:20190312193750p:plain

 --separatorをTABにしようとすると失敗する。

$ zenity --forms --text user --separator "\t" --add-entry name --add-entry password --add-combo gender --combo-values="Male|Female" --add-calendar birth --forms-date-format %Y-%m-%d
a\tb\tMale\t2019-03-12
  • --separatorをTABや改行にできない(エスケープシーケンスが使えない)
  • 初期値がセットできない(--entry-text等)

次回

対象環境

  • Raspbierry pi 3 Model B+
  • Raspbian stretch 9.0 2018-11-13
  • bash 4.4.12
  • zenity 3.28.1
$ uname -a
Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l GNU/Linux

所感

 フォント選択UIと指定する引数がない。以下も欲しい。