diff --git a/README.md b/README.md new file mode 100644 index 0000000..ad76996 --- /dev/null +++ b/README.md @@ -0,0 +1,207 @@ + +# Customizing the RustDesk UI - Sciter Version + +> This repository and guide help you build a **custom version of RustDesk** with your own **name, icon, and logo**, and connect it to **your own server**. + +## Table of Contents + +- [Prerequisites](#prerequisites) +- [Cloning and Preparing Source](#cloning-and-preparing-source) +- [Customizing Branding (Logo, Icon, Name)](#customizing-branding-logo-icon-name) +- [Setting Server (hbbs/hbbr)](#setting-server-hbbshbbr) +- [Customizing the RustDesk UI](#customizing-the-rustdesk-ui) +- [Build for Windows](#build-for-windows) +- [Troubleshooting & Tips](#troubleshooting--tips) +- [License & Legal Notes](#license--legal-notes) +- [Credits](#credits) + +--- + +## Prerequisites + +To build the latest RustDesk (Sciter GUI version) you need: + +- **Visual Studio Installer - MSVC** (select **.NET desktop development** and **Desktop development with C++**) +- **Git** (during installation, select all Environment Variables (PATH) options) +- **Rust** (install latest stable using `rustup-init.exe`) + Cargo +- **vcpkg** (a package manager for C++ to handle libraries and dependencies) +- **Clang/LLVM** (a compiler for C/C++ — [LLVM 15.0.2 (x64)](https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.2/LLVM-15.0.2-win64.exe)) +- **Sciter SDK** (download `sciter.dll` from [sciter-sdk/bin.win/x64](https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.win/x64/sciter.dll)) +- **Python** (required to compile UI resources into the executable) +- **Visual Studio Code** (recommended for editing source files) + +> **Note:** +> Flutter is not required for the Sciter build. +> Knowledge of **HTML, JavaScript, CSS, and JSX** is helpful for customizing the Sciter-based UI. + +--- + +## Cloning and Preparing Source + +> **Note:** +> These commands must be run in **Git Bash**, not Command Prompt. + +```bash +# 1) Clone vcpkg and install +git clone https://github.com/microsoft/vcpkg +vcpkg/bootstrap-vcpkg.bat +export VCPKG_ROOT=$PWD/vcpkg +vcpkg/vcpkg install libvpx:x64-windows-static libyuv:x64-windows-static opus:x64-windows-static aom:x64-windows-static + +# Add System environment variable +VCPKG_ROOT=C:\vcpkg +``` + +### Install LLVM +- Download LLVM 15.0.2 (x64): [LLVM-15.0.2-win64.exe](https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.2/LLVM-15.0.2-win64.exe) +- Install to `C:\LLVM` and set environment variable: + ``` + LIBCLANG_PATH=C:\LLVM\bin + ``` + +### Clone RustDesk +```bash +git clone --recurse-submodules https://github.com/rustdesk/rustdesk +cd rustdesk +mkdir -p target/debug +wget https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.win/x64/sciter.dll +mv sciter.dll target/debug +``` + +--- + +## Customizing Branding (Logo, Icon, Name) + +### 1. Change Application Icons +Replace `.ico`, `.png`, and `.svg` files in the `res/` directory with your own branded icons. + +### 2. Change Application Name +Edit `rustdesk/Cargo.toml`: +```toml +[package] +name = "MyCompany" # your exe name +version = "1.2.0" +authors = ["mycompany "] +edition = "2021" +build = "build.rs" +description = "A remote control software." +default-run = "mycompany" # must match 'name' + +[package.metadata.bundle] +name = "My Company" # Display name +identifier = "com.mycompany.remote" +icon = ["res/32x32.png", "res/128x128.png", "res/128x128@2x.png"] +``` + +### 3. Change APP_NAME in `config.rs` +In `/rustdesk/libs/hbb_common/src/config.rs` (around line 50): +```rust +pub static ref APP_NAME: Arc> = Arc::new(RwLock::new("My Company".to_owned())); +``` + +### 4. Enable Inline Build (Embed UI) +Edit `Cargo.toml`: + + `default = ["use_dasp"]` change to `default = ["use_dasp", "inline"]` + +Run: +```cmd +python res\inline-sciter.py +``` +> Note: This command must be run in CMD. + +--- + +## Setting Server (hbbs/hbbr) + +To lock RustDesk to your own server: + +### 1. Run OSS or Pro Server +- Start `hbbs` and `hbbr` services (via Docker or systemd). +- Open required ports: + - TCP: `21115-21117` + - UDP: `21116` +- Follow official docs: [RustDesk Self-Hosting](https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/install/) +- Set up the server according to the official RustDesk instructions, and obtain your `IP` and `encryption key`. + +You will also need to specify the public key you generated on your server + +### 2. Hardcode Server Address +Edit `/rustdesk/libs/hbb_common/src/config.rs`: +```rust +pub const RENDEZVOUS_SERVERS: &'static [&'static str] = &["myserver.com"]; // or IP address +``` + +Also update `/rustdesk/src/common.rs` (around line 517): +```rust +let rendezvous_server = socket_client::get_target_addr(&format!("myserver.com:{}", config::RENDEZVOUS_PORT))?; +``` + +### 3. Hardcode Public Key +Assign your server's `id_ed25519.pub` key to `RS_PUB_KEY`: +```rust +pub const RS_PUB_KEY: &'static str = "your_public_key_here"; +``` + +--- + +## Customizing the RustDesk UI +- Main UI files: + ``` + rustdesk/src/ui/index.tis + rustdesk/src/ui/index.css + ``` +- Modify `index.tis` (JSX-like structure) and `index.css` for styles. +- At line 566 `index.tis`, you'll find the `function render()` related to the UI. + You can make changes here according to your custom design, but keep in mind that programming knowledge (as mentioned at the beginning of this document) is required. + + - The file `index.css` is used for styling and design. You can apply your personal customizations along with the main project files. +- Run `python res/inline-sciter.py` after each change. + +--- + +## Build for Windows +Embedding UI / Enable Inline Builds +```cmd +python res\inline-sciter.py +``` +> Note: This command must be run in CMD. + +Build and run application +```bash +cargo build --release +``` + +- Output: `rustdesk\target\release` +- Copy `sciter.dll` into same folder as `.exe` before running on other systems. + +--- + +## Troubleshooting & Tips + +- Clear cache after replacing icons: + ``` + cargo clean + ``` +- Restart system to refresh icon cache. +- Ensure Sciter runtime matches build version. + +--- + +## License & Legal Notes + +- RustDesk is under **AGPL-3.0**. +- If distributing binaries, publish your changes and credit RustDesk authors. +- For commercial use, consult RustDesk Pro license. + +--- + +## Credits + +Thanks to the RustDesk team for their outstanding open-source project. If this guide helped you, give the original repository a star! + +--- + +## 🚀 About Me + +[![portfolio](https://img.shields.io/badge/my_portfolio-000?style=for-the-badge&logo=ko-fi&logoColor=white)](https://github.com/mojtabco) [![linkedin](https://img.shields.io/badge/linkedin-0A66C2?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/mojtaba-askari-b0522b378/)