スクリプト用のグラフィカルダイアログをいくつか作成したいのですが、方法がわかりません。 GTK-Serverまたはそのようなものについて何かを聞きます。誰かがBashをtcl/tkにリンクする方法を知っていれば、私も満足します。
私のプロジェクトはBashのスクリプトでなければならないため、「C++への変更」のようなものを投稿しないでください。他のオプションはありません。
何か案は?
編集:回答ありがとうございますが、コンソールの色のような「グラフィック」は必要ありませんが、移動、最小化などが可能なグラフィカルウィンドウはテストしますが、xmessage
はテストしますが、私はそれが私が探しているものだとは思わない。
編集2: yes/noのような単純なダイアログは作りたくないのですが、プログレスバーやボタン、ゲームのようなインターフェイスが必要です。
GUIダイアログを実際に使用する前に、コンソールプロンプトの使用を検討してください。多くの場合、単純な「y/n?」で逃げることができます。 bashでは read
コマンド 。を介してプロンプトが表示されます。
read -p "Do something? ";
if [ $REPLY == "y" ]; then
echo yay;
fi
コンソールプロンプトがそれをカットしない場合、 Zenity は本当に 使いやすい です、例えば:
zenity --error --text="Testing..."
zenity --question --text="Continue?"
これはLinux/Gnomeでのみ動作します(または、そのようなシステムではデフォルトでのみインストールされます)。 read
メソッドは、ほとんどすべてのプラットフォーム(ヘッドレスマシンを含む、またはSSH経由)で動作します
ReadやZenityが提供するものよりも複雑なものが必要な場合は、「C++への変更」が本当に最良の方法です(ただし、このようなシェルスクリプトの置き換えタスクには、C++よりPython/Rubyをお勧めします)
奇妙なゲームのシンプルなインターフェースをしたい、健康状態のプログレスバーなどが私が望むものの例です。変数「HEALTH」は34なので、プログレスバーを34/100で埋めてください
コマンドラインスクリプトとして、Pythonを使用します。
$ export HEALTH=34
$ python -c "import os; print '*' * int(os.environ.get('HEALTH', 0))"
**********************************
または、1から78の間の値を正規化するには(標準の端末サイズで行の折り返しが行われないように):
$ python -c "import os; print '*' * int((int(os.environ.get('HEALTH', 0)) / 100.0) * 78)"
Zenityには Progress Dialog もあり、
#!/bin/sh
(
echo "10" ; sleep 1
echo "# Updating mail logs" ; sleep 1
echo "20" ; sleep 1
echo "# Resetting cron jobs" ; sleep 1
echo "50" ; sleep 1
echo "This line will just be ignored" ; sleep 1
echo "75" ; sleep 1
echo "# Rebooting system" ; sleep 1
echo "100" ; sleep 1
) |
zenity --progress \
--title="Update System Logs" \
--text="Scanning mail logs..." \
--percentage=0
if [ "$?" = -1 ] ; then
zenity --error \
--text="Update canceled."
fi
前にも言ったように、Zenityが必要なことを実行できない場合は、ゲームのことをPython/Ruby/Perl/C++/etcで「適切な」スクリプトとして記述することを検討してください。 -scriptができます。
BashでグラフィカルUIを作成する場合は、 zenity が最適です。これはあなたがそれでできることです:
Application Options:
--calendar Display calendar dialog
--entry Display text entry dialog
--error Display error dialog
--info Display info dialog
--file-selection Display file selection dialog
--list Display list dialog
--notification Display notification
--progress Display progress indication dialog
--question Display question dialog
--warning Display warning dialog
--scale Display scale dialog
--text-info Display text information dialog
これらのウィジェットを組み合わせて、かなり使いやすいGUIを作成できます。もちろん、プログラミング言語に統合されたツールキットほど柔軟ではありませんが、場合によっては本当に便利です。
ncursesライブラリを使用するdialog
というコマンドがあります。 「Dialogは、シェルスクリプトのダイアログボックスを使用して、さまざまな質問を表示したり、メッセージを表示したりできるプログラムです。これらのタイプのダイアログボックスは実装されますダイアログ)」
ご使用の環境でTcl/Tkを使用できる場合は、おそらくTCLスクリプトを作成して使用する必要があります。 wish もご覧ください。
ライブラリをご覧ください: http://sites.google.com/site/easybashgui
同じコマンドセットで、Xが実行されているかどうか、D.E KDEまたはGnomeまたはその他です。 15の異なる機能があります(そのうち、「進行」と「調整」と呼ばれる2つがあります)...
さようなら:-)
これには gtk-server を使用できます。 Gtk-serverは、バックグラウンドで実行されるプログラムであり、他のプログラム(bashスクリプトを含む)がそれを制御できるようにするテキストベースのインターフェースを提供します。 Bashの例があります( http://www.gtk-server.org/demo-ipc.bash.txt 、 http://www.gtk-server.org/demo -fifo.bash.txt )
Qt/KDEがインストールされている場合は、 kdialog を使用して、Qtダイアログウィンドウをポップアップ表示できます。はい/いいえダイアログ、OK /キャンセル、単純なテキスト入力、パスワード入力などを表示するように簡単に指定できます。その後、シェルでこれらのダイアログからの戻り値にアクセスできます。
どうやら誰かがGTK +のbashインターフェースを書いたようです。簡単に機能するかどうかはわかりませんが、試してみる価値はあります。ここで見つけることができます: