创建按键绑定以在 awesome-wm 中聚焦主客户端。

我想创建一个键绑定以将焦点切换到主客户端。这个论坛帖子上的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),
点赞
用户2712809
用户2712809

让我们从语法错误开始;从文档可以看出,awful.key似乎是一个表,而不是一个函数。并且它可能包含 [key] (http://awesome.naquadah.org/doc/api/modules/key.html#key)... 应该是哈希表,而不是序列。

最后,您的表语法是错误的;字段可能不是 语法上 空的,它必须有一个列出的值,即使该值为 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-23 19:38:03