Cuando contamos la transición a GPUI solo había dos apps nativas: el Explorador y Fuentes. Desde entonces se han sumado tres más: **Efectos de sonido**, **Monitor del sistema** y **Bloc de notas**. Aquí está cómo está cada una hoy, qué decisiones no obvias tomamos por el camino, qué sigue sin estar validado y cómo queda la hoja de ruta. --- ## En resumen | | Qué significa | |:--|:--| | **Qué hay en GPUI** | Cinco apps: Explorador 0.7, Fuentes 0.1, Efectos de sonido 0.2, Monitor del sistema 0.1 y Bloc de notas 0.7 | | **Qué se ha comprobado** | Compilan y pasan sus pruebas (105 en las tres nuevas). El Monitor y Efectos de sonido, además, se han revisado con capturas reales en Wayland | | **Qué aún no llega a tu equipo** | Las versiones GPUI de Efectos de sonido y del Bloc de notas todavía no tienen paquete publicado; la del Monitor sí está empaquetada | | **Qué no cambia** | Tus ajustes y tus notas se quedan en las mismas carpetas que usaban las versiones Tauri | | **Qué aún no sabemos** | Cuánto mejoran arranque, memoria y batería. Seguimos sin medirlo | > [!TIP] > **En corto:** de dos apps nativas a cinco, con una condición que no ha cambiado: ninguna sustituye a la anterior hasta igualarla. --- ## Dónde estábamos y dónde estamos | App | Nombre interno | Versión GPUI | Líneas de Rust | Estado | |:--|:--|:--|--:|:--| | Explorador | `bookos-explorer` | 0.7.0 | 11.974 | En uso. Es el selector de archivos del sistema | | Fuentes | `bookos-fonts` | 0.1.0 | 3.884 | En uso | | **Efectos de sonido** | `atmos` · `bookos-audio` | 0.2.0 | 2.771 | Compilada y probada; sin RPM publicado | | **Monitor del sistema** | `system-monitor` | 0.1.0 | 8.359 | RPM generado (`0.1.0-4`) e instalable | | **Bloc de notas** | `bookos-notepad` | 0.7.0 | 7.825 | Compilada y probada; sin RPM publicado | > [!NOTE] > Las tres nuevas conviven con su versión Tauri, que sigue en el repositorio como referencia. En este portátil, las versiones instaladas de Efectos de sonido (0.1.0) y del Bloc de notas (0.6.2) son todavía las anteriores. ```chart tipo: barras titulo: Código Rust escrito para GPUI unidad: líneas Explorador: 11974 Monitor del sistema: 8359 Bloc de notas: 7825 Fuentes: 3884 Efectos de sonido: 2771 bookos-ui: 2206 ``` --- ## Efectos de sonido · 0.2 Una ecualización pensada para los altavoces del Galaxy Book5 Pro (Realtek ALC298), con una interfaz nativa y un motor de audio propio sobre PipeWire. | Función | Qué hace | |:--|:--| | Perfiles | Seis perfiles guardados, con diez bandas gráficas que se editan arrastrando los puntos, con deslizador o con las flechas | | Tono y diálogo | Control de tono e intensidad, y realce del centro para que las voces se entiendan | | Apertura estéreo | Ensancha el estéreo sin mover el centro | | Corrección del altavoz | Parámetros tomados del ajuste que Samsung ya incluía en el equipo | | Limitador | Limitador estéreo con anticipación, para que subir graves no distorsione | | Servicio propio | `bookos-audio.service` en `systemd` de usuario, sin tocar el servicio genérico de PipeWire | | Línea de órdenes | `bookos-audioctl` activa, desactiva, consulta el estado y restaura | La cadena de señal, a 48 kHz: ```text 20 biquads por canal → medio/lateral → diálogo y amplitud → recomposición → sonoridad EBU R128 (ventana de 3 s) → ganancia suavizada → limitador estéreo con anticipación → altavoces ``` ### Decisiones que no se ven - **El limitador sigue los picos reales.** La versión anterior restaba para siempre una estimación del peor refuerzo posible. Ahora la reducción de ganancia sigue los picos de ambos canales a la vez, con una ganancia común, para no descuadrar el balance. Añade **5 ms** de anticipación, se recupera con una constante de **150 ms** y el techo es **−1 dBFS de pico de muestra**. - **El plugin LADSPA va dentro del programa.** Se compila con `rustc`, se incorpora al ejecutable y se escribe al configurar el motor. No hay nada que instalar aparte ni una biblioteca de DSP externa. - **Un archivo ilegible no se pisa.** Si `~/.config/bookos/audio.json` está mal, la app avisa y lo deja como está. - **Los ajustes se aplican de uno en uno.** Se sustituyen mediante un archivo temporal y los procesa un único trabajador; al cerrar, espera al último, aunque llegue en mitad de un arrastre. ### Lo que hace y lo que no > [!WARNING] > **No es Dolby Atmos.** No hay decodificador de objetos ni el algoritmo del fabricante, y no los fingimos. Tampoco prometemos que suene igual que en Windows: eso exige escucha comparativa y medición con micrófono, y todavía no se han hecho. - El modo de escritorio mejora **solo los 16 eventos sonoros del tema BookOS**. Música y vídeo no pasan por el DSP. Se guarda una copia exacta de cada original y se rechaza una restauración que pisaría cambios posteriores. - La interfaz GPUI y el motor global siguen en el código para uso manual; no se activan al instalar las variantes. - La interfaz nativa está solo en castellano. Los catálogos de idiomas de la versión web siguen en la referencia Tauri. - El servicio independiente está generado, pero su instalación no se ha ejecutado en una sesión real. Las mediciones digitales (señal capturada en una salida nula, límites del limitador, restauración exacta) están en el repositorio. Demuestran que el procesado hace lo que dice; no demuestran que suene mejor. --- ## Monitor del sistema · 0.1 El monitor que enseña qué consume el equipo, ahora sin Tauri, GTK ni WebKit. | Función | Qué hace | |:--|:--| | Siete secciones | CPU, GPU, RAM, Disco, Red, Batería y Otros | | Procesos | Agrupados, con sus hilos, búsqueda y filtros | | Cierre de procesos | Con confirmación previa | | Energía | Cambio de perfil de energía desde la propia app | | Batería | Historial de UPower en tres rangos | | Isla de actividades | Se alimenta de la misma muestra que la ventana | Los datos son los del equipo: CPU Intel, GPU `xe`, batería Samsung, NVMe y los sensores que publica el kernel. Donde un controlador no publica un dato, la app lo muestra como ausente; no se inventa ningún valor. ### Decisiones que no se ven - **Una sola secuencia de muestreo para la ventana y la isla.** El original hacía avanzar los mismos contadores desde dos consumidores distintos, y los dos se pisaban la referencia temporal. - **Nada bloquea el hilo de interfaz.** Las lecturas de `/proc` y las llamadas a D-Bus se hacen fuera de él. Una consulta de polkit para cambiar de perfil no detiene el muestreo. - **Una lista virtual para todo el detalle.** El resumen es el primer elemento y después van las filas de procesos, con la cabecera de columnas fija. Una versión anterior metía una tabla de 420 px dentro de la página y la rueda dejaba de avanzar al llegar a ella; una prueba con rueda lo reprodujo y se arregló unificando el desplazamiento. - **El árbol de procesos usa un índice por padre.** Así no se recorren todos los procesos para encontrar los hijos de cada nodo. - **Un PID reciclado no puede llevarse la señal.** La confirmación guarda el PID y la hora de arranque, y antes de enviar la señal se vuelve a consultar el proceso. Si la identidad ya no coincide, se rechaza. Las pruebas de cierre solo envían señales a procesos `sleep` creados por ellas mismas. - **Las gráficas dicen la verdad sobre los huecos.** Las muestras ausentes se dibujan como huecos, el eje usa el tiempo real transcurrido y la batería separa temperatura y carga en dos paneles. ### Límites conocidos > [!WARNING] > **Sigue muestreando aunque la ventana esté minimizada.** La versión de GPUI que usamos no expone una señal de minimización equivalente a `visibilityState`, y no hemos querido tratar «perder el foco» como «estar minimizado». - Sin validar en hardware AMD o NVIDIA, ni con lectores de pantalla. - Algunos colores fijos del tema claro no llegan al contraste AA. La medición está en el repositorio; la paleta dinámica la pone Ajustes. - Los perfiles de energía y la isla dependen de los servicios de la sesión, igual que en la versión anterior. --- ## Bloc de notas · 0.7 Un editor que mezcla dos cosas: **archivos de texto** y **notas** con formato. | Función | Qué hace | |:--|:--| | Notas con formato | Bloques, listas y alineación; se guardan como HTML en `~/.local/share/bookos-notepad/notas/` | | Archivos de texto | Abrir y guardar desde el Explorador, que hace de selector | | Buscar y reemplazar | `Ctrl+F` y `Ctrl+H` | | Vista previa | `Ctrl+P`, con Markdown | | Atajos | `Ctrl+N` nota, `Ctrl+T` archivo, `Ctrl+O`/`Ctrl+S` abrir y guardar; personalizables con `Ctrl+/` | | Ajustes | `Ctrl+,`; `F11` para pantalla completa | | Una sola ventana | Si ya está abierta, `bookos-notepad archivo.txt` entrega el archivo a esa ventana | | Diagnóstico | `bookos-notepad --diagnostico` comprueba Wayland y las herramientas de integración sin abrir nada | ### Decisiones que no se ven - **El campo de texto es propio.** GPUI no trae un editor de varias líneas, así que el Bloc de notas lleva el suyo, con historial de deshacer y búsqueda. Vive dentro de la app, no en `bookos-ui`. - **El estado se comparte con la versión Tauri** (`~/.config/bookos-notepad/state.json`): puedes volver a la anterior sin perder nada. - **Un estado ilegible se protege.** Si el JSON no se puede leer, la app no lo sobrescribe: hay que corregirlo o apartarlo con la app cerrada. - **La instancia única se prueba por separado.** La suite normal comprueba la recepción de rutas y sus errores sin sockets ni Wayland. La prueba real con sockets UNIX va aparte, con `--ignored`. ### Qué se ha quitado > [!IMPORTANT] > **El bloqueo de anuncios se ha retirado** de las versiones GPUI y Tauri; los ajustes antiguos no activan ningún filtro. En GPUI, el HTML y las URL se abren en el navegador con `xdg-open`, y **los modos de YouTube y mpv siguen solo en la versión Tauri**. Las actualizaciones las gestiona Ajustes, sin consultas HTTP propias a GitHub. --- ## Lo que han aportado a la base común `bookos-ui` sigue teniendo **2.206 líneas**: tema, ventana, barra lateral, controles, campo de texto, menú, avisos, estado e iconos. Las tres apps nuevas la usan, pero **no le han añadido nada**. | Pieza nueva | Dónde vive hoy | Ya reutilizable | |:--|:--|:--| | Editor multilínea con deshacer | Bloc de notas | No: está dentro de la app | | Gráficas con huecos y tooltip | Monitor del sistema | No: está dentro de la app | | Lista virtual con cabecera fija | Monitor del sistema | No: está dentro de la app | Esto no es un descuido sino la deuda de la Fase 2: cada app resolvió lo suyo antes de saber qué compartían. Cuando se suba a `bookos-ui`, un arreglo llegará a todas en la siguiente compilación. --- ## Seamos honestos con los números ```chart tipo: barras titulo: Tamaño instalado de cada app GPUI unidad: MB Explorador 0.7: 26.2 Monitor del sistema 0.1: 21.4 Fuentes 0.1: 16.8 ``` El binario de optimización completa de Efectos de sonido pesa 28,8 MB. No lo ponemos en la gráfica porque todavía no hay paquete que compararle. El Bloc de notas no tiene compilación de lanzamiento generada. > [!WARNING] > **Estas apps pesan más que sus versiones Tauri**, y la comparación sigue engañando por la misma razón que la vez anterior: una app Tauri se apoya en un WebKitGTK que vive aparte (135 MB compartidos), mientras que GPUI lo lleva todo dentro. El tamaño en disco no dice cuál gasta más. **Arranque en frío, arranque en caliente, memoria y batería siguen sin medirse.** Usaremos el mismo método que anunciamos: Galaxy Book5 Pro, perfil equilibrado, sin red, mediana de 20, 20, 10 y 3 repeticiones. Publicaremos las cifras cuando sean fiables, también las que no salgan a nuestro favor. --- ## Hoja de ruta, al día ```roadmap titulo: El camino hacia un ecosistema nativo - [x] Explorador y Fuentes | Completado | Versiones 0.7 y 0.1 · Interfaz en GPUI y selector nativo de archivos - [x] Primeras apps de sistema y productividad | Hecho, pendiente de paquete | Efectos de sonido, Monitor del sistema y Bloc de notas - [>] Base compartida | En curso | Subir a bookos-ui lo que las apps han resuelto por su cuenta - [ ] Apps de uso diario | Planificado | Calculadora y Reloj - [ ] Multimedia | Planificado | Visor, Reproductor y Grabadora de voz - [ ] Núcleo del sistema | Planificado | Ajustes y BookOS Store ``` ```chart tipo: donut titulo: Apps por fase unidad: apps Ya en GPUI: 5 Uso diario: 2 Multimedia: 3 Núcleo del sistema: 2 Sin fase todavía: 6 ``` Lo que cambia respecto al primer plan: - **El Bloc de notas sale de «uso diario»** porque ya está en GPUI. Quedan en esa fase la Calculadora y el Reloj. - **Efectos de sonido y Monitor salen de «sin fase».** Se han migrado antes de que les tocara fase. - **El orden por riesgo no cambia.** Multimedia y el núcleo del sistema siguen al final. Siguen sin fase: Shell, Remap, BookOS Link, Calendario, Lumina y Cámara. > [!IMPORTANT] > **Sin prisas y sin cortes:** cada app sigue en Tauri hasta que su versión GPUI la iguala. El Bloc de notas ya muestra el precio de esa regla: lo que no iguala, como los modos de YouTube y mpv, se queda en la versión anterior, y se dice. --- ## Riesgos y cómo los gestionamos | Riesgo | Qué hacemos | |:-------|:------------| | Cada app resuelve sus propios componentes y las copias se separan | Fase 2: subir editor, gráficas y lista virtual a `bookos-ui` | | Accesibilidad: nuestra copia de GPUI aún no expone la interfaz a lectores de pantalla en Linux | El Monitor y el resto siguen sin validar con lectores. Sigue siendo requisito antes de migrar Ajustes y la Store | | Una app nueva con fallos que la anterior ya no tenía | Pruebas automáticas, capturas reales y las diferencias conocidas escritas | | Prometer más de lo que se ha demostrado | Lo no medido y lo no probado se cuenta en este mismo documento | > [!CAUTION] > **La accesibilidad sigue siendo la deuda más seria.** Con cinco apps ya en GPUI, la mayor parte sin validar con un lector de pantalla, el problema es más grande que hace unos días, no más pequeño. --- ## Preguntas frecuentes ### ¿Puedo usar ya las nuevas versiones? Del Monitor del sistema hay un paquete RPM generado. De Efectos de sonido y del Bloc de notas, todavía no: están compiladas y probadas, pero falta empaquetarlas. ### ¿Perderé mis notas o mis ajustes? No. El Bloc de notas usa `~/.config/bookos-notepad/` y `~/.local/share/bookos-notepad/notas/`, los mismos sitios que la versión Tauri. Efectos de sonido lee `~/.config/bookos/audio.json` con el mismo formato que antes. ### ¿Es esto Dolby Atmos? No. Es una ecualización y un limitador propios, afinados con los parámetros del altavoz del equipo. No distribuimos código ni archivos de Samsung o Dolby. ### ¿Por qué el Monitor no deja de medir si lo minimizo? Porque la versión de GPUI que usamos no avisa de la minimización. Preferimos medir de más que suponer mal. ### ¿Y si echo de menos algo de la versión Tauri? Díselo a la [comunidad](/community.html). Lo que se ha quitado a propósito, como el bloqueo de anuncios, está dicho arriba; lo que falta sin querer es un fallo. --- ## Participa Si quieres probar las versiones GPUI antes que nadie o decirnos qué app debería ir después, pásate por la [comunidad](/community.html). Y si algo falla, cuéntanoslo: es la forma más rápida de que llegue bien a todo el mundo. --- ## Referencias - Zed Industries. *GPUI*, el framework de interfaz del editor Zed. [github.com/zed-industries/zed](https://github.com/zed-industries/zed) - *PipeWire*. [pipewire.org](https://pipewire.org) - *EBU R 128*, recomendación de sonoridad. [tech.ebu.ch/docs/r/r128.pdf](https://tech.ebu.ch/docs/r/r128.pdf) - *UPower*. [upower.freedesktop.org](https://upower.freedesktop.org) - *LADSPA*, estándar de plugins de audio. [ladspa.org](https://www.ladspa.org) - El primer documento de la serie: *El futuro de BookOS se escribe en Rust*.
Índice
Más noticias