Eu fiz a sua pergunta minha tarefa para esta noite e consegui uma versão funcional. Tenha cuidado, é bastante hacky! Tanto quanto sei, não há outro jeito de fazer isso. Especialmente porque há um bug incrível com a aplicação de regras.
O que estamos fazendo? Ao executar Mod4 + r
, salvamos a tag focada atual em uma lista. Ao aplicar regras a janelas aparecendo, nós colocamos a tag correspondente na lista. Precisamos da função once porque awesome tem um bug no momento e aplica regras duas vezes para uma janela. Temos que excluir o nosso emulador de terminal (e todos os outros programas que iniciamos com a ligação de chaves) porque, caso contrário, ele está sendo aberto na tag em que pressionamos Mod4 + r
pela última vez.
Você precisa das seguintes funções no seu rc.lua.
local rule_count = 0
local tag_count = 0
local run_tag = {}
local function once()
if rule_count == 1 then
rule_count = 0
else
rule_count = 1
end
return rule_count
end
local function get_run_tag()
if once() == 1 then
if tag_count > 0 then
tag_count = tag_count - 1
return table.remove(run_tag)
else
return "1"
end
end
end
local function push_run_tag(tag)
table.insert(run_tag, tag)
tag_count = tag_count + 1
end
Em seguida, procure a seguinte parte em seu rc.lua:
{ rule_any = {type = { "normal", "dialog" }},
properties = { titlebars_enabled = false } -- or true
},
Adicione algumas linhas para que pareçam assim:
{ rule_any = {type = { "normal", "dialog" }},
except_any = { class = { "Termite" }},
properties = { titlebars_enabled = false, tag = function() return
get_run_tag() end}
},
Você tem que substituir Termite
pelo emulador de console que você geralmente começa com Mod4 + return
. Além disso, você precisa adicionar cada programa à tabela de classes que deseja iniciar com as combinações de teclas.
Em seguida, procure a ligação da chave Mod4 + r
. No momento, deve gostar deste:
awful.key({ modkey }, "r", awful.screen.focused().mypromptbox:run()
{description = "run prompt", group = "launcher"}),
Altere para que fique assim:
awful.key({ modkey }, "r", function ()
awful.screen.focused().mypromptbox:run()
push_run_tag(awful.screen.focused().selected_tag.name)
end,
{description = "run prompt", group = "launcher"}),
Gostaria de receber melhores soluções!
PS: Isso não funcionará para aplicativos como o Steam porque ele exibe várias janelas. O primeiro recebe a tag correta. Os seguintes estão gerando a tag "1".