Overlook, un home para mi Mac que sigue mis dedos
Con el gesto de Mission Control, Overlook abre un home que sigue tus dedos y cada ventana vuela de su lugar real al suyo. Al pasar del navegador a Swift y AppKit, varias cosas me sorprendieron.
Pongo tres dedos en el trackpad y subo, como para abrir Mission Control. Aparece un home encima de la Mac que se abre siguiendo mis dedos, y cada ventana vuela desde su lugar real hasta su lugar en el home. Eso es Overlook, la app que hice en Swift y AppKit. Vengo de escribir web, así que buena parte del camino fue toparme con cosas que en el navegador no me tocaba ver.
Subir, detenerse, deslizar
Cada vez que se abre, el home acomoda todas las ventanas en filas centradas, tan grandes como caben y siempre en el mismo orden. A la derecha queda una columna con widgets, agentes y notas. El fondo es mi propio fondo de pantalla, dentro de una pantalla de esquinas redondeadas con un bisel negro, como el tubo de una Mac clásica. Las ventanas siguen vivas: un video sigue corriendo y una terminal sigue escribiendo.
Para ir a una ventana subo con tres dedos, me detengo sin levantarlos, siento un detente háptico y el home termina de abrirse solo. Deslizo hacia la ventana, levanto los dedos y estoy en ella.
Lo que no esperaba
El gesto se toma antes de que lo vea el Dock. macOS convierte el swipe en un evento privado, y un event tap de sesión lo ve primero y lo consume. Un swipe real termina con progreso 0.21 y velocidad 4.9, así que lo confirmo por velocidad y no por distancia.
Luego estaban los fantasmas: 26 de las 37 "ventanas" que el sistema me listaba no eran ventanas de verdad, sino paneles de autollenado, permisos y ventanas ya cerradas. Las reales pertenecen a un Space y esas no, así que filtro por ahí con CGSCopySpacesForWindows.
Y el texto. Una carta de código costaba 550 milisegundos por cuadro al deslizarse, porque TextKit 2 vuelve a componer el texto cada vez que la vista se mueve. Por eso el texto va en TextKit 1. Con la máscara squircle pasó algo parecido: cambiaba en cada cuadro y obligaba a un pase completo fuera de pantalla, y el p95 llegó a 44 milisegundos. Ahora el bisel es una forma fija encima y lo único que cambia es su opacidad. Abrir y cerrar miden 8.33 milisegundos por cuadro, 120 Hz sin tirones.
Lo que quité y lo que no he probado
Hubo un modo escritorio que retiré el 26 de octubre. Movía las ventanas reales a sus miniaturas y apartaba las demás en una esquina, y resultó poco intuitivo: ventanas que desaparecían y lugares que cambiaban.
También hay partes que escribí sin poder probarlas del todo. Elegir ventana con el gesto sostenido y acomodar ventanas desde el home los escribí sin poder sintetizar un toque ni un swipe del sistema; el recorrido del gesto queda en un log para calibrarlo con uso real. Y como la app está firmada solo de forma ad-hoc, cada build nuevo me vuelve a pedir Accesibilidad y Grabación de pantalla.
Eso es lo que hay por ahora. El repositorio es privado.