2015-04-16 2 views
5

Я запускаю скрипт, который создает и закрывает несколько окон, поэтому я добавил к моему rc.lua способ сохранить окно, где я всегда работаю сверху:Всегда на верхнем окне и удерживая фокус, на AwesomeWM

awful.key({ modkey, "Control" }, "space", 
function(c) 
    awful.client.floating.toggle() 
    c.ontop = not c.ontop 
end), 

Проблема: при создании нового окна я теряю фокус, который переходит в новое окно.

Есть ли способ сделать так, чтобы предыдущий переключатель не только удерживал окно сверху, но и фокусировку, пока я не переключу его снова?

+0

На всякий случай: мой обходной путь, чтобы установить правила для этой программы, чтобы открыть на определенной метке ... но я действительно хочу тумблер, чтобы прикрепить мое окно поверх всего остального, и не терять фокус когда появятся другие окна. –

+0

Включает ли какой-либо новый переключатель открытия окна или только окна из этого приложения/скрипта? –

+0

Любое окно, но не часто бывает, что у меня появляются окна, только с этим скриптом. –

ответ

3

Предполагая awful.rules.rules задание от линий 357-375 из this awesomerc.lua file находятся в файле вашего пользователя awesomerc.lua и awful.client.focus.filter используемых в этом назначении является один из this file, то вы должны быть в состоянии сделать что-то вроде этого.

Определите пользовательскую функцию фильтра фокусировки где-нибудь в вашем файле rc.

function custom_focus_filter(c) 
    if global_focus_disable then 
     return nil 
    end 
    return awful.client.focus.filter(c) 
end 

Затем используйте функцию пользовательского фильтра в назначении правил вместо исходной функции фильтра.

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

И тогда ваша функция переключения просто должна установить и отменить глобальную по необходимости.

awful.key({ modkey, "Shift" }, "f", function() 
    global_focus_disable = not global_focus_disable 
end) 
+0

Отлично! Это сработало. Спасибо! (и да, я совершенно не хватало вашей точки, извините за это) –