A fines del año pasado, el reproductor de medios Celluloid migró a Gtk4 y en su más reciente versión ahora requiere libadwaita, es decir utiliza el tema Adwaita de forma fija y en consecuencia se ha convertido en una aplicación GNOME. Varias aplicaciones Gtk están siguiendo el mismo camino a fin de poder cubrir los requisitos de GNOME 42. Para el usuario final son cambios poco relevantes. Para el ecosistema de aplicaciones para Linux son cambios radicales que algunos ven muy bienvenidos. Para entornos de escritorio como Cinnamon, MATE desktop y Xfce es un hecho que tiene mucha relevancia y es una señal que implica se tendrán que comenzar a realizar muchos cambios a fin de mantenerse a flote en el futuro.

Contexto previo.

La transición de MATE Desktop de Gtk2 a Gtk3 demoró algunos años, pero se consiguió con la versión 1.18 en 2017 y se ha mejorado con las versión 1.26 de 2021. Para Xfce fue más complicado, pues demoró algunos años más, comenzando con la versión 4.14 en 2019 y completándose hasta la versión 4.16 a finales de 2020, con múltiples correcciones de goteras de memoria entre 2021 y lo que va de 2022, recuperando su tradicional ligereza tras aplicar los correspondientes parches correctivos. Cinnamon nació siendo Gtk3 y realmente sólo tiene como reto el migrar algún día a Gtk4.

Sin embargo, la transición de Gtk3 a Gtk4 puede ser algo demore muchos años más o bien jamás suceda. ¿Por qué? La respuesta es un tanto compleja y trataré de explicarla de la manera más simple posible: Gtk4 fue diseñado para ser utilizado sólo por GNOME. Es extraño pensar en que durante algunos años Gtk era las siglas de Gimp ToolKit y fuese un desarrollo bastante abierto a las opiniones, participación y sugerencias de la comunidad.

Explicación técnica.

Citando algunos extractos del artículo publicado en Homo Ludditus, podemos comentar que entre los cambios más relevantes entre Gtk3 y Gtk4, destacan la obsolescencia o desaparición de varias funciones de interfaz (Widgets): GtkMenu, GtkMenuBar, GtkMenuItem y GtkToolbar. Es decir, en Gtk4 desaparecen los menús, elementos de menú, las barras de menú y las barras de herramientas, elementos de interfaz que son dependientes de X11. La tendencia en Gtk4 fue crear nuevas funciones de interfaz que fuesen agnósticas respecto de X11 o Wayland, lo cual es algo muy positivo y facilita la vida a los desarrolladores de aplicaciones Gtk.

Ejemplo de una aplicación Gtk3 tradicional

Los menús pueden ser reemplazadas por GtkPopoverMenu y las barras de menú se pueden reemplazar con GtkPopoverMenuBar. Estos nuevos widgets sólo se pueden construir a partir de modelos de menú, por lo que migrar a Gtk4 implica cambiar a modelos y acciones de menú.

Los menús tabulares rara vez se usaban y complicaban el código del menú, por lo que su funcionalidad fue omitida en GtkPopoverMenu. Si requiere un diseño complejo en ventanas emergentes similares a menús, existen alternativas para usar directamente GtkPopover en su lugar. Dado que los menús desaparecieron, GtkMenuButton también perdió su capacidad para mostrar menús y debe usarse con ventanas emergentes en Gtk4.

Lidiar con la desaparición de GtkToolbar será un tanto complicado, pero es posible. Las barras de herramientas solían utilizar conceptos obsoletos, como requerir widgets de elementos de herramientas especiales. Las barras de herramientas se pueden reemplazar utilizando GtkBox con widgets regulares en su lugar y la clase de estilo barra de herramientas.

En pocas palabras: las aplicaciones Gtk4 sólo utilizan aplicaciones con decoraciones del lado del cliente, que contiene todas las funciones de la aplicación.

Ejemplo de una aplicación Gtk3 con decoraciones del lado del cliente

