Waypipe: a transparent Wayland proxy

Manuel Stoeckl wayl at mstoeckl.com
Sat Jun 29 02:13:03 UTC 2019

For the last few weeks, I've been working on a program which can be
used to transparently proxy Wayland clients over a network.
(Like "ssh -X ...", except here it's "waypipe ssh ...".)


Waypipe needs to be run on both ends of a socket connection, with one
instance acting as a Wayland server, and the other creating Wayland
clients as needed. It emulates shared files between the different
systems on each end of the connection, using twin file copies to
quickly identify file changes. To determine how and when exactly to
replicate and update a file, Waypipe parses the protocol messages that
it forwards between the actual Wayland client and server that it has
connected to. [Exact details are slightly more complicated.]

It currently supports both shared-memory and DMABUFs, although there
are still rough edges with the latter when it comes to layout modifiers
and multiplanar/multibuffer images. Performance on a local network is
acceptable for terminals and relatively static applications, although
games are often unplayable due to FPS drop from the delay needed to
send a screenful of data over the network. (There's a command line
option for low latency h264 video encoding, but it only applies to
linear-layout DMABUFs at the moment.)

Waypipe has become stable and usable enough at this point that having
more people testing it would be appreciated. I'm also still looking for
feature requests, any applications which don't yet work correctly via
Waypipe, and command line interface improvements. Questions, if you
have any, would also be nice.


More information about the wayland-devel mailing list