Resumen de la arquitectura

Cómo XDragMover convierte un gesto de modificador+clic en una ventana movida o redimensionada, todo mediante APIs públicas de macOS y algunas ligeramente privadas.

Canalización (pipeline)

XDragMover se ejecuta como una app de barra de menú en segundo plano que instala un monitor de eventos global a través de la API Quartz Event Services, observando el estado de las teclas modificadoras y del ratón en todo el sistema. Cuando se detecta un gesto que cumple las condiciones, resuelve la ventana objetivo mediante la API de Accesibilidad de macOS y controla directamente su posición o su marco.

Monitor de eventos global Quartz Event Services
Event Tap Taps de mover / redimensionar / foco
Controlador Lógica de gestos y exclusión
API de Accesibilidad Posición / tamaño de AXUIElement
Ventana objetivo Ventana de cualquier otra app

Una capa compartida AppSettings (respaldada por UserDefaults) alimenta en vivo el modificador activo, el tiempo de espera y los patrones de exclusión a cada par tap/controlador, de modo que los cambios en Ajustes se aplican de inmediato — sin necesidad de reiniciar. Un StatusMenuController proporciona el elemento de la barra de menú y las ventanas de Ajustes/Depuración alrededor de esta canalización central.

Etapas en detalle

Permisos

Debido a que observa eventos de entrada en todo el sistema y reposiciona ventanas pertenecientes a otras aplicaciones, XDragMover requiere el permiso de Accesibilidad (Ajustes del Sistema → Privacidad y seguridad → Accesibilidad), concedido una sola vez al primer inicio. No se usan otros permisos especiales, extensiones de kernel ni daemons en segundo plano.

← Volver al inicio