¿Cómo obtener programáticamente la ruta al fondo de pantalla en el escritorio activo?

1

Estoy tratando de obtener la ruta al fondo de pantalla en el escritorio activo. Sin embargo, estoy teniendo problemas para obtener esto de manera confiable.

Las siguientes fuentes indican que ~/Library/Application Support/Dock/desktoppicture.dbes una base de datos sqlite con información sobre el fondo.

Sin embargo, estas fuentes establecen un nuevo fondo y no intentan leer el contenido de la base de datos sqlite para el escritorio activo.

He descargado el contenido de este archivo en mi sistema y lo he subido como una esencia en https://gist.github.com/bamos/6c5fb63ec1d9b8dc9205 .

Este archivo parece contener información sobre pantallas, y la lectura del último valor de dataparece obtener el fondo de pantalla activo a veces .

  • ¿Hay alguna manera que pueda usar desktoppicture.dbpara obtener el fondo de pantalla en el escritorio activo cada vez?
  • ¿Hay alguna otra forma en que pueda obtener programáticamente una ruta al fondo de pantalla activo?

Editar: forums.macrumors.com/showthread.php?t=1525299 (¿alguien puede agregar http?) Es otra fuente para obtener esta información con AppleScript, pero por alguna razón el siguiente fragmento regresa Wave.jpgcuando Wave.jpgno está el fondo de pantalla activo.

tell application "Finder"
    set theDesktopPic to desktop picture
    set theName to displayed name of theDesktopPic
    display dialog theName
end tell

Para aclarar, mi fondo de pantalla está configurado para recorrer aleatoriamente un directorio.


Intenté ejecutar el siguiente comando como se sugiere en las respuestas.

tell application "System Events" to get properties of every desktop

Sin embargo, en mi sistema, esto produce:

display name:Color LCD, change interval:1800.0, id:69731840, random order:true, picture rotation:1, pictures folder:/Users/bamos/Pictures/wallpaper/nature, picture:/Library/Desktop Pictures/Wave.jpg, translucent menu bar:missing value, class:desktop,

que no incluye el fondo de pantalla del escritorio activo.

Deshabilité el ciclo de imagen aleatoria y

osascript -e 'tell application "Finder" to set desktop picture to {"Macintosh HD:Library:Desktop Pictures:Beach.jpg"} as alias'

cambia mi fondo al fondo de pantalla de la playa y

osascript -e 'tell application "System Events" to get properties of every desktop'

ahora se muestra picture:/Library/Desktop Pictures/Beach.jpg. Sin embargo, esto no es útil porque quiero obtener el fondo cuando estoy recorriendo aleatoriamente un directorio.

Brandon Amos
fuente

Respuestas:

2
tell application "System Events" to picture of desktop 1

Ver todas las propiedades:

tell application "System Events" to get properties of every desktop
más lejos
fuente
¿Puede por favor llevar la depuración a esta sala de chat ? Me he asegurado de que @highphi tenga acceso. ¡Gracias!
Ian C.