web-dev-qa-db-ja.com

bashスクリプトを使用してGUIダイアログを簡単に作成するにはどうすればよいですか?

2つのBashリスト(ファイル)レコードごとに、項目(約15個の値)とともにテキストを表示する必要があります。同じ画面で、3方向の選択(ボタン、スクロール選択ウィンドウなど)を提示する必要があります。

私はスクリプトでZenityを使い始めたばかりのUbuntu(11.04)スクリプティングnoobです。友達がYADを提案しました。

YADでそれらすべてを実行できますか、それとも私たちが知らない他の簡単なGUIツールを使用できますか?

6
Harry

Yadでの最小限の実装を次に示します。

スクリプトと同じディレクトリにある「mylist」という名前のテキストファイルには、「1 2 3 4 5 6 7 8 9 10」が含まれています。スペース文字は、リストへの入力のデフォルトの区切り文字です。

サンプルスクリプトは次のとおりです。

#/bin/bash
thelist=$(<mylist)
thechoice=$(yad --title="Choose a value" --width=200 --height=200 --list --column="Values" --separator="" $thelist)
exit $(yad --title="You chose..." --text=$thechoice)

それでおしまい。リストのスクロールは自動的に処理されます。 --separator=""は、出力にパイプ文字( "|")を追加するYadのデフォルトを抑制することです。

Manページを読むと、多数の可能性があることがわかります。ボタン、アイコン、ラジオボタンなどを追加できます。Yadのノートブック機能を使用して、ダイアログをプラグインとして他のダイアログ内に埋め込むことにより、タブ付きダイアログを作成できます。

PCLinusOS mag には長い例があり、 Yadサイト には興味深い短い例があります。

2
chaskes

シンプルなダイアログでは、Yadまたはkdialogが最も機能的です。ただし、bashの完全なGUIは、私が知っている2つのプログラムによってのみ実行できます。

gtkdialog( https://code.google.com/p/gtkdialog )は、単一のプログラム用の本格的なフロントエンドを提供し、yadが判明した場合、おそらく最初に探しているものですあなたのニーズに十分ではありません。

もう1つはgtkserver( http://www.gtk-server.org )で、これは独立した実行GUIサーバーです。パイプ、メッセージ、またはTCPソケットを使用してbashアプリケーションと通信できます。これは、単一の中央インターフェイスを使用してスクリプト/アプリケーションの複雑なセットアップを計画している場合に非常に便利です。現在のプロジェクトでは少し上になると思います:-)

2
thom

誰かがそれに固執したい場合のために、いくつかのZenityの例。

これにより、「Hello world」メッセージボックスが作成されます。

zenity --info --text "Saluton mondo"

これにより、lsの出力が入力されたリストが作成されます。

ls /var/log | zenity --list --column="Files and directories"
1
Noe Nieto