2015-06-06 2 views
3

Когда я переключаюсь на другой тег, выбирается новый клиент, но иногда я не клиент, у меня есть указатель мыши. Чтобы сосредоточиться на клиенте под моим указателем мыши, мне нужно либо щелкнуть где-нибудь на нем, либо переключиться на него с помощью Mod + j/k или переместить курсор мыши и обратно на этом клиенте.Как настроить фокус на клиенте под курсором мыши при изменении тега?

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

Я нашел функцию mouse.object_under_pointer(), которая находит клиента, который мне нужен, но я не знаю, когда позвонить этой функции. Должен ли я подключить обработчик к определенному сигналу? Я попытался подключиться к различным сигналам от Signals page on the wiki и проверить с naughty.notify(), если это правильный сигнал, но ни один из них не был запущен, когда я переключался между тегами.

ответ

3

Этот код сделал трюк, однако должен быть лучший способ сделать это, чем настроить огромный таймер на 200 мс (меньшие тайм-ауты не сфокусировали меня на некоторых клиентах, но вы можете попробовать установить меньший) ,

tag.connect_signal(
    "property::selected", 
    function (t) 
    local selected = tostring(t.selected) == "false" 
    if selected then 
     local focus_timer = timer({ timeout = 0.2 }) 
     focus_timer:connect_signal("timeout", function() 
     local c = awful.mouse.client_under_pointer() 
     if not (c == nil) then 
      client.focus = c 
      c:raise() 
     end 
     focus_timer:stop() 
     end) 
     focus_timer:start() 
    end 
    end 
) 

tag является this global object, так что вы просто должны поместить этот код в любом месте вашего rc.lua.

+0

Ничего себе. Я пытался это сделать, но моя работа не работала, пока я не добавил задержку. Шахта работает, если вы используете тайм-аут размером от 1 мс. – joejoe31b

+0

Вместо 'property :: selected' я использовал' tag :: history :: update' на клиентском объекте. Это означает, что он будет запускаться всякий раз, когда происходит изменение тегов (например, переключение тегов и т. Д.). – joejoe31b