Como definir o tamanho da janela e localização de um aplicativo na tela via linha de comando?

25

Eu quero que a janela do Firefox seja aberta em um tamanho específico e a localização na tela usando um comando shell, por exemplo:

firefox myfile.html size 800x600 location bottom-left

Existe tal comando?

    
por alwbtc 15.07.2012 / 14:43

6 respostas

14

Até onde eu sei, isso não é possível, pois o Firefox não aceita comandos para controlar a janela. Isso também é (principalmente) responsabilidade do gerenciador de janelas, então duvido que algum dia haverá 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.

    
por 14.10.2012 / 12:31
12

Aqui está uma versão da comunidade da resposta por 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. Além disso, qualquer script escrito em bash , usando xdotool , pode ser configurado para funcionar com uma janela totalmente maximizada e pode ser roteirizado para definir o tamanho da janela e as coordenadas x: y manipulando mousemove e click de comandos.

  1. Encontre o ID da janela:

    xdotool search --onlyvisible --name firefox
    
  2. Defina o tamanho da janela

    xdotool windowsize $WINDOW_ID_GOES_HERE $WIDTH $HEIGHT
    
  3. Mova a janela

    xdotool windowmove $WINDOW_ID_GOES_HERE $X $Y
    

Por exemplo, se o id da janela para o firefox for 123, você faria isso:

xdotool windowsize 123 800 600
xdotool windowmove 123 0 1080

O posicionamento inferior esquerdo terá que ser descoberto com base na sua resolução de tela.

    
por 24.04.2017 / 17:53
3

No passado, criei um documento HTML que definia o tamanho da janela com Javascript, em seguida, redirecionava para a página que eu queria. É um truque estúpido, mas, ei, funciona.

    
por 15.08.2012 / 02:18
2

Eu não acho que isso é possível apenas por comandos shell, porque não tem nada a ver com o seu gerenciador de janelas.
Ouvi falar de wmctrl e devilspie que pode afetar isso. Mas duvido que haja uma maneira de conseguir isso tão simples quanto você escreveu em seu exemplo.

    
por 16.07.2012 / 00:19
1

Eu faço isso o tempo todo. 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 roteiro de lua para o Thunderbird, que eu quero abrir no monitor da extrema esquerda (tela do laptop) quando ele abrir:

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, embora você possa colocar tudo em um arquivo de script, se desejar. Defina devilspie2 para iniciar automaticamente quando você efetuar 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 roteiro de lua: link

Uma nota: os scripts não precisam ser executáveis. Os meus são 664 e funcionam bem. Alguns dos outros programas que eu controlo são openconnect, pidgin, RecordMyDesktop, timeshift, xeyes, xload, & yad. Eu uso pin_window neles para que eles apareçam em todos os desktops, além de outros comandos, dependendo do aplicativo.

    
por 15.05.2018 / 17:51
0

Isso não resolve o problema da posição, mas pelo menos você pode definir dimensões:

firefox -width 200 -height 500
    
por 11.10.2018 / 20:51