6

我正在努力改进我rc.luaAwesome 窗口管理器。默认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”设置为“gnome”。因此,我将第五行替换为

{ "quit", if os.getenv("DE") == "gnome" then os.execute("/usr/bin/gnome-session-quit") else awesome.quit end }

但是当我重新加载文件时,我得到“if 附近的意外符号”。我该如何解决这个问题,是什么原因造成的?

4

2 回答 2

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

于 2013-07-13T04:12:15.073 回答
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
于 2013-07-13T04:06:32.407 回答