Otra pregunta más sobre el ícono de la barra lateral personalizada (Pregunta de Info.plist del sistema)

He examinado casi todas las búsquedas de Google que se me ocurrieron y obtuve lo que creo que parece estar cerca de una respuesta sobre cómo configurar íconos personalizados en la barra lateral SIN tener que recurrir a la piratería mach_inject de Dropbox, pero tengo algunas preguntas y Estoy perplejo. Mi pregunta principal es: ¿Puedes establecer un 'tipo' en una carpeta? El motivo de la pregunta es porque al acceder a /System/Library/CoreServices/CoreTypes.bundle/Contents hay un archivo Info.plist. Este archivo muestra asociaciones de iconos para carpetas del sistema. Sin embargo, antes de profundizar en los iconos de la barra lateral, en primer lugar, me gustaría saber cómo se asocian los iconos "normales" a las carpetas del sistema. Usaré la carpeta 'Documentos' como ejemplo. Puedo ver en Tipos de documentos en este archivo Info.plist, el elemento 155 es para la carpeta Documentos, y explica que el icono que se debe asociar a la carpeta Documentos debe ser DocumentsFolderIcon.icns. También indica que el 'Tipo de sistema operativo del documento' es un tipo de 4 caracteres, llamado 'docs'.

tipo de documentos

¿Es seguro asumir que si creé una nueva carpeta, de alguna manera podría editar un atributo extendido o algún tipo de metadatos que declaran que mi nueva carpeta es del tipo 'docs', lo que hará que Finder muestre DocumentsFolderIcon.icns para ella? ? ¿Cómo puedo modificar el 'tipo' de mi carpeta de esa manera?

Además, en el mismo archivo Info.plist, explica los iconos de la barra lateral. El diccionario para el elemento 10 (el icono de la barra lateral de documentos) explica que el tipo de sistema operativo del documento de 'sbDc' mostrará SidebarDocumentsFolder.icns. Nuevamente, con mi carpeta recién creada, ¿puedo editar un atributo o metadatos para indicar que el tipo de barra lateral debe ser 'sbDc' en lugar del predeterminado 'sbFd' (que es para el icono de la Carpeta genérica).

tipo sbdc

Ser capaz de modificar esos atributos en mi nueva carpeta de esa manera puede proporcionarme una prueba de concepto para obtener íconos de barra lateral personalizados sin necesidad de trucos de mach_inject, y permitirme crear nuevas carpetas que actúen como si fueran carpetas generadas por el sistema. con sus propios iconos de barra lateral personalizados y todo.

(Sé que hay OTRO archivo en /Library/Preferences llamado com.apple.sidebarlists.plist, pero estoy confundido, porque para la definición de la carpeta Documentos, indica un número decimal para com.apple.LSSharedFileList.TemplateSystemSelector que, cuando convertido a hexadecimal, luego a ASCII, deletree 'sbDt' y NO 'sbDc' que aparece en el archivo Info.plist del sistema como tipo de barra lateral Documentos) --EDITAR-- En realidad, modifiqué eso en un intento de hacer un cambio a ver que pasa; el número decimal que se estableció originalmente para Documentos de forma predeterminada es, de hecho, 1.935.819.875, que se traduce como 'sbDc' en ASCII. (La siguiente captura de pantalla tiene mi cambio).

número > hexadecimal > ASCII

Entonces, para recapitular, ¿cómo puedo modificar los atributos, los metadatos o como se llame, en una carpeta recién creada para declararla de tipo 'docs' en lugar de tipo 'fldr, fold, utif o aexf' para que en lugar de la icono de la carpeta genérica, muestra el icono de la carpeta Documentos?

Nuevamente, sé que esto ha sido golpeado hasta la muerte, siento que estoy muy cerca de poder configurar íconos personalizados e íconos de barra lateral sin tener que recurrir a inyecciones de código...

¡Gracias de antemano!

