bashスクリプトに関しては、すべてのスクリプトは主にコマンドライン操作に重点を置いています。ユーザーからの入力が必要な場合でも、メッセージを表示する場合でも、すべてが端末を介して行われます。 Bashを使用してスクリプトを作成するほとんどの人は、利用可能なGUIツールのセットがあることを知りません。この記事では、 Zenityと呼ばれるそのようなツールの1つについて説明します。 -コマンドラインスクリプトとシェルスクリプトでグラフィカル(GTK +)ダイアログボックスを作成できるシンプルなプログラム。
Zenityとは何ですか?
Zenityは、ダイアログのGNOMEポートであるgdialogを書き直したもので、ユーザーがスクリプトをグラフィカルに操作できるさまざまな操作用のウィジェットのセットを作成できます。ウィジェットはGTKツールキットに基づいています。
Zenityは、 Cを使用して作成されたオープンソースプログラムです。 プログラミング言語。 Linux、BSD、Windowsをサポートしています。
さらに面倒なことはせずに、Zenityを使用してコマンドラインとシェルスクリプトからグラフィカルなGTK+ダイアログボックスを表示する方法を見てみましょう。
LinuxにZenityをインストールする方法
まず、次のコマンドを実行して、zenityがインストールされ、使用できるかどうかを確認します。
$ which zenity /usr/bin/zenity
$ zenity --version 3.32.0
$ zenity --about
zenityがディストリビューションにインストールされていない場合は、ディストリビューションに応じて次のコマンドを実行してインストールします。
Alpine Linux:
$ sudo apk add zenity
Arch Linux:
$ sudo pacman -S zenity
Fedora、RHEL、CentOS、Alma Linux、Rocky Linux:
$ sudo dnf install zenity
Debian、Ubuntu、Linux Mint、Pop OS:
$ sudo apt install zenity
openSUSE:
$ sudo zypper install zenity
1。 Zenityヘルプと一般的なオプション
ウィジェットごとに、サポートされているオプションのセットを取得できる関連ヘルプオプションがあります。
次のコマンドを実行して、ヘルプセクションにアクセスします。
$ zenity --help
任意のウィジェットと一緒に使用できるいくつかの一般的なオプションがあります。これらは必須のオプションではありませんが、使用するとウィジェットの動作を変更するために利用できます。
一般的なオプションのリストを取得するには、次のコマンドを実行します。
$ zenity --help-general
これらのオプションがどのように機能するかについては、次のセクションで説明します。
2。メッセージダイアログボックス
メッセージダイアログボックスには、エラー、警告、情報、および質問のダイアログボックスが表示されます。状況に応じて、スクリプトで適切なダイアログボックスを使用する必要があります。
2.1。エラーダイアログボックス
エラーダイアログボックスでサポートされているオプションのリストにアクセスするには、次のコマンドを実行します。
$ zenity --help-error
スクリプトにエラーダイアログボックスを表示するには、次のコマンドを使用します。ここで、-error フラグはエラーダイアログボックスと-textを作成します フラグはテキストメッセージを出力します。画像から、ダイアログボックスに関連付けられたエラーアイコンがあることがわかります。
zenity --error \
--title "Error Message" \
--width 500 \
--height 100 \
--text "Permission denied. Run with sudo or as root user."
上の画像からもわかるように、-width、-heightなどの一般的なオプションのいくつかは、ダイアログボックスのジオメトリを制御するために使用されます。フラグ--titleは、タイトル付きのダイアログバーを印刷するために使用されます。
2.2。警告ダイアログボックス
警告ダイアログボックスでサポートされているオプションのリストにアクセスするには、次のコマンドを実行します。
$ zenity --help-warning
-warningを使用します スクリプトのフラグを立てて、警告ボックスと-textを表示します 警告メッセージを表示するフラグ。
zenity --warning \
--title "Warning Message" \
--width 500 \
--height 100 \
--text "Disk space exceeded the threshold limit. Check ASAP."
2.3。情報ダイアログボックス
情報ダイアログボックスでサポートされているオプションのリストにアクセスするには、次のコマンドを実行します。
$ zenity --help-info
-infoを使用する スクリプトのフラグを立てて、インフォボックスと-textを表示します 情報メッセージを表示するためのフラグ。
zenity --info \
--title "Info Message" \
--width 500 \
--height 100 \
--text "Installation completed successfully."
2.4。質問ダイアログボックス
質問ダイアログボックスでサポートされているオプションのリストにアクセスするには、次のコマンドを実行します。
$ zenity --help-question
質問ダイアログボックスは、はいとともにメッセージを表示します またはいいえ オプション。 「はい」を押すと 、戻りコードは"ゼロ"になります 「いいえ」の場合 戻りコードは"one"になります 。スクリプトにさらにロジックを書き込むには、終了コードを使用する必要があります。
zenity --info \
--title "Info Message" \
--width 500 \
--height 100 \
--text "Installation completed successfully."
3。テキスト入力ダイアログボックス
テキスト入力ダイアログボックスでサポートされているオプションのリストにアクセスするには、次のコマンドを実行します。
$ zenity --help-entry
テキスト入力ダイアログボックスは、ユーザーの入力を求めます。フラグ--entry 入力ダイアログボックスの作成に使用されます。ダイアログボックスにテキストを表示するには、-textを使用します 国旗。 [OK]を押すと、テキストボックスに入力された値が端末に出力されます。以下のようにテキストボックスからの入力をさらに処理する場合は、出力を変数に保存する必要があります。
$ USR=$(zenity --entry \
--width 500 \
--title "check user" \
--text "Enter the user name"); echo $USR
入力時に入力テキストを表示したくない場合は、-hide-textを使用してください フラグ。
$ USR=$(zenity --entry \
--width 500 \
--title "check user" \
--text "Enter the user name" \
--hide-text); echo $USR
-entry-text を使用して、入力ボックス内にデフォルト値を設定することもできます。 国旗。値を削除して入力を入力する必要があります。そうしないと、既存の値がデフォルトとして使用されます。
$ USR=$(zenity --entry \
--width 500 \
--title "check user" \
--text "Enter the user name" \
--entry-text $USER); echo $USR
4。パスワードダイアログボックス
パスワードダイアログボックスでサポートされているオプションのリストにアクセスするには、次のコマンドを実行します。
$ zenity --help-password
パスワードダイアログボックスは、-usernameを使用してユーザー名とパスワードを受け入れます および--password 国旗。出力は(ユーザー名|パスワード)として表示されます。コマンドの出力を変数に割り当て、さらに処理するためにユーザー名とパスワードを抽出する必要があります。
$ zenity --password --username
5。テキスト情報ダイアログボックス
テキスト情報ダイアログボックスでサポートされているオプションのリストにアクセスするには、次のコマンドを実行します。
$ zenity --help-text-info
テキスト情報ダイアログボックスは、ファイルからテキストを印刷するか、ダイアログボックスでURLを開きます。たとえば、ファイルを読み取ってテキストを表示するには、フラグ-filenameを使用します。 。以下の例では、 / etc / hostsを読んでいます。 ファイル。
zenity --text-info \
--title "Hostname Information" \
--filename "/etc/hosts"
-チェックボックス フラグを使用して、ユーザーからの入力を取得できます。良い例は「使用許諾契約の受諾」です。チェックボックスを選択しない限り、[OK]ボタンは無効になります。
zenity --text-info \
--title "Hostname Information" \
--filename "/etc/hosts" \
--checkbox "This is a checkbox"
6。カレンダーダイアログボックス
カレンダーダイアログボックスでサポートされているオプションのリストにアクセスするには、次のコマンドを実行します。
$ zenity --help-calendar
カレンダーダイアログボックスにカレンダーが表示され、日付を選択できます。出力を変数に保存する必要があります。そうしないと、選択した日付が端末に出力されます。
zenity --calendar \
--title="Select a Date" \
--text="Select Date to pull the employee record."
デフォルトでは、今日の日付が選択されていますが、-dayを使用してカスタムの日付を選択することもできます 、-month 、および-year フラグ。
zenity --calendar \
--title="Select a Date" \
--text="Select Date to pull the employee record." \
--year 2015 \
--month 7 \
--day 15
デフォルトの出力形式はDD\ MM \ YYになります 。 -date-formatを使用してカスタムの日付出力を作成することもできます フラグ。
zenity --calendar \
--title="Select a Date" \
--text="Select Date to pull the employee record." \
--date-format %m-%d-%y
7。色選択ダイアログボックス
色選択ダイアログボックスでサポートされているオプションのリストにアクセスするには、次のコマンドを実行します。
$ zenity --help-color-selection
色選択ダイアログにパレットが表示され、色を選択できるようになり、出力はRGB値になります。 -color-selectionを使用します -show-paletteとともにフラグを立てる フラグ。
$ COLOR_RGB=$(zenity --color-selection --show-palette) $ echo $COLOR_RGB
8。ファイル選択ダイアログボックス
ファイル選択ダイアログボックスでサポートされているオプションのリストにアクセスするには、次のコマンドを実行します。
$ zenity --help-file-selection
ファイル選択ダイアログでは、ファイルまたはディレクトリを選択でき、パスが出力として表示されます。フラグ--file-selection 使用すべきです。ファイル選択ダイアログで使用できるフラグがいくつかあります。
-ファイル名=>デフォルトのファイル/ディレクトリへのパス-ディレクトリ=>選択するディレクトリのみ-複数コード> =>複数のファイル名を選択できます-保存=>保存モードに設定
zenity --file-selection \
--title "Select Files" \
--filename "/home/${USER}/" \
--multiple
複数選択の場合、ファイルパスは "|"を使用して区切られます シンボル。
-separatorを使用してカスタム区切り文字を設定できます 国旗。以下の例では、コロンを使用しています (:コード> )セパレータとして。
zenity --file-selection \
--title "Select Files" \
--filename "/home/${USER}/" \
--multiple \
--separator :
9。フォームダイアログボックス
フォームダイアログボックスでサポートされているオプションのリストにアクセスするには、次のコマンドを実行します。
$ zenity --help-forms
フォームダイアログでは、フォームを作成できます。良い例は、新しいユーザー登録フォームです。 -formsを使用する フォームダイアログボックスを作成するためのフラグ。 -formsと一緒に使用できる追加のフラグがいくつかあります フラグ。
-
-add-entry=>ユーザーが入力を入力できるようにフォームダイアログに新しいエントリを追加します。 -テキストコード> =>ダイアログボックスに表示されるテキスト。-
-add-password=>パスワードを受け入れますが、値は画面に表示されません。 -カレンダー=>カレンダーを開き、そこから日付を選択します。
以下は、フォームダイアログを使用したユーザーサインアップフォームの簡単な例です。
zenity --forms \
--text "Welcome to signup wizard" \
--add-entry "Enter the first name" \
--add-entry "Enter the last name" \
--add-entry "Enter login name" \
--add-password "Enter password"
入力値のデフォルトの区切り文字は"|"です。 シンボル。 -separatorを使用して区切り文字をカスタム化することもできます フラグ。
10。進行状況ダイアログボックス
プログレスバーダイアログボックスでサポートされているオプションのリストにアクセスするには、次のコマンドを実行します。
$ zenity --help-progress
-progressを使用します プログレスバーを作成するためのフラグ。プログレスバーを作成するには、それがどのように機能するかを理解する必要があります。あなたの側から2つの入力を提供する必要があります。
-
echoの番号のみを含む行 コマンドは進行状況のパーセンテージと見なされます。 -
#で始まる行echoの記号 コマンドは進行状況メッセージとして出力されます。
( echo 10 echo "# Updating repository Index" sleep 5 echo 15 echo "# Reading input files" sleep 5 echo 70 echo "# Installing packages..." sleep 5 echo 100 echo "# Package Installation completed!" ) | zenity --title "Package Installation Progress Bar" --progress --auto-close
プログレスバーが完成したら、-auto-closeフラグを使用して自動的に閉じるダイアログボックスを作成できます。
11。リストダイアログボックス
リストダイアログボックスでサポートされているオプションのリストにアクセスするには、次のコマンドを実行します。
$ zenity --help-list
リストダイアログボックスでは、行と列のリストを作成できます。 -listを使用します リストダイアログボックスと-columnを作成するためのフラグ 列を追加するフラグ。
$ zenity --list \
--column "Player" \
--column "Club" \
--column "Country" \
Messi PSG Argentina \
Neymar PSG Brazil \
Ronaldo Manu Portugal
上記の例を見てください。 -columnを使用する フラグ、3つの列を作成しました。列が作成されたら、上の画像のように各行に表示される次の行に値を入力できます。
最初の列では、チェックボックスまたはラジオボタンを作成できます。ラジオボタンを作成するには、-radiolistを使用します フラグを立ててチェックボックスを作成するには、-checklistを使用します 国旗。ラジオリストを作成するときは、 TRUEを追加する必要があります またはFALSE 行の最初の値としてのキーワード。 Trueの場合はラジオリストまたはチェックボックスが選択され、falseの場合はボックスが選択されません。
zenity --list \
--checklist \
--column "checkbox" \
--column "Player" \
--column "Club" \
--column "Country" \
FALSE Messi PSG Argentina \
FALSE Neymar PSG Brazil \
FALSE Ronaldo Manu Portugal
行を選択して[OK]をクリックすると、値が( | で端末に出力されます。 )セパレータとして。デフォルトでは、最初の列のみが端末に出力されます。行全体を印刷するには、-print-column ALLを渡します。 。
結論
記事の終わりになりました。 Zenityとは何か、および使用できるさまざまなウィジェットについて簡単に説明しました。 GUIユーティリティが常に必要なわけではありません。ただし、bashスクリプトでグラフィカルGTK +ウィジェットが必要な場合は、Zenityが他のGUIツールの中でも便利です。