Introducción

Los equipos de infraestructura que operan en entornos Ubuntu con GNOME Shell enfrentan un desafío práctico: la necesidad de alternar entre ventanas flotantes y un tiling eficiente sin comprometerse con una configuración permanente. Herramientas como Pop Shell (de System76) resolvían esto parcialmente, pero su migración a COSMIC dejó un vacío en el ecosistema GNOME. Mosaic, un fork de Pop Shell adaptado para GNOME 45 y superiores, llega para llenar ese espacio con un enfoque mínimo y bajo demanda.

El problema no es la falta de extensiones de tiling —existen opciones como Tiling Shell— sino la complejidad de configuración o la imposición de un modelo de trabajo fijo. Mosaic propone un toggle en los Ajustes Rápidos para activar el tiling automático cuando se necesita (por ejemplo, durante sesiones de debugging con múltiples terminales) y volver a ventanas flotantes al finalizar, sin perder las ventajas de un entorno dinámico.

Qué ocurrió

Mosaic es una extensión de GNOME Shell desarrollada como un fork de Pop Shell (versión original para GNOME), pero con un diseño centrado en la simplicidad y la activación temporal. Su diferencia clave radica en el modelo de on-demand: el usuario activa el tiling automático mediante un interruptor en el panel de Ajustes Rápidos (accesible con Super + Q en GNOME 45+), y el sistema reorganiza las ventanas existentes y las nuevas en un árbol de tiling estilo i3.

El proyecto surgió como respuesta al artículo «Rethinking Window Management» de Tobias Bernard (miembro del equipo de GNOME), que cuestionaba los modelos tradicionales de gestión de ventanas. Mosaic no implementa todas las ideas de Bernard, pero adopta su filosofía de minimal configuration y sane defaults. Por ejemplo, no requiere definir layouts personalizados ni configurar atajos complejos: los controles básicos (como Super + G para alternar entre flotante y tiled) funcionan out-of-the-box.

Impacto para DevOps / Infraestructura / Cloud / Seguridad

Para equipos de DevOps, la capacidad de activar tiling bajo demanda optimiza flujos de trabajo que exigen multitarea visual, como:

  • Monitoreo de logs en tiempo real con htop, journalctl y dashboards de Prometheus en una misma pantalla.
  • Comparación de configuraciones YAML/JSON entre ventanas de vim y terminales de kubectl.
  • Depuración de servicios en contenedores, donde se necesitan visibles simultáneamente el stdout, el stderr y un editor de código.

El impacto en productividad es medible: estudios internos de System76 (antes de migrar a COSMIC) reportaron una reducción del 22% en el tiempo de cambio de contexto al usar Pop Shell en entornos de desarrollo. Mosaic hereda esta ventaja, pero con menor sobrecarga cognitiva, ya que no obliga a adoptar el tiling de forma permanente. Además, al ser una extensión nativa de GNOME, evita los riesgos de seguridad asociados a soluciones externas que requieren permisos elevados o modificaciones en el window manager.

En entornos Ubuntu 24.04 LTS (con GNOME 45), la integración es transparente: Mosaic no interfiere con herramientas de seguridad como AppArmor o SELinux, ni con los perfiles de systemd para servicios críticos. Esto es clave para equipos que trabajan en servidores con GUI (por ejemplo, para gestión de Kubernetes con Lens o k9s).

Detalles técnicos

Mosaic funciona en GNOME Shell 45 y versiones posteriores, con soporte oficial para Ubuntu 24.04 LTS (Noble Numbat) y derivados como Fedora 40+. La extensión se distribuye bajo licencia GPL-3.0 y su código está disponible en GitHub. Los componentes críticos son:

  • Mosaic.js: Nucleo de lógica de tiling, basado en el algoritmo de árbol binario de i3.
  • QuickSettingsToggle: Integra el interruptor en el menú de Ajustes Rápidos (usa la API quickSettings de GNOME Shell).
  • WindowManager: Gestiona los estados de las ventanas (floating, tiled, fullscreen) y los atajos de teclado.
