Skip to content

refactor(client): drive RdpClient configuration from the PropertySet#1389

Merged
Benoît Cortier (CBenoit) merged 3 commits into
masterfrom
refactor/drive-config-from-propertyset
Jun 29, 2026
Merged

refactor(client): drive RdpClient configuration from the PropertySet#1389
Benoît Cortier (CBenoit) merged 3 commits into
masterfrom
refactor/drive-config-from-propertyset

Conversation

@CBenoit

Copy link
Copy Markdown
Member

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

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 .rdp PropertySet keys (including new ironrdp_ vendor extensions) and build Config via ConfigBuilder::from_property_set.
  • Make ironrdp-client::Config more opaque (read-only accessors) and extend ConfigBuilder to track missing required fields and overlay .rdp properties.
  • 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.

Comment thread crates/ironrdp-client/src/config.rs Outdated
Comment thread crates/ironrdp-client/src/rdp.rs
Comment thread crates/ironrdp-pdu/src/rdp/capability_sets/bitmap_codecs/mod.rs Outdated
Comment thread crates/ironrdp-pdu/src/rdp/capability_sets/bitmap_codecs/mod.rs Outdated
Base automatically changed from refactor/client-split to master June 29, 2026 09:06
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
@CBenoit Benoît Cortier (CBenoit) force-pushed the refactor/drive-config-from-propertyset branch from c657f59 to d3b568e Compare June 29, 2026 09:11
@CBenoit Benoît Cortier (CBenoit) enabled auto-merge (squash) June 29, 2026 11:42
@CBenoit Benoît Cortier (CBenoit) merged commit 8a8f8c8 into master Jun 29, 2026
22 checks passed
@CBenoit Benoît Cortier (CBenoit) deleted the refactor/drive-config-from-propertyset branch June 29, 2026 12:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

4 participants