b33d51c8ecb84bd847cbbea9a21adc04ad2e2e2c
- DeviceList component with mDNS device discovery and refresh - ConnectionPanel component with connect/disconnect controls - SettingsPanel component with resolution/FPS/bitrate selection - App.tsx integrating all components with Tauri invoke() calls - App.css with comprehensive styling (card layout, status bar, device list) - vite-env.d.ts TypeScript declaration
AirDisplay Client
Cross-platform desktop screen mirroring client for AirDisplay Android app.
Overview
AirDisplay Client streams your PC screen to an Android device using the AirDisplay Protocol (ADP), a lightweight custom protocol over TCP. It supports Windows, macOS, and Linux.
Architecture
┌─────────────────────┐ ADP (TCP:7935) ┌──────────────────┐
│ AirDisplay Client │ ──────────────────────────► │ AirDisplay App │
│ (Desktop: Rust+ │ mDNS discovery │ (Android) │
│ Tauri+React) │ ◄────────────────────────── │ │
└─────────────────────┘ └──────────────────┘
Technology Stack
| Layer | Technology |
|---|---|
| Desktop Framework | Tauri v2 (Rust) |
| Frontend UI | React + TypeScript + Vite |
| Screen Capture | DXGI (Win) / CGDisplay (macOS) / PipeWire (Linux) |
| Video Encoding | x264 software (ffmpeg-next) / HW encoders (NVENC, QSV, VideoToolbox) |
| Protocol | ADP v1 (8-byte frame header + H.264 NAL over TCP) |
| Discovery | mDNS (_airdisplay._tcp) via mdns-sd |
Build
Prerequisites
- Rust 1.75+
- Node.js 18+
- Platform-specific system deps (see Tauri docs)
Build Steps
# Install dependencies
npm install
# Development mode
npm run tauri dev
# Production build
npm run tauri build
Protocol Support
| Protocol | Status | Description |
|---|---|---|
| ADP v1 | ✅ Planned | Custom lightweight frame protocol |
| Miracast | ❌ Not supported | Use Android app's built-in Miracast support |
| AirPlay | ❌ Not supported | Use macOS native screen mirroring to Android |
License
MIT
Description
Languages
Rust
64.5%
Shell
16.8%
TypeScript
12.5%
CSS
5.8%
HTML
0.4%