About this project

CrossDesk is a lightweight, cross-platform remote desktop software designed to connect computers, browsers, and iPhone/iPad devices to the same desktop. The project is built on MiniRTC, providing real-time audio/video transmission, keyboard/mouse control, file transfer, and self-hosting capabilities, and is still under active development. ## Platforms and Installation It supports Windows 10+ (x64), macOS 14.0+ (Intel / Apple Silicon), Linux (Ubuntu 20.04+, amd64 / arm64, glibc 2.31 baseline), and iOS 16.0+ on physical devices. Desktop versions offer .exe, .pkg, and .deb installers, downloadable from GitHub Releases or the official website; the web version can be accessed directly at web.crossdesk.cn without installing a desktop client on the controlling end. On macOS, first-time use requires granting screen recording and accessibility permissions in System Settings. ## Key Features - Cross-platform control: Windows / macOS / Linux desktops can control each other, with browsers and native iOS acting as controllers. - Real-time video and audio: Supports H.264 / AV1, hardware encoding/decoding, remote audio playback, with adjustable quality, 30 / 60 fps, and display preferences during sessions. - Multi-device and multi-display: Recent connections, device aliases, session tags, and remote display switching. - Input and collaboration: Keyboard/mouse input, remote cursor synchronization, hotkeys, text clipboard sync, and file transfer. - Network and deployment: P2P direct connection, TURN relay with forced relay option, SRTP media encryption, and self-hosted signaling and relay services. - Privacy screen: Automatically enabled when connected, or toggled via the session toolbar. - Windows lock screen control: Supports input forwarding on lock screens, login screens, and secure desktops via CrossDesk Service. - Linux headless operation: Reuse existing desktops and applications, or create a separate Xvfb virtual desktop; the terminal console allows status viewing, password changes, and settings. ## Usage When connecting from another computer, the controlled end runs CrossDesk and waits for "Connected to server" to appear, then provides its ID and password to the controller; the controller enters the peer ID and inputs the password when prompted. The password is uniformly 6 characters of digits or English letters, and can be displayed, refreshed, or manually changed. When connecting from a browser, open the web client, enter the remote device ID and password to operate the remote end; phones and tablets can also access via browser. The session control bar provides display switching, hotkey sending, mouse control, audio playback, file sending, video settings, network status viewing, privacy screen toggle, fullscreen, and disconnect options. The network status panel shows traffic, packet loss rate, frame rate, resolution, direct/relay connection, and encryption status. ## Settings and Self-Hosting Client settings include language (Chinese, English, Russian), Windows capture method (Auto / DXGI / WGC / GDI), video encoding format, relay service with forced relay option, automatic privacy screen, self-hosted configuration, startup with system and daemon, and file save path. The client checks for version updates in the background after startup, and manual update checks are available in the "About" section. For self-hosting, users can deploy their own signaling service and TURN relay, then enter the connection details in the desktop client settings; both the controller and controlled end must use the same configuration. The repository provides links to self-hosting guides, server source code (CrossDesk Server), and browser client source code (CrossDesk Web Client). ## Development and License The repository includes documentation on source code building, iOS development instructions, GUI architecture, and frequently asked questions, and accepts feedback via GitHub Issues. The project is licensed under GPL-3.0, and official Windows release packages are code-signed via SignPath.io.