2011-01-31 29 views
6

Me gustaría agregar un nuevo elemento a la barra lateral del Finder. Descubrí que el Finder mantiene la lista de "lugares" en `~/Library/Preferences/com.apple.sidebarlists.plist. Pude leer el archivo usando Carbon API y vi que cada elemento tenía Nombre, icono y alias.Agregar elemento al Finder Barra lateral

Usando una aplicación de terceros como PlistEdit Pro, pude actualizar el alias. Mi pregunta es cómo actualizar el alias usando Carbon API. No fue posible encontrar una forma de crear un alias que se abrirá en Finder. Parece que tanto Dropbox como PlistEditor Pro pudieron encontrar el camino.


Editar: ver firmware 2,015 respuesta

Respuesta

6

Tome una mirada here:

La API de lista de archivos compartidos es nuevo para Launch Services en Mac OS X Leopard. Esta API proporciona acceso a varios tipos de global del sistema y por usuario listas persistentes de sistema de archivos objetos, tales como documentos recientes y aplicaciones, favoritos y acceder artículos. Para obtener detalles, consulte el nuevo archivo de interfaz LSSharedFileList.h.

Desea buscar la clave kLSSharedFileListFavoriteItems, que maneja los elementos en "Lugares" en la barra lateral. Supongo que podría intentar hacer algo similar al this, usando LSSharedFileListCreate para crear kLSSharedFileListFavoriteItems.

O usted podría utilizar el applescript publicada here, lo que sería manera más fácil, pero no la "manera correcta" ©

+0

La forma applescript trabajó 4 mí. thx – amitp

+0

@amitp ¡Genial! ¡Supongo que podría seleccionar mi respuesta como solución entonces! :-) – Asmus

0

@Asmus: Por 'comando + T' por defecto es el acceso directo para agregar una carpeta a la barra lateral en el buscador. Applescript señalado por u está funcionando bien cuando la tecla de atajo de teclado 'comando + T' se asigna manualmente a otras tareas.

El applescript falla si se ejecuta después de establecer 'Command + T' como la tecla de acceso directo para mostrar mi otro escritorio en Lion OSX (10,7)

3

Actualización para 2015

El encabezado LSSharedFileList dice que esto se ha movido al marco CoreServices. De hecho, si usa Cmd-Shift-O (en Xcode) y escribe LSSharedFileList, navegue hasta el único resultado, verá en la barra de salto que el encabezado ahora está contenido en CoreServices.framework. En cualquier caso, la clave sigue siendo kLSSharedFileListFavoriteItems.

Ejemplo:

+ (BOOL)appendFavoriteItemWithURL:(NSURL *)url { 

    // Pessimism ... 
    BOOL result = NO; 

    // Do we have a file URL? 
    if (url.isFileURL) { 

    // Ask CoreServices for the favorite items list 
    // (kLSSharedFileListFavoriteItems) 
    LSSharedFileListRef list = LSSharedFileListCreate(NULL, kLSSharedFileListFavoriteItems, NULL); 
    if (list) { 

     // We've got the list, so try to append our item 
     // (use kLSSharedFileListItemBeforeFirst vs. 
     // kLSSharedFileListItemLast if desired) 
     LSSharedFileListItemRef item = LSSharedFileListInsertItemURL(list, 
            kLSSharedFileListItemLast, 
            NULL, 
            NULL, 
            (__bridge CFURLRef)url, 
            NULL, 
            NULL); 

     // Did it work? 
     if (item) { 

     // Release the item and flag success 
     CFRelease(item); 
     result = YES; 

     } 

     // Release the list 
     CFRelease(list); 

    } 

    } 

    return result; 
} 

Uso:

// Create the path to the favorite item to add 
NSString * itemPath = [@"~/Music" stringByExpandingTildeInPath]; 
NSURL * itemURL = [NSURL fileURLWithPath:itemPath]; 

// Insert the item 
[WhateverClassTheAboveFunctionIsIn appendFavoriteItemWithURL:itemURL]; 
+1

Creé este Gist que engloba esta funcionalidad en una categoría simple de NSURL: https: //gist.github.com/jnozzi/817f3276c55dbb7025be –

+0

Up-votada, me gusta esta solución, pero es una pena que algunas de esas funciones ahora estén en desuso en 10.11. ¿Alguna idea de qué usar en su lugar? –

+0

No por el momento, Ben. ¿Están los métodos obsoletos anotados en los encabezados? Ellos pueden sugerir las alternativas. –

Cuestiones relacionadas