Hacking «The GLMatrix»

Para mi segundo post.. ..voy a mostrarles (algo que para algunos quizás les resulte bastante inútil) como cambiar el color de mi protector de pantalla (salvador de pantalla, screensaver) favorito sobre xscreensaver, GLMatrix, el cual que si no lo conocen es simulador de los típicos símbolos cayendo por el monitor al estilo Matrix con lindos efectos 3D. Acá una imágen:

Como soy bastante molesto, y mi computadora está personalizada con los colores negro y el característico azul de Arch Linux (el cual queda estupendo con mi teclado con retroiluminación de color azul xD).. ..el típico color verde de Matrix, no me combina (o como se diría por acá y entre niños, no pega ni con moco).

Para lograr esto, vamos a meter mano en el código fuente del xscreensaver, no se asusten los no experimentados, es simple, y los voy a guiar paso a paso para que lo logren; con esto quiero decirles, que no les voy a dejar las cosas ya masticadas, sino que la idea es que se copen y metan mano..sin miedo.

Nota: no soy ninguna clase de experto..así que cualquier error que esté cometiendo, no duden en decírmelo..

Manos a la obra..

1- Descargar código fuente de xscreensaver.

Podemos entrar a la página del xscreensaver, y descargamos la última versión del source code (código fuente).

www.jwz.org/xscreensaver/download.html

O lo podemos descargar directamente desde la terminal con wget, siempre sabiendo la version del mismo, en este caso 5.20:

 $ wget http://www.jwz.org/xscreensaver/xscreensaver-5.20.tar.gz

Lo descomprimimos:

 $ tar -xf xscreensaver-5.20.tar.gz

 2- Verificar sus dependencias.

Vamos a verificar que tenemos los paquetes necesarios para que se pueda usar el xscreensaver, para esto utilizaremos el ‘configure’. Hay que prestar atención a la salida (output) que nos den, para saber si nos falta algún paquete, o hay algún error. De faltar algún paquete, busquenlo y descarguenlo (puede ser por medio de synaptics, apt, pacman, etcétera – dependiendo de gustos y distros).

-Ingresamos a la carpeta recién descomprimida:

 $ cd xscreensaver-5.20/

Ejecutamos lo siguiente:

 $ ./configure

3- Verificamos correcto funcionamiento.

De no faltar ningún paquete, ni haber ningún error; procedemos a instalar el xscreensaver, para verificar que funcione correctamente.

Ejecutamos:

 $ make
Nota: el make suele tardar unos cuantos minutos, ya que genera todos los archivos a .o (executables) a partir de los .c (código), es decir compila el paquete.

Si no hay errores en el make, como usuario ‘root’ lo instalamos:

 # make install
Nota: no voy a explicar en detalle para los que no entiendan acerca de que hacen estos comandos, para más información busquen acerca de compilación y Makefiles.

Probamos:

 $ xscreensaver-demo

4- Modificar /hacks/glx/glmatrix.c

Habran con su editor de texto favorito (vim, nano, gedit, etc) en mi caso vi, el archivo que vamos a modificar en este caso:

 $ vi ./hacks/glx/glmatrix.c

Tienen que encontrar un bloque con la siguiente forma:
{
unsigned long p = XGetPixel (xi, x, y);
unsigned char r = (p >> rpos) & 0xFF;
unsigned char g = (p >> gpos) & 0xFF;
unsigned char b = (p >> bpos) & 0xFF;
unsigned char a = g;
g = 0xFF;
p = (r << rpos) | (g << gpos) | (b << bpos) | (a << apos);
XPutPixel (xi, x, y, p);
}

Se encuentra aproximadamente en la línea 760, pero buscando «a = g» deberían encontrarlo enseguida

Y agregamos de la siguiente manera el color deseado:
{
unsigned long p = XGetPixel (xi, x, y);
unsigned char r = (p >> rpos) & 0xFF;
unsigned char g = (p >> gpos) & 0xFF;
unsigned char b = (p >> bpos) & 0xFF;
unsigned char a = g;
r = 0x71;
g = 0x93;
b = 0xD1;

p = (r << rpos) | (g << gpos) | (b << bpos) | (a << apos);
XPutPixel (xi, x, y, p);
}

Siendo en Hexadecimal RGB (red-green-blue)

Por ejemplo, el característico azul de Arch Linux es el: #1793D1, quedando:

r = 0x71;
g = 0x93;
b = 0xD1;

Guardamos los cambios.

5- Recompilamos el nuevo xscreensaver con el glmatrix modificado.

En este punto haremos prácticamente lo mismo que en el punto 2, pero esta vez para plasmar los cambios que hicimos.

Ejecutamos:

 $ make clean

Luego:

 $ make

Si no salió ninguna clase de error en el make, como usuario ‘root’ ejecutamos:

 # make install

6- Ejecutamos, verificamos, configuramos y disfrutamos.

Ejecutamos:

 $ xscreensaver-demo

En la lista elegimos GLMatrix:

GLMatrix Preview

Y en la presentación debería ya verse del color que eligieron.

Nota: en algunos casos, puede que para que se efectuen los cambios tanto en el «Preview» como cuando se ejecuta, sea necesario reiniciar la computadora.

Configuren a gusto..y disfruten

7- Algunos ejemplos de distintos colores. (+ TIP)

Color Hexadecimal: #9F03D9

Color Hexadecimal: #D41213

Color Hexadecimal: #E5E311

TIP: para saber un color en Hexadecimal utilizo GIMP, abrimos la paleta de colores y figura como «Notación HTML». También podemos apretar la ‘o‘ y tomar el color de una imágen para saber cual es su color en Hex.

Espero hayan disfrutado tanto como yo en intentarlo y escribirlo.. Cualquier duda no duden en consultar..

Happy hacking..