jun
21

Trabajando con emblemas en Nautilus

Hace unos días me comentaba alguien por correo la posibilidad de hacer un script para modificar los iconos de las carpetas de forma masiva. Cambiar los iconos de las carpetas es sencillo, pero cuando se tiene que realizar muchas veces (como todo en esta vida) se hace un poco pesado.

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:
  1. Un archivo PNG con el emblema a 48x48. Será nombrado como "emblem-nombre.png"
  2. Un archivo ICON con información de este. Será nombrado como "emblem-nombre.icon"
El archivo .icon es un archivo de texto, y el contenido es así:
[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?



    

Vengador dice:
Gracias por la info, maestro :D


Sergio Travieso dice:
Yo soy la persona que te escribió el correo. Como ya te comenté, muchas gracias por ocupar un poco de tu tiempo en esto.
A ver si conseguimos entre todos el script para crear los emblemas y modificar los iconos.



javielinux dice:
Planteado está el script, lo único es que hay que dedicarle tiempo. El trabajo con XML puede ser un poco tedioso, hay que hacer muchas comprobaciones, pero bueno, todo es ponerse

Intentaré hacer algo antes de irme de vacaciones ;-)




    
Nombre:
Email:
Web:
Comentario:


Fotografia

Fotografía


Usa firefox

NO IE
Esta Web está preparada para ser visualizada con Mozilla, aunque también podrá ser vista en otros navegadores de segunda clase como Internet Explorer

Iconos en

Gimp      PHP

BlueFish      Validar HTML 4.0!

Any Browser      PHP

294763


XML
© Javielinux
Para cualquier duda ponerse en contacto conmigo en javielinux (at) gmail.com