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

我需要在两个Bash列表(文件)记录中展示一些文本以及每个记录的大约15个值。在同一个屏幕上,我需要呈现一个三种选择方式的界面(按钮、滚动选择窗口等)。
我是一个刚开始使用Zenity脚本的Ubuntu(11.04)新手。我的朋友们建议我试试YAD。
我是否可以在YAD中完成所有这些功能,或者还有其他对我们来说不为人知的易于使用的GUI工具?

.

4个回答

对于简单的对话框,Yad或kdialog确实是最功能丰富的。 然而,我只知道两个程序可以完成bash的完整图形用户界面:

gtkdialog(https://code.google.com/p/gtkdialog)将为您提供一个完整的前端界面,适用于单个程序,如果yad不能满足您的需求,那么这可能是您首选的。

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


这是一个在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 的 Notebook 功能创建带有插件的对话框。
PCLinusOS mag有一个长篇例子,在Yad site上还有一些有趣的短篇例子。

一些 Zenity 的示例,以防有人想要继续使用它。
这将创建一个“Hello world”消息框。
zenity --info --text "Saluton mondo"

这将创建一个由ls命令输出填充的列表。
ls /var/log | zenity --list --column="Files and directories"

这里是一个非常好的例子,展示如何使用zenity创建带有多个输入的对话框。

enter image description here

不同的用户界面类型(复选框,日期选择器,颜色选择器等)在这里有文档记录
据我所知,在Ubuntu 20.04及更高版本中,默认安装了zenity