LinuxのbashスクリプトからGUIメッセージボックスを表示するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/7035

質問

私は Ubuntu Linux でいくつかの小さな bash スクリプトを書いています。入力を入力したり出力を表示したりするためにターミナルウィンドウを必要とせずに、GUI からそれらを実行できるようにしたいと考えています。

これまでのところ、必要な入力は sudo のパスワードのみであり、gksudo はそれを適切に処理します。しかし、メッセージボックスを表示する簡単な方法はまだ見つかりません。利用可能な「gkmessage」コマンドはありますか?デフォルトの Ubuntu インストールに含まれているものが望ましいですが、必要に応じて新しいパッケージをインストールしてもかまいません。

役に立ちましたか?

解決

私は信じている ゼニティ あなたが望むことをします。これは、コマンド ラインから GTK ダイアログを表示するために特別に設計されており、 Ubuntu パッケージ.

他のヒント

使用している場合 Ubuntu 多くのディストリビューション notify-send このコマンドは、右上隅に保存されやすい便利な通知の 1 つをスローします。そのようです:

notify-send "My name is bash and I rock da house"

美しい!

誰もが Zenity について言及していますが、他にもたくさんあるようです。ごちゃ混ぜですが興味深いリストは次のとおりです。 http://alternativeto.net/software/zenity/

まず、テキスト書式マークアップ、ウィンドウ タイトル、ボタン ラベルを特徴とする Zenity の例です。

zenity \
--info \
--text="<span size=\"xx-large\">Time is $(date +%Hh%M).</span>\n\nGet your <b>coffee</b>." \
--title="Coffee time" \
--ok-label="Sip"

gxメッセージ

gxmessage "my text"

xメッセージ

xmessage は非常に古いので安定しており、おそらく X を使用するすべてのディストリビューションで利用可能です (X で配布されているため)。Linux または Unix を長く使用している人であれば、その意味を理解できるように、X リソースを通じてカスタマイズできます (.Xdefaults, 、 誰でも ?)。

xmessage -buttons Ok:0,"Not sure":1,Cancel:2 -default Ok -nearmouse "Is xmessage enough for the job ?" -timeout 10

kダイアログ

(未検証)

PPA で

ヤド:Zenity On Steroids [シェル スクリプトからグラフィカル ダイアログを表示] ~ Web Upd8:Ubuntu / Linux ブログ. 。ダイアログのサイズが自動調整されないようです。

echo My text | yad \
--text-info \
--width=400 \
--height=200

より大きな例

yad \
--title="Desktop entry editor" \
--text="Simple desktop entry editor" \
--form \
--field="Type:CB" \
--field="Name" \
--field="Generic name" \
--field="Comment" \
--field="Command:FL" \
--field="Icon" \
--field="In terminal:CHK" \
--field="Startup notify:CHK" "Application" "Name" "Generic name" "This is the comment" "/usr/bin/yad" "yad" FALSE TRUE \
--button="WebUpd8:2" \
--button="gtk-ok:0" \
--button="gtk-cancel:1"

Ubuntu標準リポジトリにないその他のもの

  • シェルギ
  • xダイアログ
  • gtkダイアログ

オフトピック (ターミナル用)

whiptail --msgbox "my text" 10 20
dialog --msgbox "my text" 10 20

ご自由に編集してください。

ゼニティ アプリケーションはあなたが探しているもののようです。

からの入力を取得するには ゼニティ, 、変数を指定して次の出力を得ることができます。 zenity --entry それに保存されました。次のようになります。

my_variable=$(zenity --entry)

の値を見てみると、 私の変数 これで、Zenity ポップアップ入力ダイアログに入力された内容になります。

ユーザー (またはあなた) がダイアログに何を入力すべきかについて何らかのプロンプトを表示したい場合は、 - 文章 希望のラベルに切り替えます。次のようになります。

my_variable=$(zenity --entry --text="What's my variable:")

Zenity には特定のタスク向けの優れたオプションが他にもたくさんあるので、それらもチェックしてみるとよいでしょう。 zenity --ヘルプ. 。一例としては、 - カレンダー グラフィカル カレンダーから日付を選択できるオプション。

my_date=$(zenity --calendar)

これにより、ユーザーがクリックした内容に基づいて適切にフォーマットされた日付が得られます。

echo ${my_date}

与える:

08/05/2009

スライダー セレクター、エラー、リストなどのオプションもあります。

お役に立てれば。

私が見つけたのは、 xメッセージ コマンドで十分です。

ここに、あなたが望むことを実行する小さな Tcl スクリプトがあります。Wish インタープリターはデフォルトで Ubuntu にインストールされる必要があります。

#!/usr/bin/wish
pack [label .msg -text [lindex $argv 0]]
pack [entry .ent]
bind .ent <KeyPress-Return> { puts [.ent get]; destroy . }
focus .ent

次のように呼び出します。

myanswer=`gui-prompt "type your answer and press enter"`

alert そして notify-send 同じことのようです。私が使う notify-send 非入力メッセージの場合は、フォーカスを盗まず、Zenity などを停止する方法が見つからないためです。これをすることから。

例えば

# This will display message and then disappear after a delay:
notify-send "job complete"

# This will display message and stay on-screen until clicked:
notify-send -u critical "job complete"

もあります dialog そしてKDEのバージョン kdialog. dialog はスラックウェアによって使用されるため、他のディストリビューションではすぐに利用できない可能性があります。

Ubuntuの場合はどうでしょうか 警告. 。操作の後に使用して、操作が完了したことを警告し、操作がエラーで終了した場合には赤い十字アイコンを表示することもできます。

ls -la; alert

他に何も存在しない場合。次のように、xterm を起動してその中でエコーできます。

 xterm -e bash -c 'echo "this is the message";echo;echo -n "press enter to continue "; stty sane -echo;answer=$( while ! head -c 1;do true ;done);'

ゼニティ これはまさにあなたが探しているツールだと思います。

または

zenity --help

Kdialog とダイアログはどちらも優れていますが、私は Zenity をお勧めします。xmessage またはダイアログの迅速、簡単、そして見栄えが大幅に向上しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top