awesomewm: виджет, показывающий сфокусированный экран

Я часто теряю информацию о том, какой экран в данный момент сфокусирован (особенно когда нет открытых клиентов). Поэтому я хочу написать виджет, который всегда показывает, какой экран сфокусирован.

Мой текущий код выглядит так:

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

В основном это работает, но когда у меня нет открытых клиентов и я перемещаю мышь между экранами, обновление не запускается. Я знаю, что фокус изменился, потому что новые приложения всегда запускаются на правильном экране, но я не могу найти способ обновить свой виджет в связи с этими изменениями. Кто-нибудь может мне с этим помочь?

Изменить: я использую awesome v4.2


person sloewen    schedule 07.11.2017    source источник


Ответы (1)


В настоящее время вы не можете получать события, когда курсор мыши перемещается на другой монитор. Причина в основном техническая (X11 не дает вам события «мышь переместилась на другой монитор», если вы не попросите «пожалуйста, пришлите мне событие для любого движения мыши»).

Таким образом, ваше единственное решение — это таймер, который регулярно обновляет ваш виджет, скажем, раз в секунду, или каждые десять секунд, или любое удобное для вас число.

person Uli Schlachter    schedule 09.11.2017