Skip to content

Harsha754-ml/Orbit

Repository files navigation

Orbit

πŸͺ Orbit

A contextual radial launcher and OS augmentation layer for Windows

version platform electron license

Download Β  Portable


Middle-click anywhere β†’ your entire workflow at your fingertips. Context-aware. Plugin-powered. Zero friction.


πŸ“‹ Table of Contents


🌌 What is Orbit?

Orbit is a radial launcher that lives in your system tray and appears instantly wherever your cursor is. Instead of hunting through taskbars and start menus, you get a circular menu of your most-used actions β€” right where you're already looking.

It's not just a launcher:

  • 🧠 Context-aware β€” different actions appear automatically depending on which app is in focus
  • πŸ”Œ Plugin-powered β€” 12 built-in plugins add real-time widgets (system monitor, Pomodoro, weather, clipboard history, and more)
  • πŸ‘† Gesture shortcuts β€” fast-swipe in any direction to trigger actions instantly, without opening the menu
  • βš™οΈ Full settings app β€” configure everything through a dedicated UI, no config file editing required

✨ Features

🎯 Core

  • Radial menu with multi-ring layout (scales to 50+ items)
  • Adaptive positioning β€” never goes off-screen
  • GPU-accelerated animations (60 FPS)
  • Middle-click trigger (configurable)
  • Command palette with fuzzy search (Ctrl+Space)
  • Self-healing watchdog with auto-recovery

πŸ”Œ Plugins (12 built-in)

  • System Monitor β€” live CPU & RAM
  • Clipboard History β€” last 10 entries
  • Quick Notes β€” floating notepad
  • Media Controller β€” play/pause/volume
  • Pomodoro Timer β€” focus sessions
  • Weather β€” live conditions (no API key)
  • App Switcher β€” focus any open window
  • Snippets β€” paste saved text anywhere
  • Window Snapper β€” 10 snap positions
  • Script Runner β€” run scripts with live output
  • Recent Files β€” quick file access
  • Focus Mode β€” auto-kill distracting apps

🧠 Intelligence

  • Context Profiles β€” per-app action injection
  • Active window detection (VS Code, Chrome, etc.)
  • Gesture shortcuts (swipe Up/Down/Left/Right)
  • Profile-aware radial β€” prepends relevant actions

πŸ›‘οΈ Stability

  • Strict FSM (idle β†’ expanding β†’ active β†’ collapsing)
  • Atomic config writes with fsync
  • IPC channel whitelist enforcement
  • Sandboxed plugin API with contextBridge
  • JSON structured logs with 5MB auto-rotation

πŸ’Ώ Installation

Option A β€” Installer (Recommended)

βœ… Best for most users. Installs to AppData, creates Start Menu shortcut, registers auto-start.

  1. Go to the Latest Release
  2. Download Orbit-2.0.1-Setup-x64.exe
  3. Run the installer β€” it's a one-click silent install
  4. Orbit launches automatically after install
  5. Look for the πŸͺ icon in your system tray

No AutoHotkey installation required. The AHK v2 runtime is bundled inside the installer.


Option B β€” Portable

βœ… No install needed. Run from any folder, USB drive, etc.

  1. Download Orbit-2.0.1-Portable-x64.exe from Releases
  2. Double-click to run
  3. Orbit starts and adds itself to your system tray

Option C β€” Build from Source

See Building from Source below.


πŸš€ First Launch

When Orbit starts for the first time:

Step What happens
1 Orbit window opens (transparent, fullscreen, always-on-top)
2 The bundled AHK trigger (orbit-trigger.ahk) launches automatically
3 Orbit and the trigger are registered in Windows startup (HKCU\Run)
4 A tray icon appears β€” right-click it to access Settings and other options

To verify it's working: Middle-click anywhere on your desktop or in a browser β†’ the radial menu should appear at your cursor.


πŸ–±οΈ Using Orbit

Opening the Menu

Action Result
Middle-click Opens the radial menu at cursor
Middle-click again / Right-click / Esc Closes the menu
Ctrl + Space Opens the command palette (keyboard search)

Navigating

Action Result
Hover an item Shows label, highlights item
Left-click an item Executes the action
Left-click a group (πŸ“) Expands into sub-menu ring
Scroll wheel Adjusts the menu radius live

Gesture Shortcuts

Swipe your mouse faster than 250ms over 80px in any direction while the menu is open:

Gesture Direction
↑ Swipe Up Configurable action
↓ Swipe Down Configurable action
← Swipe Left Configurable action
β†’ Swipe Right Configurable action

Configure gestures in Settings β†’ Gesture Shortcuts.


βš™οΈ Settings App

Open the Settings window by right-clicking the tray icon β†’ Settings.

PageWhat you can do
🏠 Dashboard Live stats (action count, active plugins, current theme), quick toggles, plugin overview
⚑ Actions Add, edit, delete, and nest actions into groups. Full tree editor with drag support
πŸ”Œ Plugins View all loaded plugins, their version and status. Open the plugins folder
🎯 Context Profiles Create per-app profiles. Actions automatically prepend to your radial when that app is focused
πŸ‘† Gestures Assign any action to Up / Down / Left / Right swipe directions
🎨 Themes Preview and apply visual themes (Dark Neon, Dracula, Solarized, Forest, Sunset, Monochrome)
πŸ”§ General Radius, animation speed, hover labels, sound effects, gesture toggle, hotkey

