I'm building an automated wallpaper updater that fetches images from an API and sets them as desktop wallpaper on macOS Tahoe. The automation uses AppleScript combined with database manipulation to ensure wallpaper applies to all spaces.
Current implementation (via Apple Shortcuts):
wallpaper_path="$1"
osascript -e "tell application \"System Events\" to tell every desktop to set picture to
POSIX file \"$wallpaper_path\""
sqlite3 ~/Library/Application\ Support/Dock/desktoppicture.db "UPDATE data SET space=NULL
WHERE space IS NOT NULL;" 2>/dev/null
killall -HUP Dock
Issue
First run: Works perfectly - sets wallpaper on all spaces/desktops, "Show on all spaces" is ON
After first run: "Show on all spaces" automatically toggles OFF in System Settings
Second run onwards: New wallpaper only updates on the active space, inactive spaces show old wallpaper
Expected: "Show on all spaces" should remain ON after programmatic wallpaper changes
Actual: System Settings automatically disables it, breaking subsequent updates
Tested workarounds (all failed):
UPDATE data SET space=NULL to clear per-space entries
Using every desktop instead of current desktop in AppleScript
killall Dock vs killall -HUP Dock vs killall -USR1 Dock
Clearing space_id entries from pictures table
Running DELETE FROM pictures WHERE space_id IS NOT NULL before setting
The database manipulation doesn't prevent macOS from automatically creating per-space entries
and disabling the "Show on all spaces" toggle.
Question: Is there a way to programmatically set wallpaper while preserving the "Show on all
spaces" setting on macOS Tahoe?
Environment:
macOS: Tahoe (latest)
Architecture: Apple Silicon
Use case: Daily automated wallpaper updates via Shortcuts
Zsh
RSS for tagThe Z shell (Zsh) is a Unix shell that can be used as an interactive login shell and as a command interpreter for shell scripting.
Posts under Zsh tag
5 Posts
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
I installed MacOS Sequoia 15.4 and now my backup script no longer works.
My script is using rsync in this way:
rsync -avz —delete —log-file=“$LOG_FILE” “$SRC_DIR” “$DEST_DIR”
This has been working fine for a very long time.
After updating to 15.4, this produces the error “rsync: unrecognized action —log-file=/users/admin/logs/backuplog_xxx.log”.
The log file path is correct (and hasn’t changed).
Interestingly, the man page for rsync no longer shows the —log-file as an option.
I know I can use:
rsync -avz —delete “$SRC_DIR” “$DEST_DIR” > “$LOG_FILE”`
or even
rsync -avz —delete “$SRC_DIR” “$DEST_DIR” > “$LOG_FILE” 2>&1`
to also capture stderr.
However, I liked the output from the built-In log option.
Does anyone know why this might have been removed or if there is a way to get it back?
Thanks.
Hi All,
I am looking for a terminal command to get the exact same output as the file count you recieve when using Get Info in finder.
The closest i can get is using the find command with flags:
find 'path/to/folder' -not -path '*/\.*' -and -not -path '*\.key/*' -and -not -path '*\.numbers/*' -and -not -path '*\.pages/*' -and -not -path '*__MACOSX/*' -and -not -path '*\.pdf/*' -and -not -path '*\.app/*' -and -not -path '*\.rtfd/*' | wc -l
I will be searching on an external volume that sometimes produces keynote save files that finder sometimes sees as a package and sometimes sees as a folder. If a folder finder counts the items contained if a package it doesn't, I need the command or script to mimic this behaviour.
In the example of the screenshot get info on the top folder produces a count of 14 and the find command produces a count of 23.
There are also other behaviours that differ the file count between them but i'm not sure what causes them.
Any help on a solution it being a command or script would be much apreciated.
Thanks,
James
Hey, I am using the terminal a lot. Since I updated to Sonoma (so, really a long time ago). My prompt or more precise the hostname always changes between three states. Sometimes it is username@Macbook-Pro-of-XXX, sometimes username@MacbookPro and sometimes it's username@xxxxxxxx-yyyy-zzzz-aaaa-bbbbbbbbbbbb. The latter is probably my UUID. Does anyone have a clue why this randomly changes?
I have a command line tool that zsh refuses to run when built for Apple Silicon or as a univerisal binary (the specific message is zsh: killed TOOL_NAME). I can only get it to run if I build it exclusively for Intel/Rosetta.
Running/debugging from within Xcode works fine for any architecture.
The tool is a very simple C/C++ unix command-line tool; it doesn't have any external dependencies beyond the C runtime and the C++ STL.
I suspect something in code signing is going awry, but I've tried various team and certificate combinations without any luck. I've also tried enabling/disabling the app sandbox, also without any luck. (The app is not for distribution so it doesn't really need to be code signed at all.)
Any suggestions?