554 - Avances en mi escritorio Linux
Modificando #sway en #linux con #ags y #gtk para tener un tiling window manager con todo lo necesario de un entorno de escritorio en una herramienta
Como si de un parte de guerra se tratara, y tal y como te adelanté en el episodio 551 del podcast titulado Crea tu escritorio Linux, en este y en futuros episodios te iré relatando como van los avances en mi escritorio Linux. Cierto es, que en estos últimos días, no he avanzado gran cosa, pero no quiero dejar pasar mucho tiempo, sin informarte de como anda la cosa. Estoy convencido que en los próximos días, esto que estoy haciendo en mi escritorio experimentará un cambio brutal, y esto debo ir contándolo poco a poco.
Tengo que decirte, que esto de AGS, no tiene nada que ver con nada de lo que he utilizado hasta el momento. Sinceramente, esto juega en otra liga. Las posibilidades que te ofrecen herramientas como polybar, etc, ni siquiera se le acercan. También te tengo que decir, que todo depende de que quieras hacer, y el tiempo que le quieras dedicar. Eso vaya por delante. Si no quieres dedicar tiempo, lo mejor es utilizar un entorno de escritorio tradicional. O bien subirte al carro, y simplemente dejar por alguna de las configuraciones que actualmente puedes encontrar basada en AGS y que son simplemente espectaculares.
Sea como fuere, es muy posible, que todo esto sea fruto de la emoción que actualmente estoy experimentando por las posibilidades que ofrece este marco de trabajo. Ya veremos. Solo el tiempo será capaz de desvelar este misterio.
Avances en mi escritorio Linux
Un rápido repaso
Antes de contarte la situación en la que me encuentro, quisiera repasar contigo la infraestructura que estoy utilizando para mi escritorio. Empecemos,
- Swayfx. Este es el tiling window manager que estoy utilizando. Es un fork de Sway, pero con algunos efectos especiales, que lo hacen mas atractivo, pero no mas útil. Simplemente es por darle gusto a los ojos.
- AGS, Gtk y JavaScript.
- Mas del 90% del trabajo está desarrollado. Queda la migración a Sway y adaptarlo a mis necesidasdes.
- Consumo. Para que te hagas una idea del consumo de lo que llevo entre manos, decirte que sway consume alrededor de 150 MB y ags 170 MB. Por supuesto que esto no es nada comparado con lo que se lleva por delante el navegador.
Lo que hay actualmente
Actualmente, la mayor parte de lo que puedes encontrar en mi escritorio Linux, construido con Sway y AGS, es heredado. Se trata de la configuración implementada por el propio desarrollador de AGS, Aylur y que puedes encontrar en sus dotfiles.
Cierto es que mi configuración no es exactamente igual, en tanto en cuanto el se basa en hyprland, mientras que yo estoy utilizando Swayfx, y además, nuestros caminos divergieron hace algún tiempo, con lo que no estoy utilizando todo el potencial y la última versión que el ha desarrollado.
Lo que actualmente es completa o parcialmente funcional es lo que te voy a relatar a continuación. Intentaré añadir el mayor número de captura para que sea lo mas visual posible, aunque espero publicar uno o varios vídeos en el canal de YouTube.
La barra superior
Lo primero, y diría que principal, es la barra superior, donde se encuentra toda la información actual, así como todo aquello que da la información al usuario de lo que está haciendo.
En la barra superior, encontrarás lo básico, pero fundamental para trabajar con un tiling window manager, un gestor de áreas de trabajo. Es decir, una pequeña barra, donde se encuentra información de cada una de las áreas de trabajo. El número de áreas de trabajo habilitadas, el área de trabajo sobre la que estás situado, así, como información sobre aquellas áreas de trabajo que actualmente se encuentran ocupadas.
A la derecha, se encuentra una etiqueta donde indica al usuario que está haciendo, recuerda que el feedback es fundamental para la experiencia de usuario. Sin embargo, esta etiqueta ahora mismo no está en funcionamiento. Todavía tengo que arreglar algunos detalles con Sway y su socket que comenté en un podcast anterior.
En la parte central de la barra superior, se encuentra la fecha y hora, que al pulsar despliega un popup. Este popup te muestra tanto las notificaciones, como el calendario y algunos widgets adicionales.
Justo a la derecha, encontrarás, en caso de que estés reproduciendo algo, justo el reproductor y lo que estás reproduciendo. Si pulsas sobre ese botón se pausará o continuará con la reproducción.
A la derecha de la barra superior, te encontrarás el típico menú que te da acceso a la gestión del sistema. En concreto, un pequeño menú que te da acceso a la captura de color y al menú de indicadores, y justo a la derecha el menú combinado.
En el menú combiando puedes encontrar acceso a la gestión del volumen, a la selección del dispositivo de audio de salida a la salida de WiFi, al control de reproductor.
Menú de salir
Como no podía ser de otra forma, integrado con esto tienes un menú de salida, que no es ni mas ni menos que una ventana de diálogo con cuatro botones que te da acceso a salir de la sesión, reiniciar o apagar el equipo según tu necesites.
Algo interesante de esta ventana de diálogo es que sea, cual sea, la opción que elijas, te va a pedir confirmación, para evitar que por distracción elijas la opción incorrecta.
Lanzador de aplicaciones
Otra de las herramientas fundamentales en un tiling window manager es un lanzador de aplicaicones. Aquí de nuevo es otra de las aplicaciones o herramientas que me encontré funcionando.
Sin embargo, hay algo que echaba de menos, que no era otra cosa, que la selección por lógica difusa. Esto lo he solucionado parcialmente utilizando expresiones regulares. Suficiente para que emule el comportamiento que deseo*.
Lo que he implementado
En los últimos días he realizado algunos cambios que necesitaba para continuar con este desarrollo contínuo,
- Fondo de Pantalla Dinámico:
- He eliminado la necesidad de utilizar una aplicación externa para gestionar fondos de pantalla.
- Implementé la carga dinámica de fondos desde un directorio específico.
- Utilizo un DrawingArea para pintar directamente el fondo en lugar de depender de otras soluciones.
- Ajusté el tamaño de las imágenes para que se adapten perfectamente al escritorio, evitando la necesidad de redimensionarlas.
- Lanzador de Aplicaciones:
- Implementé un filtro basado en expresiones regulares para el lanzador de aplicaciones.
- Esto permite una búsqueda más eficiente y precisa de aplicaciones cuando las estás lanzando.
- Gestión de Eventos:
- Ahora puedes rastrear el cambio de aplicaciones gracias al socket de Sway.
- Es posible identificar cada aplicación en ejecución, en qué espacio de trabajo y en qué monitor se encuentra.
- Esta mejora permite mostrar en la barra de estado qué aplicación está actualmente en uso.