技术提示:使用 gxmessage 从脚本显示 GUI 消息
发布于 2010年1月28日
有很多对话框程序,例如 Zenity、Kdialog、xdialog 等。我喜欢这样的程序。它们使使用少量 GUI 操作来增强 shell 脚本变得非常容易。今天我将研究一个名为 gxmessage 的对话框程序。
我最近买了一部 Nokia N900(每个 Linux 用户都应该买一部),在使用过程中,我发现它上面的一些程序正在调用 gxmessage 来创建用户界面。 我发现它似乎有很多选项并且易于使用。所以我跳上我的笔记本电脑并在存储库中搜索它。 我在一个名为“gmessage”的包中找到了它。 要安装它,只需执行以下操作
sudo aptitude install gmessage
您可以使用这一行代码来生成带有按钮的 GUI 对话框
gxmessage -center \ -buttons "This is my button":1,"This is my other button":2 \ -title "This is my dialog BOX" 'Linux is great!!!'

gxmessage 的一个优点是,它具有其他一些程序没有的功能,即能够使用“-geometry”开关选择对话框的大小。
gxmessage -center \ -buttons "This is my button":1,"This is my other button":2 \ -geometry 190x80 \ -title "This is my dialog BOX" 'Linux is great!!!'
Gxmessage 会限制您将对话框设置得太小,以至于无法容纳您放置在其中的组件。 例如,如果您将几何尺寸设置为 10x10,并且对话框至少需要 100x50 才能显示所有按钮和消息,它将覆盖您的 10x10 并默认设置为 100x50。
对于您创建的每个按钮,您可以为其分配一个数值,该数值通过在按钮消息后放置一个冒号,然后是要分配给它的数值来指示。 然后,您可以获取被按下的按钮的值,并使用它来继续您的脚本。 这是一个简短的例子
#!/bin/bash gxmessage -center \ -buttons "Yes":1,"Of Course":2 \ -geometry 290x80 \ -title "Linux Journal Question" 'Does Shawn Powers ROCK?' answer=$? case "$answer" in 1) gxmessage -center "You said 'YES'" ;; *) gxmessage -center "I agree, Of Course." ;; esac

我只介绍了 gxmessage 的一些皮毛,请查看手册页以获取更多信息。