feat(rdp): configurable GRD max-framerate and stability fixes#4
Open
catinspace-au wants to merge 12 commits intomainfrom
Open
feat(rdp): configurable GRD max-framerate and stability fixes#4catinspace-au wants to merge 12 commits intomainfrom
catinspace-au wants to merge 12 commits intomainfrom
Conversation
…imits The xrandr refresh rate cap never worked on Wayland (mutter only generates 60Hz modes for virtual displays, xrandr --rate silently fails). Remove the broken display.yml, refresh rate script, and autostart entry. Add FreeRDP apt pin (ubuntu0.4 confirmed stable, ubuntu0.3 had heap corruption), PAM nice limits so the handover daemon can run at Nice=-10, and remove dangerous auto-restart of gnome-remote-desktop.service which crashes active RDP sessions.
Deploy gnome-remote-desktop 49.0-0ubuntu1.1hyperi1 which adds a max-framerate gsettings key to cap PipeWire screencast framerate. Stock GRD 49 hardcodes 60fps — this halves software encoding load on virtio-gpu VMs without hardware video encoding. - Add grd_patched.yml task to deploy and pin the patched deb - Set max-framerate=30 via system dconf profile - Add grd_patched_version default variable - Verified on desktop-derek: PipeWire stream shows maxFramerate 30/1
Adds Rust build optimisation tools to the developer_core Ansible role: - sccache: shared compilation cache across projects - cargo-sweep: build artifact cleanup - mold: fast linker for native x86_64 builds (5-10x faster linking) - Global ~/.cargo/config.toml with sccache wrapper, mold linker, jobs=8 All tools support Ubuntu, Fedora, and macOS. macOS config omits mold linker flags (uses default linker) but still gets sccache and jobs=8.
Introduces named profiles (rust, iac, openvpn, gui_extras) composed additively on a lean BASE, with opt-out vars for user-facing apps, WireGuard as default VPN, and an audit pass on version pins and upstream URLs during execution.
Splits base into two tiers: developer (OSS-safe, for external contributors on DFE/ESH) and core (Hyperi internals, layered on developer). WireGuard moves to core, lazygit added to gui_extras, GitHub Desktop dropped.
Clarifies invocation edge cases (--profile openvpn alone is a hard error, --profile all defaults to developer tier, --tags developer_core has no alias), fixes stray **Verify** marker, adds automated OSS-safe assertion to the testing plan.
Five-chunk plan (scaffolding + install.sh, profile role extraction, two-tier split, audit + VM tests, docs + release). Incorporates plan reviewer recommendations (correct wallpaper/avatar source paths, office.yml reconciliation, telemetry.yml relocation, Python-based audit script, corrected OSS-safe assertion paths) and notes the proxmox.tyrell.com.au one-week outage with VM-smoke-test alternatives.
Replaces tyrell-proxmox VM with devex.hyperi.io template clone workflow (VMID 9010 as Ubuntu 24.04 base, qm clone/rollback/destroy). Fedora smoke testing deferred until a Fedora template exists on devex.
rclone added to core tier alongside JFrog / Slack / Linear. Generated rclone.yml comment genericised to "multi-backend cloud storage sync CLI" so the emitted Ansible file doesn't carry internal infra hostnames.
Some networks resolve ppa.launchpadcontent.net via IPv6 only when using HTTPS, which can fail. Switch to http; package integrity is still verified by the signed-by GPG keyring on the apt source line.
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.
Summary
gnome-remote-desktop 49.0-0ubuntu1.1hyperi1which adds amax-framerategsettings key. Stock GRD 49 hardcodes 60fps for the PipeWire screencast stream; setting this to 30 halves software encoding load on virtio-gpu VMs without hardware video encoding.ubuntu0.4(confirmed stable).ubuntu0.3caused heap corruption.Verification
Tested on desktop-derek after reboot:
pw-cli enum-params <node> FormatshowsmaxFramerate: 30/1on both gnome-shell output and GRD input streamsgsettings get org.gnome.desktop.remote-desktop.rdp max-framerate→uint32 30Affected desktops
All virtio-gpu VMs with GRD Remote Login: desktop-derek, desktop-kaz, desktop-kay, desktop-damien.
Test plan
apt upgrade