Você pode usar Devilspie2 ( link ), um programa que executa ações no Windows são criados usando scripts escritos em Lua ( link )
Instale-o com: sudo apt-get install devilspie2
e, em seguida, execute devilspie2
. Você deve ver a mensagem de erro:
No script files found in the script folder - exiting.
Ele criou esta pasta como ~/.config/devilspie2/
. Crie o seguinte arquivo e salve-o nesse diretório com a extensão .lua
, por exemplo, como chromium.lua
:
debug_print("Window Name: " .. get_window_name())
debug_print("Application name: " .. get_application_name())
debug_print("WM_CLASS: " .. get_class_instance_name())
debug_print("Window Class: " .. get_window_class())
if (string.match(get_application_name(),"Chromium$")) then
set_window_below();
end
Em seguida, execute devilspie2 --debug &
e abra o Chromium . O terminal deve mostrar:
Window Name: Untitled - Chromium
Application name: Untitled - Chromium
Todas as janelas do Chromium (qualquer nome de aplicativo que termine em 'Chromium') abertas enquanto Devilspie2 estiver em execução, serão definidas abaixo de todas as janelas normais.
Abrir outros programas enquanto o Devilspie2 estiver sendo executado com a opção de depuração, deve ajudá-lo a modificar este código para outros aplicativos.
Para executar automaticamente Devilspie2
Crie um arquivo ~/.config/autostart/devilspie2.desktop
, contendo:
[Desktop Entry]
Type=Application
Name=Devilspie2
Exec=devilspie2
NoDisplay=true
Terminal=false
Adicionando condições adicionais
Para executar um script para um aplicativo apenas algumas vezes, você poderia:
-
Execute Devilspie2 somente conforme necessário, por exemplo,
devilspie2 & app ; killall devilspie2
, embora aplique suas regras a todas as novas janelas criadas enquanto estiver em execução. -
Para aplicativos GTK, a opção
--name=
altera o nome do aplicativo e--class=
da classe Window. O Chromium não reconhece isso apesar da documentação. -
Execute o comando com um ambiente modificado, por ex.
window-below= chromium-browser
e, em vez disso, use a seguinte regra:if (string.match(get_application_name(),"Chromium$")) and (string.match(io.input("/proc/" .. get_window_property("_NET_WM_PID") .. "/environ"):read("*a"), "window-below=")) then set_window_below(); end