mirror of
https://github.com/rustdesk/rustdesk.git
synced 2025-09-04 16:59:39 +00:00
3.6 KiB
3.6 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Development Commands
Build Commands
cargo run
- Build and run the desktop application (requires libsciter library)python3 build.py --flutter
- Build Flutter version (desktop)python3 build.py --flutter --release
- Build Flutter version in release modepython3 build.py --hwcodec
- Build with hardware codec supportpython3 build.py --vram
- Build with VRAM feature (Windows only)cargo build --release
- Build Rust binary in release modecargo build --features hwcodec
- Build with specific features
Flutter Mobile Commands
cd flutter && flutter build android
- Build Android APKcd flutter && flutter build ios
- Build iOS appcd flutter && flutter run
- Run Flutter app in development modecd flutter && flutter test
- Run Flutter tests
Testing
cargo test
- Run Rust testscd flutter && flutter test
- Run Flutter tests
Platform-Specific Build Scripts
flutter/build_android.sh
- Android build scriptflutter/build_ios.sh
- iOS build scriptflutter/build_fdroid.sh
- F-Droid build script
Project Architecture
Directory Structure
src/
- Main Rust application codesrc/ui/
- Legacy Sciter UI (deprecated, use Flutter instead)src/server/
- Audio/clipboard/input/video services and network connectionssrc/client.rs
- Peer connection handlingsrc/platform/
- Platform-specific code
flutter/
- Flutter UI code for desktop and mobilelibs/
- Core librarieslibs/hbb_common/
- Video codec, config, network wrapper, protobuf, file transfer utilitieslibs/scrap/
- Screen capture functionalitylibs/enigo/
- Platform-specific keyboard/mouse controllibs/clipboard/
- Cross-platform clipboard implementation
Key Components
- Remote Desktop Protocol: Custom protocol implemented in
src/rendezvous_mediator.rs
for communicating with rustdesk-server - Screen Capture: Platform-specific screen capture in
libs/scrap/
- Input Handling: Cross-platform input simulation in
libs/enigo/
- Audio/Video Services: Real-time audio/video streaming in
src/server/
- File Transfer: Secure file transfer implementation in
libs/hbb_common/
UI Architecture
- Legacy UI: Sciter-based (deprecated) - files in
src/ui/
- Modern UI: Flutter-based - files in
flutter/
- Desktop:
flutter/lib/desktop/
- Mobile:
flutter/lib/mobile/
- Shared:
flutter/lib/common/
andflutter/lib/models/
- Desktop:
Important Build Notes
Dependencies
- Requires vcpkg for C++ dependencies:
libvpx
,libyuv
,opus
,aom
- Set
VCPKG_ROOT
environment variable - Download appropriate Sciter library for legacy UI support
Ignore Patterns
When working with files, ignore these directories:
target/
- Rust build artifactsflutter/build/
- Flutter build outputflutter/.dart_tool/
- Flutter tooling files
Cross-Platform Considerations
- Windows builds require additional DLLs and virtual display drivers
- macOS builds need proper signing and notarization for distribution
- Linux builds support multiple package formats (deb, rpm, AppImage)
- Mobile builds require platform-specific toolchains (Android SDK, Xcode)
Feature Flags
hwcodec
- Hardware video encoding/decodingvram
- VRAM optimization (Windows only)flutter
- Enable Flutter UIunix-file-copy-paste
- Unix file clipboard supportscreencapturekit
- macOS ScreenCaptureKit (macOS only)
Config
All configurations or options are under libs/hbb_common/src/config.rs
file, 4 types:
- Settings
- Local
- Display
- Built-in