Todavía no tengo hecho el script ya que tengo algún problema, pero he estado bucando infomación de como guarda Nautilus los iconos personalizados de las carpetas, los emblemas y demás, y quería explicarlo.
Guardando la información en metafiles
Nautilus guarda toda la información personalizada de las carpetas en ~/.nautilus/metafiles. Allí existen gran cantidad de ficheros XML, siendo cada uno de ellos nombrado con la URI absoluta de la carpeta.
Por ejemplo, mi carpeta personal tiene un fichero llamado: "file:%2F%2F%2Fhome%2Fjavielinux.xml" (los %2F son las barras "/" que no pueden ser usadas en el nombre de un fichero). El fichero XML tiene un nodo "directory" y dentro tantos nodos "file" como directorios y archivos dentro de esta carpeta tengamos personalizados. El nodo "file" a su vez puede tener varios nodos "keyword". A continuación muestro un XML de ejemplo.
<?xml version="1.0"?>
<directory>
<file name="Prueba" timestamp="1214049088"
custom_icon="file:///home/javielinux/icono.jpg">
<keyword name="nombre_emblema"/>
</file>
</directory>
Podemos ver que existe un nodo "file" con el nombre "Prueba". Esto significa que dentro del mi directorio principal tengo un directorio llamado así. El "custom_icon" nos da la URI absoluta de la imagen que hemos puesto como icono en la carpeta. Los nodos "keyword" relacionados con el archivos son los emblemas relacionados con este. Podemos tener varios.
Una vez visto esto ya sabemos que hace Nautilus. Cada vez que entra en una carpeta, busca el XML relacionado y comprueba los iconos, emblemas, y todo lo que necesita para mostrar el directorio.
Cómo crear nuevos emblemas
Desde nautilus, entrando en "Editar - Fondos y Emblemas" podemos hacerlo, pero ¿donde los guarda?.
En el directorio ~/.icons/hicolor/48x48/emblems, nautilus guarda los emblemas personales. Cada emblema tiene un nombre que lo distingue de los demás. Cada uno tiene dos archivos:
- Un archivo PNG con el emblema a 48x48. Será nombrado como "emblem-nombre.png"
- Un archivo ICON con información de este. Será nombrado como "emblem-nombre.icon"
[Icon Data]
DisplayName=nombre
Sólo tendremos que poner el nombre del emblema.
Conclusiones
Los metafiles contienen información de los archivos que se encuentran dentro de un directorio. Podemos crear a mano toda esta información, o mejor, hacerlo mediante un script.
El único problema es que si colocamos un emblema o un icono a una carpeta, tendremos que reiniciar Nautilus.
Lo haremos así:
nautilus -q
Es lo único que no me gusta, tener que reiniciarlo. Estaba pensando crear algunas acciones para crear emblemas automáticamente, y, como me dijo la persona que me envió el correo, para poder modificar de forma masiva los iconos de algunos directorios, pero estoy buscando una forma mejor que tener que reiniciar el explorador de archivos de Gnome ¿alguna idea?



















