Desde la LSPM: Cambiar el tamaño de las ventanas de forma exacta

Preguntaban en la LSPM:

¿Es posible conocer el tamaño de una ventana cualquiera cuando se redimensiona o fijar el tamaño dando las dimensiones? Por ejemplo en el escritorio que manejo en Linux (KDE), puedes dar el tamaño en pixels que quieres que tenga una ventana determinada. Me pregunto si también se puede hacer en el Mac.

Y la respuesta corta es sí.

La respuesta larga es que podemos usar AppleScript para obtener los tamaños actuales de las ventanas de cualquier aplicación cuyas ventanas puedan cambiar de tamaño. Sabiendo que en AppleScript la numeración de las ventanas empieza en uno, y que esa numeración depende de cuán recientemente se haya usado esa ventana en la aplicación —cuan “cerca” esté del usuario—, podemos hablar de “window 1” o “first window”.

Por ejemplo, podemos abrir el editor de scripts y escribir:

    tell application "Safari" to get bounds of window 1

Eso nos dará una lista de elementos {x1,y1,x2,y2}, donde x1 e y1 son las coordenadas de la esquina superior izquierda de la ventana, empezando en 0, y aumentando x de izquierda a derecha, e y de arriba abajo; mientras que x2 e y2 son las coordenadas de la esquina inferior derecha. Por cierto, se puede averiguar que bounds es la propiedad que queremos después de haber tecleado, por ejemplo, tell application "Safari" to get properties of window 1.

Para fijar el tamaño y posición, usaríamos set bounds en lugar de get bounds:

    tell application "Safari" to set bounds of window 1 to {0,44,640,524}

La altura de la barra de menús, al menos en Leopard, es de 44 pixeles, de ahí la elección de y1. Y el ancho y alto deseados son, respectivamente, x2-x1, e y2-y1. O lo que es lo mismo, si queremos fijar un ancho y un alto determinados, x2 = x1+ancho, e y2 = y1+alto.

¿Adivináis, entonces, lo que hace el próximo programa?

tell application "Safari"
    set limites to the bounds of first window
    set x1 to the first item of limites
    set y1 to the second item of limites
    set x2 to the third item of limites
    set y2 to the fourth item of limites
    set nuevosLimites to {x1 + 2, y1 + 2, x2 + 2, y2 + 2}
    set bounds of first window to nuevosLimites
end tell


Comentarios

2 respuestas a «Desde la LSPM: Cambiar el tamaño de las ventanas de forma exacta»

  1. Dice el dicho que cuánto más claro y breve dos veces bueno. Haces comprensible lo incomprensible (para el maquero medio, claro)

  2. ¡Muchas gracias, Jordi!

To respond on your own website, enter the URL of your response which should contain a link to this post’s permalink URL. Your response will then appear (possibly after moderation) on this page. Want to update or remove your response? Update or delete your post and re-enter your post’s URL again. (Find out more about Webmentions.)

Descubre más desde Memoria de Acceso Aleatorio

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo