Ein WebRTC-basiertes Remote-Desktop-Tool für Linux mit niedrigen Latenzen und nativer Unterstützung für X11 und Wayland.
Start Documentation •
Live Storybook •
Report Bug •
Request Feature
Live preview may take a few minutes to update after each merge.
Live Preview (aktualisiert nach jeder Änderung): https://ecospherenetwork.github.io/SmolDesk/
- About
- Key Features
- Getting Started
- Project Structure
- Development
- Testing
- Deployment
- Contributing
- Support
- License
SmolDesk ist ein modernes Remote-Desktop-Tool, das speziell für Linux entwickelt wurde und beide wichtigen Display-Server (X11 und Wayland) unterstützt. Durch die Verwendung von WebRTC ermöglicht SmolDesk Peer-to-Peer-Verbindungen mit niedriger Latenz, optimiert durch Hardware-Beschleunigung für eine flüssige Benutzererfahrung.
- 🚀 Niedrige Latenz: Optimiert für Reaktionsschnelligkeit (<100ms) für ein natürliches Benutzererlebnis
- 🔄 WebRTC-Integration: Peer-to-Peer-Verbindungen mit STUN/TURN-Fallback für NAT-Traversal
- 📊 Optimierte Leistung: Unterstützung für Hardware-Beschleunigung (VAAPI/NVENC)
- 🛡️ Sicherheit: OAuth2-Integration und verschlüsselte Verbindungen
- 📚 Cross-Platform: Host auf Linux, Zugriff von jedem modernen Browser aus
- 🖥️ Display-Server-Unterstützung: Vollständige Unterstützung für X11 und Wayland
- 🎮 Input-Weiterleitung: Präzise und reaktionsschnelle Maus- und Tastatursteuerung
- 📡 NAT-Traversal: STUN/TURN-Server für zuverlässige Verbindungen auch hinter Firewalls
- 📋 Clipboard-Synchronisation: Nahtlose Übertragung von Zwischenablage-Inhalten
- 🔄 Dateitransfer: Einfacher und sicherer Austausch von Dateien zwischen Host und Client
- Pinch-to-Zoom und Drag zum Verschieben des Remote-Bilds
- Touch-Gesten werden zu Maus- und Scroll-Ereignissen gemappt
- Eingaben über die native Bildschirmtastatur inklusive Sondertasten
- 🚀 Rust-Backend: Leistungsstarkes und sicheres Rust-Backend mit Tauri-Integration
- ⚛️ React-Frontend: Modernes, reaktives UI mit TypeScript und Tailwind CSS
- 🎬 Hardware-Kodierung: Unterstützung für VAAPI und NVENC für 4K@60FPS
- 🔐 Authentifizierung: OAuth2 mit PKCE-Unterstützung
- 🌐 Multi-Monitor: Unterstützung für mehrere Monitore und dynamisches Umschalten
- Host-System (Linux):
- X11 oder Wayland
- Für Hardware-Beschleunigung:
- Intel-GPU: VAAPI-Bibliotheken
- NVIDIA-GPU: CUDA und NVENC-Support
- FFmpeg
- Für X11: xdotool
- Für Wayland: ydotool
- Tauri-Build: libwebkit2gtk-4.0-dev, libjavascriptcoregtk-4.0-dev, libsoup2.4-dev, libgtk-3-dev, libglib2.0-dev
Installiere folgende Pakete, um SmolDesk aus dem Quellcode zu bauen:
sudo apt install build-essential \
libglib2.0-dev \
libgtk-3-dev \
libwebkit2gtk-4.0-dev \
libjavascriptcoregtk-4.0-dev \
libsoup2.4-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
pkg-configAlternativ kannst du das Skript scripts/dev-setup.sh ausführen, um die Abhängigkeiten automatisch zu installieren.
Für die Tauri-spezifischen Libraries steht zusätzlich scripts/install-tauri-deps.sh bereit.
- Client-System:
- Moderner Browser mit WebRTC-Support (Chrome, Firefox, Edge, Safari)
-
Binärdateien herunterladen
# Für Debian/Ubuntu-basierte Systeme curl -L https://github.com/EcoSphereNetwork/SmolDesk/releases/latest/download/smoldesk_amd64.deb -o smoldesk.deb sudo apt install ./smoldesk.deb # Für Fedora/RHEL-basierte Systeme curl -L https://github.com/EcoSphereNetwork/SmolDesk/releases/latest/download/smoldesk.rpm -o smoldesk.rpm sudo dnf install ./smoldesk.rpm # Distribution-unabhängig (AppImage) curl -L https://github.com/EcoSphereNetwork/SmolDesk/releases/latest/download/SmolDesk.AppImage -o SmolDesk.AppImage chmod +x SmolDesk.AppImage
-
Starten der Anwendung
smoldesk # oder bei Verwendung der AppImage ./SmolDesk.AppImage
SmolDesk/
├── .github/ # GitHub-Konfigurationen und Workflows
├── docs/ # Projektdokumentation
│ ├── api/ # API-Referenz
│ ├── user/ # Benutzerhandbuch
│ └── technical/ # Technische Dokumentation
├── src/ # Frontend-Quellcode (React)
│ ├── components/ # React-Komponenten
│ ├── hooks/ # React-Hooks
│ ├── utils/ # Hilfsfunktionen
│ └── contexts/ # React-Kontexte
├── src-tauri/ # Backend-Quellcode (Rust)
│ ├── src/ # Rust-Quellcode
│ └── Cargo.toml # Rust-Abhängigkeiten
├── signaling-server/ # WebRTC Signaling-Server
│ └── index.js # Server-Implementation
├── tests/ # Testsuite
│ ├── unit/ # Unit-Tests
│ ├── integration/ # Integrationstests
│ └── e2e/ # End-to-End-Tests
├── package.json # Projekt-Abhängigkeiten
└── README.md # Projektdokumentation
-
Repository klonen:
git clone https://github.com/EcoSphereNetwork/SmolDesk.git cd SmolDesk # GitHub-Remote setzen falls nicht vorhanden git remote get-url origin >/dev/null 2>&1 || \ git remote add origin https://github.com/EcoSphereNetwork/SmolDesk.git
-
Dependencies installieren:
npm install
-
Entwicklungsserver starten:
npm run tauri dev
cd signaling-server
npm install
node index.jsnpm run tauri buildCodex agents rely on a working development environment.
Run scripts/dev-env-check.sh to verify your system and use scripts/init-for-codex.sh for initial install.
If tests fail due to missing vitest packages, execute scripts/install-vitest.sh.
# Frontend-Tests
npm test
# Für eine komfortable Diagnose kann auch die Vitest UI gestartet werden:
npm run test:ui
# Die Tests nutzen gemockte Tauri-APIs. Diese befinden sich unter
tests/__mocks__ und werden automatisch geladen.
# Backend-Tests
cd src-tauri
cargo test
# End-to-End-Tests
npm run e2e- NAT-Traversal: Testen der Verbindung über unterschiedliche Netzwerke
- Latenz-Messungen: Überprüfen der Input-zu-Output-Verzögerung
- Browser-Kompatibilität: Testen auf verschiedenen Browsern und Plattformen
Hinweis: In Umgebungen ohne Internetzugang werden alle externen Netzwerkanfragen blockiert. Die Tests verwenden daher lokale Mocks, um Tauri-Funktionen und Browser-APIs zu simulieren.
# Debian/Ubuntu-Paket erstellen
npm run tauri build -- --target deb
# RPM-Paket erstellen
npm run tauri build -- --target rpm
# AppImage erstellen
npm run tauri build -- --target appimage# Mit Docker
cd signaling-server
docker build -t smoldesk-signaling .
docker run -p 3000:3000 smoldesk-signaling
# Manuell auf einem Server
npm install -g pm2
pm2 start index.js --name smoldesk-signalingWir freuen uns über Beiträge! Bitte lesen Sie unseren Contributing Guide für Details.
- Repository forken
- Feature-Branch erstellen:
git checkout -b feature/amazing-feature
- Änderungen committen:
git commit -m 'feat: add amazing feature' - Branch pushen:
git push origin feature/amazing-feature
- Pull Request öffnen
Dieses Repository ist vorbereitet für autonome GitHub-Agenten (z. B. Codex). Siehe AGENTS.md und docs/docs/agents/README.md.
Verteilt unter der MIT-Lizenz. Siehe LICENSE für weitere Informationen.