ウェブサイト検索

Zenity - コマンドラインおよびシェル スクリプトでグラフィカル (GTK+) ダイアログ ボックスを作成します


GNU Linux は、Linux と呼ばれる非常に強力なカーネル上に構築されたオペレーティング システムです。 Linux はコマンドライン操作で有名です。日常的なコンピューティングおよびデスクトップ コンピューティングにおける Linux の発明により、nix はコマンドラインに偏ることはなくなり、同様にグラフィカルになり、グラフィカル アプリケーションの開発はもはや難しい作業ではなくなりました。

この記事では、「Zenity」 と呼ばれるGTK+ アプリケーションを使用した単純なグラフィカル ダイアログ ボックスの作成と実行について説明します。

ゼニティとは何ですか?

Zenity は、コマンドラインおよびシェル スクリプトを使用してGTK+ ダイアログ ボックスを表示するオープン ソースのクロスプラットフォーム アプリケーションです。グラフィカル ボックス内のシェルに情報を問い合わせたり、シェルから情報を提示したりすることができます。このアプリケーションを使用すると、コマンド ラインでグラフィカル ダイアログ ボックスを作成でき、ユーザーとシェル間の対話が非常に簡単になります。

他の代替手段もありますが、特に複雑なプログラミングが必要ない場合、Zenity のシンプルさに匹敵するものはありません。 Zenity は、必ず手に入れなければならないツールです。

Zenity の機能

  1. FOSS ソフトウェア
  2. クロスプラットフォームアプリケーション
  3. GTK+ ダイアログ ボックスの実行を許可する
  4. コマンドラインツール
  5. シェルスクリプトのサポート

使いやすさ

  1. 簡単なGUI作成
  2. 他の複雑なツールに比べて機能が少ない
  3. シェル スクリプトが GUI ユーザーと対話できるようにします。
  4. グラフィカルユーザーインタラクションのための簡単なダイアログ作成が可能

Zenity はすべての既知の主要なプラットフォームで利用可能であり、GTK+ ライブラリに基づいているため、Zenity プログラムは別のプラットフォームに移植したり、別のプラットフォームから移植したりできます。

Linux への Zenity のインストール

Zentity は、現在のほとんどの標準 Linux ディストリビューションのリポジトリにデフォルトでインストールされているか、利用可能です。次のコマンドを実行すると、 がマシンにインストールされているかどうかを確認できます。

ravisaive@tecmint:~$ zenity --version 

3.8.0
ravisaive@tecmint:~$ whereis zenity 

zenity: /usr/bin/zenity /usr/bin/X11/zenity /usr/share/zenity /usr/share/man/man1/zenity.1.gz

インストールされていない場合は、以下に示すように Apt または Yum コマンドを使用してインストールできます。

ravisaive@tecmint:~$ sudo apt-get install zenity		[on Debian based systems]

root@tecmint:~# yum install zenity				[on RedHat based systems]

さらに、ソース ファイルからビルドすることもでき、次のリンクを使用して最新のZenity ソース パッケージ (つまり現在のバージョン 3.8) をダウンロードします。

  1. http://ftp.gnome.org/pub/gnome/sources/zenity/

Zenity の基本ダイアログ ボックス

コマンドラインから直接呼び出すことができるZenity の基本的なダイアログの一部。

1. クイックカレンダーダイアログはどうでしょうか?
root@tecmint:~# zenity --calendar

2. エラーダイアログボックス
root@tecmint:~# zenity --error

3. 一般的なテキスト入力ダイアログボックス
root@tecmint:~# zenity --entry

4. 情報ダイアログ
root@tecmint:~# zenity --info

5. 質問ダイアログボックス
root@tecmint:~# zenity --question

6. プログレスバー
root@tecmint:~# zenity --progress

7. スケールダイアログ
root@tecmint:~# zenity --scale

8. パスワードダイアログ
root@tecmint:~# zenity --password

9. フォームダイアログボックス
root@tecmint:~# zenity --forms

10. 概要ダイアログ
root@tecmint:~# zenity --about

「シェルスクリプトの作成」ダイアログ

ここでは、 単純なシェル スクリプトを使用したZenity ダイアログの作成について説明します。 (上で行ったように) シェルからZenity コマンドを直接実行することで単一のダイアログを作成することはできますが、意味のある結果を得るために 2 つのダイアログ ボックスをリンクすることはできません。

ユーザーからの入力を受け取り、結果を表示する対話型ダイアログ ボックスはどうでしょうか。

#!/bin/bash 
first=$(zenity --title="Your's First Name" --text "What is your first name?" --entry) 
zenity --info --title="Welcome" --text="Mr./Ms. $first" 
last=$(zenity --title="Your's Last Name" --text "$first what is your last name?" --entry) 
zenity --info --title="Nice Meeting You" --text="Mr./Ms. $first $last"

これを (従来どおり)「anything.sh」に保存し、実行可能にすることを忘れないでください。 anything.sh ファイルに 755 権限を設定し、スクリプトを実行します。

root@tecmint:~# chmod 755 anything.sh 
root@tecmint:~# sh anything.sh

スクリプトの説明について

従来のシバン、別名ハッシュバン

#!/bin/bash

以下の行の「first」は変数であり、変数の値は実行時に生成されます。

    1. –entry」は、zenity がテキスト入力ボックスを生成するように要求されることを意味します。
    2. – title=」は、生成されるテキスト ボックスのタイトルを定義します。
    3. —text=」は、テキスト入力ボックスで使用できるテキストを定義します。
first=$(zenity --title="Your's First Name" --text "What is your first name?" --entry)

以下のスクリプト ファイルのこの行は、タイトルが「Welcome 」、テキストが「Mr./Ms.first 」の情報 (-info) ダイアログ ボックスを生成するためのものです。

zenity --info --title="Welcome" --text="Mr./Ms. $first"

スクリプトのこの行は、新しい変数「last」が定義されている点を除いて、スクリプトの 2 行目と似ています。

last=$(zenity --title="Your's Last Name" --text "$first what is your last name?" --entry)

スクリプトのこの最後の行もスクリプトの 3 行目に似ており、変数「$first」と「$last」の両方を含む情報ダイアログ ボックスを生成します。

zenity --info --title="Nice Meeting You" --text="Mr./Ms. $first $last"

シェル スクリプトを使用してカスタム ダイアログ ボックスを作成する方法の詳細については、次のリファレンス ページZenityを参照してください。

  1. https://help.gnome.org/users/zenity/stable/

次の記事では、ZenityGUI ユーザー操作のためのシェル スクリプトと統合します。それまではTecmint にご注目ください。コメントセクションに貴重なフィードバックをお寄せください。