Lua 脚本如何调用/调用 zenity 或通知发送?

问题描述

我是 lua 的初学者 操作系统:manjaro XFCE

如果我使用 notify-send 或 zenity 从终端桌面通知运行,它会起作用。 例如:

notify-send -t 4000 'displays for 4 secs' "understood!!"

但是,我可以通过 lua 脚本使其工作。

#!/usr/bin/lua

print ("basic test")

notify-send -t 4000 'displays for 4 secs' "understood!!"

如何解决这个问题,我尝试了几种方法包括 os.execute(),但都没有成功。

谢谢

解决方法

os.execute("notify-send -t 4000 'Displays for 4 secs' 'understood!!'")
,

我猜需要 DISPLAY 变量。
签入 X:打开终端(命令行)并输入: echo $DISPLAY
这就是您在另一个命令行或 shell 中需要的:zenity
...没有设置这个变量。

如果您的引用有效,则将其(类似)放在 cmd ...

之前
os.execute('env -i DISPLAY=:0 '..cmd)

如果超级 q 用户 root 想要在普通用户 X 窗口屏幕上显示某些内容,那么这可以在我的 X(使用 windowmanager LXDE)上运行。

如果您不想从 zenity 中输出垃圾,请使用...

>cmd = "zenity --info --no-wrap --text=" .. "\"" .. quote .. "\""
>os.execute('env -i DISPLAY=:0 '..cmd..' 2>/dev/null')
true    exit    0

( 控制台输出 lua -i )
...并且没有警告/错误消息向控制台发送垃圾邮件;-)

并且如果您希望脚本不要等到有人在 X 上点击 RETURN 而不是在行尾使用 &...

os.execute('env -i DISPLAY=:0 '..cmd..' 2>/dev/null &')

在我的测试中,我还注意到只能以这种方式推出一个衬垫。
quote 可以容纳的内容示例:
uname -a = 工作,将被淘汰
df -h = 失败,因为它有几行

编辑(zenity --help)
使用 zenity 时不需要 env -i DISPLAY=:0:--display=:0

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...