When we told the story of the move to GPUI, there were only two native apps: Explorer and Fonts. Three more have joined since: **Sound Effects**, **System Monitor** and **Notepad**. Here is where each one stands today, which non-obvious decisions we made along the way, what is still unvalidated and what the roadmap looks like now. --- ## In short | | What it means | |:--|:--| | **What is on GPUI** | Five apps: Explorer 0.7, Fonts 0.1, Sound Effects 0.2, System Monitor 0.1 and Notepad 0.7 | | **What has been checked** | They build and pass their tests (105 across the three new ones). The Monitor and Sound Effects have also been reviewed with real Wayland screenshots | | **What has not reached your machine yet** | The GPUI versions of Sound Effects and Notepad have no published package yet; the Monitor's is packaged | | **What stays the same** | Your settings and notes stay in the same folders the Tauri versions used | | **What we do not know yet** | How much startup, memory and battery improve. We still have not measured it | > [!TIP] > **In short:** from two native apps to five, with one condition unchanged: none replaces the previous one until it matches it. --- ## Where we were and where we are | App | Internal name | GPUI version | Lines of Rust | Status | |:--|:--|:--|--:|:--| | Explorer | `bookos-explorer` | 0.7.0 | 11,974 | In use. It is the system file picker | | Fonts | `bookos-fonts` | 0.1.0 | 3,884 | In use | | **Sound Effects** | `atmos` · `bookos-audio` | 0.2.0 | 2,771 | Built and tested; no published RPM | | **System Monitor** | `system-monitor` | 0.1.0 | 8,359 | RPM built (`0.1.0-4`) and installable | | **Notepad** | `bookos-notepad` | 0.7.0 | 7,825 | Built and tested; no published RPM | > [!NOTE] > The three new ones live alongside their Tauri version, which stays in the repository as a reference. On this laptop, the installed versions of Sound Effects (0.1.0) and Notepad (0.6.2) are still the previous ones. ```chart tipo: barras titulo: Rust code written for GPUI unidad: lines Explorer: 11974 System Monitor: 8359 Notepad: 7825 Fonts: 3884 Sound Effects: 2771 bookos-ui: 2206 ``` --- ## Sound Effects · 0.2 An equalizer designed for the Galaxy Book5 Pro speakers (Realtek ALC298), with a native interface and its own audio engine on top of PipeWire. | Feature | What it does | |:--|:--| | Profiles | Six saved profiles, with ten graphic bands you edit by dragging points, with a slider or with the arrow keys | | Tone and dialogue | Tone and intensity control, and a centre boost so voices stay clear | | Stereo widening | Widens the stereo image without moving the centre | | Speaker correction | Parameters taken from the tuning Samsung already shipped on the machine | | Limiter | Look-ahead stereo limiter, so boosting bass does not distort | | Own service | `bookos-audio.service` in the user `systemd`, without touching the generic PipeWire service | | Command line | `bookos-audioctl` enables, disables, reports status and restores | The signal chain, at 48 kHz: ```text 20 biquads per channel → mid/side → dialogue and width → recomposition → EBU R128 loudness (3 s window) → smoothed gain → look-ahead stereo limiter → speakers ``` ### Decisions you do not see - **The limiter follows real peaks.** The previous version permanently subtracted an estimate of the worst possible boost. Now the gain reduction follows the peaks of both channels at once, with a common gain, so the balance is not thrown off. It adds **5 ms** of look-ahead, recovers with a time constant of **150 ms** and the ceiling is **−1 dBFS sample peak**. - **The LADSPA plugin ships inside the program.** It is compiled with `rustc`, embedded in the executable and written out when the engine is configured. There is nothing to install separately and no external DSP library. - **An unreadable file is never overwritten.** If `~/.config/bookos/audio.json` is broken, the app warns and leaves it as it is. - **Settings are applied one at a time.** They are replaced through a temporary file and handled by a single worker; on close, it waits for the last one, even if it arrives in the middle of a drag. ### What it does and what it does not > [!WARNING] > **This is not Dolby Atmos.** There is no object decoder and no manufacturer algorithm, and we do not pretend otherwise. Nor do we promise it sounds the same as on Windows: that needs comparative listening and microphone measurement, and neither has been done yet. - Desktop mode improves **only the 16 sound events of the BookOS theme**. Music and video do not go through the DSP. An exact copy of each original is kept, and a restore that would overwrite later changes is refused. - The GPUI interface and the global engine stay in the code for manual use; they are not enabled when the variants are installed. - The native interface is in Spanish only. The language catalogues of the web version remain in the Tauri reference. - The standalone service is generated, but its installation has not been run in a real session. The digital measurements (signal captured on a null sink, limiter bounds, exact restore) are in the repository. They show the processing does what it says; they do not show that it sounds better. --- ## System Monitor · 0.1 The monitor that shows what the machine is consuming, now without Tauri, GTK or WebKit. | Feature | What it does | |:--|:--| | Seven sections | CPU, GPU, RAM, Disk, Network, Battery and Other | | Processes | Grouped, with their threads, search and filters | | Closing processes | With prior confirmation | | Power | Power profile switching from the app itself | | Battery | UPower history over three ranges | | Activity island | Fed by the same sample as the window | The data is the machine's own: Intel CPU, `xe` GPU, Samsung battery, NVMe and the sensors the kernel publishes. Where a driver does not publish a value, the app shows it as absent; no value is made up. ### Decisions you do not see - **A single sampling sequence for the window and the island.** The original advanced the same counters from two different consumers, and the two overwrote each other's time reference. - **Nothing blocks the interface thread.** `/proc` reads and D-Bus calls happen off it. A polkit query to switch profile does not stop sampling. - **One virtual list for the whole detail view.** The summary is the first item, followed by the process rows, with a fixed column header. An earlier version put a 420 px table inside the page and the wheel stopped advancing when it reached it; a test with the wheel reproduced it and it was fixed by unifying the scrolling. - **The process tree uses a per-parent index.** So not every process is walked to find the children of each node. - **A recycled PID cannot take the signal.** The confirmation stores the PID and the start time, and before sending the signal the process is queried again. If the identity no longer matches, it is refused. The close tests only send signals to `sleep` processes they created themselves. - **Charts are honest about gaps.** Missing samples are drawn as gaps, the axis uses real elapsed time and the battery splits temperature and charge into two panels. ### Known limits > [!WARNING] > **It keeps sampling even when the window is minimized.** The version of GPUI we use does not expose a minimize signal equivalent to `visibilityState`, and we did not want to treat «lost focus» as «minimized». - Not validated on AMD or NVIDIA hardware, nor with screen readers. - Some fixed light-theme colours do not reach AA contrast. The measurement is in the repository; the dynamic palette comes from Settings. - Power profiles and the island depend on the session's services, as in the previous version. --- ## Notepad · 0.7 An editor that mixes two things: **text files** and **notes** with formatting. | Feature | What it does | |:--|:--| | Formatted notes | Blocks, lists and alignment; saved as HTML in `~/.local/share/bookos-notepad/notas/` | | Text files | Open and save through Explorer, which acts as the picker | | Find and replace | `Ctrl+F` and `Ctrl+H` | | Preview | `Ctrl+P`, with Markdown | | Shortcuts | `Ctrl+N` note, `Ctrl+T` file, `Ctrl+O`/`Ctrl+S` open and save; customizable with `Ctrl+/` | | Settings | `Ctrl+,`; `F11` for full screen | | Single window | If it is already open, `bookos-notepad file.txt` hands the file to that window | | Diagnostics | `bookos-notepad --diagnostico` checks Wayland and the integration tools without opening anything | ### Decisions you do not see - **The text field is our own.** GPUI ships no multi-line editor, so Notepad carries its own, with undo history and search. It lives inside the app, not in `bookos-ui`. - **State is shared with the Tauri version** (`~/.config/bookos-notepad/state.json`): you can go back to the previous one without losing anything. - **An unreadable state is protected.** If the JSON cannot be read, the app does not overwrite it: you have to fix it or move it aside with the app closed. - **Single-instance is tested separately.** The regular suite checks path reception and its errors without sockets or Wayland. The real test with UNIX sockets runs on its own, with `--ignored`. ### What has been removed > [!IMPORTANT] > **The ad blocker has been removed** from both the GPUI and Tauri versions; old settings no longer enable any filter. In GPUI, HTML and URLs open in the browser through `xdg-open`, and **the YouTube and mpv modes remain only in the Tauri version**. Updates are handled by Settings, with no HTTP queries of their own to GitHub. --- ## What they have contributed to the shared base `bookos-ui` still has **2,206 lines**: theme, window, sidebar, controls, text field, menu, toasts, state and icons. The three new apps use it, but **have added nothing to it**. | New piece | Where it lives today | Reusable yet | |:--|:--|:--| | Multi-line editor with undo | Notepad | No: it is inside the app | | Charts with gaps and tooltip | System Monitor | No: it is inside the app | | Virtual list with fixed header | System Monitor | No: it is inside the app | This is not an oversight but the debt of Phase 2: each app solved its own problem before we knew what they shared. Once these move into `bookos-ui`, a fix will reach every app on the next build. --- ## Let us be honest with the numbers ```chart tipo: barras titulo: Installed size of each GPUI app unidad: MB Explorer 0.7: 26.2 System Monitor 0.1: 21.4 Fonts 0.1: 16.8 ``` The fully optimized binary of Sound Effects weighs 28.8 MB. We leave it out of the chart because there is no package to compare it with yet. Notepad has no release build generated. > [!WARNING] > **These apps are bigger than their Tauri versions**, and the comparison is misleading for the same reason as last time: a Tauri app leans on a WebKitGTK that lives separately (135 MB shared), while GPUI carries everything inside. Disk size does not tell you which one uses more. **Cold start, warm start, memory and battery are still unmeasured.** We will use the same method we announced: Galaxy Book5 Pro, balanced profile, no network, median of 20, 20, 10 and 3 runs. We will publish the figures when they are reliable, including the ones that do not go our way. --- ## Roadmap, up to date ```roadmap titulo: The road to a native ecosystem - [x] Explorer and Fonts | Done | Versions 0.7 and 0.1 · GPUI interface and native file picker - [x] First system and productivity apps | Done, package pending | Sound Effects, System Monitor and Notepad - [>] Shared base | In progress | Move into bookos-ui what the apps solved on their own - [ ] Daily-use apps | Planned | Calculator and Clock - [ ] Multimedia | Planned | Viewer, Player and Voice Recorder - [ ] System core | Planned | Settings and BookOS Store ``` ```chart tipo: donut titulo: Apps per phase unidad: apps Already on GPUI: 5 Daily use: 2 Multimedia: 3 System core: 2 No phase yet: 6 ``` What changes compared with the first plan: - **Notepad leaves «daily use»** because it is already on GPUI. Calculator and Clock remain in that phase. - **Sound Effects and Monitor leave «no phase».** They were migrated before their phase came up. - **The risk-based order does not change.** Multimedia and the system core stay at the end. Still without a phase: Shell, Remap, BookOS Link, Calendar, Lumina and Camera. > [!IMPORTANT] > **No rush and no cuts:** each app stays on Tauri until its GPUI version matches it. Notepad already shows the price of that rule: what does not match, like the YouTube and mpv modes, stays in the previous version, and we say so. --- ## Risks and how we handle them | Risk | What we do | |:-----|:-----------| | Each app solves its own components and the copies drift apart | Phase 2: move the editor, charts and virtual list into `bookos-ui` | | Accessibility: our copy of GPUI does not yet expose the interface to screen readers on Linux | The Monitor and the rest are still unvalidated with screen readers. Still a requirement before migrating Settings and the Store | | A new app with bugs the old one no longer had | Automated tests, real screenshots and known differences written down | | Promising more than has been shown | What is unmeasured and untested is stated in this very document | > [!CAUTION] > **Accessibility remains the most serious debt.** With five apps already on GPUI, most of them unvalidated with a screen reader, the problem is bigger than a few days ago, not smaller. --- ## Frequently asked questions ### Can I use the new versions already? There is a built RPM for the System Monitor. For Sound Effects and Notepad, not yet: they are built and tested, but still need packaging. ### Will I lose my notes or my settings? No. Notepad uses `~/.config/bookos-notepad/` and `~/.local/share/bookos-notepad/notas/`, the same places as the Tauri version. Sound Effects reads `~/.config/bookos/audio.json` in the same format as before. ### Is this Dolby Atmos? No. It is our own equalizer and limiter, tuned with the machine's speaker parameters. We do not distribute any Samsung or Dolby code or files. ### Why does the Monitor keep measuring when I minimize it? Because the version of GPUI we use does not report minimization. We would rather measure too much than assume wrongly. ### What if I miss something from the Tauri version? Tell the [community](/community.html). What was removed on purpose, like the ad blocker, is stated above; what is missing by accident is a bug. --- ## Get involved If you want to try the GPUI versions before anyone else, or tell us which app should go next, drop by the [community](/community.html). And if something breaks, tell us: it is the fastest way for it to reach everyone in good shape. --- ## References - Zed Industries. *GPUI*, the UI framework of the Zed editor. [github.com/zed-industries/zed](https://github.com/zed-industries/zed) - *PipeWire*. [pipewire.org](https://pipewire.org) - *EBU R 128*, loudness recommendation. [tech.ebu.ch/docs/r/r128.pdf](https://tech.ebu.ch/docs/r/r128.pdf) - *UPower*. [upower.freedesktop.org](https://upower.freedesktop.org) - *LADSPA*, audio plugin standard. [ladspa.org](https://www.ladspa.org) - The first document in the series: *The future of BookOS is written in Rust*.
Contents
More news