¿Cómo configurar el tamaño de la ventana y la ubicación de una aplicación en la pantalla mediante la línea de comando?

¿Cómo configurar el tamaño de la ventana y la ubicación de una aplicación en la pantalla mediante la línea de comando?

Quiero que la ventana de Firefox se abra en un tamaño y ubicación específicos en la pantalla usando un comando de shell, por ejemplo:

firefox myfile.html size 800x600 location bottom-left

¿Existe tal comando?

Respuesta1

Aquí hay una versión comunitaria de la respuesta deYokaique incorpora ejemplos ofrecidos porRudolf Olah.


Puede utilizar la herramienta llamada xdotoolpara controlar el tamaño y la ubicación de la ventana. No solo eso, cualquier secuencia de comandos que escriba bash, usando xdotool, se puede configurar para que funcione con una ventana completamente maximizada y se puede programar para establecer el tamaño de la ventana y las coordenadas x:y manipulando los comandos mousemovey click.

  1. Busque la ID de la ventana:

    xdotool search --onlyvisible --name firefox
    
  2. Establecer el tamaño de la ventana

    xdotool windowsize $WINDOW_ID_GOES_HERE $WIDTH $HEIGHT
    
  3. mover la ventana

    xdotool windowmove $WINDOW_ID_GOES_HERE $X $Y
    

Por ejemplo, si la identificación de la ventana de Firefox es 123, harías esto:

xdotool windowsize 123 800 600
xdotool windowmove 123 0 1080

La posición inferior izquierda deberá determinarse en función de la resolución de su pantalla.

Respuesta2

Hasta donde yo sé, esto no es posible ya que Firefox no acepta comandos para controlar la ventana. Eso también es (principalmente) responsabilidad del administrador de ventanas, por lo que dudo que alguna vez haya parámetros para hacerlo. Sin embargo, puedes controlar la ventana conwmctrl, pero eso va a ser un poco 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

Puede que haya formas más inteligentes de hacerlo y hay algunos problemas de interoperabilidad con Firefox (por ejemplo, que no se está ejecutando ninguna otra instancia), pero debería ayudarte a seguir adelante.

Respuesta3

Esto no resuelve el problema de la posición, pero al menos puedes establecer dimensiones:

firefox -width 200 -height 500

Respuesta4

Hago esto todo el tiempo. Yo uso DevilsPie2, sin embargo, porque es más robusto. Utiliza el lenguaje de programación LUA, que no es muy difícil.

Aquí está mi script lua para Thunderbird, que quiero abrir en el monitor del extremo izquierdo (pantalla de computadora portátil) cuando se abra:

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 esto, cree un directorio en su configuración de inicio (en distribuciones similares a Ubuntu) llamado devilspie2, por ejemplo, /home/$USERNAME/.config/devilspie2

Para Thunderbird, creé Thunderbird.lua, aunque el nombre del archivo no importa. Tengo un nombre de archivo diferente para cada aplicación, aunque puedes poner todo en un archivo de script si lo deseas. Configure devilspie2 para que se inicie automáticamente cuando inicie sesión, por ejemplo, /home/$USERNAME/.config/autostart/devilspie2.desktop

Aquí hay un enlace a una buena página sobre varias opciones disponibles para su script lua:https://github.com/gusnan/devilspie2/blob/master/README

Una nota: los scripts no tienen que ser ejecutables. Los míos son 664 y funcionan bien. Algunos de los otros programas que controlo son openconnect, pidgin, RecordMyDesktop, timeshift, xeyes, xload y yad. Utilizo pin_window en ellos para que aparezcan en todos los escritorios, además de otros comandos según la aplicación.

información relacionada