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

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

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

firefox myfile.html size 800x600 location bottom-left

Existe tal comando?

Responder1

Aqui está uma versão comunitária da resposta deYokaique incorpora exemplos oferecidos porRudolf Olah.


Você pode usar a ferramenta chamada xdotoolpara controlar o tamanho e a localização da janela. Além disso, qualquer script que você escrever bash, usando xdotool, pode ser configurado para funcionar com uma janela totalmente maximizada e pode ser programado para definir o tamanho da janela e as coordenadas x:y manipulando os comandos mousemovee .click

  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 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 determinado com base na resolução da tela.

Responder2

Pelo que eu sei, isso não é possível porque o Firefox não aceita comandos para controlar a janela. Essa também é (principalmente) responsabilidade do gerenciador de janelas, então duvido que algum dia existam parâmetros para fazer isso. No entanto, você pode controlar a janela comwmctrl, mas isso vai ser um pouco difícil:

#!/usr/bin/env bash

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, nenhuma outra instância está em execução), mas isso deve ajudar você.

Responder3

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

firefox -width 200 -height 500

Responder4

Eu faço isso toda hora. Eu uso DevilsPie2, entretanto, porque é mais robusto. Ele usa a linguagem de script LUA, o que não é muito difícil.

Aqui está meu script lua para Thunderbird, que desejo abrir no monitor mais à 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, mas você pode colocar tudo em um arquivo de script, se desejar. Configure o 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 controlo são openconnect, pidgin, RecordMyDesktop, timeshift, xeyes, xload e yad. Eu uso pin_window neles para que apareçam em todos os desktops, além de outros comandos dependendo do aplicativo.

informação relacionada