ADR-010 — Centralización Modular de Espacios de Trabajo para Desarrollo y Navegación
- Estado: Aceptada
- Fecha / Hito: 2026-10-07 (Resolución de specs #59 y #67 en
fo-omarchy)
Contexto
En el entorno de escritorio de Omarchy bajo Hyprland, la concurrencia de flujos de trabajo intensivos (orquestación con agentes de IA, programación en IDEs dedicados, navegación web y depuración) requería una organización predecible y consistente de los espacios de trabajo.
Inicialmente, tanto navegadores como entornos de desarrollo abrían de manera no determinista en el espacio de trabajo activo donde se ejecutaba la orden, mezclando terminales efímeras, editores y sesiones de investigación. Además, intentar modificar directamente los archivos base de upstream (default/hypr/apps/*.lua, default/hypr/looknfeel.lua) violaba la regla de oro del fork de cero diff contra upstream en archivos nativos, exponiendo al ecosistema a colisiones durante los rebases cotidianos de las 04:00 AM.
Un desafío técnico adicional radica en el comportamiento de ventanas emergentes en gestores de ventanas tipo tiling: una regla global que encadene una clase a un espacio específico (ej. Workspace 9 u 8) atrapa indiscriminadamente los selectores de archivos/carpetas (Open/Save File), ventanas de herramientas DevTools desacopladas y diálogos de autenticación OAuth/login, trasladándolos de manera abrupta fuera del contexto visual activo del usuario.
Decisión
- Partición Funcional de Espacios de Trabajo Dedicados:
- Workspace 10 (Navegación Web): Centraliza las ventanas principales de los navegadores soportados (
google-chrome,microsoft-edge,zen,brave-origin,brave-browser) mediante el submódulo anexodefault/hypr/browser-workspaces.lua. - Workspace 9 (IDEs y Edición de Código): Centraliza las instancias principales de Cursor IDE y ADE (
Cursor,cursor,cursor-ide,cursor-ade) mediantedefault/hypr/dev-workspaces.lua. - Workspace 8 (Entornos Agénticos y Orquestación): Centraliza las instancias principales de Antigravity IDE y la aplicación de escritorio (
antigravity-ide,Antigravity,antigravity) mediantedefault/hypr/dev-workspaces.lua.
- Workspace 10 (Navegación Web): Centraliza las ventanas principales de los navegadores soportados (
- Patrón Arquitectónico de Submódulo Anexo:
- Todo módulo específico de espacios de trabajo vive en un archivo aislado (
default/hypr/browser-workspaces.lua,default/hypr/dev-workspaces.lua). - La inclusión en el compositor se realiza al final de
default/hypr/omarchy.luaconrequire(). - Cero modificaciones ni parches en archivos nativos de Omarchy upstream (
default/hypr/apps/browser.lua, etc.), asegurando un árbol limpio para rebases desatendidos limpios.
- Todo módulo específico de espacios de trabajo vive en un archivo aislado (
- Exclusiones Flotantes Relativas al Contexto Activo:
- Se declaran reglas explícitas con
workspace = "unset"ytag = "+floating-window"con orden de precedencia posterior a las asignaciones de espacios fijos:- Selectores y diálogos de archivo/carpeta (
title = "^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to [open|save].*|[C|c]hoose.*)"). - Herramientas DevTools desacopladas (
title = "^(DevTools.*|Developer Tools.*)"). - Diálogos de autenticación, login y extensiones (
title = "^(Sign in.*|Sign In.*|Log [I|i]n.*|OAuth.*|Extension:.*)").
- Selectores y diálogos de archivo/carpeta (
- Esto garantiza que las ventanas auxiliares emerjan flotantes en el espacio activo de trabajo donde el usuario las solicitó, sin secuestro espacial.
- En navegadores, las ventanas Picture-in-Picture retienen
workspace = "unset"para ser gobernadas por el módulo estándar de PiP.
- Se declaran reglas explícitas con
- Persistencia de Reubicación Manual sin Rebote:
- El direccionamiento a los espacios 8, 9 y 10 opera exclusivamente en el mapeo inicial de la ventana (spawn inicial).
- El usuario conserva la libertad de mover manualmente cualquier ventana a otro espacio de trabajo (vía
SUPER + SHIFT + <n>), permaneciendo en su nueva ubicación sin regresión forzada.
- Extensibilidad Unificada para Nuevas Herramientas:
- La arquitectura de
dev-workspaces.luacentraliza todas las herramientas de desarrollo futuras (t3code,orca, etc.) en una sola expresión regular unificada (dev_classes), heredando de inmediato todas las exclusiones relativas sin duplicar código ni fragmentar configuraciones.
- La arquitectura de
Consecuencias
- Cero Conflictos de Rebase: Integración limpia al pie de
omarchy.luaque sobrevive automáticamente a las actualizaciones del cron de las 04:00 AM. - Ergonomía y Predictibilidad: Espacios de trabajo 8, 9 y 10 organizados por función, evitando la contaminación visual en los espacios principales de trabajo (1 al 7).
- Diálogos Intuitivos: Diálogos modales y ventanas OAuth permanecen en el espacio visual donde se interactúa con ellos.
- Despliegue Homogéneo: Se propaga a toda la flota a través del paquete sombreado
omarchy-settings(omarchy update).