Quero que a janela do Firefox seja aberta em um tamanho específico e local na tela usando um comando shell, por exemplo:
firefox myfile.html size 800x600 location bottom-left
Existe esse comando?
Quero que a janela do Firefox seja aberta em um tamanho específico e local na tela usando um comando shell, por exemplo:
firefox myfile.html size 800x600 location bottom-left
Existe esse comando?
Respostas:
Aqui está uma versão comunitária da resposta de Yokai que incorpora exemplos oferecidos por Rudolf Olah .
Você pode usar a ferramenta chamada xdotool
para controlar o tamanho e a localização da janela. Não só isso, qualquer script que você escrever em bash
, usando xdotool
, pode ser configurado para trabalhar com uma janela totalmente maximizada e pode ser programado para definir o tamanho da janela e x: y coordenadas através da manipulação do mousemove
e click
comandos.
Encontre o ID da janela:
xdotool search --onlyvisible --name firefox
Defina o tamanho da janela
xdotool windowsize $WINDOW_ID_GOES_HERE $WIDTH $HEIGHT
Mover a janela
xdotool windowmove $WINDOW_ID_GOES_HERE $X $Y
Por exemplo, se o ID da janela do Firefox for 123, você faria o seguinte:
xdotool windowsize 123 800 600
xdotool windowmove 123 0 1080
O posicionamento inferior esquerdo terá que ser calculado com base na resolução da tela.
xdotool
, wmctrl
etc. e Ubuntu, XFCE (que eu tenho): se a janela já foi iniciada no modo de tela cheia, você não pode mais movê-lo: bugs.launchpad.net/ubuntu/+source/unity/ + bug / 971147
Até onde eu sei, isso não é possível, pois o Firefox não aceita comandos para controlar a janela. Essa também é (principalmente) a responsabilidade do gerenciador de janelas, então duvido que existam parâmetros para fazer isso. No entanto, você pode controlar a janela com wmctrl , mas isso será um pouco difícil:
#!/bin/sh
firefox -new-instance -new-window "http://www.reddit.org" &
# Process ID of the process we just launched
PID=$!
# Window ID of the process...pray that there's
# only one window! Otherwise this might break.
# We also need to wait for the process to spawn
# a window.
while [ "$WID" == "" ]; do
WID=$(wmctrl -lp | grep $PID | cut "-d " -f1)
done
# Set the size and location of the window
# See man wmctrl for more info
wmctrl -i -r $WID -e 0,50,50,250,250
Pode haver maneiras mais inteligentes de fazer isso, e há alguns problemas de interoperabilidade com o Firefox (por exemplo, que nenhuma outra instância está em execução), mas isso deve ajudá-lo.
No passado, eu criei um documento HTML que definiria o tamanho da janela com Javascript e depois redirecionaria para a página que eu queria. É um truque estúpido, mas, ei, funciona.
Eu não acho que isso seja possível apenas pelos comandos do shell, porque não tem nada a ver com o seu gerenciador de janelas.
Ouvi falar de wmctrl e devilspie, o que pode afetar isso. Mas duvido que exista uma maneira de conseguir isso tão simples quanto você escreveu em seu exemplo.
Eu faço isso toda hora. Eu uso DevilsPie2, no entanto, porque é mais robusto. Ele usa a linguagem de script LUA, o que não é muito difícil.
Aqui está o meu script lua para o Thunderbird, que eu quero abrir no monitor esquerdo (tela do laptop) quando for aberto:
if (get_window_name()=="Mozilla Thunderbird") then
pin_window()
set_window_geometry( 50, 10, 1220, 780 )
end
where 50 = X coordinate (for upper-left corner of the window)
10 = Y coordinate ( " " )
1220 = window width
780 = window height
Para configurar isso, você cria um diretório em sua configuração inicial (em distribuições do tipo Ubuntu) chamado devilspie2, por exemplo, /home/$USERNAME/.config/devilspie2
Para o Thunderbird, criei thunderbird.lua, embora o nome do arquivo não importe. Eu tenho um nome de arquivo diferente para cada aplicativo, mas você pode colocar tudo em um arquivo de script, se desejar. Defina devilspie2 para iniciar automaticamente quando você fizer login, por exemplo, /home/$USERNAME/.config/autostart/devilspie2.desktop
Aqui está um link para uma boa página sobre várias opções disponíveis para o seu script lua: https://github.com/gusnan/devilspie2/blob/master/README
Uma observação: os scripts não precisam ser executáveis. Os meus são 664 e funcionam bem. Alguns dos outros programas que eu controle são openconnect, pidgin, RecordMyDesktop, timeshift, xeyes, xload e yad. Eu uso pin_window nelas para que elas apareçam em todas as áreas de trabalho, além de outros comandos, dependendo do aplicativo.
devilspie2 --debug
)