README2 - mark-ik/graphshell GitHub Wiki
Graphshell is an experimental browser built on Servo, using Rust and WebRender for rendering.
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).
See WINDOWS_BUILD.md for detailed step-by-step instructions.
TL;DR:
- Install Visual Studio 2022 Build Tools with C++ workload
- Install Python 3.8+, Perl, Git (add all to PATH)
- Install Rust from https://rustup.rs/
- Install MozillaBuild from https://wiki.mozilla.org/MozillaBuild
- Open MozillaBuild Terminal:
C:\mozilla-build\start-shell.bat - Build:
cd /c/path/to/graphshell cargo build --release ./target/release/graphshell.exe
git clone https://github.com/markik/graphshell
cd graphshell
cargo build --release
./target/release/graphshellIf you have Nix installed:
nix-shell
cargo build --release
./target/release/graphshell- 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)
- src/main.rs: Winit-based event loop with ApplicationHandler
- src/graphshell.rs: Main Graphshell struct integrating Servo constellation, compositor, and webview pool
- src/compositor.rs: Rendering coordination with WebRender and display lists
- src/window.rs: Window management and event handling
- src/tab.rs: Tab data structures
-
src/webview/: WebView embedding and context menu handling
- context_menu.rs: Right-click menu
- webview.rs: WebView lifecycle management
- prompt.rs: Alert/prompt dialogs
- src/download.rs: Download manager
- src/storage.rs: Persistence layer
- src/config.rs: Configuration management
- src/keyboard.rs: Keyboard input handling
- src/touch.rs: Touch input handling
- src/rendering.rs: Rendering utilities
- src/errors.rs: Error types
- 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
Key external dependencies:
-
Servo: constellation (tab/pipeline management), compositor, script, layout, canvas, webrender (from
servo/mainbranch) - Winit: Window creation and event loop
- crossbeam: Channel-based concurrency
- ipc-channel: Inter-process communication
- arboard: Clipboard access
- serde: Serialization/deserialization
- 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
- Install Python 3.8+ from https://www.python.org
- Add Python to system PATH
- Verify in MozillaBuild Terminal:
python --version
- 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)
Research, specifications, and future roadmap:
- design_docs/GRAPH_INTERFACE.md — Interaction model for planned graph canvas
- design_docs/GRAPH_BROWSER_MIGRATION.md — Migration plan from tabs to graph
- design_docs/PROJECT_PHILOSOPHY.md — Vision and design principles
- design_docs/verse_docs/VERSE.md — Phase 3+ tokenization and P2P research
- design_docs/ — Full archive of research and specifications
See .github/CONTRIBUTING.md and .github/CODE_OF_CONDUCT.md.
Dual-licensed: MIT or Apache-2.0