README2 - mark-ik/graphshell GitHub Wiki

Graphshell

Graphshell is an experimental browser built on Servo, using Rust and WebRender for rendering.

Current State

Graphshell is currently a tab-based browser with support for:

  • Multiple tabs and windows via Winit event loop
  • WebRender-based rendering with Servo integration
  • Download management
  • Configuration system
  • Clipboard support (via arboard)
  • Keyboard and touch input handling

Planned: Migration to a force-directed graph canvas interface for spatial browsing (see design_docs/ for research and specifications).

Quick Start

Windows 11 Setup

See WINDOWS_BUILD.md for detailed step-by-step instructions.

TL;DR:

  1. Install Visual Studio 2022 Build Tools with C++ workload
  2. Install Python 3.8+, Perl, Git (add all to PATH)
  3. Install Rust from https://rustup.rs/
  4. Install MozillaBuild from https://wiki.mozilla.org/MozillaBuild
  5. Open MozillaBuild Terminal: C:\mozilla-build\start-shell.bat
  6. Build:
    cd /c/path/to/graphshell
    cargo build --release
    ./target/release/graphshell.exe

Linux / macOS Setup

git clone https://github.com/markik/graphshell
cd graphshell
cargo build --release
./target/release/graphshell

Alternative: Nix Shell (Linux/macOS)

If you have Nix installed:

nix-shell
cargo build --release
./target/release/graphshell

Requirements

  • Rust (see rust-toolchain.toml) — Latest stable recommended
  • Platform tooling for Servo builds:
    • Windows 11: MozillaBuild (see Windows 11 Setup above)
    • Linux: build-essential, Python 3.8+, Perl
    • macOS: Xcode Command Line Tools
  • Python 3.8+ in PATH
  • Perl in PATH (for Servo build scripts)

Architecture

Core Components

Crates

  • graphshell (library): Builder pattern and public API (graphshell/src/main.rs demonstrates usage)
  • graphshellview_messages: IPC message types for webview communication
  • graphshellview_build: Build support utilities

Dependencies

Key external dependencies:

  • Servo: constellation (tab/pipeline management), compositor, script, layout, canvas, webrender (from servo/main branch)
  • Winit: Window creation and event loop
  • crossbeam: Channel-based concurrency
  • ipc-channel: Inter-process communication
  • arboard: Clipboard access
  • serde: Serialization/deserialization

Troubleshooting

Windows: "MozTools or MozillaBuild not found"

  • Ensure you're running in MozillaBuild Terminal (start-shell.bat), not regular Command Prompt
  • Verify MozillaBuild installation in C:\mozilla-build
  • Check that Perl and Python are in your PATH within the MozillaBuild environment

Windows: "Python not found"

  • Install Python 3.8+ from https://www.python.org
  • Add Python to system PATH
  • Verify in MozillaBuild Terminal: python --version

Compilation hangs

  • Servo builds are large and may take 10–15 minutes on first build
  • Subsequent builds are faster (incremental compilation)
  • Monitor system resources; Servo uses significant RAM (8GB+ recommended)

Design Documents

Research, specifications, and future roadmap:

Contributing

See .github/CONTRIBUTING.md and .github/CODE_OF_CONDUCT.md.

License

Dual-licensed: MIT or Apache-2.0

References

⚠️ **GitHub.com Fallback** ⚠️