awesomewm:小部件显示焦点屏幕

时间:2017-11-07 13:23:46

标签: widget awesome-wm

我经常忘记当前关注的屏幕(特别是没有打开的客户端时)。 因此,我想编写一个小部件,它总是显示哪个屏幕是聚焦的。

我目前的代码如下:

-- 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

1 个答案:

答案 0 :(得分:2)

目前,当鼠标光标移动到其他显示器时,您无法获取事件。原因主要是技术性的(X11没有给你一个&#34的事件;鼠标移动到另一个显示器"除非你要求"请给我发送任何鼠标移动的事件" )。

因此,您唯一的解决方案是定时更新您的小部件的计时器,让我们说每秒或每十秒一次或适合您的任何数字。

相关问题