3

我想创建一个键绑定以将焦点切换到主客户端。Profjim 在此论坛线程上的注释:

获取当前标签上的主客户端:

c = awful.client.getmaster()

我已经尝试了以下操作,但它会导致我的 ~/.config/rc.lua 文件被忽略,如果文件中有错误,这就是行为。有谁知道正确的语法?

awful.key({ modkey,          , "e",  awful.client.getMaster()),

注意:如果您有默认的键绑定,“e”不应引起任何冲突。

编辑:/r/awesomewm上的某个人知道解决我的问题的语法:

awful.key({ modkey,          }, "e",  function() client.focus = awful.client.getmaster(); client.focus:raise() end), 
4

1 回答 1

2

让我们从语法错误开始;从文档来看,这似乎awful.key是一个表,而不是一个函数。它可能包含keys ...这是哈希表,而不是序列。

最后你的表格语法是错误的;一个字段在语法上可能不是空的,它必须有一个列出的值,即使该值是nil.

所以基本上你试图将错误的值传递给无法调用的东西。


至于如何正确地做到这一点......文档令人困惑,显然我不是唯一一个这样认为的人。

*深呼吸*

好的,创建键绑定(?),并包含键绑定,所以很明显我们必须将第一个的结果放入第二个。 链接上的代码只是一个指针,仅涵盖聚焦窗口,而不是创建键绑定。awful.new(...) awful.key

看起来你想要这样的东西 :

function do_focus()
    current = client.focus
    master  = awful.client.getmaster()
    if current then
        client.focus = master
        master:raise()
    end
end

table.insert(awful.key, awful.new (modkey, 'e', nil, do_focus) )

请记住,我无法测试上述代码。

于 2013-09-23T19:38:03.010 回答