Skip to content

Bowl42/Orbit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Orbit

Hold. Point. Launch.
A radial app launcher for macOS, triggered by hotkey.

macOS 15+ Swift 6 MIT License


Orbit radial menu

What is Orbit?

Orbit is a weapon-wheel style radial menu that lives in your menu bar. Hold your hotkey, point toward an app, release — done. No clicking, no searching, no Dock diving.

  • Hold a mouse button or keyboard shortcut
  • Point toward the sector of the app you want
  • Release to instantly switch to it

The menu appears at your cursor, shows your recent apps (or pinned favorites), and disappears the moment you let go.


Features

  • Radial Menu — Glassmorphic floating overlay with smooth spring animations. 8 configurable sectors, each holding a recent or pinned app.
  • Flexible Hotkey — Trigger with mouse side buttons (Mouse4/Mouse5) or any keyboard shortcut with modifier keys ( ).
  • Sector Pinning — Pin your most-used apps to fixed positions. Unassigned sectors auto-fill with your recent apps.
  • Menu Bar Native — Lives quietly in your menu bar. No Dock icon, no window clutter. Open settings or quit from the menu bar popover.

Getting Started

Requirements

  • macOS 15 (Sequoia) or later
  • Swift 6 toolchain

Build & Install

# Clone
git clone https://github.com/Bowl42/Orbit.git
cd Orbit

# Build and install to /Applications
bash scripts/bundle.sh

This creates /Applications/Orbit.app, code-signed to preserve system permissions.

Permissions

On first launch, Orbit will ask for two system permissions:

Permission Why
Accessibility Intercept global hotkey events
Input Monitoring Detect keyboard and mouse button presses

Grant both in System Settings > Privacy & Security. Orbit checks status automatically — no restart needed.


Usage

  1. Launch Orbit — it appears in the menu bar
  2. Hold your hotkey (default: Mouse 4 / Side Button)
  3. Move mouse toward the app you want — the sector highlights
  4. Release to switch to that app
  5. Release in the center dead zone or press Esc to cancel

Default Config

Setting Default
Trigger Mouse 4 (Side Button)
Sectors 8 (all recent apps)
Modifiers None

Configuration

Open settings from the menu bar popover or on first launch.

General Tab

  • Trigger type: Keyboard hotkey or mouse button
  • Key / Button: Space, Return, A–Z, Mouse 3/4/5
  • Modifiers: Any combination of
  • Live preview: See your hotkey combo as you configure it

Sectors Tab

  • Ring preview: Click any sector dot to select it
  • Recent: Auto-fills with your most recently used apps
  • Pinned: Lock a specific app to that sector position
  • App picker: Search and select from all installed apps

Config is stored at ~/Library/Application Support/Orbit/config.json.


Architecture

Orbit/
├── OrbitApp.swift              # @main, MenuBarExtra
├── AppDelegate.swift           # Lifecycle, permissions
├── OrbitController.swift       # Core orchestrator
├── HotkeyManager/
│   ├── HotkeyManager.swift     # CGEvent tap listener
│   └── KeyCombo.swift          # Key combo model
├── RadialMenu/
│   ├── RadialMenuView.swift    # SwiftUI radial UI
│   ├── RadialMenuPanel.swift   # NSPanel overlay
│   ├── SectorView.swift        # Sector wedge component
│   └── RadialMenuViewModel.swift
├── Actions/
│   ├── OrbitAction.swift       # Action protocol
│   └── LaunchAppAction.swift   # App launch action
├── Config/
│   ├── ConfigManager.swift     # JSON I/O
│   └── OrbitConfig.swift       # Config model
├── RecentApps/
│   └── RecentAppsTracker.swift # Recent app tracking
└── Settings/
    ├── SettingsView.swift      # Settings UI
    ├── AppPickerView.swift     # App picker modal
    └── InstalledAppsFinder.swift

Key design decisions:

  • NSPanel (non-activating) — menu never steals focus from your active app
  • CGEvent tap — low-level, reliable global hotkey detection
  • SwiftUI + AppKit bridge — modern UI with native macOS window management
  • @Observable — reactive state without Combine boilerplate

Tech Stack

Layer Technology
UI SwiftUI with .ultraThinMaterial glassmorphism
Window NSPanel (non-activating, transparent)
Hotkey CGEvent tap via CoreGraphics
App launch NSWorkspace
Config Codable JSON
Build Swift Package Manager
Signing Apple Development identity

License

MIT


Built with SwiftUI on macOS Sequoia.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors