A blazing-fast, GPU-accelerated launcher and script engine for macOS. Built with Rust & GPUI for zero-lag performance and dynamic UI layouts.

Core Pillars • Installation • Key Features • Widgets & Theming • Interactive Scripts • Shortcuts

demo.mp4

Recorded demo showing instant search, theming with custom theme_switcher script, clipboard manager script, and native file search plugin

AeroFi is a modern modal launcher designed for speed-obsessed macOS users. It bridges the gap between lightweight Unix dmenu/rofi tools and feature-rich productivity shells like Raycast, giving you rich UI components with zero configuration bloat.

Pure Rust and GPUI at its core. Experience instant cold starts, true zero-lag typing, and native Metal rendering without Electron, WebViews, or heavy runtimes.

No bulky SDKs or complex API wrappers. Your scripts (Bash, Python, Go) simply pipe structured text to stdout. AeroFi instantly turns it into a rich, interactive dashboard with live filtering and state management.

Strict separation of concerns: scripts don't know about pixels, they just request a layout (e.g. # @aerofi.preset grid). Your TOML theme takes over, automatically adapting the Dynamic Window Shell (resizing the window, padding, and icons) to perfectly fit the mode. No ugly CSS/RASI complexity.

Install aerofi and start it as a native macOS background service:

brew install frostymur/tap/aerofi

# Start as a background service (starts automatically at login)

brew services start aerofibrew upgrade aerofi picks up new releases.

Download the latest prebuilt binary from GitHub Releases:

- Apple Silicon (M1–M6): aerofi-mac-arm64.tar.gz

- Intel Mac (x86_64): aerofi-mac-x86_64.tar.gz

Unpack and place in your $PATH (e.g. /usr/local/bin or ~/.local/bin):

# Example for Apple Silicon:

curl -L -o aerofi.tar.gz https://github.com/frostymur/aerofi/releases/latest/download/aerofi-mac-arm64.tar.gz

tar -xzf aerofi.tar.gz

sudo mv aerofi /usr/local/bin/

# Run aerofi:

aerofi &cargo install --git https://github.com/frostymur/aerofi aerofigit clone https://github.com/frostymur/aerofi

cd aerofi

cargo build --release

./target/release/aerofiPerformance

- 🪶 ~40 MB memory footprint

- 🚀 Instant startup and 120 FPS Metal rendering

Compatibility

- 📜 Huge ecosystem: drop in any Raycast script command or build your own with @aerofi.*tags

- 🔑 Zero-friction Carbon hotkey (no Accessibility permissions required)

Flexibility & Customization

- 6 execution modes: silent,compact,inline,fullOutput,pipe, and interactiverofi

- 📌 Pinned items — keep favourite apps & scripts at the top of the results

- 🧩 Declarative widget engine (custom headers, footers, action buttons, status pills)

- 🎨 Deep TOML theming (frosted glass blur, fonts, $palettetokens, custom layouts)

- 🔌 Native C ABI plugins (Rust, C, C++, Swift)

Developer-Friendly

- 💻 Open source (MIT license)

- 📚 Full documentation & examples

- 🚀 Active development

aerofi is completely customizable via transparent, human-readable TOML files in ~/.config/aerofi/:

- Declarative Widget System: Compose custom headers, footers, status pills, and action strips directly in theme.tomlusingbox,text,icon,image,spacer,divider, andbuttonwidgets.

- Layout Control: Freely rearrange the UI hierarchy in [mainbox](e.g. place widgets aboveInputBar, between elements, or belowListView).

- macOS Glassmorphism: Native translucent frosted glass blur, opacity, border radii, shadows, and reusable $palettecolor tokens.

# Example: Adding a custom header and action footer in theme.toml

[mainbox]

children = ["header_bar", "InputBar", "ListView", "footer_bar"]

[widgets.header_bar]

type = "box"

orientation = "horizontal"

gap = 8.0

children = ["header_title", "spacer", "status_badge"]

[widgets.header_title]

type = "text"

text = "aerofi"

color = "$accent"

font_weight = "bold"The built-in Dark Transparent theme is always available. Additional curated

themes ship in examples/themes/ — copy any of them to

~/.config/aerofi/themes/ and select it with theme = "<name>":

Themes support modular splitting via imports = ["colors/...", "layouts/..."] to effortlessly mix-and-match color palettes and window layouts.

Read the Customization Guide and explore

examples/themes/for complete references.

Turn any Bash, Python, Node.js, or Swift script into a dynamic macOS mini-app with @aerofi.mode rofi:

- Bidirectional Streaming: Your script outputs items via stdoutand receives keyboard events (Enter,Tab,Ctrl+D, custom keys) viastdinin real-time.

- Pango Markup Formatting: Full support for rich colors, bold text, and badges (<span foreground="#7aa2f7" weight="bold">Title</span>).

- Multi-Selection & Actions: Interactive multi-select with Tab, batch deletion withCtrl+D, and custom keybindings.

- Instant Live Updates: Update lists, badges, and search prompts dynamically without restarting the script.

#!/usr/bin/env bash

# @aerofi.title Theme Switcher

# @aerofi.mode rofi

# @aerofi.icon 🎨

echo -e "\0prompt\x1fSelect a theme:\n\0markup-rows\x1ftrue\n\0flush"

echo -e "<b>Tokyo Night</b>\0icon\x1femoji:🌃\0info\x1fActive"

echo -e "<b>Gruvbox Dark</b>\0icon\x1femoji:🌲\0info\x1fCommunity"Real-world scripts available in examples/scripts/:

- clipboard.py— Interactive clipboard manager with syntax highlighting, multi-select (- Tab), and item deletion (- Ctrl+D)

- theme_switcher.py— Interactive Rofi theme previewer with live swatches and instant config updating

- full-output.sh— Markdown viewer rendering formatted GitHub Flavored Markdown inside the launcher

- compact.sh— Progress tracking with non-blocking floating toast status indicators

- silent.sh— Background automation with completion notification toasts

Copy any script to ~/.config/aerofi/scripts/ to use it immediately.

Read the Scripting & Rofi Protocol Guide and the Multi-Step Guide, and check out

examples/scripts/for working implementations.

aerofi is inspired by rofi's Unix philosophy but built specifically for macOS:

- Same stdin/stdout piping model (rofimode = rofi-compatible)

- Native macOS experience (no X11 layers)

- GPUI rendering (120 FPS, Metal acceleration)

- Compatible with community script ecosystems

You can port rofi scripts to aerofi with minimal changes.

Launching applications. Enter (or clicking a row) activates an app that is

already running, matching macOS open. Press Shift+Enter to force a new

instance (open -n) — handy for apps like Terminal or Finder when you want a

second window. Apps that enforce a single instance may ignore Shift+Enter.

- Documentation: docs/ — config schema, scripting & Rofi protocol, multi-step guides, and plugin development

- Examples: examples/scripts/ for working scripts

- Issues: GitHub Issues

- Discussions: GitHub Discussions

We welcome contributions! See CONTRIBUTING.md for guidelines.

MIT — See LICENSE

- Built on GPUI — the GPU-accelerated UI framework from Zed

- Inspired by rofi

- Drop-in compatibility with community script-commands