[BUG] RDP: scrollbar appears near right/bottom edge and the remote screen jitters (display container overflow-auto)
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 75/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- docker, javascript
- Domain
- frontend
Research direction
Start with the GuacamoleDisplay-*.js built asset and reproduce the issue in an RDP session using the supplied DevTools overflow query. Check the display container sizing and overflow behavior; done means the right and bottom edge no longer show scrollbars or trigger display jitter during automatic-resolution sessions.
Written by the indexing model from the issue text.
Description
Title
RDP: scrollbar appears near right/bottom edge and the remote screen jitters (display container overflow-auto)
Platform
Website - Chrome
Server Installation Method
Docker
Version
2.8.0
CLI Installation Method
N/A
CLI Version
No response
Troubleshooting
- I have examined logs and tried to find the issue
- I have reviewed opened and closed issues
- I have tried restarting the application
- I have checked open issues and ensured this is not a duplicate
The Problem
In RDP sessions (also reproduced with a Windows RDP host), once the session has focus, moving the mouse within ~1 cm of the right or bottom edge of the remote display makes a scrollbar appear, and the whole remote screen starts jittering (shrinking/growing in a loop). It is practically impossible to click window close buttons or a bottom taskbar/dock. Top and left edges are fine.
With a fixed resolution set in the connection, the remote image stops jittering, but the same scrollbars still pop up in the empty area around it when approaching the edge of the Termix viewport.
Environment: Termix 2.8.0 in Docker (ghcr.io/lukegus/termix:2.8.0), guacd guacamole/guacd:1.6.0, web UI at 100% zoom, devicePixelRatio = 1. RDP targets: xrdp 0.10 on Debian 13 (XFCE) and a Windows VM.
Diagnosis
Listing scrollable elements whose content overflows them (run in DevTools while the RDP tab is open):
[...document.querySelectorAll('*')].filter(e=>{const s=getComputedStyle(e);return /(auto|scroll)/.test(s.overflowX+s.overflowY)&&(e.scrollWidth>e.clientWidth||e.scrollHeight>e.clientHeight)}).map(e=>({cls:e.className,dx:e.scrollWidth-e.clientWidth,dy:e.scrollHeight-e.clientHeight}))
returns the display container of GuacamoleDisplay:
{ cls: "absolute inset-0 overflow-auto", dx: 17, dy: 0 }
The scaled Guacamole display ends up a few pixels larger than its container, so the overflow-auto container gets a scrollbar near the edge. The scrollbar reduces the container size, the ResizeObserver refits/rescales the display, the overflow disappears, the scrollbar goes away, and the cycle repeats — this is the jitter.
Workaround / suggested fix
Changing the container class from overflow-auto to overflow-hidden fixes it completely (patched in the built asset GuacamoleDisplay-*.js):
- className: "absolute inset-0 overflow-auto"
+ className: "absolute inset-0 overflow-hidden"
Since the display is always scaled to fit, scrolling this container doesn't seem to be needed. Alternatively, rounding the computed display size down (Math.floor) when setting the scaled width/height might also avoid the overflow.
How to Reproduce
- Open an RDP connection in the Termix web UI (automatic resolution).
- Click inside the remote display to focus it.
- Move the mouse slowly towards the right edge (or towards a taskbar/dock at the bottom edge).
- Within ~1 cm of the edge a scrollbar appears and the display starts resizing back and forth.
Additional Context
Originally filed by mistake in the main repo as Termix-SSH/Termix#1525.
- Dominant language
- No language data
- Stars
- 30
- Forks
- 4
- PR merge metrics
- No merged PRs in 30d
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Termix-SSH/Support
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 12/100
Termix-SSH/Support#1157 ·
All issues in Termix-SSH/Support
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
marmelab/react-admin#11431 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
stripe/react-stripe-js#728 ·
-
[Upload Grade C dataset] the pop-up changes it's size while uploading the document => Jumping effectOpenbug
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
epam/statgpt-admin-frontend#305 ·
Maintainers usually reply within 1 day
-
possible bug
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
Mintplex-Labs/anything-llm#6889 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100