Install · Features · Hotkeys · Configuration · Contributing
RustCast is a fast, keyboard-first launcher for Linux. Press Alt + Space to open apps, find files, do maths or just say what you want in plain words. It also ships a full screenshot studio, text recognition (OCR), a window-locking screen recorder and clipboard history, all in one small native app written in Rust.
RustCast for Linux is a fork of RustCast by Umang Surana, the original macOS launcher. This fork ports it to Linux and adds the screenshot studio, OCR, screen recorder, Jev and clipboard history.
- One shortcut for everything. Apps, files, maths, emoji, screenshots, recordings and your clipboard live behind the same keystroke.
- Native and light. A single Rust binary. Heavy tools like OCR and the screenshot editor start only when you use them and exit straight after, so the launcher itself stays small.
- Private by default. Everything runs on your machine. Text recognition happens locally with Tesseract. Nothing is uploaded unless you ask for it.
- Made for Linux. Works on X11 and on GNOME/Wayland through XWayland, follows your desktop's apps, icons and file manager, and registers proper GNOME shortcuts.
Start typing and RustCast finds it:
- Apps from your desktop entries, ranked by how often you use them
- Files and folders in the places you choose
- Maths like
1280 * 3 / 4and unit conversion like10 km to miles. Press Enter to copy the answer. - Emoji: type
fire, press Enter, paste 🔥 - Web search for anything else, with your search engine of choice
- Commands to capture, record, tile windows, quit apps and more
Type jev and describe what you need in plain words. Jev turns it into actions you
run with Enter, and chains several steps into one.
| You type | Jev does |
|---|---|
jev open downloads · jev go to desktop/projects |
Opens folders, even nested ones |
jev open report.pdf in documents · jev find invoice |
Finds and opens files |
jev launch firefox · jev switch to terminal · jev close spotify |
Controls apps and windows |
jev create folder Ideas on desktop · jev make todo.txt |
Creates folders and files |
jev tile left · jev show desktop |
Manages windows |
jev screenshot firefox in 5 seconds · jev copy table from screen |
Captures |
jev record firefox · jev stop recording |
Records |
jev open downloads and firefox then show desktop |
Runs several steps at once |
Super + Shift + S freezes the screen. Drag to select, click a window, or press F for the whole screen. A magnifier shows exact pixels and colours. Then mark it up right there, without opening another app.
| Key | Tool | Key | Tool |
|---|---|---|---|
| A | Arrow | T | Text (click again to edit) |
| L | Line | N | Numbered steps 1, 2, 3… |
| R | Rectangle (outline or filled) | B | Censor: pixelate, blur or solid |
| O | Ellipse | H | Spotlight (dims everything else) |
| P | Pen | I | Colour picker (copies #RRGGBB) |
| M | Highlighter | V | Select, move, recolour, delete |
Finish with Enter to copy, Ctrl+S to save, Ctrl+P to pin it above every window, or Ctrl+B to beautify it with a gradient backdrop, padding, rounded corners and a shadow. Every capture then floats as a thumbnail you can drag straight into any app.
Super + Shift + T, select an area, and the text is on your clipboard. It works on images, videos, terminals, dark themes and PDFs, and it runs entirely on your machine.
![]() Tables. Real rows and columns that paste into a spreadsheet, or save as CSV. |
![]() Smart actions. Links, emails, phone numbers, colours, sums and QR codes become one-click buttons. |
Choose Text, Code (indentation rebuilt exactly) or Table. Any Tesseract
language works, e.g. ocr_languages = "eng+hin".
Super + Shift + R opens the recorder. Lock onto one window and the video shows only that window: anything you drag over it never appears, and neither does RustCast.
- Follows the window when you move it, switch workspaces or even minimise it
- Add more windows mid-recording, placed where they are or as picture-in-picture tiles
- Full-screen recording of any monitor, with RustCast painted out of every frame
- Fixed output size (1920×1080 by default), so resizing never changes the video
- Safe by design: closing the window, logging out or a crash still saves the video and restores your windows
Super + Shift + C shows everything you've copied, text and images, with a large preview. Filter with ← →, type to search, and press Ctrl+1…9 for quick picks. History is kept on disk, so it survives restarts.
Get rustcast-v*-x86_64-linux.tar.gz from the
latest release, then:
tar xzf rustcast-v*-x86_64-linux.tar.gz
cd rustcast-v*-x86_64-linux
./install.sh --startThis installs RustCast to ~/.local/bin, adds it to your app grid, starts it on login
and launches it now. Remove it any time with ./uninstall.sh.
You need Rust and the development packages below.
git clone https://github.com/shashank03-dev/rustcast
cd rustcast
make install-start # build, install, enable autostart and launchmake install does the same without launching, and make uninstall removes everything.
Ubuntu / Debian
sudo apt install libgtk-3-dev libayatana-appindicator3-1 libxcb1-dev libxtst-dev \
tesseract-ocr ffmpeg gstreamer1.0-pipewire libnotify-binFedora
sudo dnf install gtk3-devel libayatana-appindicator-gtk3 libxcb-devel libXtst-devel \
tesseract ffmpeg-free pipewire-gstreamer libnotifyArch Linux
sudo pacman -S gtk3 libayatana-appindicator libxcb libxtst \
tesseract tesseract-data-eng ffmpeg gst-plugin-pipewire libnotifyRelease downloads only need the runtime libraries; the -dev / -devel packages are for
building. Tesseract is only needed for OCR and ffmpeg only for the recorder.
What each package is for
| Package | Used for |
|---|---|
| GTK 3, Ayatana AppIndicator | Tray icon, screenshot editor, OCR window |
| libxcb, libXtst | Windows, hotkeys, tiling, pasting (X11 / XWayland) |
| Tesseract | Text recognition. Add tesseract-ocr-<lang> for more languages. |
| ffmpeg | Encoding screen recordings |
| PipeWire GStreamer plugin | Recording native Wayland windows through the system picker |
| libnotify | "Recording saved" and similar notifications |
translate-shell (optional) |
Translating recognised text in place |
| Desktop | Status |
|---|---|
| GNOME on Wayland (Ubuntu 24.04) | ✅ Tested. Hotkeys are registered as GNOME shortcuts. |
| GNOME / other desktops on X11 | ✅ Native X11 path |
| KDE Plasma, Xfce, Cinnamon | 🟡 Should work through X11 / XWayland. Reports welcome. |
| Wayland-only compositors without XWayland | ❌ Not supported |
| Action | Default |
|---|---|
| Open the launcher | Alt + Space |
| Clipboard history | Super + Shift + C |
| Screenshot | Super + Shift + S |
| Copy text from screen | Super + Shift + T |
| Screen recorder (press again to stop) | Super + Shift + R |
Change them in Preferences (tray menu) or in ~/.config/rustcast/config.toml.
Any capture mode can also be bound to a key of your own, such as Print, by
running rustcast rustcast://capture/<mode> with area, window, fullscreen,
quick, ocr, ocr-code, ocr-table, palette or compare.
RustCast creates ~/.config/rustcast/config.toml on first run. Most settings are also
in Preferences.
Screenshot and recorder settings
screenshot_hotkey = "SUPER+SHIFT+S"
ocr_hotkey = "SUPER+SHIFT+T"
recorder_hotkey = "SUPER+SHIFT+R"
[screenshot]
save_dir = "~/Pictures/Screenshots"
format = "png" # png, jpg or webp
jpeg_quality = 90
enter_action = "copy" # what Enter does in the editor: copy or save
show_magnifier = true
window_snap = true # click a window to capture it (X11)
ocr_languages = "eng" # Tesseract codes, e.g. "eng+hin+deu"
translate_to = "" # empty = system language
show_thumbnail = true
thumbnail_seconds = 10 # 0 = stays until you close it
[recorder]
fps = 30
aspect_lock = true # fit every frame into output_width × output_height
output_width = 1920
output_height = 1080
keep_recording_when_minimized = true
show_cursor = true
record_audio = false
show_indicator = true # floating ● REC pill
picture_in_picture = false # layout for windows added to a locked recording
output_dir = "~/Videos/RustCast"Search, theme and clipboard settings
docs/default.toml shows the main defaults and
docs/config.toml is an example with modes, aliases and shell
commands. Anything you leave out of your config keeps its default.
RustCast works offline. It only goes online when you ask it to:
- Web search opens your browser with the search engine you configured
- Translate in the OCR window uses
translate-shellif installed, otherwise opens Google Translate in your browser - Jev's smart fallback is off unless you add an AI Gateway key
(
AI_GATEWAY_API_KEYor~/.config/rustcast/ai_gateway_key). When enabled, only the sentence you typed is sent, and only when Jev can't work it out itself.
Show the list
- Window tiling works for X11 / XWayland windows. Native-Wayland-only windows can't be moved by other apps, by design.
- Drag and drop from the capture thumbnail targets X11 / XWayland apps; some native-Wayland-only apps may not accept the drop.
- Recorder on Wayland: native-Wayland windows are recorded through the system picker, so minimising and adding windows only work for X11 / XWayland windows. In a Wayland full-screen recording the compositor draws everything, so the ● REC pill is hidden (stop with the hotkey) and opening the launcher mid-recording will show in the video.
- Screenshots on Wayland go through the desktop portal. Clicking a window to capture it needs X11; on Wayland, drag around the window instead.
- The Events page is empty for now; there's no portable Linux calendar source wired up yet.
cargo run # debug build
cargo test # unit tests
cargo clippy --all-targets
cargo fmt --allLive recorder tests
These need an X server, a window manager and ffmpeg. They create their own windows and check real video pixels: overlaps never leak into a locked recording, added windows do appear, RustCast never appears, and minimised or other-workspace windows keep recording.
Xvfb :99 & DISPLAY=:99 openbox &
cargo build
DISPLAY=:99 cargo test recorder::live -- --ignored --test-threads=1Project layout
| Path | What's there |
|---|---|
src/app/ |
Launcher window, pages (clipboard, recorder, settings, emoji) and tray menu |
src/jev.rs |
The Jev command parser |
src/snap/ |
Screenshot overlay, annotation editor, OCR, palette, compare, pin |
src/recorder/ |
X11 and portal capture, encoder and the ● REC pill |
src/platform/linux/ |
Desktop entries, hotkeys, window management, overlays |
assets/brand/ |
The RustCast logo (scripts/brand/ regenerates it) |
launch-video/ |
Scripts and the Remotion project behind the launch video |
Bug reports, ideas and pull requests are all welcome.
- Found a bug? Open an issue. The form asks for your distro and session type, which makes it much faster to fix.
- Want to help? Look for issues labelled
good first issueorhelp wanted. - Before opening a pull request, read CONTRIBUTING.md.
If RustCast saves you time, a ⭐ helps other people find it.
RustCast for Linux builds on RustCast by Umang Surana, the original open-source launcher for macOS. Thank you for making it open source; this project wouldn't exist without it.
RustCast is released under the MIT License. The original RustCast copyright notice is kept in the license file.













