LINUX.ORG.RU

Автоскрытие панели awesome wm

 


1

1

Привет! Не нашел как сделать автоскрытие «родными» средствами, набросал вот такие строчки в функции awful.screen.connect_for_each_screen файла rc.lua:

-- autohide panel
s.wibox_plug = awful.wibar({ position = "top",
                             height = 1,
                             opacity = 0,
                             visible = false,
                             screen = s })
local function make_panel_visible()
    s.mywibox.visible = true
    s.wibox_plug.visible = false
end
local function make_panel_hidden()
    s.mywibox.visible = false
    s.wibox_plug.visible = true
end
local function panel_autohide(focused_client)
    if focused_client.class == 'firefox' then
        make_panel_hidden()
        s.mywibox:connect_signal("mouse::leave", make_panel_hidden)
        s.wibox_plug:connect_signal("mouse::enter", make_panel_visible)
    else
        make_panel_visible()
        s.mywibox:disconnect_signal("mouse::leave", make_panel_hidden)
        s.wibox_plug:disconnect_signal("mouse::enter", make_panel_visible)
    end
end
client.connect_signal("focus", panel_autohide)

Не могу найти сигнал, посылаемый во время активации тега. Вообще, такой существует? Есть какой-то недокументированный request::select, но я не понял как им пользоваться.

Вопрос в том, что панель нормально восстанавливается, только если на следующем теге есть какой-нибудь клиент (окно). А мне нужно обработать исключение, когда на теге никаких окон нет.
Спасибо.

★★

Ответ на: комментарий от actionless

https://awesomewm.org/apidoc/core_components/screen.html#tag::history::update

Супер! Спасибо. Но я щас понял, что проверять теги – неверный путь. Если я закрываю единственное окно фаейрфокса без смены тега – панель не появится. Видимо, нужно как-то через unfocus придумывать.

rmu ★★
() автор топика
Ответ на: комментарий от actionless

Спасибо за помощь! Вопрос решил дополнительной проверкой focused_client:isvisible() и добавлением сигнала "unfocus":

-- autohide panel
s.wibox_plug = awful.wibar({ position = "top",
                             height = 1,
                             opacity = 0,
                             visible = false,
                             screen = s })
local function make_panel_visible()
    s.mywibox.visible = true
    s.wibox_plug.visible = false
end
local function make_panel_hidden()
    s.mywibox.visible = false
    s.wibox_plug.visible = true
end
local function panel_autohide(focused_client)
    if focused_client.class == 'firefox'
            and focused_client:isvisible() then
        make_panel_hidden()
        s.mywibox:connect_signal("mouse::leave", make_panel_hidden)
        s.wibox_plug:connect_signal("mouse::enter", make_panel_visible)
    else
        make_panel_visible()
        s.mywibox:disconnect_signal("mouse::leave", make_panel_hidden)
        s.wibox_plug:disconnect_signal("mouse::enter", make_panel_visible)
    end
end
client.connect_signal("focus", panel_autohide)
client.connect_signal("unfocus", panel_autohide)
rmu ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.