A professional, lag-free Wayland dock for Linux
Features • Installation • Configuration • Roadmap • Contributing
BlazeDock is a modern, native Wayland dock built with Rust and GTK4. Designed specifically for Fedora 43+ and other modern Linux distributions, it aims to exceed macOS Dock functionality while maintaining the performance benefits of native code.
| Feature | BlazeDock | Plank | Latte Dock |
|---|---|---|---|
| Wayland Native | ✅ | ❌ | |
| Memory Safe (Rust) | ✅ | ❌ | ❌ |
| GTK4 | ✅ | GTK3 | Qt |
| Active Development | ✅ | ❌ | ❌ |
| Memory Usage | ~50MB | ~80MB | ~150MB |
- 🚀 Native Performance - Written in Rust for zero-lag operation (~25MB memory)
- 🎨 Glassmorphism UI - Modern dark theme with transparency
- 📌 Pinned Applications - Persistent launcher configuration
- 🖥️ Wayland Native - Full Layer Shell support (Sway/Hyprland) + floating fallback (KDE/GNOME)
- ⚙️ TOML Configuration - Easy customization with live reload
- 🔄 Auto-start - Systemd user service and desktop entry
- 🔍 Window Previews - Preview UI on hover (shows app icon fallback*)
- 📊 Progress Rings - Cairo-drawn circular progress indicators
- 🔔 Notification Badges - Count, progress, attention, and custom badges
- 🎯 Magnification - macOS-style cosine-based zoom effect
- ⌨️ Keyboard Shortcuts - Arrow navigation, type-to-search (Super+1-9 when dock focused*)
- 🖱️ Window Dragging - Drag floating dock to reposition
- 🎨 Theme Integration - Auto-detect KDE/GNOME accent colors
- 🖥️ Multi-Monitor - Primary, All, Follow, and Per-Monitor modes
- 📁 Profile System - Multiple dock configurations (work, gaming, presentation)
- 🔄 Dynamic Running Apps - macOS-style display of non-pinned running applications
- ⚡ Auto-Hide - Intelligent show/hide with edge detection
- 🎯 Running Indicators - Dots and window count badges
See the full Roadmap and Feature Status for details.
- Fedora 43+ (or compatible distribution)
- Wayland session (GNOME, KDE Plasma, Sway, etc.)
- GTK4 >= 4.10
- gtk4-layer-shell >= 1.0
# Clone the repository
git clone https://github.com/RavenRepo/blaze-dock.git
cd blaze-dock
# Run the installer for the current user
./scripts/install.sh --user
# Enable and start the service
systemctl --user enable --now blazedock# Install binary
sudo cp target/release/blazedock /usr/local/bin/
# Enable autostart (optional)
mkdir -p ~/.config/autostart
cp data/blazedock-autostart.desktop ~/.config/autostart/BlazeDock uses a TOML configuration file located at ~/.config/blazedock/blazedock.toml.
# Dock position: "left", "right", "top", or "bottom"
position = "left"
# Icon size in pixels
icon_size = 48
# Dock width/height
dock_size = 72
# Background opacity (0.0 - 1.0)
opacity = 0.85
# Enable exclusive zone (windows won't overlap)
exclusive_zone = true
# Enable hover zoom effect
hover_zoom = true
hover_zoom_scale = 1.15
# Multi-monitor mode: "primary", "all", "follow", "per-monitor"
multi_monitor_mode = "primary"
# Enable keyboard shortcuts (Super+1-9)
enable_shortcuts = true
# Active profile name
active_profile = "default"
# Show running apps dynamically
show_running_apps = true
# Enable window previews on hover
enable_window_previews = true
# Theme mode: "light", "dark", "system"
theme_mode = "system"
# Pinned applications
[[pinned_apps]]
name = "Firefox"
icon = "firefox"
command = "firefox"
[[pinned_apps]]
name = "Terminal"
icon = "org.gnome.Terminal"
command = "gnome-terminal"See config/blazedock.toml for a complete example.
# Standard launch
blazedock
# With debug logging
RUST_LOG=debug blazedock
# With specific config
BLAZEDOCK_CONFIG=/path/to/config.toml blazedock| Shortcut | Action |
|---|---|
Super+1-9 |
Launch/focus app at position |
Super+D |
Toggle dock visibility |
Super+/ |
Open search overlay |
Arrow Keys |
Navigate dock items |
Enter/Space |
Activate focused item |
Escape |
Close search/popover |
Coming soon
BlazeDock has a solid foundation with most UI features complete. Some advanced system integration features are pending Wayland protocol implementation. See docs/FEATURE_STATUS.md for detailed status.
| Phase | Status | Focus |
|---|---|---|
| 1. Core Foundation | ✅ Complete | Basic dock, config, launching |
| 2. Visual Excellence | ✅ Complete | Animations, theming, badges, progress rings |
| 3. Window Integration | UI ready, window tracking placeholder | |
| 4. System Integration | Theme detection works, D-Bus placeholder | |
| 5. Intelligence | ✅ Complete | Auto-hide, edge detection, context awareness |
| 6. Power User | ✅ Complete | Profiles, multi-monitor (global shortcuts pending) |
Note: These features have UI components but pending backend implementation:
- Window Tracking: Uses process scanning; Wayland foreign-toplevel protocol not yet implemented
- Window Previews: Shows app icon fallback; live screencopy capture pending
- Global Shortcuts: Super+1-9 only works when dock has keyboard focus
- D-Bus Badges: Unity LauncherEntry badge support not yet implemented
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
# Fork and clone
git clone https://github.com/YOUR_USERNAME/blaze-dock.git
cd blaze-dock
# Create a branch
git checkout -b feature/my-feature
# Make changes, then
cargo fmt
cargo clippy
cargo test
# Commit and push
git commit -m "feat: add my feature"
git push origin feature/my-feature- 🧪 Testing on different Wayland compositors
- 🖥️ Multi-monitor testing
- 🎨 Icon theme compatibility
- 📝 Documentation improvements
- 🌍 Translations
| Component | Technology |
|---|---|
| Language | Rust 1.70+ |
| UI Framework | GTK4 |
| Wayland Integration | gtk4-layer-shell |
| Configuration | TOML + Serde |
| Async Runtime | Tokio |
| Metric | Target | Current |
|---|---|---|
| Startup Time | < 100ms | ~80ms |
| Idle CPU | 0% | 0% |
| Memory Usage | < 50MB | ~25MB |
| Binary Size | < 5MB | 1.8MB |
BlazeDock is licensed under the MIT License.
- GTK4 - The UI toolkit
- gtk4-layer-shell - Wayland layer shell bindings
- gtk-rs - Rust bindings for GTK
Made with ❤️ for the Linux community
