Я пытаюсь установить фон рабочего стола для всех экранов И пробелов (существующих и новых). Однако я не могу найти способ установить фон для всех существующих пространств (и любые созданные новые пространства используют старый фон).
Вот что я до сих пор:
let sqlData = NSMutableArray()
let paths = NSSearchPathForDirectoriesInDomains(.ApplicationSupportDirectory, .UserDomainMask, true)
let appSupportDirectory = paths.first! as NSString
let dbPath = appSupportDirectory.stringByAppendingPathComponent("Dock/desktoppicture.db") as NSString
var db: COpaquePointer = nil
if sqlite3_open(dbPath.UTF8String, &db) == SQLITE_OK {
var statement: COpaquePointer = nil
if sqlite3_exec(db, "DELETE FROM data", nil, nil, nil) != SQLITE_OK {
let errmsg = String.fromCString(sqlite3_errmsg(db))
print("error deleting table row: \(errmsg)")
}
if sqlite3_exec(db, "INSERT INTO DATA (VALUE) VALUES ('\(getBackgroundImagePath())');", nil, nil, nil) != SQLITE_OK {
let errmsg = String.fromCString(sqlite3_errmsg(db))
print("error inserting table row: \(errmsg)")
}
let workspace = NSWorkspace.sharedWorkspace()
for screen in NSScreen.screens()! {
do {
let options = workspace.desktopImageOptionsForScreen(screen)
try workspace.setDesktopImageURL(NSURL(fileURLWithPath: getBackgroundImagePath()), forScreen: screen, options: options!)
} catch let error as NSError {
NSLog("\(error.localizedDescription)")
}
}
system("/usr/bin/killall Dock")
}
sqlite3_close(db)
Примечание. Я обновляю файл .db, найденный в ~/Library/Application Support/Dock/desktoppicture.db
. Поскольку это фактически не обновляет фон, я затем перехожу к каждому экрану и устанавливаю его вручную.
Несмотря на то, что это изменяет все фон на экране, любые неактивные пробелы не изменяются, а любые созданные новые пространства используют старый фон.
Я использую этот код в небольшом приложении, которое я сделал на GitHub, и это проблема, о которой сообщил пользователь. Вы можете найти эту проблему здесь (с помощью терминального решения).
У Apple есть, по-видимому, релевантный проект здесь, но даже они не обновляют несколько пробелов.
Кроме того, если вы обновляете фон через приложение настроек Mac по умолчанию, оно также не изменяет ранее существовавшие пробелы. Это невозможно?