The Raycast experience, finally on Linux.
Crest is a high-performance, keyboard-first productivity launcher for the Linux desktop — a Raycast-style launcher built with Rust + Tauri.
It started as a personal tool (I felt the gap on Linux and built the launcher I wanted). It’s now packaged so others can use it too — with a focus on performance, privacy, and a premium UI.
- Local-first: no accounts, no telemetry, no cloud sync.
- Plugins are manifest-scoped by default: only explicitly listed scripts run.
- Transparent: MIT licensed and built in the open.
- 📋 Clipboard History: Native Rust listener with secure local persistence. Search back through days of copies instantly.
- 🌐 Instant Web Search: Privacy-respecting DuckDuckGo bridge with instant answers (Wikipedia, Calculator, etc.).
- 🚀 App Launcher: Blazing fast application indexing with fuzzy search and shortcut support.
- 🧩 Plugin Engine: Extensions run as separate processes; by default only scripts listed in
~/.config/crest/plugins/manifest.jsonare loaded (seeconfigs/plugins.manifest.example.json). - 💎 Premium UI: Ultra-sharp glassmorphism, ⌘K action bars, and smooth Framer Motion transitions.
- 🔒 Privacy First: 100% local-first. No cloud syncing, no telemetry, no accounts.
- Core: Pure Rust for system integration (Clipboard, Indexing, Search).
- UI: React + TypeScript + Vite, with component-scoped CSS and shared variables in
index.css(no Tailwind in this repo). - Database: Local SQLite for high-speed metadata and history storage.
- Footprint: < 40MB RAM idle usage.
- App search:
.desktopentries are indexed into a local SQLite database, then filtered + ranked with a fuzzy matcher for fast “type to launch” workflows. - Freedesktop icons: app icons are resolved via the system’s icon theme (e.g. Adwaita/Yaru/Papirus/hicolor) and cached; the UI loads them lazily to keep typing smooth.
- Wayland hotkeys: on some Wayland desktops, global “Super/Meta” grabs are restricted. Crest supports a single-instance toggle so a system shortcut can simply run
crestto show/hide the palette. - Clipboard history: captured locally, searchable instantly; nothing leaves your machine.
- Plugins: extensions run as separate processes. By default, Crest only runs scripts listed in
~/.config/crest/plugins/manifest.json(manifest-scoped for safety). - Web answers: uses DuckDuckGo instant answers where available and falls back when SERP HTML is blocked (bot checks can happen).
Hosted user documentation mirrors this README and DOCUMENTBOOK.md: open website/documentation.html in the deployed site bundle (same path live on crest.run-style hosts).
Head to GitHub Releases and download the latest asset for your distribution:
- Debian/Ubuntu:
.debpackage - Generic Linux:
.AppImage
- Debian/Ubuntu:
sudo apt install ./crest_0.2.3_amd64.deb - Generic Linux:
chmod +x crest.AppImage && ./crest.AppImage
Crest registers a global hotkey from your config (default super+Space, i.e. Windows/Meta + Space). Edit ~/.config/crest/config.json and set global_shortcut to any string supported by global-hotkey (modifiers first), e.g. alt+Space, super+K, control+shift+KeyP.
If Super+Space does nothing: you may be on Wayland. Many desktops block the X11-style “global grab” Crest uses internally; failures are easy to miss (they’re not shown in the UI). Check ~/.local/share/crest/hotkey.log (also printed to stderr if you launch crest from a terminal).
Recommended fix: open Settings → Keyboard → Custom Shortcuts, add Super+Space (or another key), and set the command to crest. Crest is a single instance (v0.2.1+): each extra run of crest shows or hides the palette — the reliable approach on Wayland. v0.2.2+ also shows an in-app banner explaining this.
If you prefer the command line or are automating your setup, you can register the shortcut directly into the GNOME dconf database:
-
Register the path:
gsettings set org.gnome.settings-daemon.plugins.media-keys \ custom-keybindings "['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/']"
-
Configure the shortcut:
# Set the Name gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ \ name "Crest" # Set the Command (ensure 'crest' is in your /usr/bin or use full path) gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ \ command "crest" # Set the Binding (<Super>space for Windows+Space) gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ \ binding "<Super>space"
Note: Replace custom0 with custom1, custom2, etc., if you already have other custom shortcuts.
By default plugin_policy is "manifest": only entries in ~/.config/crest/plugins/manifest.json run. Copy configs/plugins.manifest.example.json into that path, list your scripts with relative paths, and chmod +x them as needed. To opt back into the legacy “any file in the folder is runnable” model (full trust), set "plugin_policy": "open" in config.json.
- Search: Start typing to find apps, files, or calculate math.
- Navigate: Use
UpandDownarrows to select results. - Execute: Press
Enterto launch the primary action. - Actions: Press
Cmd + K(orCtrl + K) to open the secondary action menu. - Modes: Use
Backspaceon an empty search bar to switch between Clipboard, Search, and File modes.
Install Rust, Node 18+, and dependencies (npm install). Use npm run tauri:dev so the native shell is built with the optional devtools Cargo feature (WebView inspector). Release builds and CI use **cargo build --release / tauri build without that flag.
- Deep AI Integration: Local LLM support for context-aware commands.
- Plugin Marketplace: A central registry for community extensions.
- Mobile Remote: Control your Linux desktop from your phone via local network.
MIT © Koustav
