Skip to content

fastframe egui on rails

The small crates behind ZapFast, Spotifast, Solco, TonePush and Chat with Work. Everything a native egui app needs besides its own interface, extracted from apps that already ship it.

fastframe logo

The crates

Take only the crates your app uses. Each one does one job and does it with no configuration.

CrateWhat it does
fastframe-textFollows the desktop's font rendering settings (hinting, antialiasing, sub-pixel positioning, text weight) in egui, and snaps hand-placed text to whole pixels.
fastframe-fontsBundled Inter (tabular figures) or the platform's own interface face at the app's weights, and installed fonts for every script it lacks, aligned to its baseline.
fastframe-emojiColour emoji in the platform's own style (Apple, Segoe UI, the desktop's) with a bundled fallback, in every egui text through an egui plugin or inline as selectable placeholders, drawn off the interface thread.
fastframe-iconsEmbedded SVG icon sets for egui: the icons! macro, a bytes loader that survives reduce_texture_memory, and the Lucide icons the apps share.
fastframe-themeJSON colour palettes, a catalogue loaded off the interface thread, the eight shared palettes, a light and a dark palette that follow the system's appearance, following the Omarchy desktop's theme with filesystem notifications, and revealing a change of colours from the middle of the window outwards.
fastframe-i18nBundled gettext catalogs: a build-time PO compiler for build.rs, gettext/pgettext/ngettext lookups, system language detection, and the template update script.
fastframe-logLogs to stderr and a per-run file for bug reports, rewrites private targets, and records panics without their payload.
fastframe-trayA tray item with the app's own menu: StatusNotifier on Linux, the notification area on Windows, the menu bar on macOS, with native menus, white and black renditions of the icon, and Dock reopening across window lifecycles.
fastframe-dockAn embedded Dock icon for unbundled macOS runs, hiding the macOS Dock icon at runtime (a menu-bar-only app), and unread badges on the macOS Dock, compatible Linux launchers and the Windows taskbar.
fastframe-titlebarThe title bar an app draws itself: a header that moves the window and answers a double-click as each platform does, room kept for the buttons (the traffic lights on macOS), and on Windows and Linux caption buttons in the desktop's layout and resizable edges.
fastframe-shellKeeps an app running without a window around eframe::run_native, starts hidden, reopens windows at their remembered size, place and zoom, brings back windows restored off-screen, asks niri to raise the window, and logs updates that freeze it.
fastframe-audioAudio output with the app's own renderer: a stream that gets no callbacks while paused, follows the default device, reopens after failures, keeps a clock of what has played, and gives the thread that feeds it precedence under load.
fastframe-scrollScrolling that feels like the platform's: a 120-point wheel step, and Linux touchpad gestures that keep their speed, glide after the lift, and hold one axis.
fastframe-autostartStarts the app when the person logs in, with its window or hidden in the tray: an XDG autostart entry or the background portal in a Flatpak, a macOS login item or bundled agent, the Windows Run key, each read back from the platform.
fastframe-instanceOne running copy per user: a crash-safe lock, and a private channel a second launch hands its request over (show the window, open a link, any line the app understands).
fastframe-now-playingThe desktop's media controls: what is playing, with artwork, in MPRIS, the Windows media overlay and the macOS Now Playing panel, and the media keys and buttons back.
fastframe-powerThe device's power, session and network state: energy saver, battery, display, lock, the network's reach and cost, sleep and wake with time to save first, EcoQoS in the background on Windows, keeping audio out of App Nap on macOS, and keeping the computer awake while it plays.
fastframe-dirsThe app's config, state and cache folders: the platform's per-user folders, or a folder next to a portable copy on Windows, filled the first time with a copy of the per-user settings and state.
fastframe-fileReplaces a file without ever leaving it half written: a temporary file beside it, flushed, then moved over it, privately if asked, on a thread of its own so the window never waits for the disk.
fastframe-desktopWho the app is to the desktop and what it says: the desktop entry a Flatpak exports, whether the session is GNOME, a desktop setting read through the portal (no gsettings process), and macOS notification permission guarded by the real application bundle.
fastframe-notificationsNative notifications for GUI apps, TUIs and daemons: bounded delivery, click actions, replacement, withdrawal, permissions and platform identity.
fastframe-updateSelf-update from GitHub releases: detects package-managed installs, verifies signed checksums, installs through a helper with rollback, keeps the handoff format older app versions use, moves renamed installations onto the new name with their launchers, offers an opt-in pre-release channel, and replaces a user's AppImage in place when the app opts in.