Skip to main content

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 implementation
  • qoi: Enable QOI image codec
  • qoiz: 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 the IRONRDP_LOG environment variable to configure log filtering:
Supports standard tracing-subscriber filter directives.

TLS Key Logging

For debugging TLS connections with Wireshark:
This dumps TLS encryption secrets to the specified file for packet decryption.

Building Custom Clients

The ironrdp-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:
Example: Load WebAuthn plugin:

Advanced Features

Dynamic Virtual Channels

The client supports DVC named pipe proxies for custom channel implementations:
This enables proxying DVC messages to external processes via named pipes.

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:
See 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

See Also