Umbra
Una ventana nativa de macOS para un navegador sin pantalla
App de macOS que le pone ventana a Obscura, un motor de navegador headless escrito en Rust. Muestra los cuadros que el motor renderiza y le devuelve los clics, la rueda y el teclado: un navegador que se usa con el mouse, sobre un motor que no fue hecho para eso.
Qué es
Obscura no dibuja ventanas: renderiza las páginas y emite los cuadros por el protocolo de DevTools de Chrome. Umbra abre la ventana, muestra esos cuadros y devuelve cada interacción al motor.
Qué hace
- Barra de direcciones, con búsqueda en DuckDuckGo si lo que se escribe no es un dominio.
- Clic, arrastre, rueda y teclado reenviados a la página como eventos del protocolo.
- Historial para ir atrás y adelante.
- El viewport sigue a la ventana: al cambiar el tamaño, el motor renderiza al tamaño nuevo.
- El motor viaja adentro: la app arranca su propio Obscura en un puerto efímero local y lo cierra al salir.
Cómo funciona
La interfaz está hecha con egui. La app habla con el motor por WebSocket, recibe cada cuadro como PNG y responde un acuse antes de decodificarlo: sin ese acuse el motor deja de mandar cuadros a los pocos segundos.
Estado
Funciona y está publicado como código abierto bajo Apache-2.0, la misma licencia que Obscura. Los límites que quedan son del motor: las media queries no se aplican, los elementos fijos se dibujan mal al hacer scroll y en pantallas Retina el cuadro se ve algo blando.
Colaborar
Gracias por llegar hasta acá.
Umbra y el resto de estos proyectos los construyo por mi cuenta, en mis ratos libres y sin financiamiento de nadie. Si algo de todo esto te resultó útil, te sirvió para aprender o simplemente tenés ganas de que siga, podés invitarme un café.
Cualquier monto ayuda y se agradece de verdad. También suma compartirlo o escribirme para contarme qué le cambiarías.
- Mercado Pago
Escaneá para leer el alias Alias
germi.dev.mpTransferí al alias desde Mercado Pago o desde el homebanking de tu banco.
- Monero
Escaneá con tu billetera de Monero Dirección XMR
4A9Jxy1wi7sMzpFhzXxeQY7NtUMMxbGLKDqiRyqTAZozTKUZb4faaEPV5bBfDZ8i2UGo7xnpVepupXSWBJho8abgBtaLMkvDirección estándar de Monero. Copiala y pegala en tu billetera antes de enviar.