xxx
Husk, at der kan være forskel på store og små bogstaver i kodeordet

Har du glemt dit kodeord?

NAVIGATION

PROFIL

  • login
  • Har du ikke en profil så kan du oprette en her

SoMe


HJERTE MODTAGERE
Flest hjerter de sidste 14 dage
1
HJERTE MODTAGERE
Flest hjerter 'All Time High'
341
157
SØG I FORUM
FORUM KATEGORIER
Velkommen gæst!

Macnyts forum er populært blandt mange brugere og det med god grund.

Macnyts forum er fyldt med hjælpsomme brugere, der er interesseret i,
at give en hjælpene hånd og tage en god diskussion/dialog med dig.

Som gæst kan du dog kun læse indholdet i Macnyts forum.

For, at deltage aktivt i diskussionerne skal du have oprettet en profil og være logget ind.

Har du allerede en profil så login her.
Kategori: Dialog om software - anything can happen here :) (Software)
macnyt  /  forum  /  emne
Script til at finde wallpaper virker ikke i Big Sur
Kategori: Dialog om software - anything can happen here :) (Software)


2273

157
07. april 2021 @ 17:04
ASCII jonglør

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?

MBA 15.3” - iPhone 12 - Krokodille - “Nu?”
  9
0
  520

1129

129
07. april 2021 @ 20:36
Stormogul

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"



2273

157
07. april 2021 @ 21:44
ASCII jonglør

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

MBA 15.3” - iPhone 12 - Krokodille - “Nu?”

2273

157
07. april 2021 @ 21:44
ASCII jonglør

dp

MBA 15.3” - iPhone 12 - Krokodille - “Nu?”

1129

129
07. april 2021 @ 22:23
Stormogul

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?



2273

157
07. april 2021 @ 22:42
ASCII jonglør
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.

MBA 15.3” - iPhone 12 - Krokodille - “Nu?”

2709

341
PallMei (Skribent)
07. april 2021 @ 22:43
Bit kongen

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.


2273

157
07. april 2021 @ 22:48
ASCII jonglør

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   

MBA 15.3” - iPhone 12 - Krokodille - “Nu?”

2273

157
07. april 2021 @ 23:03
ASCII jonglør

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.

MBA 15.3” - iPhone 12 - Krokodille - “Nu?”

2273

157
07. april 2021 @ 23:18
ASCII jonglør

Så fandt jeg et (langt) script, der virker rigtig fint. Det ligger her - og ser således ud:

-- Usage: osascript find_wall_pic n
--        n = 1 or 2 (monitor ID)


on replace_chars(this_text, search_string, replacement_string)
-- ref: https://www.macosxautomation.com/applescript/sbrt/sbrt-06.html
set AppleScript's text item delimiters to the search_string
set the item_list to every text item of this_text
set AppleScript's text item delimiters to the replacement_string
set this_text to the item_list as string
set AppleScript's text item delimiters to ""
return this_text
end replace_chars

on run argv
if (count of argv) < 1 then
set screenId to 1
else
set screenId to item 1 of argv as integer
end if
if screenId ≤ 1 then
set screenId to 1 -- 1st monior index
else
set screenId to 18 -- 2nd monitor index
end if

-- set a to (do shell script "/usr/bin/sqlite3 ~/Library/Application\\ Support/Dock/desktoppicture.db \"SELECT data.value FROM preferences INNER JOIN data on preferences.key=16 and preferences.data_id=data.ROWID where preferences.picture_id =" & screenId & "\"") as string
-- set posixaliaspath to "/Users/kangfucius/Library/Caches/com.apple.preference.desktopscreeneffect.desk top/69677504/DSKPhotosRootSource/" & a

set posixaliaspath to (do shell script "/usr/bin/sqlite3 ~/Library/Application\\ Support/Dock/desktoppicture.db \"select d1.value || '/' || d2.value from preferences pf1 join data d1 on pf1.data_id=d1.rowid join preferences pf2 on pf1.picture_id=pf2.picture_id join data d2 on pf2.data_id=d2.rowid where pf1.key=10 and pf2.key=16 and pf1.picture_id=" & screenId & "\"") as string
set homepath to (do shell script "echo $HOME")
-- replace "~" in the path to actual $HOME dir
set posixaliaspath to replace_chars(posixaliaspath, "~", homepath)

set aliaspath to (POSIX file posixaliaspath) as string
set posixpath to POSIX path of aliaspath
set imgfile to POSIX file posixpath
-- tell application "Finder" to reveal imgfile
tell application "Finder"
activate
reveal imgfile
end tell
end run
MBA 15.3” - iPhone 12 - Krokodille - “Nu?”