Applescript(6)

Había dejado al AppleScript por un rato; y no porque no tuviera la necesidad de automatizar algo sino más bien por tiempo. Aunque también es cierto que desde mi última entrada al respecto he escrito más de un par de scripts y aprendido algunas cosas.

Lo último ha sido el automatizar el proceso de ajuste de la pantalla externa conectada a la M1, pantalla que he montado en un brazo móvil (un soporte de nombre Ollin de Herman Miller que no fue nada barato pero que me ha gustado mucho, por cierto) con el que puedo rotarlo para aprovechar que se trata de un monitor «ultrawide» de 29 pulgadas que facilita mucho el trabajo de codificación y de edición de textos.

Lo tedioso del asunto es el que cada vez que se hace, debo entrar en las preferencias del sistema (hoy System Settings), buscar el panel de Displays, seleccionar el monitor, hacer el ajuste y confirmar. Nada complicado pero se empieza a volver engorroso con el paso del tiempo.

Adicionalmente, hace poco estuve depurando mis wallpapers. Lo que antes era bueno a 1024×768 pixels, hoy sólo es un cuadrito en 2560×1600. Mientras lo hacía y revisaba algunas imágenes descargadas veía la necesidad de tener fondos de pantalla con dimensiones de 1600×2560 para el caso de cuando girara al monitor, por lo que a la actividad anterior habría que sumarle el hacer el ajuste del folder de donde se toman los wallpapers. Así que era natural considerar el poder automatizar esto también, aunque eso lo dejo para una mejora posterior.

En un inicio el asunto no fue fácil. Primero retomar al AppleScript. Luego lidiar con los recientes cambios introducidos con Ventura en la organización y desplegado del nuevo System Settings (antes System Preferences), es decir a este respecto, que los multiples scripts y troubleshooting que uno puede hallar en la Internet ya no funcionan del todo. Finalmente, un tercer factor no considerado, lo complicado que resulta lidiar con la manipulación de controles e interfaces del sistema, que agrega un elemento adicional a la curva de aprendizaje.

Dejo aquí esta primera versión de dicho script.

(* *****************************************************************************
   Rotate Displays.scpt v1.0.0
   Toggles between 0 and 270 degrees a secundary display.
   © Dr. Eduardo René Rodríguez Ávila, May 2023
***************************************************************************** *)

tell application "System Settings" to quit
delay 1

do shell script "open x-apple.systempreferences:com.apple.preference.displays"

tell application "System Events"
	tell application process "System Settings"
		activate
		delay 2
		
		key code 48
		key code 48
		delay 1
		
		key code 49
		delay 1
		
		set theButton to pop up button "Rotation" of group 4 of scroll area 2 of group 1 of group 2 of splitter group 1 of group 1 of window "Displays" of application process "System Settings" of application "System Events"
		tell theButton
			set theRotation to the value of it
			click
			tell menu 1
				if theRotation is "270°" then
					click menu item 1
				else
					click menu item 4
				end if
			end tell
		end tell
	end tell
end tell

tell application "System Settings" to quit

Referencias

  1. Brian Van Peski, «Scripting System Preferences Panes«, macOS Adventures, web. Published: 2022.02.06; visited: 2023.05.21. URL: https://www.macosadventures.com/2022/02/06/scripting-system-preferences-panes/.
  2. ___________, «Identifying System Preferences Panes«, macOS Adventures, web. Published: 2022.02.10; visited: 2023.05.21. URL: https://www.macosadventures.com/2022/02/10/identifying-system-preferences-panes/.
  3. «Ventura System Preferences Scripts», macscripter.net, web. Visited: 2023.05.21. URl: https://www.macscripter.net/t/ventura-system-preferences-scripts/73870/6.
  4. Sebastian Kempken, «activate_HDR.applescript«, GitHub Gist, web, Visited: 2023.05.21. URL: https://gist.github.com/skempken/46c184c1a5eac2e88c9c31ce09a38300.
  5. Christopher Kielty, «Complete list of AppleScript key codes«, eastmanreference.com, web. Updated: 2018.05.10; visited: 2023.05.21. URL: https://eastmanreference.com/complete-list-of-applescript-key-codes.
  6. v1c77, «route-screen.applescript«, GitHub Gist, web, Visited: 2023.05.21. URL: https://gist.github.com/v1c77/96affa87de94045d29cdc5f9cb8c1847.

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.