Wandering Thoughts archives

2020-05-25

My failure with Xpra (probably because what I want is almost impossible)

I'll start with my tweet about trying out Xpra:

In theory xpra should be an improvement over 'ssh -X'. In practice, the Fedora 31 version doesn't like my SSH authentication setup or then my HiDPI environment with fvwm, so that's basically a failure. Oh well, 'ssh -X' works well enough.

In this current time of working from home, I've wound up wanting to run a number of X programs remotely. My home DSL link is good enough to make this acceptable, but it could definitely be better than it is, so I recently tried out Xpra to see if it would give me better performance.

The first issue I found is that I had to force Xpra to explicitly use the real ssh program to connect to my work machine, instead of what appears to be an internal SSH client implementation. I assume that this is because I'm using ssh-agent and encrypted SSH keys, and whatever Xpra is doing by default can't deal with them (or doesn't deal with them properly). The second and more fatal issue is that programs running under Xpra were not seeing my HiDPI settings for my home HiDPI monitor, and so I got things like tiny xterms. This is a vast regression in usability regardless of any speed increase, so I stopped there (after trying a few things to fix it).

(Another practical issue I ran into with Xpra is that it started quite slowly. For usage as a remote desktop this isn't very bad, because you start it once. For use as a 'ssh -X' replacement, this is not great because I tend to close windows and programs frequently, including remote ones.)

At first I was sad and grumpy about this, but after thinking about it some more I've come around to the view that what I want is at least a very difficult problem (and so I'm unlikely to find anything that does it). What I want is something that behaves exactly like 'ssh -X', which is to say that it's just like a straight X connection directly to my X server for all of those weird things like keymaps, X properties, multiple windows, and so on, but is faster than a plain forwarded X connection (possibly over a compressed channel). This isn't impossible, but how modern X applications work makes it difficult, since even text based applications are now actually sending rendered bitmaps to the server. A very clever X protocol proxy could probably speed this up with various techniques, but the problem is that it would have to know a lot about X, perhaps to the extent of basically being able to render its own private copy of the client's window.

(My impression is that most people are interesting in 'remote desktop', not 'remote X client'. I'm not, for various reasons. Accelerating a full remote desktop is in some ways an easier problem, if only because you can borrow a lot of infrastructure from the X server itself.)

PS: I expect that Xpra probably works for HiDPI local screens in common cases like GNOME or KDE desktops. As mentioned in my tweet, my setup is rather unusual so I'm not entirely surprised that it didn't go well, although I'm a little bit disappointed. I am setting my DPI in a number of places and normal 'ssh -X' remote X programs pick them up.

sysadmin/XpraMyFailure written at 22:45:30; Add Comment


Page tools: See As Normal.
Search:
Login: Password:
Atom Syndication: Recent Pages, Recent Comments.

This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.