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.rsfor 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_ROOTenvironment 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