101 - Personalización extrema de Linux con Conky
Si quieres personalizar tu escritorio en Linux hasta el mas mínimo detalle, con todo tipo de información, la herramienta que andas buscando esConky
De todas las herramientas que conozco para personalizar tu entorno de escritorio, sin lugar a dudas, Conky es la herramienta por antonomasia. Eso si, te tengo que advertir que es altamente adictiva. O por lo menos, es altamente adictiva para mi, aunque creo que para ti también, si es que no los has probado todavía. Si no conoces que es Conky, indicarte que se trata de un sistema de monitorización ligero para X. Esto es como lo define el propio desarrollador de esta herramienta, aunque yo lo presentaría mas como un dashboard o panel de control. Una ventana, donde de un solo vistazo conocerás todo lo que estás sucediendo en tu equipo. Yo lo definiría como Conky el panel de control de Linux.
Respecto a lo que he comentado anteriormente de ligero, te puedo asegurar que es ligero, pero que muy ligero. De hecho, mientras estoy preparando el guión de este podcast, lo tengo en funcionamiento empaquetado como un AppImage y no llega a los 2 MB de memoria RAM. Respecto al consumo de CPU, eso ya es otro cantar. Ahí depende básicamente de lo que tu quieras, pero esto ya lo comentaré mas a delante.
Sea como fuere, tengo que advertirte que si eres de los que gusta de la personalización extrema, este episodio del podcast no es para ti. Tal y como he comentado anteriormente, se trata de un software que te puede ocupar todo el tiempo que quieras. Si te gusta, personalizar tu escritorio hasta el más mínimo detalle, Conky es lo mejor y lo peor. Lo mejor, porque te permitirá conseguirlo. Lo peor, porque como te deja hacer casi cualquier cosa que puedas imaginar, esto puede llevarte a que tus familiares y conocidos piensen que has sido secuestrado por un alienígne llamado Conky.
Personalizacion extrema en Linux con Conky
Evitando frustraciones
La curva de aprendizaje
Antes que nada tengo quiero avisarte. Si bien te he dicho que Conky te permite la personalización extrema en Linux, esto tiene un precio. Conky tiene su curva de aprendizaje. Ciertamente no es lo mismo que aprender a utilizar Vim, o un lenguaje de programación, esto último entrecomillado. Pero necesitas conocer su funcionamiento y para poder sacarle partido.
No es lo típico de arrastrar y soltar. Tienes que arremangarte y ponerte a picar código. Con lo que si esto no te gusta, entonces, es posible que Conky no sea para ti.
Y digo es posible, porque siempre puedes utilizar los scripts que han desarrollado otros para personalizar tu escritorio. Luego si lo quieres personalizar, a lo mejor, solo se trata de hacer algunos arreglillos mínimos.
Respecto a lo que he comentado del lenguaje de programación entrecomillado, indicarte que es interesante, si lo que quieres es sacarle el máximo partido que conozcas Lua.
Sobre los scripts en internet
Otro problema que te puedes encontrar son los scripts que hay disponibles a lo largo y ancho de internet.
- Versión del script antigua. Se ha cambiado la versión en la que se hacen los scripts en Conky. De hecho, actualmente se implementan directamente en Lua.
- Falta de mantenimiento. Esto va unido con el punto anterior. O bien, porque el script sigue en la versión antigua, o bien, porque parte del código está desactualizado, o porque, le faltan archivos, etc
- Sin instrucciones para la instalación del script. Los scripts mas complejos, es decir, los que llevan la personalización extrema en Linux a su punto álgido, normalmente requieren de fuentes tipográficas, iconos, otros scripts. En ocasiones, esto no se explica, o no se explica con suficiente detalle.
Por supuesto, esto no se aplica a todos los scripts que vayas a encontrar. Sin embargo, no te sorprendas si te sucede en los mas antiguos.
Aún así, el desarrollador de Conky, ha tenido en cuenta algunos de estos aspectos, como el caso de utilizar una versión antigua. Y es que, normalmente también funciona, incluso con una versión antigua.
Sobre Conky
Como te he comentado en la introducción, Conky es un sistema de monitorizacion para el escritorio. Se trata de una herramienta que está disponible para inux, FreeBSD, OpenBSD, DragonFlyBSD, NetBSD, Solaris, Haiku OS y MacOS.
Se trata de un dashboard o panel de control, desde el que puedes seguir la evolución de cualquier variable que quieras. Desde el estado de la CPU, memoria, capacidad de almacenamiento, temperaturas, procesos, etc, etc, etc.. Además puedes tener información de RSS, música, información meteorológica, y cualquier otra cosa que quieras o puedas imaginar.
Al contrario que los dashboard o paneles de control que utilizan librerías de alto nivel para pintar en pantalla toda esta información, COnky lo hace directamente sobre X window, lo que hace que, como he indicado en la introducción tenga un reducidísimo consumo de recursos.
En cuanto al consumo de recursos, todo es relativo. Si haces que se refresque continuamente, como te puedes imaginar, requerirá mas ciclos de CPU. Con lo que a menos qu tengas algo importante que monitorizar continuamente, vale la pena, darle mas tiempo.
Un poquito de historia
Conky está desarrollado y mantenido por Brenden Matthews. Se trata de una derivación o fork de Torsmo. Si bien, tormo es un software que actualmente no se mantiene, lo cierto es que se sigue utilizando en situaciones donde el consumo de recursos tiene que ser mínimo.
La versión que probablemente tienes instalada o la que viene actualmente en le AppImage es de la serie 1.x. La serie Conky 1.x, está basada en Torsmo. La siguiente versión la 2.x, está reescrita por completo. Si bien, Conky, está basado en Torsmo, lo cierto es que ha cambiado significativamente respecot a este.
El nombre de Conky se lo puso el desarrollador de la aplicación en base a un nombre de un personaje de un programa de televisión canadiense llamado Trailer Park Boys.
Instalación
Conky se encuentra disponible en los repositorios de casi todas las distribuciones. En el caso de Ubuntu, puedes instalarlo haciendo clic en conky o bien, desde el terminal, con,
sudo apt install conky-all
También es posible instalarlo desde un AppImage. Una de mis opciones preferidas. En este caso, necesitarás tener instalado jq
y curl
, si lo quieres instalar directamente desde terminal,
$ curl -sL -o conky-x86_64.AppImage \
$(curl -sL https://api.github.com/repos/brndnmtthws/conky/releases/latest | \
jq --raw-output '.assets[0] | .browser_download_url')
O bien descargar conky en AppImage. Una vez descargado, ejecuta las siguientes instrucciones en un terminal,
$ chmod +x ./conky-x86_64.AppImage
$ ./conky-x86_64.AppImage -C > ~/.conkyrc
$ ./conky-x86_64.AppImage
Configuración
Para versiones anteriores de Conky, es posible convertir la configuración a una versión actualizada utilizando el script convert.lua.
Para la versión 1.10 y posteriores, la configuración utiliza la sintaxis de Lua.
Existen configuraciones específicas para los diferentes entornos de escritorio. Así,dependiendo del entorno de escritorio, tendrás que habilitar alguna configuración específica para conseguir la transparencia. Sin embargo, hay algunos aspectos que son comunes para todos,
- en ocasiones se puede producir un parpadeo de Conky. Para evitar este problema es necesario habilitar el doble bufer. Para esto, en la configuración tienes que añadir la opción
double_buffer=true
. - Conky normalmente pinta directamente sobre la ventana raíz. Pero, es posible utilizar Conky en modo ventana. Esto te permite mover la ventana donde tu quieras e incluso redimensionarla. Para habilitar esta opción tienes que incluir en la configuración
own_window = true
.
Dicho esto, indicarte que con unos muy ligeros conocimientos de programación, ya es mas que suficiente para diseñar y poner en funcionamiento tu dashboard o panel de control.
Tu propio panel de control
Algunas indicaciones para crear tu propio panel de control,
- Puedes encontrar todas las opciones de configuración en la página de Conky en SourceForge.
- También te ercomiendo que le des un vistazo al manual de ayuda que tienes en tu equipo
man conky
.
Conky tiene mas de 250 objetos disponible para su uso, incluido soporte para todo tipo de estadísticas de tu ordenador. Estos objetos o variales los puedes encontrar también en la ayuda que te he indicado anteirormente.
Algunos ejemplos,
- Puedes añadir una línea horizontal, con tan solo poner
${hr}
- Con
${goto x}
el siguiente elemento se pintará en la posiciónx
- Para hacer lo mismo pero en vertical utiliza
${voffset N}
. - Para que aparezca un texto, tan solo tienes que ponerlo en la configuración. Si ademas quieres que aparezca 90 pixel a la derecha, con fuente
Ubuntu de tamaño 7
en un color definido en la configuración comocolor
, tienes que poner algo como lo que puedes ver a continuación
${goto 90}${font Ubuntu:size=7}${color}Un texto de ejemplo
Como ves, es realmente sencillo, y no necesitas grandes conocimientos.
Eso si, te recomiendo paciencia, sobre todo si eres de los que les gusta dejarlo milimétrico. No por nada, sino porque Conky te lo permite. Con lo que si eres de estas personas, vamos como yo, no pararás hasta que lo tengas a tu gusto.
Por otro lado, te recomiendo que mientras estés trabajando en tu personalización extrema en Linux con Conky, tengas permamentemente a tu lado, un listado con los 250 controles que Conky pone a tu disposición. De esta manera podrás sacarle el mayor de los partidos.
Sobre Lua
Si no conoces Lua, indicarte que se trata de un potente y rápido lenguaje de programación, desarrollado con el objetivo de que sea sencillo de aprender, y que se pueda embeber en otras aplicaciones. Este es un punto importante de este lenguaje de programación.
Lua está pensado como un lenguaje ligero de scripting embebible. De hecho, se utiliza en todo tipo de aplicaciones, desde juegos, pasando por aplicaciones web para terminar en el procesado de imágenes.
Sin lugar a dudas, supongo, que esta será la razón para que el desarrollador de Conky, utilice este lenguaje para dotar a Conky de una mayor potencia, para conseguir la personalización extrema en Linux.
Tienes disponible online la primera edición de Programando en Lua
Dibujando con cairo
Como has visto en apartados anteriores, las posibilidades que te ofrece están limitadas al uso de texto, líneas y algunos controles prefijados.
Sin embargo, para aumentar las posibilidades de Conky, y llegar a la personalización extrema en Linux, tienes la combinación ganadora Lua y Cairo.
Sobre Lua ya te he comentado. En cuanto a Cairo, indicarte que es una librería que tienes orporte para diferentes dispositivos de salida, desde X Windows vía Xlib a archivos de salida como puede ser PDF o SVG. De hecho esto en combinación con Python es lo que utilizo para PDF Tools.
Esta librería está implementada en C, pero tiene integración con otros lenguajes de programación, entre los que se encuentra Lua y por supuesto Python. Precisamente por esta razón, utilizo Cairo en My-Weather-Indicator y por supuesto es lo que se emplea para Conky.
En particular, si quieres conocer mejor como utilizar Lua para combinarlo con Conky, te recomiendo que visites la wiki de Conky.
Un vídeo
Si te interesa Conky y quieres conocer un poco mas a su desarrollador Brenden Matthews, te recomiendo el siguiente vídeo.
Conclusión
Hace mucho tiempo que no utilizo Conky. Y no lo utilizo, porque me lio. Si me has oído bien. En lugar de dedicarme a trabajar sobre mis aplicaciones, desarrollos, etc, me dedicaba a la personalización extrema en Linux con Conky. Esto es lo que quiero evitar.
En el episodio 94 del podcast, te comenté sobre los fondos de pantalla productivos. Pedro me comentó sobre utilizar Conky para dar esta funcionalidad de fondos productivos. En ese momento caí en que no había dedicado un capítulo del podcast a Conky, y esta es la razón para tenerlo aquí. Yo sigo prefiriendo crear los fondos productivos, tal y como lo indiqué en ese episodio, mas que nada por facilidad, no necesitas un software adicional. Pero esto es como todo para gustos los colores.
La cuestión, es que después de empezar a preparar el podcast, en un par de ocasiones me he tirado para atrás. La razón, es que me veía venir, y al final es lo que ha sucedido. Me he liado con un script para Conky, y esto precisamente es lo que también te puede suceder a ti… así que anda con cuidado.