如何在Linux中显示一个bash脚本的GUI消息框?

我正在Ubuntu linux下编写一些bash脚本。 我希望能够从GUI运行它们,而不需要terminal窗口input任何input或查看任何输出。

到目前为止,唯一需要的input是sudo的密码,而gksudo可以处理这个问题。 但是,我还没有find一个简单的方法来显示一个消息框呢。 是否有某种'gkmessage'命令可用? 我更喜欢默认的Ubuntu安装,但我不介意安装新的软件包,如果有必要的话。

我相信Zenity会做你想做的事情。 它专门用于从命令行显示GTK对话框,并且可以作为Ubuntu软件包提供 。

如果你使用的是Ubuntu的许多发行版, notify-send命令会在右上angular扔出一个很好的易腐通知。 像这样:

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

美丽!

每个人都提到zenity,似乎还有很多其他人。 一个混乱,但有趣的名单是在http://alternativeto.net/software/zenity/

首先,以文本格式标记,窗口标题,button标签为特色的一个例子。

 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" 

gxmessage

 gxmessage "my text" 

xmessage

xmessage是非常古老的,所以它是稳定的,可能在所有使用X的发行版中都可用(因为它是用X分发的)。 它可以通过X资源进行定制,那些已经使用Linux或者Unix的人足够长的时间才能知道它是什么意思( .Xdefaults ,任何人?)。

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

kdialog

(未testing)

在PPA中

YAD:对类固醇的Zenity [从Shell脚本显示graphics对话框]〜Web Upd8:Ubuntu / Linux博客 。 似乎没有自动resize的对话框。

 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的标准仓库

  • shellgui
  • xdialog
  • gtkdialog

题外(terminal)

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

随意编辑。

zenity应用程序似乎是你在找什么。

要从zenity获取input,可以指定一个variables,并将zenity –的输出保存到它。 它看起来像这样:

 my_variable=$(zenity --entry) 

如果您现在查看my_variable中的值,则无论在“zenity”popup式input对话框中input了什么值。

如果你想给出一些提示,用户(或者你)应该在对话框中input什么内容,把–text开关加上你想要的标签。 它看起来像这样:

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

Zenity有很多其他很好的选项用于特定的任务,所以你可能想用zenity –help来检查。 一个例子是–calendar选项,让你从graphics日历中select一个date。

 my_date=$(zenity --calendar) 

根据用户点击的内容,可以给出格式良好的date:

 echo ${my_date} 

得到:

08/05/2009

还有滑块select器,错误,列表等选项。

希望这可以帮助。

我发现了xmessage命令,这足够好。

这里有一个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"` 

还有dialog和KDE版本kdialogdialog由slackware使用,所以它可能不会立即在其他发行版上可用。

如何Ubuntu的警报 。 可以在任何操作后使用,以提醒它完成,甚至如果operaton被错误结束显示红十字图标

 ls -la; alert 

alertnotify-send似乎是一回事。 我使用notify-send非input消息,因为它不偷窃焦点,我不能find一种方法来停止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" 

Zenity真的是我认为你正在寻找的确切工具。

要么

 zenity --help 

如果没有其他的东西存在。 你可以启动一个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);' 

Kdialog和对话都很好,但是我推荐Zenity。 快速,简单,更好看xmessage或对话框。