Como obter programaticamente o caminho para o papel de parede na área de trabalho ativa?

1

Eu estou tentando obter o caminho para o papel de parede na área de trabalho ativa. No entanto, estou tendo problemas para conseguir isso.

As fontes a seguir indicam que ~/Library/Application Support/Dock/desktoppicture.dbé um banco de dados sqlite com informações sobre o plano de fundo.

No entanto, essas origens definem um novo plano de fundo e não tentam ler o conteúdo do banco de dados sqlite para a área de trabalho ativa.

Eu despejei o conteúdo deste arquivo no meu sistema e fiz o upload dele como uma essência em https://gist.github.com/bamos/6c5fb63ec1d9b8dc9205 .

Este arquivo parece conter informações sobre exibições, e a leitura do último valor dataparece ter o papel de parede ativo algumas vezes .

  • Existe uma maneira que eu possa usar desktoppicture.dbpara obter o papel de parede na área de trabalho ativa todas as vezes?
  • Existe outra maneira que eu possa programaticamente obter um caminho para o papel de parede ativo?

Editar: forums.macrumors.com/showthread.php?t=1525299 (alguém pode adicionar http?) É outra fonte de obter essas informações com o AppleScript, mas por algum motivo, o seguinte trecho está retornando Wave.jpgquando Wave.jpgnão é o papel de parede ativo.

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

Para esclarecer, meu papel de parede está definido para percorrer aleatoriamente um diretório.


Eu tentei executar o seguinte comando, como sugerido nas respostas.

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

No entanto, no meu sistema, isso gera:

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 não inclui o papel de parede da área de trabalho ativa.

Eu desativei o ciclo de imagens aleatórias e

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

muda meu fundo para o papel de parede de praia de estoque, e

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

agora mostra picture:/Library/Desktop Pictures/Beach.jpg. No entanto, isso não é útil porque quero obter o plano de fundo quando estou percorrendo aleatoriamente um diretório.

Brandon Amos
fonte

Respostas:

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

Ver todas as propriedades:

tell application "System Events" to get properties of every desktop
ainda mais longe
fonte
Você pode, por favor, levar a depuração para esta sala de bate-papo - eu tenho certeza que o @highphi tem acesso. Obrigado!
Ian C.