linux shell gtk dialog action,在linux中,如何从bash脚本中显示GUI消息框?

问题描述

我正在Ubuntu linux下编写一些小的bash脚本。我希望能够从GUI运行它们,而无需终端窗口输入任何输入或查看任何输出。

到目前为止,唯一需要的输入是sudo的密码 – 而gksudo处理得很好。但我还没有找到一种简单的方法来显示消息框。是否有某种’gkmessage’命令可用?我更喜欢默认的Ubuntu安装中存在的东西,但我不介意在必要时安装新的包。

最佳解决方法

我相信Zenity会做你想要的。它专门用于从命令行显示GTK对话框,它可用作Ubuntu package。

次佳解决方法

如果您使用Ubuntu许多发行版,notify-send命令将在右上角抛出其中一个漂亮的易腐通知。像这样:

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

美丽!

第三种解决方法

首先,以文本格式标记,窗口标题,按钮标签为特色的zenity示例。

zenity \

--info \

--text="Time is $(date +%Hh%M).\n\nGet your coffee." \

--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

(未测试)

在PPA中

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

Off-topic(用于终端)

whiptail --msgbox "my text" 10 20

dialog --msgbox "my text" 10 20

随意编辑。

第四种方法

zenity应用程序似乎是您正在寻找的。

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

my_variable=$(zenity --entry)

如果你现在查看my_variable中的值,它将是zenity弹出输入对话框中输入的内容。

如果要提示某些用户(或您)应该在对话框中输入的内容,请添加带有所需标签的–text开关。它看起来像这样:

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

Zenity有很多其他适合特定任务的好选项,所以你可能想用zenity检查那些 – help。一个例子是–calendar选项,让您从图形日历中选择日期。

my_date=$(zenity --calendar)

根据用户点击的内容,它提供了格式良好的日期:

echo ${my_date}

得到:

08/05/2009

滑块选择器,错误,列表等也有选项。

希望这可以帮助。

第五种方法

我找到了xmessage命令,这有点好。

第六种方法

这是一个小Tcl脚本,可以做你想要的。应该在Ubuntu上默认安装Wish解释器。

#!/usr/bin/wish

pack [label .msg -text [lindex $argv 0]]

pack [entry .ent]

bind .ent { puts [.ent get]; destroy . }

focus .ent

像这样称呼它:

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

第七种方法

alert和notify-send似乎是一回事。我使用notify-send进行non-input消息,因为它没有窃取焦点,我找不到阻止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"

第八种方法

还有对话框和KDE版本kdialog。 slackware使用对话框,因此它可能无法立即在其他发行版上使用。

第九种方法

Ubuntu的警报怎么样?它可以在任何操作后用于提醒它完成,如果operaton有错误,甚至可以显示红叉图标

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);'

参考资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值