See it in action




Features
One search field
Applications, commands, clipboard history, snippets, file search, a calculator, an emoji picker and a window switcher. Matching is fuzzy, so fox finds Firefox.
Raycast extensions
Runs Raycast extensions written in TypeScript and React through its extension host, and installs them from the Raycast Store or the Extension Store. raycast:// sign-in links come back to the extension that asked.
Scripts
Raycast-style script commands in any language, and Rhai scripts that declare the capabilities they need. A Rhai script you add yourself gets none of them until you allow it.
Made for Wayland
A layer-shell surface on Sway, Hyprland and niri; a normal window on GNOME, with the GNOME Shell extension for window switching and clipboard. On GNOME the hotkey comes from the GlobalShortcuts portal.
Follows the desktop
Draws light or dark to match the system setting, and changes when you switch it.
Says what works
doctor reports the session, portals, engine and index state on your machine, and names what is missing.
Why Compass over Vicinae
Compass is a hard fork of Vicinae, and it exists because of the work of Vicinae's maintainers and contributors. Vicinae's C++ engine and its extension ecosystem are the behavioural reference for the port. These are the differences.
Faster, and lighter
Measured head-to-head on the same machine, the engine is ready to answer in 96 ms against Vicinae's 1.7 s, the launcher is populated in under a second against 2.3 s, and results follow a keystroke in 56 ms against 153 ms, with less memory and a third of the shared libraries. See the table below.
Memory-safe Rust
The engine, the interface and the extension host are Rust, with unsafe_code = "forbid" across the workspace. The only exceptions are three small binding crates, for SQLCipher, the Wayland protocols and the bridge that puts blur behind the launcher.
No Qt
The interface is drawn with Iced on wgpu. The Flatpak contains no Qt, no C++ and no CMake build, and it runs on org.freedesktop.Platform instead of the KDE runtime.
Wayland-native
On compositors with wlr-layer-shell (Sway, Hyprland, niri) the launcher is a layer surface on the top layer, the way a launcher is meant to appear. There is no X11 code path, and the Flatpak asks for no X11 socket.
A Flatpak with an extension sandbox
Extensions run in a Node worker behind Landlock and a seccomp filter. An extension can write only its own directories, it reads a short allowlist of $HOME, and it cannot run a file it wrote. When an extension needs a program on the host, Compass asks first: Raycast's Brew extension gets "Allow Brew to run brew?" with Allow Once, Always Allow or Deny, and Script Permissions takes the grant back. The engine refuses to run extensions if the sandbox helper is missing.
Raycast extension compatibility
Extensions built for Raycast install from the Raycast Store and run through the same TypeScript API that Vicinae exposes, including OAuth sign-in through raycast:// links. Where an extension assumes macOS, Compass maps it to Linux: open goes to xdg-open, pbcopy and pbpaste to the clipboard, and Homebrew to Linuxbrew. AppleScript is refused by name rather than failing obscurely.
Full feature parity
Every Linux feature of the C++ engine has a row in the parity ledger, and all 152 are implemented in Rust and covered by tests. Where Compass behaves differently on purpose, the ledger says so and why.
Performance
Both launchers were measured head-to-head by the same script on the same machine: Compass against the unmodified Vicinae 0.29.0 AppImage, cold-starting on headless Sway with software rendering, medians of five alternating runs. The machine was shared with other builds, so compare the ratios rather than the absolute times. Per core, Compass's fuzzy scorer is slower than Vicinae's; spread across cores it roughly evens out. Method, raw data and the command to reproduce it.
| Measurement | Compass | Vicinae 0.29.0 |
|---|---|---|
| Engine ready to answer | 96 ms | 1,746 ms |
| Launcher populated on screen | 0.9 s | 2.3 s |
| Keystroke to updated results | 56 ms | 153 ms |
| Idle memory (PSS, all processes) | 218 MiB | 263 MiB |
| Shared libraries loaded | 46 | 136 |
| Program files on disk | 72 MB | 310 MB |
Get started
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
flatpak remote-add --if-not-exists tuna-os https://tunaos.org/flatpak/tuna-os.flatpakrepo
flatpak install tuna-os org.tunaos.compassflatpak run org.tunaos.compass start
flatpak run org.tunaos.compass doctorgit clone https://github.com/tuna-os/compass.git
cd compass
cargo run -p compass -- ui