我正在努力改善Awesome window manager的rc.lua
。默认rc.lua
使用以下代码设置菜单:
myawesomemenu = {
{ "manual", terminal .. " -e man awesome" },
{ "edit config", editor_cmd .. " " .. awesome.conffile },
{ "restart", awesome.restart },
{ "quit", awesome.quit }
}
我使用Awesome作为GNOME桌面环境的窗口管理器,所以我希望Awesome使用gnome-session-quit
程序而不是awesome.quit
,但前提是环境变量“DE”设置为“侏儒”。因此,我用
{ "quit", if os.getenv("DE") == "gnome" then os.execute("/usr/bin/gnome-session-quit") else awesome.quit end }
但是当我重新加载文件时,我会得到“意外的符号”。我该如何解决这个问题,以及导致它的原因?
答案 0 :(得分:6)
试试这个:
{ "quit", (os.getenv("DE") == "gnome") and function() os.execute("/usr/bin/gnome-session-quit") end or awesome.quit}
a and b or c
与C a ? b : c
类似,前提是b
不是false
。
答案 1 :(得分:4)
我很确定Lua不会那样工作:P
您是否尝试将其包装在函数中?
{
"quit",
function()
if os.getenv("DE") == "gnome" then
os.execute("/usr/bin/gnome-session-quit")
else
awesome.quit
end
end
}
您还可以尝试重写awesome.quit
吗?
_awesome_quit = awesome.quit
awesome.quit = function()
if os.getenv("DE") == "gnome" then
os.execute("/usr/bin/gnome-session-quit")
else
_awesome_quit()
end
end