无需 killall Dock 即可无缝更改 Mac 上所有桌面空间的墙纸
Seamlessly change all desktop spaces' wallpaper on Mac without killall Dock
我想更改所有桌面上的墙纸,包括 Mac 上的 spaces,但不需要每分钟调用 killall Dock
。 (Dock 重启强制壁纸刷新)。
我有一个 AppleScript 可以立即更改桌面墙纸:
tell application "System Events" to tell every desktop to set picture to wallpaperPath
但这只会更改活动中的墙纸 space(这意味着如果主桌面未处于活动状态,其背景将不会更改)。
我发现了这个问题 ,它建议更新位于 ~/Library/Application Support/Dock/desktoppicture.db
的 SQLite 数据库中的墙纸路径值。这会在每个 space 更改壁纸,这很好,但它需要使用 killall Dock
重新启动扩展坞,这是不可取的,因为它会扰乱工作流程。
我的问题是 - 有什么方法可以结合这两种方法吗?无缝更改每个桌面上的壁纸 space?
如有任何建议,我们将不胜感激。我没有首选语言,可以是 C、Swift、Python、Bash、AppleScript 等
我想通了。
我正在遍历所有可用屏幕并使用 setDesktopImageURL:forScreen:options:error: 设置壁纸:
for screen in NSScreen.screens {
try! NSWorkspace.shared.setDesktopImageURL(url, for: screen, options: [:])
}
这会无缝更改壁纸,无需在所有屏幕上 killall Dock
,但前提是桌面处于活动状态 space。
为了确保在我使用另一个 space(通常是全屏应用程序)时更改壁纸,我在设置桌面的 NSWorkspace.shared.notificationCenter
上为 NSWorkspace.activeSpaceDidChangeNotification
添加了一个观察者图像再次(使用上面的代码)。因此,每当我回到桌面时,都会调用此通知并无缝更新墙纸。
我什至更进一步,还为 NSWorkspace.didWakeNotification
添加了相同的观察器,它会在设备唤醒后立即更新壁纸,这很酷!
我想更改所有桌面上的墙纸,包括 Mac 上的 spaces,但不需要每分钟调用 killall Dock
。 (Dock 重启强制壁纸刷新)。
我有一个 AppleScript 可以立即更改桌面墙纸:
tell application "System Events" to tell every desktop to set picture to wallpaperPath
但这只会更改活动中的墙纸 space(这意味着如果主桌面未处于活动状态,其背景将不会更改)。
我发现了这个问题 ~/Library/Application Support/Dock/desktoppicture.db
的 SQLite 数据库中的墙纸路径值。这会在每个 space 更改壁纸,这很好,但它需要使用 killall Dock
重新启动扩展坞,这是不可取的,因为它会扰乱工作流程。
我的问题是 - 有什么方法可以结合这两种方法吗?无缝更改每个桌面上的壁纸 space?
如有任何建议,我们将不胜感激。我没有首选语言,可以是 C、Swift、Python、Bash、AppleScript 等
我想通了。
我正在遍历所有可用屏幕并使用 setDesktopImageURL:forScreen:options:error: 设置壁纸:
for screen in NSScreen.screens {
try! NSWorkspace.shared.setDesktopImageURL(url, for: screen, options: [:])
}
这会无缝更改壁纸,无需在所有屏幕上 killall Dock
,但前提是桌面处于活动状态 space。
为了确保在我使用另一个 space(通常是全屏应用程序)时更改壁纸,我在设置桌面的 NSWorkspace.shared.notificationCenter
上为 NSWorkspace.activeSpaceDidChangeNotification
添加了一个观察者图像再次(使用上面的代码)。因此,每当我回到桌面时,都会调用此通知并无缝更新墙纸。
我什至更进一步,还为 NSWorkspace.didWakeNotification
添加了相同的观察器,它会在设备唤醒后立即更新壁纸,这很酷!