Está de más decir que muy probablemente Gtk5 excluirá todas las funciones que sean innecesarias para GNOME.

¿Qué implica todo lo anterior para Cinnamon, MATE y Xfce?

Respuesta: Mucho. Particularmente para MATE Desktop.

Así como ocurrió con Gtk2, Gtk3 llegará a su fin de ciclo de vida dentro de algunos años ―probablemente cuando ocurra el primer lanzamiento estable de Gtk5― y dejará de ser mantenido. Cualquier software que utilice Gtk3 quedará en la incertidumbre.

Si en este momento hubiese que migrar MATE de Gtk3 a Gtk4, habría que reescribir la mayor parte de la interfaz del escritorio y todas sus aplicaciones. ¿Por qué? Lo expliqué algunos párrafos arriba: la desaparición en Gtk4 de GtkMenu, GtkMenuBar, GtkMenuItem y GtkToolbar, elementos de interfaz que son ampliamente utilizados por la interfaz de MATE y sus aplicaciones.

Para Xfce una transición a Gtk4 es factible y se ve ―en teoría― más sencilla. Olivier Fourdan ―creador de Xfce y principal desarrollador del proyecto― es también desarrollador en Gtk. Así que era de esperarse que Xfce tuviera cambios en distintos componentes de su interfaz para prepararse para una eventual transición a Gtk4. Estos cambios ―bienvenidos por muchos y maldecidos por algunos― se pueden apreciar en el Gestor de Configuración de Xfce, los diálogos de apertura de archivo, los diálogos de impresión y otros componentes como Mousepad.

Para Cinnamon una transición a Gtk4 es posible, considerando que la interfaz Gtk3 actual básicamente tiene lo necesario para poder migrar a Gtk4 con relativamente pocos cambios. El problema viene con su colección de aplicaciones Xapp, como es el caso de Xed, Xreader, Xviewer, Pix, etc. Todas estas aplicaciones utilizan menús, elementos de menú, barras de menú y barras de herramientas que ―como ya dije― desparecen en Gtk4.

El dilema de Gtk4.

El lanzamiento de Gtk3 fue controvertido. Añadió muchos cambios en la interfaz de las aplicaciones y marcó como obsoletos los elementos gráficos que tradicionalmente se han utilizado en las aplicaciones gráficas, pero fue prácticamente la muerte para LXDE cuyo desarrollo lleva estancado desde 2016, con la mayoría de sus desarrolladores migrando a LXQt. Varios proyectos relevantes como Wireshark y Audacious decidieron migrar a otros conjuntos de herramientas (Qt5) debido al disgusto de sus desarrolladores por los cambios en Gtk3.

Gtk4 fue aún más controvertido, porque básicamente fue diseñado para ser utilizado exclusivamente por GNOME y porque fue el clavo en el ataúd de los conceptos tradicionales de la interfaz gráfica de usuario en Gtk.

Conforme se fue expandiendo la tendencia de utilizar decoraciones del lado del cliente, surgieron proyectos bifurcados de Gtk3 como gtk3-classic y otros bifurcados de libxfce4ui como libxfceui-nocsd tratando de revertir la tendencia de los nuevos elementos gráficos. Pero estos proyectos ―además de ser mantenidos por pocas personas en su tiempo libre― tienen varios problemas con distintas aplicaciones y otros problemas de compatibilidad. Por tanto, salvo que alguna organización o entidad con suficientes recursos se interese en estos proyectos, el futuro de éstos es suficientemente incierto como para ―al menos por el momento― evitarlos. Particularmente es absurdo utilizar libxfceui-nocsd, porque en Xfce es opcional el utilizar las decoraciones del lado del cliente de los componentes de Xfce que las utilizan y se puede activar o desactivar esta funcionalidad desde el Editor de configuración de Xfce o bien simplemente ejecutando desde una terminal: xfconf-query -c xsettings -p /Gtk/DialogsUseHeader -s false.

Editor de configuración de Xfce, habilitar o deshabilitar decoraciones del lado del cliente (CSD)

