Iconos pequeños en el Menú Principal de GNOME

Iconos grandes en el Menú Principal

La instalación por defecto de GNOME muestra los iconos grandes en el menú principal y en las barras de herramientas. Pueden preferirse iconos pequeños, no sólo por una cuestión estética, sino para evitar el scroll en menues tales como Internet o Sistema/Preferencias, que tienden a crecer bastante con el tiempo llegando a desbordarse de la pantalla.

Hasta donde sé, no existe un mecanismo simple para cambiar el tamaño de estos iconos. Me di a la tarea de buscar una solución que cumpliera con lo siguiente:

  1. Ser independiente del tema actualmente en uso.
  2. Modificar del tema sólo el tamaño de los iconos.
  3. Perdurar tras actualizaciones del tema.

La solución final (para el impaciente):

Crear el fichero ~/.themes/Default/gtk-2.0-key/gtkrc y adicionar lo siguiente:

gtk-icon-sizes = " \
    panel = 16,16 : \
    panel-menu = 16,16 : \
    gtk-button = 16,16 : \
    gtk-menu = 16,16 : \
    gtk-large-toolbar = 16,16 : \
    gtk-small-toolbar = 16,16"
gtk-menu-images = 1

Qué dice Google?

Una búsqueda en Google para «small icon gnome menu» devuelve miles de resultados. Las soluciones encontradas concuerdan en modificar el valor de gtk-icon-sizes pero difieren en cuál ficheros de recursos (gtkrc) hacerlo. Se proponen 3 opciones básicamente:

Modificar el fichero de recursos del tema

/usr/share/themes/<tema_actual>/gtk-2.0/gtkrc

Descarté esta opción de antemano pues los cambios realizados se perderían tras una actualización. Además, la personalización es dependiente del tema: si se cambia de tema habría que re-configurar el fichero de recursos correspondiente.

Esta solución no cumple las precondiciones 1 y 3.

Modificar el fichero personal de recursos del tema

~/.themes/<tema_actual>/gtk-2.0/gtkrc

Creé este fichero y adicioné el gtk-icon-sizes. Los iconos se mostraron pequeños pero se perdió el resto de la configuración del tema. Es de suponer que este gtkrc suplanta al del tema, ubicado en /usr/share/themes/<tema_actual>/gtk-2.0/gktrc.

Iconos pequeños con el tema roto

Se podría evitar la rotura si en vez de crear un fichero vacío, se copia el gtkrc del tema y se personaliza luego.

Esta solución no cumple las precondiciones 1 y 2, además de que las actualizaciones hechas al tema por la distribución no tendrían efecto inmediato a menos que se repitiera el proceso de copia y personalización.

Modificar ~/.gtkrc-2.0

Creé ~/.gtkrc-2.0 y configuré gtk-icon-sizes. La apariencia de los iconos no cambió.

Solución final

Me dispuse a averiguar todos los ficheros gtkrc consultados al ejecutar Nautilus usando los siguientes comandos:

$ strace -o nautilus.trace nautilus
$ grep gtrkc nautilus.trace

La salida fue:

access("/etc/gtk-2.0/gtkrc.64", F_OK)   = -1 ENOENT (No such file or directory)
access("/home/mmoya/.gtkrc-2.0.64", F_OK) = -1 ENOENT (No such file or directory)
lstat("/etc/gtk-2.0/gtkrc", 0x7fff830a4b10) = -1 ENOENT (No such file or directory)
access("/etc/gtk-2.0/gtkrc.es_MX", F_OK) = -1 ENOENT (No such file or directory)
access("/etc/gtk-2.0/gtkrc.es", F_OK)   = -1 ENOENT (No such file or directory)
lstat("/home/mmoya/.gtkrc-2.0", {st_mode=S_IFREG|0644, st_size=128, ...}) = 0
open("/home/mmoya/.gtkrc-2.0", O_RDONLY) = 6
access("/home/mmoya/.gtkrc-2.0.es_MX", F_OK) = -1 ENOENT (No such file or directory)
access("/home/mmoya/.gtkrc-2.0.es", F_OK) = -1 ENOENT (No such file or directory)
access("/home/mmoya/.themes/Ambiance/gtk-2.0/gtkrc", F_OK) = -1 ENOENT (No such file or directory)
access("/usr/share/themes/Ambiance/gtk-2.0/gtkrc", F_OK) = 0
lstat("/usr/share/themes/Ambiance/gtk-2.0/gtkrc", {st_mode=S_IFREG|0644, st_size=18312, ...}) = 0
open("/usr/share/themes/Ambiance/gtk-2.0/gtkrc", O_RDONLY) = 6
access("/usr/share/themes/Ambiance/gtk-2.0/gtkrc.es_MX", F_OK) = -1 ENOENT (No such file or directory)
access("/usr/share/themes/Ambiance/gtk-2.0/gtkrc.es", F_OK) = -1 ENOENT (No such file or directory)
access("/home/moya/.themes/Default/gtk-2.0-key/gtkrc", F_OK) = -1 ENOENT (No such file or directory)
access("/usr/share/themes/Default/gtk-2.0-key/gtkrc", F_OK) = 0
lstat("/usr/share/themes/Default/gtk-2.0-key/gtkrc", {st_mode=S_IFREG|0644, st_size=82, ...}) = 0
open("/usr/share/themes/Default/gtk-2.0-key/gtkrc", O_RDONLY) = 6
access("/usr/share/themes/Default/gtk-2.0-key/gtkrc.es_MX", F_OK) = -1 ENOENT (No such file or directory)
access("/usr/share/themes/Default/gtk-2.0-key/gtkrc.es", F_OK) = -1 ENOENT (No such file or directory)

El último gktrc consultado dentro de la carpeta personal es ~/.themes/Default/gtk-2.0-key/gtkrc. Decidí probar con éste y obtuve el efecto deseado. Los ajustes en este fichero de recursos se mezclan (con mayor precedencia) con aquellos en el fichero de recursos del tema. El Default en la ruta garantiza la independencia del tema que se esté usando.

No he encontrado documentación explícita de las llaves dentro de gtk-icon-sizes más allá de este enlace, de todos modos los nombres son bastante sugerentes. Luego de un par de iteraciones decidí dejar fuera a gtk-dnd y gtk-dialog. Finalmente me quedé con:

gtk-icon-sizes = " \
    panel = 16,16 : \
    panel-menu = 16,16 : \
    gtk-button = 16,16 : \
    gtk-menu = 16,16 : \
    gtk-large-toolbar = 16,16 : \
    gtk-small-toolbar = 16,16"
gtk-menu-images = 1

La referencia a gtk-menu-images la encontré aquí. A continuación muestro un par de imágenes de Nautilus con valores 0 y 1 para esta directiva.

Nautilus con `gtk-menu-images=0`.

Nautilus con `gtk-menu-images=1`.

No olviden reiniciar nautilus y gnome-panel después de cada cambio para garantizar que recarguen la configuración. Basta matar los procesos con los siguientes comandos, ya que gnome-session se encarga de relanzarlos:

$ killall nautilus
$ killall gnome-panel