Crea sito

Un wallpaper per ogni mese

wallpaperSarebbe carino avere un wallpaper che cambia automaticamente ogni mese? Oggi vedremo com ottenere questo risultato utilizzando applescript e geektool.

1. Creiamo lo script

Apriamo applescript editor e inseriamo il seguente codice:

–Folder names
set jan to “january”
set feb to “february”
set mar to “march”
set apr to “april”
set maym to “may”
set jun to “june”
set jul to “july”
set aug to “august”
set sep to “september”
set oct to “october”
set nov to “november”
set dec to “december”

— set to true to display the same image on all desktops, false to show unique images on each desktop
set useSamePictureAcrossDisplays to true

— get current month
set m to month of (current date)

— set default currentMounth
set currentMounth to m

— change value of currentMounth based on current data
if (m is equal to “january”) then
set currentMounth to jan
else if (m is equal to “february”) then
set currentMounth to feb
else if (m is equal to “march”) then
set currentMounth to mar
else if (m is equal to “april”) then
set currentMounth to apr
else if (m is equal to “may”) then
set currentMounth to maym
else if (m is equal to “june”) then
set currentMounth to jun
else if (m is equal to “july”) then
set currentMounth to jul
else if (m is equal to “august”) then
set currentMounth to aug
else if (m is equal to “september”) then
set currentMounth to sep
else if (m is equal to “october”) then
set currentMounth to oct
else if (m is equal to “november”) then
set currentMounth to nov
else if (m is equal to “december”) then
set currentMounth to dec
end if

— Function for getting random image
on getImage(folderName)

tell application “Finder”
return some file of folder (“Pictures:Wallpapers:” & folderName) of home as text
end tell

end getImage

tell application “Finder”
try

— set picture to use for main display
set mainDisplayPicture to my getImage(currentMounth)

— set the picture for additional monitors, if applicable
tell application “System Events”

— set a reference to all desktops
set theDesktops to a reference to every desktop

— manage additional desktops
if ((count theDesktops) > 1) then

— loop through all desktops
repeat with x from 2 to (count theDesktops)

— set image to use
if (useSamePictureAcrossDisplays is false) then
set secondaryDisplayPicture to my getImage(currentMounth)
else
set secondaryDisplayPicture to my mainDisplayPicture
end if

— apply image to desktop
set picture of item x of the theDesktops to secondaryDisplayPicture

end repeat

end if

end tell

— set the primary monitor’s picture
set desktop picture to mainDisplayPicture

end try

end tell

C’è un bel po’ da scrivere, ma il codice è abbastanza commentato, si dovrebbe capire abbastanza facilmente il suo funzionamento. Una volta scritto il codice salviamo lo script.

2. Aggiungiamo lo script a geektool per l’esecuzione in automatico

Apriamo geektool, creiamo un nuovo script shell e scriviamo:

osascript <il nome dello script.scpt>

Impostiamo l’intervallo in secondi per l’esecuzione dello script, io ho impostato 7200 che equivale a 2 ore. Ciò significa che ogni 2 ore lo script guarderà nella cartella corrispondente al mese corrente e sceglierà un immagine a caso contenuta nella cartella.

3. Creiamo le cartelle in cui inserire i wallpapers

Infine posizioniamoci nella cartella immagini e creiamo un cartella chiamandola wallpaper, in questa cartella creiamo 12 cartelle, una per ogni mese. Ovviamente alle dodici sottocartelle daremo i nomi dei mesi in inglese.

Adesso inseriamo le immagini che desideriamo come wallpaper in ogni cartella mensile. Questo è tutto.

Di seguito trovate lo script già pronto con relative cartelle già create.

Download wallpaper.zip

2 Risposte a “Un wallpaper per ogni mese”

  1. Im not that much of a online reader to be honest but your blogs really nice, keep it up! I’ll go ahead and bookmark your site to come back later. Cheers fbcabkbdbeke

I commenti sono chiusi.