Aggiorna lo sfondo del desktop di Mac OS X da uno script


3

Ho uno script di shell che viene eseguito da un cron job che aggiorna un jpeg. Lo sfondo del desktop sul mio monitor esterno è impostato sullo stesso file. Tuttavia, Mac OS X non aggiorna automaticamente lo sfondo del desktop quando il file viene aggiornato.

Come forzare l'aggiornamento dello sfondo del desktop dallo script?

Risposte:


5

Un modo corretto (senza usare qualcos'altro per chiamare il tuo script) sarebbe quello di aggiungere la seguente riga al tuo script shell:

osascript -e 'tell Application "Finder"' -e 'set the desktop picture to {"NAME OF STARTUP DRIVE:PATH:TO:PICTURE.jpg"} as alias' -e 'end tell'

Nota: il percorso utilizza due punti anziché un / ed è necessario assegnare un nome al disco rigido.

Un'alternativa davvero strana di più per le risatine, è un grosso problema di una soluzione alternativa è aggiungere la seguente riga allo script della shell eseguito da cron:

killall Dock

Questo ucciderà il Dock, che al riavvio (automaticamente) aggiornerà lo sfondo del desktop. Lati negativi? Le icone del dock delle applicazioni aperte verranno riordinate (se le icone delle app non sono già state salvate in una posizione nel dock) e le finestre ridotte a icona non verranno minimizzate. Quindi se non usi queste funzionalità, va bene.


24: 113: errore di esecuzione: il Finder ha ricevuto un errore: Impossibile trasformare "/ Library / Desktop Pictures / Beach.jpg" nel file di tipo. (-1700)
iconoclasta

@Brandon: non sono sicuro quando si è rotto; ma se rimuovi "Percorso POSIX di" funziona correttamente. Aggiornata la risposta di conseguenza.
Chealion,

3

La mia precedente risposta a questa schifosa, quindi eccone una migliore.

Per fare questo uso uno script di shell e un flusso di lavoro di Automator. Lo script della shell scarica l'immagine che desidero, la salva da qualche parte e riecheggia l'intero percorso dell'immagine (questa è la parte importante). Il flusso di lavoro di Automator è quindi simile al seguente:

[run shell script ~/bin/getAPOD.sh] -> [Set the Desktop Picture]

Quell'azione "Imposta l'immagine del desktop", per quanto ne so, è arrivata con Automator.

Ho quindi una voce crontab che assomiglia a questa:

* 4 * * * /usr/bin/open /Users/myuser/bin/APODset.app

Se desideri, posso pubblicare lo script, il flusso di lavoro di Automator, qualunque cosa.


1

Ecco l'ultimo applecript che sto usando:

tell application "System Events"
    set myfolder to folder "foo" of the pictures folder
    tell desktop 2 to set picture to file "empty.jpeg" of myfolder as alias
    tell desktop 2 to set picture to file "bar.jpeg" of myfolder as alias
end tell

Questo viene passato osascriptdallo script shell (in realtà ruby) che aggiorna il jpeg.

Il problema precedentemente discusso dello sfondo non si aggiorna se il nuovo percorso è lo stesso del percorso corrente (che era ancora un problema con la risposta di Chealion) viene risolto passando temporaneamente a "empty.jpeg". Questo è fastidioso poiché la transizione è a scatti, ma batte dover riavviare il Finder / Dock.

Sto usando l'applicazione Eventi di sistema perché lo fanno anche gli esempi Apple .


0

Lo so che non risponde pienamente alla tua domanda, ma questo potrebbe essere interessante per voi a leggere. Il modo in cui qualcuno lo faceva stava usando un AppleScript che riavviava Finder; al riavvio del Finder aggiorna automaticamente l'immagine di sfondo; non sembra esserci altro modo.


è indesiderabile, avere tutte le finestre del mio Finder uccise è piuttosto invadente. Link informativo però.
p00ya,

FWIW, Dock.app controlla l'immagine di sfondo ora e non il Finder e ha dal 10.3 IIRC.
Chealion,

0

È semplicemente farlo senza usare uno script esterno ....

Innanzitutto, mantieni il tuo lavoro cron ....

Secondo, crea una cartella in cui il tuo lavoro cron inserirà una singola foto / jpg. Questa cartella deve contenere una sola foto / jpg .. (Più file ti daranno un effetto casuale, vedi sotto).

In terzo luogo, Apri Preferenze di Sistema -> Desktop e Screen Saver -> scheda Desktop

In quarto luogo, trascina o usa + per aggiungere la nuova cartella al tuo elenco.

In quinto luogo, evidenziare la cartella nell'elenco delle cartelle

In sesto luogo, attiva Cambia immagine e scegli un intervallo di tempo.

Potresti anche eseguire un Applescript per ripristinare l'immagine, ma è il modo più ovvio e più semplice che posso vedere per farlo ...


Questo non è ottimale (devo impostare il periodo "cambia immagine" considerevolmente più basso del periodo cronjob per ottenere aggiornamenti tempestivi quando i due sono fuori fase). Detto questo, sembra che sia la soluzione migliore.
p00ya,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.