|
||
---|---|---|
src | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
PROGRESS.md | ||
README.md |
README.md
Bridge - Fediverse Browser
A privacy-focused web browser specifically designed for the Fediverse (Mastodon, Lemmy, PeerTube, etc.) built with Rust, GTK4, and WebKitGTK.
Project Status
✅ Phase 1 - Foundation Complete
- Basic Rust project structure with Cargo.toml
- Core application with GTK4 window and WebKitGTK browser view
- Navigation controls (address bar, back/forward/refresh buttons)
- Sidebar placeholder for Fediverse timeline
🔄 Next Phase - Fediverse Integration
- SQLite database schema for bookmarks and settings
- Basic Fediverse account management structure
- Native Mastodon timeline integration
Features Implemented
- Basic Browser: Web browsing with WebKitGTK engine
- Navigation: Address bar with URL/search functionality
- Controls: Back, forward, and refresh buttons
- Layout: Sidebar for future Fediverse integration
- Search: DuckDuckGo search integration for non-URL queries
Dependencies
- GTK4 and WebKitGTK development libraries
- Rust 1.70+ (2021 edition)
Installing Dependencies (Linux)
Ubuntu/Debian:
sudo apt install libgtk-4-dev libwebkit2gtk-4.0-dev build-essential
Arch Linux:
sudo pacman -S gtk4 webkit2gtk base-devel
Fedora:
sudo dnf install gtk4-devel webkit2gtk3-devel gcc
Building
cargo build --release
Running
cargo run
Architecture
src/
├── main.rs # App entry point with GTK4 setup
├── ui/ # GTK4 interface components
│ ├── browser_window.rs # Main browser window with WebView
│ └── navigation.rs # Navigation controls (planned)
├── fediverse/ # ActivityPub clients and account management
│ ├── account_manager.rs # Multi-account support (planned)
│ ├── activitypub.rs # Native ActivityPub protocol (planned)
│ └── timeline.rs # Unified timeline aggregation (planned)
└── storage/ # SQLite database integration
├── database.rs # Core database operations (planned)
├── bookmarks.rs # Bookmark management (planned)
└── settings.rs # Application settings (planned)
Key Dependencies
gtk4
: GTK4 bindings for Rustwebkit2gtk
: WebKit browser enginetokio
: Async runtime for Fediverse API callsreqwest
: HTTP client for API requestsmastodon-async
: Mastodon API clientsqlx
: Async SQL toolkitserde
: Serialization framework
Unique Fediverse Features (Planned)
- Multi-account management across instances/platforms
- Unified timeline combining Mastodon, Lemmy, PeerTube feeds
- Cross-platform interactions (reply to Lemmy from Mastodon account)
- Native ActivityPub protocol support
- Instance-aware search and content discovery
- Privacy-focused federation transparency tools
- Enhanced thread visualization for discussions
- Offline reading with smart Fediverse content caching
Philosophy
- Privacy and security first: No tracking, no data collection
- Native Fediverse integration: Beyond just web interface support
- User control: Full control over data and functionality
- Linux-first: Built for the Fediverse community
- Open source: FOSS hobby project, not commercial
License
GPL-3.0-or-later
Contributing
This is a hobby project focused on creating a unique browser experience for Fediverse users. Contributions are welcome!