El desarrollo de Gtk se ha caracterizado en la última década por ignorar por completo la crítica y ―sobre todo― los comentarios negativos respecto de los controvertidos cambios que realizan con cada nuevo lanzamiento. Las solicitudes y sugerencias de la comunidad son igualmente ignorados. Salvo por algunas excepciones, la mayoría de los desarrolladores de Gtk tiene poco o ningún interés en otros entornos de escritorio distintos a GNOME y las aplicaciones debajo de su sombrilla. Pareciera que el equipo de Gtk toma decisiones unilaterales basadas únicamente en sus prioridades, sin consultar primero a otros sectores de la comunidad y sin importarles que aplicaciones de terceros y otros entornos de escritorio se vean perjudicados por sus decisiones.

Queda claro es que a los desarrolladores de Gtk tienen nulo interés por la existencia de otros entornos de escritorio y aplicaciones de terceros y que sólo les interesa GNOME ―y que además éste sea usado con Wayland.

La apuesta por arriesgarse a la difícil transición a Gtk4 o arriesgarse a estancarse en Gtk3. Ese es el dilema para Cinnamon, MATE Desktop y Xfce. Son los riesgos de depender de una pieza esencial de software que es controlada por un solo entorno de escritorio y que hoy en día dista mucho de poderse considerar neutral para el ecosistema de aplicaciones.

¿Qué tiene que ver en todo ésto Celluloid?

La decisión de muchos desarrolladores de GNOME ―con todo el respaldo financiero de Red Hat― para utilizar libadwaita y aniquilar con la funcionalidad que permitía cambiar de tema de las aplicaciones Gtk ha sido una de las cosas más controvertidas que han hecho los desarrolladores de GNOME en los últimos años. Sí sólo fuese algo que afectara exclusivamente a GNOME y sus componentes oficiales, probablemente habría menos inconformidad entre la comunidad de usuarios del Software Libre y desarrolladores de temas para el escritorio Linux. Pero esta tendencia se está extendiendo a aplicaciones que anteriormente eran agnósticas respecto del entorno de escritorio y se están convirtiendo automáticamente de aplicaciones Gtk a aplicaciones GNOME.

Celluloid es uno de los ejemplos más claros. Muchas distribuciones de Linux optaron por adoptarlo como reproductor de medios predeterminado debido a su facilidad de uso, sencillez de interfaz, desempeño y porque se integraba bien tanto en GNOME como en Cinnamon, MATE Desktop y Xfce. Ahora que este proyecto ha migrado a Gtk4 y libadwaita ―y por tanto uniéndose a la cruzada de desarrolladores contra los temas de escritorio― se ha convertido en una aplicación que ―en lo personal― considero urge reemplazar por otra que sea neutral y que ―sobre todo― permita tener un aspecto uniforme con el resto de las aplicaciones del entorno de escritorio utilizado. Es irónico que los mejores candidatos ―SMPlayer, Qmplay2, VLC, etcétera― sean aplicaciones hechas en Qt.

Xfce tiene algún tiempo desarrollando Parole, proyecto que ―con algunas mejoras― es el reemplazo perfecto para este entorno de escritorio ―porque hay que aclarar que Parole sólo funciona en Xfce. Cinnamon solía mantener Xplayer ―uno más de sus proyectos de Xapp― pero abandonó su desarrollo para adoptar Celluloid al considerarlo una aplicación más completa y moderna; probablemente sea tiempo de reconsiderar resucitar a Xplayer o crear un nuevo proyecto. MATE jamás ha tenido reproductor de medios propio, pero sería buen momento para elegir alguno que puedan integrar y mantener.

Conforme pase el tiempo, más y más aplicaciones Gtk3 irán migrando a Gtk4, con el potencial de utilizar también libadwaita y por tanto convirtiéndose en aplicaciones GNOME que tendrán un aspecto distinto al resto de las aplicaciones ejecutadas desde los entornos de escritorio Gtk distintos a GNOME.

Siguiente Entrada Entrada Anterior