2016-09-26 3 views
1

В awesome wm Я использую gmrun, небольшую панель запуска приложений.Awesome wm, сохранить исключение фокуса для приложения

{ rule = { class = "Gmrun" }, 
    properties = { floating = true, ontop = true, focus = true }, callback = function(c) c:geometry({x=30, y=45}) end}, 

и это мои правила для всех клиентов раздела

awful.rules.rules = { 
-- All clients will match this rule. 
{ rule = { }, 
    properties = { border_width = beautiful.border_width, 
       border_color = beautiful.border_normal, 
       focus = awful.client.focus.filter, 
       raise = true, 
       keys = clientkeys, 
       size_hints_honor = false, 
       buttons = clientbuttons }, callback = awful.client.setslave }, 

Я хотел gmrun всегда держать фокус (исключение на правилах, как правило, новый раскрытый клиент получает фокус) Я читал эту страницу, но не нашли решение, Always-on-top window and keeping focus, on AwesomeWM заранее спасибо

ответ

1

Создать пользовательскую функцию фокусировки фильтра

local free_focus = true 
local function custom_focus_filter(c) return free_focus and awful.client.focus.filter(c) end 

Корректировать Основное правило

awful.rules.rules = { 
    -- All clients will match this rule. 
    { rule = { }, 
     properties = { .... 
        focus = custom_focus_filter, 
        .... } }, 

и gmrun правило

{ rule = { class = "Gmrun" }, 
    properties = { floating = true, ontop = true, focus = true }, 
    callback = function(c) 
     c:geometry({x=30, y=45}) 
     free_focus = false 
     c:connect_signal("unmanage", function() free_focus = true end) 
    end }, 

Additioally, вам, возможно, придется изменить каждое место в вашей конфигурации, где client.focus = используется (например, небрежный фокус, клиентские кнопки). Например

clientbuttons = awful.util.table.join(
    awful.button({ }, 1, function (c) if custom_focus_filter(c) then client.focus = c; c:raise() end end), 
    .... 
+0

OK Это прекрасно работает – jods

Смежные вопросы