starter programa poner para pantalla movimiento fondos fondo como cambiar objective-c cocoa desktop

objective c - programa - Configuración del fondo de escritorio en todos los espacios en Cocoa



fondos de pantalla hd (2)

Estoy escribiendo una pequeña aplicación para cambiar el fondo de tu escritorio. Si el usuario solo usa un espacio, entonces todo está bien, pero cuando tiene múltiples espacios, la aplicación solo funciona en el espacio actualmente activo.

Estoy usando este codigo

[[NSWorkspace sharedWorkspace] setDesktopImageURL:currentImageURL forScreen:screenToChange options:screenOptions error:&error]

para cambiar el fondo del escritorio, y parece que no hay manera de cambiar el fondo de otro espacio.

Solo encontré respuestas de hace varios años, y nadie hizo esta pregunta específica. ¿Hay alguna manera de hacerlo en objetivo-c?


Aunque no hay una API pública para cambiar el fondo de los espacios, hay maneras de hacerlo. La palabra clave que está buscando es com.apple.desktop.plist que está dentro de ~/Library/Preferences/ Es la lista que almacena todo el fondo actual de todos los espacios actuales. Si desea utilizar object-c, puede cambiar este archivo a su gusto o puede usar una de las soluciones sugeridas here y here . Si está apuntando a Mavericks, los datos de los fondos de pantalla están aquí: ~/Library/Application/ Support/Dock/desktoppicture.db"


Setting the desktop background on all Spaces in Cocoa

Si el usuario desea configurar el fondo del escritorio para múltiples espacios, intente con el siguiente código:

Para más información refiérase a esto

NSString* path = @"/Users/abc/Desktop/yourImg.png"; NSUserDefaults* def = [NSUserDefaults standardUserDefaults]; NSMutableDictionary* desktopDict = [NSMutableDictionary dictionaryWithDictionary:[def persistentDomainForName:@"com.apple.desktop"]]; NSMutableDictionary* bgDict = [desktopDict objectForKey:@"Background"]; NSMutableDictionary* spaces = [bgDict objectForKey:@"spaces"]; [spaces enumerateKeysAndObjectsUsingBlock:^(NSString* key, NSMutableDictionary* obj, BOOL *stop) { [obj enumerateKeysAndObjectsUsingBlock:^(id key, NSMutableDictionary* prefs, BOOL *stop) { [prefs setObject:path forKey:@"ImageFilePath"]; [prefs setObject:path forKey:@"NewImageFilePath"]; [prefs setObject:@"Never" forKey:@"Change"]; }]; }]; [def setPersistentDomain:desktopDict forName:@"com.apple.desktop"];