Launcher auto-hiding/ru

Если вы используете кнопки запуска(launchers), у вас может появиться желание скрыть ее, при запуске приложения, чтобы нельзя было случайно запустить приложение повторно.

Предлагаю использовать вам таблицу (lua-table) для хранения ваших лаунчеров.

Итак, у меня есть два лаунчера launchers["Qbittorrent"] и launchers["Chromium"]. Клавиши с названиями клиентских классов (для простоты).

Итак, вот код.

Эта функция проверяет запущенные приложения и их launchers. Если приложение запущено через кнопку запуска(launcher), launcher будет скрыт. function get_launchers_table tmp_launchers = awful.util.table.clone(launchers) local clients = client.get(0) for _,client in pairs(clients) do       if (launchers[client.class]~=nil) then tmp_launchers[client.class] = nil end end local ret = {} local x,y for x,y in pairs(tmp_launchers) do       if (y~=nil) then table.insert(ret,x) end end return ret end

Эта простая утилита, проверяет что хранится в таблице (table). function in_table(table,what) local item for _,item in pairs(table) do       if (what==item) then return true end end return false end

Проверяем таблицу t1 и сравниваем ее с элементами в таблице t2. function table_equal(t1,t2) if (t1==nil) then return false end if ( #t1 ~= #t2 ) then return false end local item for _,item in pairs(t1) do       if (not in_table(t2,item)) then return false end end return true end

Устанавливаем wiboxes["bottom_right"] виджеты wibox. Если список запущенных приложений не изменялся (предыдущие значения хранятся в launchers_to_wibox).

launchers_to_wibox = {} function set_wibox_widgets local tmp = get_launchers_table if (table_equal(tmp,launchers_to_wibox)) then return end wiboxes["bottom_right"].widgets = {} local x   local nr = 0 for _,x in pairs(tmp) do       nr = nr+1 wiboxes["bottom_right"].widgets[nr] = launchers[x] end wiboxes["bottom_right"].widgets.layout = awful.widget.layout.horizontal.rightleft launchers_to_wibox = tmp end

Также вы можете добавить объект timer с функцией set_wibox_widgets.

Наслаждайтесь!