问题描述
我是 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