6

私は 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 }
}

私はGNOMEデスクトップ環境のウィンドウマネージャーとしてAwesomeを使用しているので、環境変数「DE」が「gnome」に設定されている場合にのみ、 Awesomegnome-session-quitに代わりにプログラムを使用させたいと考えています。awesome.quitしたがって、5行目を次のように置き換えました

{ "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 に答える