437 - Probando i3
Estoy probando i3, y me refiero al tiling window manager conocido como i3wm. He vuelto a X11 tras algunos meses en Wayland para poder hacer mi vídeos
No, ni estoy pensando en cambiar el coche por un i3, ni tampoco estoy probando un procesador i3, nada que tenga que ver con eso. Se trata de que estoy trabajando con i3, un Tiling Window Manager. ¿Otro? Si, otro mas. Pero en este caso voy hacia atrás, como los cangrejos, me vuelvo a X11 con el Tiling Window Manager, no así con el escritorio tradicional, que se sigue quedando en Wayland. ¿Y porque? Esto te lo contaré a lo largo de este podcast, pero, te adelanto, que este cambio, no está del todo fundamentado, simplemente, quiero probar i3, y quiero hacer algunas cosas con Rust e i3… Algo que también podía hacer con Sway… En fin, como te digo no está del todo fundamentado, pero es lo que hay. Así que vamos a un Probando i3.
Probando i3
Después de algunas semanas dándote la paliza con Docker, ha llegado el momento de retomar el contacto con los Tiling Window Manager. Y no me refiero a mi, que en ningún momento lo he abandonado, mas bien todo lo contrario, porque te puedo asegurar, que estaré en un 90-10. Es decir, que en el 90% de las ocasiones me puedes encontrar en un Tiling Window Manager y un 10% en GNOME.
¿Cual es la razón para esto? Pues la razón es bastante sencilla. Habitualmente estoy escribiendo algún documento, un tutorial o un guión del podcast o de los vídeos. O bien estoy programando. Y todo esto lo hago desde el terminal. Con un Tiling Window Manager soy mucho mas productivo.
¿Que es un Tiling Window Manager?¿Que es i3?
Pero, por si no sabes de que hablo, por si todavía no me has escuchado hablar sobre esto. Decirte que un Tiling Window Manager es un gestor de ventanas de tipo mosaico. Donde las ventanas no son flotantes, sino que se disponen como si fuera un mosaico, eso si, dependideno del gestor de ventanas que utilices. Por ejemplo, en el caso de i3, las ventanas se situan siempre una al lado de la otra.
Básicamente, la gran ventaja de este tipo de entornos, es que te permiten moverte entre ventanas de forma muy rápido, siempre a base de atajos de teclado. Además, siempre hacen un uso profuso de los atajos de teclado. Esto, evidentemente, y como te puedes imaginar, implica una importante curva de aprendizaje.
Otra característica de este tipo de escritorio es que son altamente configurables, y en general se configuran mediante sencillos archivos, que en general se conocen como dotfiles.
El hecho de que sean altamente configurables, también tiene su inconveniente. Y es que hasta que los dejas a tu entera satisfacción, tienes que invertir una importante cantidad de tiempo.
¿Que es i3?
i3 es un Tiling Window Manager desarrollado para plataformas GNU/Linux y BSD, liberado bajo licencia BSD y enfocado en usuarios avanzados y desarrrolladores. Entre los objetivos de i3, se establecieron los isguientes,
- Bien escrito y bien documentado
- Utiliza xcb en lugar de xlib
- Implementación correcta del multi monitor.
- Uso de una estructura de tupo arbol
- Diferentes modos, al estilo de Vim. Puedes utilizar diferentes atajos de teclado dependiendo del modo en el que te encuentres. Por ejemplo, si estás en el modo de redimensionado, puedes utilizar los atajos de teclado para moverte.
- Tiene una interfaz IPC para relacionarse con otras aplicaciones. Esto es precisamente donde quiero meter mano.
- Uso limpio de UTF-8.
- Trata de establecer un mínimo, pero si hace falta mas, mas.
- Evitar la complejidad.
Y como puntos adicionales, han añadido lo siguiente,
- Evitar romper archivos de configuraciión.
- Lo mas simple posible.
- Solo añadir aquellas características que benefician a la mayor cantidad posible.
- Solo están soportadas aquellas características que están documentadas.
Después de todo esto, indicarte que se trata de un Tiling Window Manager muy sencillo y que para mi gusto, tiene una curva de aprendizaje un tanto superior a bspwm. De hecho, he tenido que invertir algo mas de tiempo para dejarlo exactamente como a mi me gustaba.
¿Que ha pasado con Sway?
Hay dos razones fundamentales por las que he cambiado Sway por i3. La primera es que no me encuentro nada cómodo con la grabación de los vídeos. Me resulta mucho mas sencillo grabar los vídeos en i3 o en bspwm que con Sway. Al final, esto es algo que hago muy a menudo, y necesito que sea lo mas rápido y productivo posible. Además, screenkey
, que es la herramienta que utilizo para mostrar las teclas en pantalla no funciona o al menos no lo hace como quiero en Sway.
Por otro lado, recientemente leí que se había hecho un merge
de i3-gaps
, que es el fork
que estoy utilizando on i3
, y si bien, todavía no se ha liberado una nueva versión, esto se hará en breve.
Esta fue, entre otras, una de las razones, por las que no adopté i3
. Me gustan los huecos entre ventanas, lo veo algo realmente estéticamente imprescindible. Me siento mucho mas cómodo.
¿Porque no volver a bspwm?
Cuando Angel de uGeek, me habló por primera vez de i3, realmente me fascinó y de hecho, fue el detonante para que probara diferentes Tiling, hasta que terminé en bspwm. Como decía, la razón de no quedarme en i3 fueron los i3-gaps y que, desde mi punto de vista, bspwm era mucho mas sencillo de configurar.
Hoy, después de algunos años, ya me siento con suficiente soltura, y tengo suficiente confianza, como para abordar i3, realmente i3-gaps, hasta que se fundan en uno. Y esto es lo que, junto a los gaps, me ha hecho decantarme por probar i3.
Mi configuración
Llegó el momento de que te cuente de forma aproximada mi configuración, pero, como sabes, se encuentra toda disponible en el repositorio de GitHub, con lo que la puedes descargar y probar directamente en tu propio equipo.
- Utilizo un script de inicio para establecer y posicionar las dos pantallas con las que trabajo.
- Este script además se encarga de reiniciar todos los herramientas que te comentaré a continuación cuando inicio i3.
- Utilizo
picom
para el tema de los sobreados y las transparencias. Algo que hace unos años me hubiera parecido completamente innecesario, pero que hoy, si no lo tengo lo hecho en falta. De hecho, hace unos días me preguntaron por ello. Redshift
para controlar la temperatura de color de la pantalla, de forma que va cambiando gradualmente a lo largo del día.feh
para establecer y cambiar el fondo de pantalla. Tengo pendiente todavía, un script para cambiar el fondo de manera automática, pero ahora mismo tengo otras prioridades.- Algunos script en Python, que están pendientes de ser reconvertidos a Rust. Estos script se encargan de cambiar la transparencia en función de si la ventana está en uso o no, en el renombrado de los espacios de trabajo, y en el autotiling.
Estoy utilizando rofi
como lanzador de aplicaciones. Sobre Rofi ya te hable en el episodio 202 del podcast, y también le dediqué un video donde mostraba como instalar y configurar Rofi,
De los modos que hablaba anteriormente, además del modo de redimensionar he implementado un modo Salir
, que me permite hacer precisamente eso.
He asignado cada espacio de trabajo a un monitor específico. Así, del espacio de trabajo 1 al 6, se encuentran en el monitor de la izquierda y del 7 al 0 se encuentran en el de la derecha.
He reemplazado i3status
por i3status-rs
que es una solución implementada en Rust, y con la que estoy disfrutando mucho.
Tengo que decir, que estoy pensando en utilizar Polybar o no hacerlo. Ahora mismo, me encuentro cómodo con i3bar
y no tengo necesidad de hacerlo. Además hice un atajo de teclado para ocultar o mostrar la barra según mis necesidades.
Conclusión
Han sido algunos días dedicados a la personalización de i3, pero me encuentro suficientemente cómodo. Creo que se va a quedar una larga temporada. Esto no quita que tenga la opción de volver a Sway o a bspwm, pero estoy todavía a la espera de la liberación de la nueva versión de i3.
Sobre todo es por la comodidad de los vídeos, que ultimamente se estaba convirtiendo en un dolor.
Espero que te haya gustado este nuevo episodio del podcast. Si puedes, te agradecería una valoración en iVoox y/o en Apple Podcast.