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
3
HJERTE MODTAGERE
Flest hjerter 'All Time High'
142
110
SØG I FORUM
FORUM KATEGORIER
Du skal have en profil på macnyt for, at deltage aktivt.
Det er gratis og du kan gøre det her.
Du er ikke logget ind på macnyt. Har du ikke en profil på macnyt så opret en 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)


1817

105
07. april 2021 @ 17:04
Stormogul

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?

MBP 15" & iPhone 7 Plus - Nomina Rutrum Rutrum!
  9
0
  207

1045

110
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"



1817

105
07. april 2021 @ 21:44
Stormogul

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

MBP 15" & iPhone 7 Plus - Nomina Rutrum Rutrum!

1817

105
07. april 2021 @ 21:44
Stormogul

dp

MBP 15" & iPhone 7 Plus - Nomina Rutrum Rutrum!

1045

110
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?



1817

105
07. april 2021 @ 22:42
Stormogul
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.

MBP 15" & iPhone 7 Plus - Nomina Rutrum Rutrum!

1253

142
PallMei (Skribent)
07. april 2021 @ 22:43
Stormogul

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.


1817

105
07. april 2021 @ 22:48
Stormogul

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   

MBP 15" & iPhone 7 Plus - Nomina Rutrum Rutrum!

1817

105
07. april 2021 @ 23:03
Stormogul

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.

MBP 15" & iPhone 7 Plus - Nomina Rutrum Rutrum!

1817

105
07. april 2021 @ 23:18
Stormogul

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
MBP 15" & iPhone 7 Plus - Nomina Rutrum Rutrum!