GNU/Linux >> Linux の 問題 >  >> Linux

Zenityを使用してbashスクリプトでGUIダイアログを表示する方法

LinuxのbashスクリプトがLinuxの真の強みであることは誰もが知っています。多くの場合、ユーザーとの対話を容易にするために、スクリプトにグラフィカルユーザーインターフェイス(GUI)を表示する必要があります。 GUIを使用すると、スクリプトがよりユーザーフレンドリーで美しくなります。

シェルスクリプトのGTKの場合、Linuxで利用できる多くのオプションとツールがあります。

この記事では、Zenityを使用してBashスクリプトでGUIダイアログを表示する方法を紹介します。

Zenityは、シェルスクリプトでシンプルなGUIを表示するためのオープンソースアプリケーションです。 GTK +ダイアログを表示することで、スクリプトをよりユーザーフレンドリーにします。 Zenityは、最新のシェルスクリプト用の便利なコマンドラインツールです。 Zenityは使いやすく、クロスプラットフォームのアプリケーションです。

前提条件

root権限を持つsudoユーザー。

Zenityをインストール

ZenityはGNOMEデスクトップの一部であり、デフォルトでは、ほとんどのLinuxディストリビューションにインストールされています。ターミナルで次のコマンドを実行すると、システムにZenityがインストールされていることを確認できます。

zenity --version


Zenityがシステムにインストールされていない場合は、 Aptを使用してインストールできます 、 dnf またはpacman コマンド。

Ubuntu / Debianベースのシステムの場合:

sudo apt-get install zenity

RedHatベースのシステムの場合:

dnf install zenity

Archベースのシステムの場合:

pacman -S zenity

Zenityの一般的なオプション

Zenityで個別に使用できる一般的なオプションがいくつかあります。一般的なオプションは、-title、-window-icon、-width、-height、-timeout

です。

--- titleオプションを使用して、ダイアログウィンドウのタイトルを指定できます。

--window-iconオプションを使用して、Zenityダイアログボックスのアイコンとして使用されるアイコンを指定できます。

それだけでなく、Zenityコマンドで--widthオプションと--heightオプションを設定することで、Zenityダイアログボックスの幅と高さを設定できます。

--timeoutオプションを使用すると、ダイアログボックスが自動的に閉じた後、ダイアログのタイムアウトを設定できます。

Zenityメッセージボックス

ターミナルから簡単なZenityコマンドを使用して、基本的で優れたGUIメッセージダイアログを作成できます。

Zenityで使用できる4種類のメッセージダイアログ。

  • 情報
  • エラー
  • 質問
  • 警告

1。情報ダイアログボックス

ターミナルで次のコマンドを実行すると、情報ダイアログボックスを作成できます。

zenity --info --text="Software Update Available." --width=500


2。エラーダイアログボックス

次のコマンドを実行してエラーダイアログボックスを表示します

zenity --error --text="Error In Installation" --title="Error" --width=500 --width=200


3。質問ダイアログボックス

次のコマンドを実行することで、簡単に「はい」または「いいえ」の質問をすることができます。

zenity --question --text="Do you want to reboot pc?" --width=200


次のようなシェルスクリプトでZenity質問ダイアログを使用できます:

#/bin/bash
touch demo.txt
if zenity --question --title="Confirm deletion" --text="Are you sure you want to demo.txt file?" --no-wrap
    then
    rm demo.txt
    zenity --info --title="Success" --text="demo.text was removed" --no-wrap
fi

4。警告ダイアログボックス

zenity --warning --title="Update Available" --text="OS Update required" --width=200

通知

Zenityを使用して通知を表示できます。

zenity --notification --text "Good Morning"

Zenity入力ボックス

Zenityを使用すると、ユーザーからの入力を受け取り、それを標準出力として表示する簡単なダイアログボックスを作成できます。

入力ボックスは次のとおりです。

カレンダー

[カレンダー]ダイアログボックスにカレンダーが表示され、ユーザーが選択した日付が標準出力として返されます。

zenity --calendar
Output:
17/04/21

テキスト入力ダイアログ

--entryオプションを使用して、テキスト入力ダイアログを作成できます。ユーザーにテキストの入力を求めたい場合に非常に便利です。

zenity --entry --title "User Info" --text "Please enter your name"
リストダイアログ

--listオプションを使用して、複数列のダイアログを作成できます。ここでは、リストダイアログのデータを列ごと、行ごとに入力する必要があります。以下に示すように、チェックボックスまたはリストダイアログボックス付きのREDIOBOXを使用できます。

zenity --list  --title "Choose Processor" --radiolist  --column "ID" --column="Name" 1 AMD 2 Intel

複数選択する場合は、-listオプションを使用してチェックボックスをオンにすることもできます。

zenity --list --title "Packages" --list  --text "select packages you want to install" --checklist --column "id"  --column "Name" 1 "Google Chrome" 2 "VLC" 3 "Firefox" 4 "GIMP"
Output
Google Chrome|VLC|Firefox
色選択ダイアログ

--color-selectionオプションを使用して、ユーザーから色選択値を取得できます。

zenity --color-selection --show-palette

ファイル選択ダイアログ

--file-selectionオプションを使用して、選択したファイルまたはディレクトリを標準出力としてキャプチャできます。 --file-selectionオプションを使用してファイルを保存することもできます。

zenity --file-selection --multiple --filename "/"

進行状況ダイアログ

--progressオプションを使用して、優れたプログレスバーを作成できます。これは、アプリケーションまたはスクリプトの完了プログレスバーをユーザーに表示する場合に何度も役立ちます。

以下のコマンドで、ダウンロードプログレスバーを表示します。

(wget -r  --no-parent patch -A.tar.gz http://157.245.99.119/latest/ -P /tmp 2>&1 ) | sed -u 's/.* \([0-9]\+%\)\ \+\([0-9.]\+.\) \(.*\)/\1\n# Downloading at \2\/s, ETA \3/' | zenity --progress --title="Downloading File..." --percentage=1 --pulsate

詳細な進行オプションについては、次のコマンドをターミナルに実行してください

zenity --help-progress

その他のZenityオプションについては、 man Zenityを使用できます。 およびZenity--help

結論

上記のガイドでは、Zenityを使用してGUIダイアログを表示するbashスクリプトを記述し、Bashスクリプトをよりユーザーフレンドリーにする方法を学習しました。ご不明な点がございましたら、お気軽にお問い合わせください。


Linux
  1. Sys ::Detector ::Virtualization Perlスクリプトを使用して仮想化を検出する方法は?

  2. Bashスクリプトをデバッグする方法は?

  3. diff (bash) を使用して異なる行のみを表示する方法

  1. BashスクリプトをBashにパイプするときにパラメータを設定する方法は?

  2. Awk内のBashスクリプトでBash関数を呼び出す方法は?

  3. Bashスクリプトで文字列を分割する方法

  1. パラメータをBashスクリプトに渡す方法は?

  2. bash スクリプトを使用してファイル名のスペースを置き換える方法

  3. Linuxでbashスクリプトを使用してインターネットアクセスをチェックするには?