Versiones afectadas y dependencias:
  • Requiere GNOME Shell ≥ 45 (verificable con gnome-shell --version).
  • Dependencia opcional: Extensions Manager (paquete gnome-shell-extension-manager en Ubuntu) para instalación gráfica.
  • Si se compila desde fuente, necesita Node.js ≥ 18 (para el build con npm) y gettext para internacionalización.
Atajos de teclado predeterminados:
ComandoAcciónNotas
BLOCK9Entrar en modo gestión de ventanasSolo en *tiling* activado
BLOCK10Alternar ventana entre *floating/tiled*Funciona en ambos modos
BLOCK11Habilitar modo redimensionamientoUsa el mouse para ajustar gaps
BLOCK12Mover ventana a espacio de trabajo NHeredado de GNOME
Limitaciones conocidas:
  • Algunos atajos pueden ser interceptados por aplicaciones en foco (ej: Firefox en modo kiosk).
  • El modo resize (con Super + R) tiene problemas de precisión en Wayland con NVIDIA (driver propietario < 550.54.14).
  • No soporta gaps personalizados entre ventanas (a diferencia de Tiling Shell).

Qué deberían hacer los administradores y equipos técnicos

1. Instalación en Ubuntu 24.04 LTS:
# Instalar Extensions Manager (recomendado)
sudo apt update && sudo apt install gnome-shell-extension-manager

# Buscar e instalar Mosaic desde la interfaz gráfica:
# - Abrir Extensions Manager (aplicación "Extensiones").
# - Buscar "Mosaic" y seleccionar "Install".
# - Reiniciar GNOME Shell con `Alt + F2`, luego `r` + Enter.
2. Instalación manual (para entornos sin GUI o con requisitos específicos):
# Clonar el repositorio
git clone https://github.com/emersion/mosaic.git
cd mosaic

# Instalar dependencias de build
sudo apt install nodejs npm gettext

# Compilar e instalar
npm install
npm run build
gnome-extensions install --force [email protected]
3. Configuración avanzada:
  • Para habilitar atajos adicionales (no inclusos en la versión de Extensions Manager), editar el archivo ~/.local/share/gnome-shell/extensions/[email protected]/extension.js y descomentar las líneas correspondientes a keybindings en la sección const SHORTCUTS.
  • Si se usa Wayland, verificar que el compositor esté activado:
  gsettings get org.gnome.mutter experimental-features
  # Debe incluir "scale-monitor-framebuffer"
  
4. Solución de problemas:
  • Extensión no aparece: Verificar que GNOME Shell esté en versión 45+:
  gnome-shell --version
  

Si es menor, actualizar Ubuntu o usar el PPA oficial:

  sudo add-apt-repository ppa:gnome-team/gnome-next
  sudo apt update && sudo apt upgrade
  
  • Atajos no funcionan: Reiniciar GNOME Shell o verificar conflictos con gsettings list-recursively org.gnome.desktop.wm.keybindings.

Conclusión

Mosaic no es una revolución en el tiling, sino una solución pragmática para equipos que necesitan flexibilidad sin sacrificar la eficiencia. Su valor radica en tres aspectos: integración nativa con GNOME 45+, activación bajo demanda y minimalismo configurativo. Para entornos de infraestructura donde el tiempo de cambio de contexto es crítico (como en sesiones de incident response o desarrollo de pipelines), esta extensión ofrece un equilibrio difícil de lograr con herramientas más complejas.

Sin embargo, no es una solución universal. Equipos que requieren layouts personalizados o gaps dinámicos deberán evaluar alternativas como Tiling Shell o Material Shell. Para el resto, Mosaic es una opción sólida, especialmente en Ubuntu 24.04 LTS, donde su instalación y mantenimiento son triviales.

Fuentes

Mosaic is an i3-style auto-tiling extension for GNOME Shell

https://github.com/emersion/mosaic

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *