Iconos de archivos .EXE y .DLL en Linux

24 enero 2009 Publicado por cLimbo

exe2ico.c

No necesita nada en especial para ser compilado:

$ gcc exe2ico.c -o exe2ico
$ ./exe2ico shell32.dll

Y comenzará a extraer los iconos de shell32.dll, escribiéndolos en el directorio en curso. Algunos resultados (con shell32.dll):



Aún así, hay algunos detalles por retocar, ya que por alguna misteriosa razón no todos los iconos se extraen bien. Tampoco es un programa muy útil, así que no creo que vaya a solucionar nunca esos problemas.

Bibliografía: El artículo en CodeBreakers (inglés), y la muy útil información proporcionada por oicìliS (portugués).

ACTUALIZACIÓN: Esta tarde me inspiré y decidí hacer un thumbnailer para Gnome de archivos ejecutables. Y al parecer el invento salió bien. Por fin puedo ver los iconos de los archivos .EXE y .DLL directamente desde el explorador de archivos, en vez de esa maldita hoja con la patita de Gnome.

¿Qué necesitas para poder ver los iconos de un .EXE? Pues, antes que nada, la anteriormente mencionada herramienta (exe2ico.c) compilada, y alojada preferiblemente en /usr/bin. También necesitarás la herramienta convert de imagemagick, Nautilus (el explorador de archivos de Gnome, por supuesto) y un editor de texto. Oh, sí, vamos a hacernos los superhackers siderales del futuro escribiendo archivos.

Lo primero es, como root, editar el fichero /usr/bin/exe-thumbnailer.sh. Este fichero no existe, pero lo crearemos. Podemos editarlo con vi, con gedit o incluso a base de echo’s. Preferencias al gusto del cliente. En mi caso usaré gedit:

# gedit /usr/bin/exe-thumbnailer.sh

(También podemos usar sudo en vez de acceder directamente a una consola de root)

El siguiente paso será escribir esta parrafada:

#!/bin/bash
#
# exe-thumbnailer.sh file.exe file.png size
#
#
UNIQUE=/tmp/$$.ico

if [ "$3" != "" ]; then
WIDTH_INFO=”-w $3″
fi

rm -f $UNIQUE

exe2ico -d 32 $WIDTH_INFO -o $UNIQUE “$1″

if [ ! -f "$UNIQUE" ]; then
if [ ! -f "$UNIQUE" ]; then exe2ico -d 32 -o $UNIQUE “$1″; fi
if [ ! -f "$UNIQUE" ]; then exe2ico -d 16 -o $UNIQUE “$1″; fi
if [ ! -f "$UNIQUE" ]; then exe2ico -d 8 -o $UNIQUE “$1″; fi
if [ ! -f "$UNIQUE" ]; then exe2ico -d 4 -o $UNIQUE “$1″; fi
if [ ! -f "$UNIQUE" ]; then exe2ico -d 2 -o $UNIQUE “$1″; fi
if [ ! -f "$UNIQUE" ]; then exe2ico -d 0 -o $UNIQUE “$1″; fi
if [ ! -f "$UNIQUE" ]; then exe2ico -o $UNIQUE “$1″; fi


if [ ! -f "$UNIQUE" ]; then
exit 1
fi
fi
# Por alguna extraña razón, los iconos salen el doble de grandes. Quita esta línea si se ven demasiado pequeños.
RSIZ=`expr $3 / 2`

if [ "$RSIZ" == "" ]; then
RSIZ=32
fi

convert $UNIQUE -resize ${RSIZ}x${RSIZ} $UNIQUE.png
RETVAL=$?
mv $UNIQUE.png “$2″
rm -f $UNIQUE
exit $RETVAL

Guardamos el fichero y le damos permisos de ejecución:

chmod a+x /usr/bin/exe-thumbnailer.sh

¿Para qué sirve esto? Este script será llamado por Nautilus a la hora de ver “qué hay” dentro de un .EXE y cómo debe visualizarse. El funcionamiento del mismo es un poco burdo, pero recordad que todo lo que yo recito es GPL, así que doy vía libre a la mejora de este script, que bien necesita un poco más de inteligencia: Sencillamente saca un icono apropiado, y lo convierte a PNG. Nada más.

El siguiente paso es registrar este thumbnailer o miniaturizador en GConf. Para eso, ejecutamos:

$ gconftool-2 -s /desktop/gnome/thumbnailers/application@x-ms-dos-executable/enable -t boolean true
$ gconftool-2 -s /desktop/gnome/thumbnailers/application@x-ms-dos-executable/command -t string ‘/usr/bin/exe-thumbnailer.sh %i %o %s’

Con lo que el miniaturizador queda listo para su empleo. Después de eso, sólo tienes que pasearte por la carpeta de la partición de tu Windows y deleitarte ante las maravillosas posibilidades que ofrece el hecho de que el software sea abierto ;)

Bibliografía de ésto último: Integrating existing software with Gnome.

thz por el artículo BatchDrake :-)*

  1. Anónimo

    Ois, qué halagador :$

  2. Impecable Amigo... Muchas gracias!!!

    En el script tuve que sacar RSIZ='expr $3 / 2' si o si, ya que no funcionaba el script con eso... pero despues de eso anda perfecto.

  3. excelente...
    a favoritos

  4. Guau Gracias.... aun no lo e podido probar... ya que uso KDE .. pero abría alguna forma de integrarlo a dolphin? muchas gracias... de antemano

  5. Anónimo

    buen aporte para los amigos linuxeros. la verdad qe aunqe me da un poco igual eso de windopws qe se vea como qiere. pero igual es algo muy bueno para demostrar a tantos qe linux es superior y aun asi se adapta a peqeñeces de otros sistemas. yo uso windows tambien tan slo por peqeñeces de comodidad y detalles. espero algun dia poder liberarme de este mal y surfear de una vez con debian. saludos desde santiago del estero, argentina