Cross-platform radial pie-menu launcher. Inspired by AutoHotPie.
- Radial Menu — Hold a hotkey to show a pie menu at your cursor, release to execute
- 13+ Actions — Send keys, open URLs, run commands, Lua scripts, clipboard, media control, and more
- Visual Editor — WYSIWYG menu editor with live Canvas preview, drag-and-drop slice reordering
- App Profiles — Automatic menu switching based on the active window (title / process name)
- Hierarchical Submenus — Nest menus up to 3 levels deep
- Icon System — Lucide Icons + emoji picker
- Lua Scripting — Embedded Lua 5.4 for custom automation
- Import/Export —
.radialsan.jsonpackages, AutoHotPie settings import - i18n — English and Japanese
- Cross-platform — Windows, macOS, Linux
| Layer | Technology |
|---|---|
| Framework | Tauri v2 (Rust) |
| Frontend | React + TypeScript + Vite |
| Styling | Tailwind CSS |
| Menu Rendering | HTML5 Canvas |
| Input Capture | rdev (global key press/release) |
| Input Simulation | enigo |
| Window Detection | x-win |
| Scripting | mlua (Lua 5.4) |
- Node.js 20+
- Rust (stable)
- Platform dependencies:
- Linux:
sudo apt install libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libx11-dev libxdo-dev libxcb-shape0-dev libxcb-xfixes0-dev - macOS: Xcode Command Line Tools, Accessibility permission for input capture
- Windows: WebView2 (included in Windows 10/11)
- Linux:
git clone https://github.com/uboar/radialsan.git
cd radialsan
npm installcargo tauri dev# Rust tests
cd src-tauri && cargo test
# Frontend tests
npx vitest run
# TypeScript check
npx tsc --noEmitcargo tauri build| OS | Permission | Required For |
|---|---|---|
| macOS | Accessibility | Global hotkey capture (rdev) |
| macOS | Screen Recording | Window title detection (optional) |
| Linux (Wayland) | input group |
Global input via /dev/input |
src/ # React frontend
components/
PieMenu/ # Canvas rendering, geometry, animation
Editor/ # Visual editor components
Layout/ # Sidebar, layout
pages/ # Dashboard, MenuEditor, Profiles, Settings
stores/ # Zustand state management
i18n/ # Translations (en, ja)
utils/ # Sharing, AutoHotPie import
src-tauri/ # Rust backend
src/
actions.rs # Action execution (sendKey, openUrl, Lua, etc.)
commands.rs # Tauri IPC commands
input_listener.rs # Global hotkey capture (rdev)
lua_engine.rs # Embedded Lua scripting
profiles.rs # Active window monitoring
settings.rs # Settings persistence (JSON)
tray.rs # System tray