0 votos

¿Cómo gestionar todos los escritorios virtuales (espacios) con AppleScript?

Escribí un trozo de Applescript que cambia el fondo de pantalla en macOS. Normalmente tengo múltiples escritorios virtuales (espacios) y me gustaría gestionar todos ellos. Aunque parece ser fácil controlar los escritorios físicos (es decir, en un monitor diferente), no encuentro la forma de hacer lo mismo con los escritorios virtuales. Por supuesto, hice algo de investigación antes de publicar y, por lo que veo, solo hay preguntas insatisfechas, al menos hasta 2022. ¿Alguien puede confirmar que nada ha cambiado en el último año?

PD: He visto utilidades escritas en otros lenguajes (por ejemplo, https://github.com/georgesofianosgr/wally) que parecen hacer el trabajo, pero veo que son hacks de ingeniería inversa que manipulan directamente las bases de datos del sistema, así que prefiero no usarlos.

1voto

gregorias Puntos 111

No conozco una sola declaración de AppleScript que pueda lograr eso (los fragmentos que aparecen en Applescript to change desktop image on all monitors? no cambian los escritorios virtuales inactivos). Lo que puedo recomendar es escribir una configuración de cron que actualice el fondo de pantalla para los escritorios actuales.

Lo que hago es, he configurado un archivo de configuración $XDG_CONFIG_HOME/wallpaper que contiene la ruta de mi fondo de pantalla deseado, por ejemplo, /Users/grzesiek/Pictures/Wallpapers/tokyo-morning.jpg.

Luego, he creado un script que continuamente establece el fondo de pantalla usando AppleScript:

#/Users/grzesiek/.local/bin/update-mac-wallpaper
set -l inicio (date +%s)
for i in (seq 1 60)
    # Salir después de 60 segundos. Esto es para evitar que el script se solape potencialmente
    # con la siguiente ejecución de cron.
    if test (date +%s) -gt (math $inicio + 60)
        exit 0
    end

    if test -f $XDG_CONFIG_HOME/wallpaper
        set fondo_de_pantalla (cat $XDG_CONFIG_HOME/wallpaper)
        osascript -e 'tell application "System Events" to tell every desktop to set picture to "'$fondo_de_pantalla'"'
    end

    sleep 1
end

Luego, he añadido ese script a mi crontab:

* * * * * fish /Users/grzesiek/.local/bin/update-mac-wallpaper

Como resultado, cada escritorio que utilice se actualiza en un segundo.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X