Native KDE Plasma / Qt 6 client for RootStream secure P2P game streaming
- ✅ Native KDE Plasma integration - Built with Qt 6 and QML
- ✅ Secure P2P streaming - Ed25519 + ChaCha20-Poly1305 encryption
- ✅ Peer discovery - Automatic mDNS discovery and manual peer entry
- ✅ Low latency - Hardware-accelerated decoding with VA-API
- ✅ Audio streaming - Opus codec with PulseAudio/PipeWire support
- ✅ Settings persistence - KConfig integration for settings
- ✅ AI logging mode - Debug logging for troubleshooting
- ✅ Multiple codecs - H.264, H.265, VP9, VP8 support
- ✅ Fullscreen mode - Optimized for gaming
# Install dependencies
sudo pacman -S qt6-base qt6-declarative qt6-quickcontrols2 \
libsodium opus libva libpulse
# Clone and build
git clone https://github.com/infinityabundance/RootStream.git
cd RootStream/clients/kde-plasma-client
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j$(nproc)
sudo make installcd packaging
makepkg -si# Launch the client
rootstream-kde-client
# With AI logging (for debugging)
rootstream-kde-client --ai-logging
# Auto-connect to peer
rootstream-kde-client --connect "kXx7YqZ3...@hostname"- User Guide - Installation, usage, and troubleshooting
- Developer Guide - Architecture and development
- Building - Build instructions for all platforms
- Troubleshooting - Common issues and solutions
┌─────────────────────────────────────────┐
│ QML UI Layer │
│ - Peer selection and discovery │
│ - Video streaming view │
│ - Settings and configuration │
└─────────────┬───────────────────────────┘
│
┌─────────────▼───────────────────────────┐
│ C++ Qt Wrapper Classes │
│ - RootStreamClient (API wrapper) │
│ - PeerManager (discovery) │
│ - VideoRenderer (OpenGL) │
│ - AudioPlayer (PulseAudio/PipeWire) │
│ - InputManager (uinput) │
│ - SettingsManager (KConfig) │
└─────────────┬───────────────────────────┘
│
┌─────────────▼───────────────────────────┐
│ RootStream C API (libRootStream) │
│ - Network, Crypto, Codecs │
│ - Discovery, Peer management │
└──────────────────────────────────────────┘
- Basic UI structure and navigation
- Connection management
- Peer discovery (partial)
- Settings persistence
- AI logging integration
- Multiple codec support
- Fullscreen mode
- Video rendering (OpenGL integration)
- Audio playback (Opus decoding)
- Input injection (uinput/xdotool)
- Performance metrics display
- mDNS peer discovery
- Virtual input overlay
- Gamepad support
- Recording playback
- HDR support
- Multi-monitor support
Required:
- Qt 6.4+
- libsodium
- Opus
- libRootStream
Optional:
- KDE Frameworks 6 (KConfig, CoreAddons)
- VA-API (hardware decoding)
- PulseAudio or PipeWire
See BUILDING.md for detailed instructions.
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j$(nproc)ctest --verboseWe welcome contributions! See CONTRIBUTING.md for guidelines.
- Video rendering - OpenGL texture upload and rendering
- Audio playback - PulseAudio/PipeWire integration
- Input injection - Mouse/keyboard event handling
- Performance optimization - Reduce latency, improve FPS
- Testing - Unit tests, integration tests, stress tests
- Documentation - Tutorials, examples, API docs
MIT License - see LICENSE
- GitHub: https://github.com/infinityabundance/RootStream
- Issues: https://github.com/infinityabundance/RootStream/issues
- Documentation: See docs/ folder
Built on:
- Qt 6 - UI framework
- RootStream - Streaming engine
- libsodium - Cryptography
- Opus - Audio codec
- VA-API - Hardware decoding
Secure P2P streaming for everyone 🎮🔐