Jeg har over tusind wallpapers liggende i mappe til brug for skrivebordet på min Mac. De skrifter hvert 15. minut, og ind imellem vil jeg gerne finde frem til det nuværende og har benyttet flg. script:
tell application "System Events"
set posix_path to (pictures folder of desktop 1)
set picPath to (POSIX file posix_path) as string
end tell
set thePictures to (do shell script "sqlite3 ~/Library/Application\\ Support/Dock/desktoppicture.db \"SELECT data.value FROM preferences INNER JOIN data on preferences.key=16 and preferences.picture_id=3 and preferences.data_id=data.ROWID\"")
set fullPath to picPath as string
set rotationImage to fullPath & thePictures
tell application "Finder"
reveal rotationImage
activate
end tell
tell application "Finder"
get selection
repeat with moose in result
if original item of moose exists then
reveal original item of moose
end if
end repeat
end tell
Scriptet ser imidlertid ikke ud til at virke i macOS Big Sur, nogen der kan forklare hvorfor?
nu ved jeg ikke hvad funktionalitet scriptet har helt i detaljer, men når jeg kører den så viser den en vindue med en mappe hvor den vælger "solid colors" mappe, fordi min desktop har kun en farve og ikke billede. så jeg antager det er korrekt opførsel?
hvad sker der hos dig, når du kører scriptet? hvad forventer du? hvad resultat får du?
jeg kører "macos 11.2.3"
Din test tyder på at scriptet kan køre korrekt. Min macOS 11.2.3 (ligesom din) giver to fejlmeldinger, dels denne popup:
- dels denne fejlmelding i boxen Resultater:
error "Finder modtog en fejl: Handler kan ikke håndtere denne type objekt." number -10010
dp
kan det have noget at gøre med tilladelser til at køre script editor eller selve script app?
måske har du på et tidspunkt fravalgt at den må afvikles?
Nihad skrev:kan det have noget at gøre med tilladelser til at køre script editor eller selve script app?
Er usikker på, hvor disse tilladelser skal findes?
måske har du på et tidspunkt fravalgt at den må afvikles?
Ikke mig bekendt, men scriptet blev blot hentet over manuelt fra det tidligere macOS. Kan dette have indflydelse?
Jeg kan imidlertid af fejl-log se, at det er kommandoen reveal rotationImage som udløser fejlmeddelelsen error "Finder modtog en fejl: Handler kan ikke håndtere denne type objekt." number -10010. Ved dog ikke, hvad reveal rotationImage skal rettes til, for at det kører korrekt.
Hos mig åbner den bare mappen med skrivebordsbilleder. Den markere ikke den aktuelle eller noget, så jeg kan ikke rigtig se hvad fidusen er over en simpelt genvej.
Men ellers må du igang med at debugge. Ser ikke ud til at man kan steppe sig igennem i instruksværktøj, hvilket undre mig. Men der er en tredjeparts app som kan. Koster desværre alt for mange penge, men har en 20 dages prøveperiode:
https://latenightsw.com/sd7/download/
XCode skulle også kunne. Men et hurtig forsøg på at indlæse en fil gemt i instruksværktøj var volapyk og oprettelse af et nye applescript-projekt i XCode genere objective C stub og skelet, hvor jeg ikke lige ved hvor man skal proppe koden ind uden at bruge mere tid end jeg har lyst til.
En primitiv for for debug er at putte print kommandoer, der kan vise variable værdier.
OK, tak for det. Hmmm...scriptet virkede fint i macOS 10.14 Mojave. Her åbnede scriptet straks mappen med skrivebordsbilleder og markerede det aktuelle billede.
Fandt i øvrigt i sin tid scriptet på nettet, så jeg har ikke selv skrevet det, har ikke lært mig Script. Så det bliver lidt svært at debugge
Fandt frem til dette fine og korte script på nettet:
do shell script "sqlite3 ~/Library/Application\\ Support/Dock/desktoppicture.db 'select * from data' | tail -2"
Dette viser godt nok fil-navnet på det nuværende wallpaper i resultat-vinduet i Instruksværktøj, men der åbnes ikke et Finder-vindue med wallpaper-filen markeret - hvilket er det optimale og det jeg søger.
Det skal lige nævnes, at alle wallpapers ligger i en mappe, som jeg selv har oprettet, og altså ikke i en af macOS´ standardmapper.
Så fandt jeg et (langt) script, der virker rigtig fint. Det ligger her - og ser således ud: