如何使用bash脚本轻松创建GUI对话框?

我需要为两个Bash列表(文件)记录中的每一个提供一些文本以及项目(大约15个值)。 在同一个屏幕上,我需要提供三向选择,(按钮,滚动选择窗口等)。

我是一个刚开始在脚本中使用Zenity的Ubuntu(11.04)脚本菜鸟。 我的朋友建议YAD。

我可以在YAD中完成所有这些工作,还是使用我们未知的其他简单的GUI工具?

这是Yad中一个非常小的实现。

与脚本位于同一目录中的名为“mylist”的文本文件包含“1 2 3 4 5 6 7 8 9 10”。 空格字符是输入列表的默认分隔符。

示例脚本是:

#/bin/bash thelist=$( 

而已。 滚动列表会自动处理。 --separator=""是为了--separator="" Yad默认的输出管道符(“|”)。

当您阅读手册页时,您会看到您有大量的可能性。 您可以添加按钮,图标,单选按钮等。您可以使用Yad的Notebookfunction创建选项卡式对话框,将对话框作为插件嵌入到其他对话框中。

在PCLinusOS mag上有一个很长的例子,在Yad站点有一些有趣的简短例子。

对于简单的对话,Yad或kdialog确实是最有特色的。 但是,bash的完整GUI只能通过我知道的两个程序来完成:

gtkdialog( https://code.google.com/p/gtkdialog )将为您提供单个程序的完整前端,如果您的需求不足以满足您的需求,那么这可能是您首先想要的。

另一个是gtkserver( http://www.gtk-server.org ),它是一个单独运行的GUI服务器。 您的bash应用程序可以通过管道,消息或TCP套接字与它进行通信,如果您计划使用单个中央接口进行复杂的脚本/应用程序设置,这非常方便。 我认为你的当前项目会有点过头了:-)

一些Zenity的例子,以防万一有人想坚持下去。

这将创建一个“Hello world”消息框:

 zenity --info --text "Saluton mondo" 

这将创建一个填充ls输出的列表:

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