You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取适配当前配色方案的macOS壁纸图片URL?

获取匹配macOS当前配色方案的桌面壁纸URL

可以通过读取系统偏好设置的相关键值来获取对应明暗模式的壁纸URL,以下是具体实现思路和代码示例:

核心思路

NSWorkspace.shared.desktopImageURL(for:)确实只会返回浅色模式的壁纸路径,要获取对应当前模式的变体,需要从NSUserDefaults中读取屏幕对应的壁纸配置,其中包含了明暗模式各自的壁纸URL。

代码实现

import Cocoa

func currentDesktopWallpaperURL(for screen: NSScreen) -> URL? {
    // 获取屏幕的UUID作为键值标识
    guard let screenUUID = screen.deviceDescription[.init("NSScreenNumber")] as? NSNumber else {
        return nil
    }
    
    let defaults = UserDefaults.standard
    let key = "Desktop\(screenUUID)"
    
    // 读取当前屏幕的壁纸配置字典
    guard let wallpaperConfig = defaults.dictionary(forKey: key) else {
        return nil
    }
    
    // 判断当前系统是否处于深色模式
    let isDarkMode = UserDefaults.standard.bool(forKey: "AppleInterfaceStyle")
    
    // 根据模式选择对应的URL
    let urlKey = isDarkMode ? "Dark" : "Light"
    return wallpaperConfig[urlKey] as? URL
}

// 使用示例
if let mainScreen = NSScreen.main, let wallpaperURL = currentDesktopWallpaperURL(for: mainScreen) {
    print("当前匹配配色的壁纸URL:\(wallpaperURL)")
}

说明

  • 系统会为每个屏幕存储独立的壁纸配置,键名格式为Desktop<屏幕UUID>,其中包含Light和Dark两个子键,分别对应明暗模式的壁纸URL。
  • 通过AppleInterfaceStyle键可以判断当前是否处于深色模式(存在且对应值为Dark时返回true,否则为浅色模式)。
  • 沙盒应用中需要额外配置读取系统偏好设置的权限,才能正常获取这些键值。

内容的提问来源于stack exchange,提问作者Kushagra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 15:00:57