我经常忘记当前关注的屏幕(特别是没有打开的客户端时)。 因此,我想编写一个小部件,它总是显示哪个屏幕是聚焦的。
我目前的代码如下:
-- Focused screen widget
local focused_screen_widget = wibox.widget{
markup = "SCR: " .. tostring(awful.screen.focused().index),
align = 'center',
valign = 'center',
widget = wibox.widget.textbox
}
function update_focused_screen_widget()
focused_screen_widget.text = "SCR: " .. tostring(awful.screen.focused().index)
end
client.connect_signal("focus", update_focused_screen_widget)
client.connect_signal("unfocus", update_focused_screen_widget)
---- hook into awful.screen.focus()
original_screen_focus = awful.screen.focus
function awful.screen.focus(_screen)
original_screen_focus(_screen)
update_focused_screen_widget()
end
这主要是有效但当我没有打开客户端并在屏幕之间移动鼠标时,不会触发更新。 我知道焦点已经改变,因为新的应用程序始终在正确的屏幕上启动,但我无法找到更新我的窗口小部件的方法。 任何人都可以帮我这个吗?
编辑:我正在使用超棒的v4.2
答案 0 :(得分:2)
目前,当鼠标光标移动到其他显示器时,您无法获取事件。原因主要是技术性的(X11没有给你一个&#34的事件;鼠标移动到另一个显示器"除非你要求"请给我发送任何鼠标移动的事件" )。
因此,您唯一的解决方案是定时更新您的小部件的计时器,让我们说每秒或每十秒一次或适合您的任何数字。