--Solo una nota adicional sobre los íconos personalizados 'regulares' (no los íconos de la barra lateral): sé cómo configurar un ícono personalizado para una carpeta usando métodos convencionales, pero cuando selecciona una imagen usando la vista previa y luego 'Obtener información' en su carpeta y pegue su imagen en la esquina superior izquierda para establecer el ícono, el tamaño en el disco para su carpeta cambia... que no es como las carpetas del sistema tienen sus íconos establecidos. Las carpetas del sistema deben asociar sus íconos por ese tipo de 4 caracteres de alguna manera y estoy tratando de hacer lo mismo con mi propia carpeta personalizada.--

ACTUALIZAR

La respuesta de Tobias (ver su respuesta a continuación) parece estar en el camino correcto, pero por mi vida no puedo encontrar qué archivo conecta una ruta a un icono. Intenté buscar en todos los archivos de mi computadora la cadena '/Sitios' usando Terminal. Si crea una carpeta 'Sitios' en su carpeta 'inicio', obtendrá un ícono especial con un logotipo de Safari, pero si crea una carpeta 'Sitios' en, por ejemplo, su escritorio, obtendrá un ícono de carpeta genérico . Entonces, la discriminación de rutas definitivamente está sucediendo, ¡gracias Tobias! Por alguna razón, 'Sitios' es especial y es un remanente de versiones anteriores de OS XI o está destinado a desarrolladores web (aunque, curiosamente, no tiene un icono de barra lateral especial, todavía tiene un icono de carpeta genérico en la barra lateral). ¿Alguien podría explicar cómo y por qué la carpeta Sitios es tan especial? Énfasis en el cómo, jajaja.

Respuestas (2)

Si simplemente está tratando de cambiar el ícono predeterminado a otra cosa, aquí hay una respuesta que proporcioné para una publicación anterior. He usado esto para personalizar varios íconos en la barra lateral del Finder.

Gracias Dave El objetivo es poder insertar nuevas definiciones para carpetas totalmente nuevas y personalizadas, es decir, mantener todos los valores predeterminados allí y luego agregar nuevos íconos para mis propias carpetas personalizadas. Estoy tratando de entender exactamente cómo funcionan esos 'Tipos de SO de documentos' con esas cadenas de 4 caracteres. Estoy pensando que debe haber algún tipo de metadatos para cada carpeta -real- que se pueda modificar. Solo como prueba, me gustaría crear una nueva carpeta, de alguna manera establecer su 'tipo' en 'docs' y ver que su ícono muestre el mismo que la carpeta Documentos.

Supone que tiene que haber una propiedad en el archivo/carpeta para su tratamiento de icono especial.

Usando la Terminal y ls -l@emuestra todas las claves de atributo extendidas y la Lista de control de acceso (ACL) asociada con el archivo/carpeta. Lo único especial de las carpetas especiales es que la ACL establece 0: group:everyone deny delete. Una copia con cp -a, que conserva todo, incluidas las claves de atributo extendidas y la ACL, no conserva el icono especial.

Entonces no hay propiedad en el archivo/carpeta.

En cambio, Finder trata estas carpetas de manera diferente por sí solo.

Lo hace simplemente mediante la discriminación de rutas. Úselo sudo mvpara verificar esto.


Notas adicionales

  • La localización del nombre se realiza mediante un .localizedarchivo dentro de la carpeta.
  • Los iconos personalizados dan como resultado un atributo

    com.apple.FinderInfo      32
    

    en la carpeta y el archivo especial

    -rw-r--r--@  1 <user> <group> 0 <dd> <mmm> <yyyy> Icon?
        com.apple.FinderInfo         32 
        com.apple.ResourceFork   202364 
    

    dentro de la carpeta.


Siguiente paso: busque algo que conecte las rutas con su tipo de sistema operativo del documento. Esperemos que sea de fácil acceso .plisto algo así.