refactor(client): drive RdpClient configuration from the PropertySet#1389
Merged
Benoît Cortier (CBenoit) merged 3 commits intoJun 29, 2026
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
This PR refactors IronRDP’s client/viewer configuration flow to be driven primarily by an .rdp PropertySet, enabling more reproducible sessions from .rdp files and centralizing property parsing in ironrdp-client’s ConfigBuilder.
Changes:
- Move most viewer CLI configuration into
.rdpPropertySetkeys (including newironrdp_vendor extensions) and buildConfigviaConfigBuilder::from_property_set. - Make
ironrdp-client::Configmore opaque (read-only accessors) and extendConfigBuilderto track missing required fields and overlay.rdpproperties. - Move anti-idle “fake events” from viewer GUI code into the client active session loop.
Reviewed changes
Copilot reviewed 10 out of 11 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| crates/ironrdp-viewer/src/main.rs | Adjust viewer startup to use Config accessors and remove GUI fake-events handling. |
| crates/ironrdp-viewer/src/config.rs | Upsert CLI flags into the PropertySet and build the client config via ConfigBuilder::from_property_set + prompts for missing fields. |
| crates/ironrdp-viewer/src/app.rs | Remove GUI-side fake mouse move timer/state. |
| crates/ironrdp-testsuite-extra/tests/config_rdp.rs | Update tests to use new Config accessors (transport(), connector(), channels(), etc.). |
| crates/ironrdp-session/src/x224/mod.rs | Add context comment explaining compression default rationale until slow-path decompression is wired. |
| crates/ironrdp-pdu/src/rdp/capability_sets/bitmap_codecs/mod.rs | Add API-shape FIXME notes around codec capability helpers. |
| crates/ironrdp-client/src/rdp.rs | Pass fake-events interval into active session and implement anti-idle injection in the session loop. |
| crates/ironrdp-client/src/config.rs | Refactor Config to be opaque and redesign ConfigBuilder around PropertySet overlays + missing-field tracking. |
| crates/ironrdp-client/Cargo.toml | Add dependencies needed to parse .rdp properties in ironrdp-client. |
| crates/ironrdp-cfg/src/lib.rs | Add PropertySetExt getters for new ironrdp_ vendor properties. |
| Cargo.lock | Update lockfile for new crate dependencies. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Make ironrdp-client configurable almost entirely from a .rdp PropertySet so that a single ConfigBuilder::from_property_set overlay can build a working client, enabling fully reproducible sessions from .rdp files. Viewer-only settings remain in PartialConfig with special treatment. - cfg: add ironrdp_ vendor properties for compressionlevel, colordepth, dvcplugin, tls, serverpointer and autologon. - client: read compression level, color depth, DVC plugins and kerberos from the PropertySet; default bulk compression to K64 unless disabled or specified otherwise. - client: move anti-idle "fake events" into active_session; consumed via fake_events_interval, dropping it from the viewer GUI - viewer: upsert CLI flags into the PropertySet; prune PartialConfig to CLI-only fields
c657f59 to
d3b568e
Compare
Marc-André Moreau (mamoreau-devolutions)
approved these changes
Jun 29, 2026
Vladyslav Nikonov (vnikonov-devolutions)
approved these changes
Jun 29, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Make ironrdp-client configurable almost entirely from a .rdp PropertySet so that a single ConfigBuilder::from_property_set overlay can build a working client, enabling fully reproducible sessions from .rdp files. Viewer-only settings remain in PartialConfig with special treatment.