我正在使用 Awesome Window Manager。我想通过按下 mod4 来显示我的顶栏,然后在我释放时隐藏它。我厌倦了将“keyup Mod4”传递给whole.key,但它不起作用。如何告诉它我想在 keyup 上触发事件?
问问题
1534 次
4 回答
2
我想要同样的东西!经过一番研究,我想出了:
echo 'mywibox[1].visible = true' | awesome-client
当 mod4 被按下和echo 'mywibox[1].visible = false' | awesome-client
释放时,使用外部程序执行。- 使用其他键,而不是修饰符,例如菜单(靠近右侧 Ctrl),因为由于某种原因,您无法将按下和释放事件连接到 mod4(或者它只是不起作用)。
这是我的解决方案(需要计时器,因为只要按下按键就会发送事件):
-- Put it somewhere at the beginning
presswait = { started = false }
-- Put it in key bindings section (globalkeys = within awful.table.join)
awful.key({ }, "Menu", function()
if presswait.started then
presswait:stop()
else
-- One second to tell if key is released
presswait = timer({ timeout = 1 })
presswait:connect_signal("timeout", function()
presswait:stop()
-- Key is released
for i = 1, screen.count() do
mywibox[i].visible = false
end
end)
-- Key is pressed
for i = 1, screen.count() do
mywibox[i].visible = true
end
end
presswait:start()
end)
于 2014-02-17T19:06:40.203 回答
2
尝试
`awful.key({ modkey }, "", nil, function () staff here end)`
第三个参数是传递时“释放”事件的处理程序。
于 2013-09-14T22:05:26.813 回答
1
您可以将信号连接到关键对象:
key.connect_signal("press", function(k)
-- Analyze k and act accordingly
end)
更多关于信号的信息:http: //awesome.naquadah.org/wiki/Signals
于 2013-09-09T04:38:55.797 回答
0
使用来自https://stackoverflow.com/a/21837280/2656413的第一个建议, 我编写了这个 python 脚本:https ://github.com/grandchild/autohidewibox
它所做的是,它xinput
在后台运行并解析其输出。你也可以/dev/input/event1
直接在python中解析,但我很懒。
然后,每次按下或释放键时,它都会将以下 lua 代码传递给 awesome:
echo 'for i, box in pairs(mywibox) do box.visible = true end' | awesome-client
和
echo 'for i, box in pairs(mywibox) do box.visible = false end' | awesome-client
分别。
更新:
对于真棒 4+ 使用:
echo "for s in screen do s.mywibox.visible = false end" | awesome-client
或true
。
于 2015-04-23T18:54:28.267 回答