Cambalache, una herramienta para la creación de interfaces de usuario Gtk
Durante la GUADEC 2021 se presentaron diversos temas bastante interesantes de los cuales uno que llamo la atención de muchos fue una nueva herramienta que permite crear interfaces de usuario para Gnome, el nombre de esta herramienta es Cambalache.
Cambalache se posiciona como una nueva herramienta RAD que permite el desarrollo rápido de front-end para GTK 3, GTK 4 y el entorno de escritorio GNOME, aun que su enfoque principal está en la biblioteca Gtk 4. Utiliza el paradigma MVC y la filosofía del paradigma del modelo de datos y que en una de las diferencias más notables con Glade es el soporte para mantener múltiples interfaces de usuario en un solo proyecto.
Su desarrollador Juan Pablo Ugarte, menciona que la herramienta:
Comenzó como un modelo de datos de prueba de concepto para Glade destinado a probar todas las ideas locas que tuve durante años sobre cómo debería ser un modelo limpio.
Unos meses más tarde tuve un modelo de datos bastante bueno que coincidía bastante bien con el sistema de tipo GObject y no dependía de GtkBuilder ni de GObject.
El desarrollador menciona que con el modelo se puede:
- Importar y exportar múltiples UI a la vez
- Admitir funciones simples (sin etiquetas personalizadas) de GtkBuilder
- Objetos
- Propiedades
- Señales
- Propiedades de embalaje/diseño
- Deshacer/Rehacer pila
- Compresión y agrupación de comandos de historial
Como tal Cambalache es totalmente independiente de GtkBuilder y GObject, pero proporciona un modelo de datos que se ajusta al sistema de tipos de GObject, es por ello que el modelo de datos puede realizar lo que anteriormente se mencionaba, importar y exportar múltiples interfaces a la vez, admitir objetos, propiedades, etc.
Además de ello, se proporciona la utilidad cambalache-db para generar el modelo de datos a partir de archivos gir, y se proporciona la utilidad db-codegen para generar clases de GObject a partir de las tablas del modelo de datos.
Para admitir múltiples ramas, el espacio de trabajo de formación de GTK se realiza con la ayuda del backend Broadway, lo que permite sacar una conclusión de las bibliotecas GTK en la ventana del navegador web.
El proceso principal de Cambalache se proporciona con un enlace con WebKit WebView, en el que, utilizando Broadway, se transmite la salida del proceso Merengue, el cual es el nombre del proceso que usa Cambalache que está directamente involucrado para renderizar la interfaz de usuario mientras el usuario la crea, es una aplicación normal de Gtk 3 o Gtk 4 dependiendo de la versión definida en el proyecto.
Finalmente, para quienes estén interesados en poder conocer más al respecto pueden consultar los detalles del proyecto en el siguiente enlace. Mientras que para quienes estén interesados en poder dar un vistazo al código de Cambalache pueden hacerlo desde el siguiente enlace. Tambien es importante mencionar que el código del proyecto está escrito en Python y está disponible bajo la licencia GPLv2.
Obtener Cambalache
Para aquellos que estén interesados en poder trabajar con esta herramienta, deben saber que existen dos formas de poderla tener en su sistema, una de ellas es descargando el código fuente de Cambalache y con el cual no hace falta instalar la herramienta, mientras que la otra opción y que creo que es mucho más cómoda es con ayuda de los paquetes de Flatpak. Tambien es importante mencionar que no esta demás mencionar que se debe de tener instalado Python.
En el primer caso y que no requiere instalación es descargando el código fuente de la herramienta. Esto lo podemos hacer abriendo una terminal y en ella vamos a teclear el siguiente comando:
git clone https://gitlab.gnome.org/jpu/cambalache.git
Ahora para poder ejecutar la herramienta basta con teclear:
./run-dev.py
Finalmente en cuanto al otro método es que es con ayuda de los paquetes de Flatpak, solamente debemos de contar con el soporte para poder instalar este tipo de paquetes en el sistema y lo único que debemos de hacer es abrir una terminal y ejecutar los siguientes comandos:
flatpak-builder --force-clean --repo=repo build ar.xjuan.Cambalache.json flatpak build-bundle repo cambalache.flatpak ar.xjuan.Cambalache flatpak install --user cambalache.flatpak