All changes auto-save and apply to the live radial immediately.


πŸ”Œ Plugins

Plugins live in the plugins/ folder. Drop a .js file in and restart Orbit β€” it loads automatically.

Built-in Plugins

PluginWidgetActions added to radial
πŸ–₯️ System MonitorCPU%, RAM used/total, uptimeToggle widget
πŸ“‹ Clipboard HistoryLast 10 clipboard entries, click to re-copyToggle widget
πŸ“ Quick NotesFloating notepad synced to a .txt fileView Notes, Edit Notes
🎡 Media ControllerNow playing infoPlay/Pause, Next, Prev, Vol+/βˆ’, Mute
πŸ… Pomodoro25-min countdown, break timerStart Focus, Pause, Reset
🌀️ WeatherLive conditions, temp, humidity, windToggle widget
πŸͺŸ App SwitcherAll open windows, click to focusToggle widget
βœ‚οΈ Snippetsβ€”Paste any saved snippet into the active app
πŸ“ Window Snapperβ€”Left/Right/Top/Bottom half, 4 corners, Fullscreen, Center 80%
⚑ Script RunnerLive stdout outputRun any saved PowerShell/cmd script
πŸ“‚ Recent Filesβ€”Dynamic list of recently opened files
🚫 Focus ModeStatus + blocklistEnable/Disable focus, auto-kills distracting apps

Installing a Custom Plugin

1. Drop your .js plugin file into the  plugins/  folder
2. Restart Orbit
3. The plugin loads automatically on startup

Or open Settings β†’ Plugins β†’ πŸ“ Open Folder to navigate there directly.


🎯 Context Profiles

Context profiles let you automatically inject actions into your radial based on which app is in focus.

Built-in profiles

App Injected actions
VS Code (code.exe) New Terminal, Git Status, Git Push, Format (Alt+Shift+F)
Chrome (chrome.exe) New Tab, Dev Tools, Incognito
Edge (msedge.exe) New Tab, Dev Tools
Explorer (explorer.exe) Terminal Here, New Folder

Adding your own profile

  1. Open Settings β†’ Context Profiles
  2. Click + Add Profile
  3. Enter the process name (e.g. figma.exe, slack.exe)
  4. Add actions to the profile
  5. Focus that app β€” your actions appear automatically

πŸ‘† Gesture Shortcuts

Gestures fire instantly without opening the radial menu. Just swipe fast in any direction anywhere on screen.

Configure in Settings β†’ Gestures:

↑  Up    β†’  e.g. Open Terminal
↓  Down  β†’  e.g. Show Desktop
←  Left  β†’  e.g. Previous Track
β†’  Right β†’  e.g. Next Track

Trigger threshold: >80px movement in <250ms


🎨 Themes

Orbit includes 6 built-in themes. Switch from Settings β†’ Themes β€” applies instantly.

Theme Accent Background
Dark Neon #00bfff #0a0a1a
Dracula #bd93f9 #282a36
Solarized #268bd2 #002b36
Forest #98c379 #1a2318
Sunset #e06c75 #1f1a1b
Monochrome #aaaaaa #111111

πŸ”§ Building from Source

Prerequisites

AutoHotkey is not required to build β€” the runtime is downloaded as part of the release process.

Steps

# 1. Clone the repository
git clone https://github.com/Harsha754-ml/Orbit.git
cd Orbit

# 2. Install dependencies
npm install

# 3. Run in development mode
npm start

Build the installer

# Builds both NSIS installer and portable exe β†’ dist/
npm run dist

Output files in dist/:

Orbit-2.0.1-Setup-x64.exe      ← Installer
Orbit-2.0.1-portable.exe       ← Portable
Orbit-2.0.1-win-x64.exe.blockmap

Development tips

# Run without building
npm start

# The settings window opens from tray β†’ Settings
# Config is read/written from config.json in the project root
# Plugins hot-reload is not supported β€” restart after adding plugins

πŸ“ Project Structure

