Skip to content

Repository files navigation

🌌 Orb

A spatial 3D browser with a game-like UI. Tabs are floating circles in space, not rows in a bar.

Orb Browser

✨ Features

  • 3D Spatial UI: Tabs represented as floating circles in a beautiful 3D space
  • Lightweight: Built with Go and system WebView engines (no Electron!)
  • Modern UX: Smooth transitions, interactive animations, and intuitive controls
  • Cross-platform: Windows, macOS, and Linux support

🚀 Quick Start

Prerequisites

Linux

The webview library uses CGO and requires GTK3 and WebKit2GTK:

# Ubuntu/Debian
sudo apt-get install libgtk-3-dev libwebkit2gtk-4.0-dev pkg-config

# Fedora
sudo dnf install gtk3-devel webkit2gtk3-devel

# Arch
sudo pacman -S gtk3 webkit2gtk

macOS

WebKit is built-in. Just install Go.

Windows

WebView2 Runtime is usually pre-installed on Windows 11. For Windows 10:

Build & Run

# Install dependencies
go mod download

# Run in development mode
go run cmd/orb/main.go

# Or build and run
make build
./orb

🎮 Usage

Keyboard Shortcuts

  • Escape - Return to 3D space from a tab
  • Ctrl+Shift+Space - Also returns to space
  • Mouse Drag - Rotate camera around the scene
  • Mouse Wheel - Zoom in/out

Interface

  • New Tab Button (bottom-right) - Create a new tab
  • Click a Circle - Open that tab's webpage
  • Hover a Circle - See tab title tooltip
  • Return Button (top-right when viewing a tab) - Go back to space

📁 Project Structure

orb/
├── cmd/orb/              # Main application entry point
├── internal/
│   ├── app/              # Core application logic
│   │   ├── state.go      # Thread-safe state management
│   │   ├── tabs.go       # Tab lifecycle
│   │   ├── transitions.go # Mode transitions
│   │   └── types.go      # Data types
│   ├── ui/               # UI bridge (Go ↔ JavaScript)
│   │   └── bindings.go   # IPC layer
│   └── webview/          # WebView management
│       └── manager.go    # WebView lifecycle
├── ui/                   # Three.js frontend
│   ├── index.html        # Main HTML
│   ├── main.js           # App coordinator
│   ├── scene.js          # Three.js scene
│   ├── interactions.js   # Mouse/touch interactions
│   ├── transitions.js    # Smooth animations
│   └── styles.css        # Styling
└── docs/                 # Documentation

🏗️ Architecture

  • Backend: Go handles system-level concerns and tab lifecycle
  • Frontend: Three.js handles visualization and interaction
  • WebView: System WebView engines render actual web pages
  • IPC: Go ↔ JavaScript communication via bindings and Eval

See docs/ARCHITECTURE.md for detailed architecture.

🎯 Roadmap

Phase 1 (MVP) ✅

  • 3D space with tab circles
  • Create/close tabs
  • Click to view tab content
  • Return to space
  • Smooth transitions

Phase 2 (Polish) 🚧

  • Tab title updates
  • Favicon display
  • Enhanced animations
  • Keyboard navigation

Phase 3 (Groups)

  • Drag to create groups
  • Visual group containers
  • Group management

Phase 4 (Persistence)

  • Save/restore tabs on restart
  • Session snapshots

🛠️ Development

Build Commands

# Development build (with debug mode)
make dev

# Production build
make build

# Clean build artifacts
make clean

# Run tests
make test

# Install dependencies
make deps

Debug Mode

Set debug = true in cmd/orb/main.go to enable:

  • WebView developer tools
  • Verbose logging
  • Live reload from ui/ directory

🐛 Troubleshooting

Linux: "could not import github.com/webview/webview_go" or "gtk+-3.0 / webkit2gtk-4.0 not found"

The webview package uses CGO and needs GTK3 and WebKit2GTK. Install dev packages (see Prerequisites), then run go build ./... again:

# Ubuntu/Debian
sudo apt-get install libgtk-3-dev libwebkit2gtk-4.0-dev pkg-config

Windows: "WebView2 not found"

Install the WebView2 Runtime from Microsoft.

macOS: "Operation not permitted"

Grant the app permission in System Preferences > Security & Privacy.

UI not loading

Make sure you're running from the project root, or the ui/ directory is accessible.

📝 License

MIT License - See LICENSE for details.

🤝 Contributing

Contributions are welcome! Please read CONTRIBUTING.md before submitting PRs.

💡 Inspiration

Orb reimagines browser UI as a spatial experience, inspired by:

  • Arc Browser's spatial thinking
  • Three.js creative coding
  • Calm, minimal design philosophy

🌟 Credits

Built with:

  • Go - Backend language
  • webview_go - Native WebView bindings
  • Three.js - 3D rendering
  • Love for spatial interfaces ❤️

Made with ✨ by the Orb team

🆕 Updated Architecture (React + Go)

Orb now uses a modern React frontend with Go backend:

orb/
├── web/                   # React frontend (TypeScript)
│   ├── src/
│   │   ├── components/   # React components
│   │   ├── types/        # TypeScript types
│   │   └── App.tsx       # Main app
│   ├── dist/             # Built files (served by Go)
│   └── package.json
│
├── cmd/orb/              # Go backend
└── internal/             # Go packages

Build Commands

# Build everything (frontend + backend)
make build

# Run in development mode
make dev

# Build only frontend
make build-web

# Run frontend dev server (for UI development)
make dev-web

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages