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
- 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/.
- ___________, «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/.
- «Ventura System Preferences Scripts», macscripter.net, web. Visited: 2023.05.21. URl: https://www.macscripter.net/t/ventura-system-preferences-scripts/73870/6.
- Sebastian Kempken, «activate_HDR.applescript«, GitHub Gist, web, Visited: 2023.05.21. URL: https://gist.github.com/skempken/46c184c1a5eac2e88c9c31ce09a38300.
- 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.
- v1c77, «route-screen.applescript«, GitHub Gist, web, Visited: 2023.05.21. URL: https://gist.github.com/v1c77/96affa87de94045d29cdc5f9cb8c1847.
