osascript para configurar el fondo de escritorio secundario?

He estado usando esto:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST
1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
<dict>
 <key>Label</key>
  <string>com.filmscoring.display.plist</string>
 <key>ProgramArguments</key>
  <array>
    <string>osascript</string>
    <string>-e</string>
    <string>tell application "Finder"
set f to POSIX file "/Library/Desktop Pictures/mac cinema desktop yoda.png"
if desktop picture is not file f then set desktop picture to f
end tell</string>
  </array>
 <key>StartInterval</key>
  <integer>10</integer>
</dict>
</plist>

Para evitar que los usuarios cambien el escritorio. (¡Y me encanta por cierto!) El original se puede encontrar aquí: ¿ Cómo restringir el cambio de fondo de escritorio?

Todas nuestras estaciones tienen una pantalla secundaria que también me gustaría arreglar de la misma manera usando una imagen diferente.

¿Alguna idea de cómo puedo apuntar a la pantalla secundaria con este código? ¡Gracias por la ayuda!

System Events tiene una suite de escritorio. (En el Editor de Applescript, Archivo > Diccionario abierto > Eventos del sistema.aplicación, luego haga clic en Desktop Suite en la columna de la izquierda) Cuando intento usarlo para obtener la propiedad de imagen de uno de ellos, aparece el error "forma de clave no válida". Sin embargo, esto podría ser algo que solo sucede en mi sistema, por lo que probablemente valga la pena intentarlo. (actualización: acaba de comenzar a funcionar) Además, sería útil conocer su versión de OS X.

Respuestas (3)

La búsqueda rápida en Google reveló el siguiente código:

set tlst to {}
--set newtop to (path to home folder as string) & "Pictures:desktop pics folder:BigDipper 916.jpg" as alias -- sample line
set newtop to choose file


tell application "System Events"
   set tlst to a reference to every desktop
   --set picture of item 1 of tlst to newtop -- display 1
   set picture of item 2 of tlst to newtop -- display 2
end tell

Tomado de

http://macscripter.net/viewtopic.php?id=35840

No tengo un segundo monitor, así que no puedo probarlo.

Espero eso ayude.

Funciona en macOS Big Sur

Para el monitor predeterminado

osascript -e 'tell application "System Events" to set picture of current desktop to "<path-to-img>"'

Para el segundo monitor

osascript -e 'tell application "System Events" to set picture of second desktop to "<path-to-img>"'

Usé lo siguiente (basado en la respuesta de @Vic)

    tell application "System Events"
        set tlst to a reference to every desktop
        set picture of item 2 of tlst to "/Users/jason/Documents/Personal/Me/moon.png"
    end tell

Puedo verificar que funciona con una configuración de dos monitores (MacBookPro y monitor externo)