19 oct 2010

Conky multicolor

Después de perder varias horas muertas, por fin he conseguido configurar un Conky a mi gusto. Para quién no lo sepa, conky es una aplicación de escritorio (muy liviana, apenas tiene incidencia en el procesador) En el que se puede mostrar, casi cualquier cosa, por pantalla de una forma bastante elegante, sencilla y clara.
Bueno, en mi caso he sacrificado un poco de la elegancia por una mayor información a golpe de vista (con cierto código de colores que explicaré más adelante). Si quieres tener algo parecido (o exactamente el mismo) Os echaré una mano con unos sencillos pasos.
Quiero aclarar que no todo es obra mía, yo he ido recopilando información y configuraciones de varios sitios, para ellos mi agradecimiento de freak blogger a freak b
logger. Porque Dios los cria y Conky los junta ahí va la lista de sitios que he visitado:

Fedoreando De ahí tomé la estructura principal, y usé el script del correo de gmail (cómo ves, paso de la predicción meteorológica, con asomar la cabeza por la ventana, tengo de sobra.

Linexando El sitio de donde copie (luego le puse colorines, pero copiado está) el script del amule.

esDebian La barra de progreso del reproductor de música Rhythmbox.

El resto de tonterías y configuraciones, fueron más o menos descubiertas por el antiquísimo método de ensayo y error. Que es básicamente lo que te recomiendo, prueba, toquetea y si puedes, vuelve a empezar hasta que estés agusto.


Mi conky tiene una particulairdad que no he visto por la red. Fruto de mis ganas de innovar, y que a veces me aburro mucho. Las barras son multicolor, me explico (usaré de ejemplo la barra de calidad de la señal wifi):
Cuándo la señal es menor del 20% : tanto la barra cómo el dígito son rojos
Cuándo la señal está entre el 20 y el 50%: barra y dígitos amarillos
Cuándo la señal es mayor del 70%: verde
El resto del tiempo, la barra y el dígito son blancos.
¿Por qué lo hago así? Para ver, sin necesidad de leer, el estado de la conexión wifi. También tengo este tipo de "avisadores en rojo" para el porcentaje de uso de los discos (cuándo alcanza el 90 se volverán rojos) y para el uso de CPU (hasta 75 blanco, hasta 90 amarillo, más de 90 rojo).

Si te fijas bien, verás que la lista de procesos, se va degradando del blanco al gris oscuro, esto no tiene ningún fin más que uno puramente estético, que seguramente quite en unos días.

Cómo en los enlaces que te pasé antes, ya tienes toda la información necesaria, tanto scripts cómo configuraciones del archivo .conkyrc de momento no pondré nada de código, en caso de que lo quieras para comparar con el tuyo o para copiarlo vilmente, pídemelo y lo postearé en un comentario.Lo que si incluiré ahora será un ejemplo de cómo consigo que las barras cambien de color. Pero ya te advierto que soy un programador muy caótico, así que las estructuras que utilizo para cambiar de color las barras son un poco liosas. No digo imposibles, pero seguramente no todo lo limpias y claras que las escribiría alguien más cuidadoso con el código.

Código para cambiar de color una barra:

${if_match ${cpu cpu0} > 75}${color ECC402}${if_match ${cpu cpu0} > 90}${color FF0003}${endif}${endif}${cpu cpu0}% ${alignr}${cpubar cpu0 5,60}${color}

Menuda guarrada de código ¿eh? no tanto vamos a separarlo:

-Primer if:
${if_match ${cpu cpu0} > 75}${color ECC402}
$if_match nos da un valor booleano (verdadero o falso)
${cpu cpu0} nos devuelve un entero, en este caso el porcentaje de uso de la CPU. No olvidarse de las llaves {} que ayudan bastante a la lectura del código
75, es un entero que es con lo que vamos a comprar.
Pues bien: se cumple la condicion: cpu% > 75, if_match devolverá un TRUE y SE HARÁ todo lo que viene a continuación hasta el primer &{endif} que encuentre.

-Segundo if
Exactamente igual, pero al ser más reestringido, (90 - 100) va "anidado" dentro del más abierto (75-100).

-Expresion Color
${color ECC402}
Cambia el color de lo que vaya a continuación al indicado por un código de colores (hexadecimal). Cuándo se encuentra con la expresión ${color} sin código, deja de cambiar y vuelve al color por defecto, en mi claso blanco. cómo ${color} es una expresión tonta, podemos usarla para los 2 colors usados anteriormente. Que aunque no "entre" por ninguno de ellos (por ejemplo si la cpu está trabajando al 50) volverá el texto que ya era blanco, al blanco.

Y eso es todo, el resto del código ya sabéis para qué sirve, qué cosas nos imprime en el conky y cómo funcionan (espero). Ya sabes, cualquier duda, en los comentarios.