orbit/
β”‚
β”œβ”€β”€ main.js                  ← Electron main process, IPC handlers, AHK manager
β”œβ”€β”€ preload.js               ← contextBridge for the radial overlay window
β”œβ”€β”€ settings-preload.js      ← contextBridge for the settings window
β”œβ”€β”€ defaultConfig.json       ← Default configuration (copied to config.json on first run)
β”œβ”€β”€ themes.json              ← Theme definitions
β”œβ”€β”€ orbit-trigger.ahk        ← AutoHotkey v2 trigger script
β”‚
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ index.html           ← Radial overlay UI
β”‚   β”œβ”€β”€ renderer.js          ← All radial UI logic, plugin widgets, gesture detection
β”‚   └── styles.css           ← Overlay styles
β”‚
β”œβ”€β”€ settings/
β”‚   β”œβ”€β”€ index.html           ← Settings app HTML (7-page SPA)
β”‚   β”œβ”€β”€ app.js               ← Settings app logic
β”‚   └── styles.css           ← Settings app styles
β”‚
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ configLoader.js      ← Atomic config read/write
β”‚   β”œβ”€β”€ contextEngine.js     ← Active window polling
β”‚   β”œβ”€β”€ executor.js          ← Safe action execution
β”‚   β”œβ”€β”€ logger.js            ← Structured JSON logger
β”‚   β”œβ”€β”€ pluginLoader.js      ← Plugin loader and API
β”‚   β”œβ”€β”€ state.js             ← FSM state manager
β”‚   └── windowUtils.js       ← Cursor position helpers
β”‚
β”œβ”€β”€ plugins/
β”‚   β”œβ”€β”€ system-monitor.js
β”‚   β”œβ”€β”€ clipboard-history.js
β”‚   β”œβ”€β”€ quick-notes.js
β”‚   β”œβ”€β”€ media-controller.js
β”‚   β”œβ”€β”€ pomodoro.js
β”‚   β”œβ”€β”€ weather.js
β”‚   β”œβ”€β”€ app-switcher.js
β”‚   β”œβ”€β”€ snippets.js
β”‚   β”œβ”€β”€ window-snapper.js
β”‚   β”œβ”€β”€ script-runner.js
β”‚   β”œβ”€β”€ recent-files.js
β”‚   └── focus-mode.js
β”‚
└── assets/
    β”œβ”€β”€ icon.png             ← App icon (PNG)
    β”œβ”€β”€ icon.ico             ← App icon (ICO, multi-size)
    └── AutoHotkey64.exe     ← Bundled AHK v2 runtime (not in git, added at build time)

πŸ—οΈ Architecture

graph TD
    AHK["πŸ–±οΈ AHK Trigger\norbit-trigger.ahk"] -->|middle-click| Main

    subgraph Main ["βš™οΈ Main Process  (main.js)"]
        direction TB
        IPC["IPC Handlers"]
        CFG["Config Loader"]
        CTX["Context Engine\n(active window poll)"]
        PL["Plugin Loader"]
        FSM["State FSM"]
    end

    Main -->|config-updated| Renderer
    Main -->|context-update| Renderer
    Main -->|plugin-broadcast| Renderer

    subgraph Renderer ["πŸ–ΌοΈ Renderer  (renderer.js)"]
        direction TB
        RADIAL["Radial Layout Engine"]
        WIDGETS["Plugin Widgets"]
        GESTURES["Gesture Detector"]
        PROFILES["Context Profiles"]
    end

    subgraph Settings ["βš™οΈ Settings Window  (settings/)"]
        SAPP["app.js SPA"]
    end

    Main <-->|save-config / get-config| Settings
    PL -->|broadcasts| Main
Loading

Key design decisions

Decision Reason
contextIsolation: true + sandbox: true Renderer cannot access Node APIs directly β€” all communication via contextBridge
IPC channel whitelist Only pre-approved channel names are accepted in main process
Atomic config writes writeConfigSafe uses temp file + rename to prevent corruption
FSM for menu state Prevents illegal state transitions and race conditions
AHK bundled, not required Users don't need to install AHK β€” the runtime ships with Orbit
Plugins in main process Plugins can use Node APIs, spawn processes, use the filesystem safely

πŸ› οΈ Tray Menu Reference

Item Action
Show Orbit Trigger the radial menu at the center of the screen
Settings Open the Settings window
Restart AHK Trigger Kill and relaunch the AHK process (useful if the trigger stops working)
Quit Cleanly shut down Orbit and the AHK trigger

❓ Troubleshooting

Middle-click doesn't open the menu
  1. Check the tray icon is present β€” if not, relaunch Orbit
  2. Right-click tray β†’ Restart AHK Trigger
  3. Make sure you're clicking on the desktop or a browser (with Ctrl held if requireCtrlInBrowsers is enabled)
  4. Check orbit.log in the install directory for errors
Menu appears but actions don't execute
  1. Open Settings β†’ Actions and verify the action has a command set
  2. For cmd type actions, test the command in PowerShell first
  3. Check orbit.log for action_failed entries
Plugins not loading
  1. Open Settings β†’ Plugins β†’ πŸ“ Open Folder
  2. Make sure your .js file is directly in the plugins/ folder (not a subfolder)
  3. Restart Orbit after adding a plugin
  4. Check orbit.log for plugin load errors
Settings window won't open

Right-click the tray icon β†’ Settings. If nothing happens, fully quit and relaunch Orbit.

How do I change the trigger from middle-click to something else?
  1. Open Settings β†’ General β†’ Hotkey
  2. Change the value (e.g. MButton, XButton1, F13)
  3. Click Save Changes
  4. Right-click tray β†’ Restart AHK Trigger to apply

πŸ“„ License

MIT β€” see LICENSE for full text.


Built for Windows power users who hate clicking through menus.


⭐ Star this repo if Orbit saves you time every day.

About

A gesture-triggered radial command interface that appears at the cursor, giving instant access to utilities, system controls, and custom scripts with fluid animation and minimal UI noise.

Resources

License

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors