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).

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:

 

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..

 


9 comentarios

  1.   merlin el debianita dijo

    pues si se ve bonito y todo pero no hay nada como el clasico color verde buen tuto saludos.

    1.    RAW-Basic dijo

      Gracias por tu coment.. ..está claro que lo clásico es lo clásico..

      Pero lo más divertido de esto (por lo menos para mí) y lo que me impulsó a hacerlo.. ..es saber que al tener frente a nosotros el código fuente..es como decir “tengo Linux, y como lo quiero cambiar.. ..puedo!..”..

      Gracias por leer.. 😉

  2.   Mr. Linux dijo

    Excelente artículo , quién se iba a imaginar que de un tema tan elemental o sencillo como es un screensaver , ibamos a tener toda una clase de compilación , modificación e instalación del mismo.

    1.    RAW-Basic dijo

      Gracias!.. ..me alegro que te interese..

      Para mí fue toda una odisea de aprendizaje también ;)..

  3.   Rots87 dijo

    hayalguna diferencia con usar:

    $ sudo pacman -S xscreensaver

    1.    RAW-Basic dijo

      Para que parte?.. ..si te referís al punto 2 y 3 para verificar si funciona..en tu caso si usas Arch..sí, es lo mismo..ya que siempre tenemos la última versión.. ..pero para otras distros puede que no sea igual..

      Por otro lado..si no descargás el código fuente.. ..no podrías hacer la modificación de color..que es el objetivo de este post..

      Respondí tu pregunta?..

      1.    Rots87 dijo

        ok gracias por el dato ^_^

  4.   RafaGCG dijo

    Muchas gracias!!
    Resulta muy interesante el procedimiento.

    Saludos!

  5.   KZKG^Gaara dijo

    Gracias por el aporte 😀

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.