Overview
ironrdp-client is a full-fledged, portable RDP client built on the IronRDP crates suite. It provides a complete RDP client implementation using non-blocking, asynchronous I/O with softbuffer for rendering and winit for windowing.
Key Features:
- Full RDP client functionality without GPU acceleration
- Cross-platform windowing via winit
- Software rendering via softbuffer
- Async/await architecture with Tokio runtime
- Support for dynamic virtual channels (DVC)
- Native clipboard integration
- Audio playback support
- WebSocket gateway support
Installation
Features
rustls(default): Use rustls for TLS (recommended)native-tls: Use native TLS implementationqoi: Enable QOI image codecqoiz: Enable QOIZ compressed image codec
Usage
Basic Connection
Configuration Options
The client can be configured via command-line arguments:Architecture
Core Modules
app
Window management and event handling using winit. Manages:
- Window creation and lifecycle
- Input event capture (keyboard, mouse)
- Display buffer rendering via softbuffer
- Dynamic window resizing
rdp
RDP protocol handling:
- Connection establishment
- Active session management
- Graphics update processing
- Input event encoding and transmission
config
Configuration management:
- Command-line argument parsing
- Connector configuration building
- Credential management
- Display settings
clipboard
Clipboard integration:
- Native clipboard backend
- Format conversion
- Bidirectional clipboard sync
ws
WebSocket gateway support for connecting through RD Gateway.
Configuration
Logging
Set theIRONRDP_LOG environment variable to configure log filtering:
TLS Key Logging
For debugging TLS connections with Wireshark:Building Custom Clients
Theironrdp-client crate can be used as a library to build custom RDP clients:
Platform Support
The client supports multiple platforms through conditional compilation:- Windows: Full support including COM-based DVC plugins
- macOS: Core functionality
- Linux: Core functionality
- Other Unix: Core functionality
Windows-Specific Features
On Windows, the client supports loading DVC plugins via COM:Advanced Features
Dynamic Virtual Channels
The client supports DVC named pipe proxies for custom channel implementations:Clipboard Types
Choose clipboard backend:RDCleanPath
Support for Microsoft RDCleanPath drive redirection:Example: Screenshot Client
The IronRDP repository includes a screenshot example demonstrating blocking I/O usage:crates/ironrdp/examples/screenshot.rs for the complete implementation.
Performance Considerations
- Software Rendering: Uses softbuffer for CPU-based rendering (no GPU acceleration)
- Async I/O: Non-blocking I/O with Tokio for efficient network operations
- Memory Usage: Buffers framebuffer in memory for rendering
Related Crates
ironrdp- Core RDP protocol implementationironrdp-connector- Connection establishmentironrdp-session- Active session managementironrdp-graphics- Graphics processingironrdp-tokio- Async runtime integration
See Also
- Examples - More usage examples
- RDP Specification - Microsoft RDP protocol documentation

