waypipe
Remotely display Wayland applications
TLDR
Run a graphical program remotely and display it locally
Open an SSH tunnel to run any program remotely and display it locally
Skip testing for Vulkan support
Display help
SYNOPSIS
waypipe [options] command [arguments...]
waypipe [options] server
waypipe [options] ssh user@host [command...]
PARAMETERS
--compress
Specifies the compression algorithm to use (e.g., 'zstd', 'lz4', 'none'). Defaults to 'zstd'.
--display
Specifies the Wayland socket to connect to (client side) or listen on (server side). Defaults to the standard Wayland socket.
--ssh
Uses SSH as the transport method. Equivalent to 'waypipe ssh
--socket
Specifies the Unix domain socket path for direct client-server connections, bypassing SSH.
--listen
For server mode, specifies the network address to listen on (e.g., 'tcp:0.0.0.0:1234' or 'unix:/tmp/waypipe.sock').
--connect
For client mode, specifies the network address to connect to (e.g., 'tcp:127.0.0.1:1234' or 'unix:/tmp/waypipe.sock').
--verbose
Enables verbose output, showing more details about connection, compression, and errors.
--version
Displays the Waypipe version and exits.
--help
Displays a help message with available options and exits.
DESCRIPTION
Waypipe is a powerful Linux command-line utility designed to enable secure and efficient remote access to Wayland display servers and applications. It acts as a proxy, intercepting and forwarding Wayland protocol messages over a network, effectively allowing you to run Wayland applications on a remote machine and display them locally, or vice versa.
Unlike traditional X11 forwarding, which operates at a lower level of abstraction, Waypipe understands and optimizes the Wayland protocol directly. This leads to significantly lower latency and higher performance, making it suitable for interactive graphical applications over a network. It supports various transports, including SSH for secure, encrypted connections, and offers advanced features like compression to further reduce bandwidth usage.
Waypipe is an essential tool for users seeking to extend their Wayland desktop experience across machines, providing a robust solution for remote desktop, application streaming, and secure tunneling of graphical sessions in a Wayland-native environment.
CAVEATS
Waypipe is a relatively new and actively developed tool. While generally stable, compatibility with all Wayland compositors and applications may vary. It requires a functioning Wayland environment on both the client and server sides. Performance is heavily dependent on network conditions and the chosen compression algorithm. Due to its nature of forwarding display data, proper security considerations for remote access should always be applied, especially when not using SSH.
HOW IT WORKS
Waypipe operates by intercepting the Wayland communication between a Wayland client application and the Wayland compositor. On the remote machine (server), it captures the Wayland protocol messages generated by applications. These messages are then compressed and sent over the network to the local machine (client). On the local machine, Waypipe acts as a virtual Wayland compositor, interpreting the incoming messages and rendering them onto the local display. It also handles input events (keyboard, mouse) from the local machine, forwarding them back to the remote application. This direct protocol-level proxying allows for significant efficiency gains over pixel-based remote desktop solutions.
TYPICAL USAGE PATTERNS
- Remote Desktop Session: Run
waypipe ssh user@remote-host sway
(or your preferred Wayland desktop environment) to get a full remote desktop on your local machine. - Single Application Streaming: Launch a specific application remotely, like
waypipe ssh user@remote-host firefox
, and have only that application's window appear on your local desktop. - Secure Tunneling: Use Waypipe with its SSH transport to securely tunnel Wayland connections over untrusted networks, ensuring all graphical data and input are encrypted.
- Server Mode: Run
waypipe server
on the remote host and then connect to it from the local machine usingwaypipe --connect tcp:remote-host:port
or similar.
HISTORY
Waypipe emerged to address a significant gap in the Wayland ecosystem: the lack of a robust, native solution for remote display and application forwarding, akin to X11 forwarding. While Wayland's design emphasizes local rendering for security and performance, the need for remote capabilities remained. Developed by Nick Black (dank among others), Waypipe was created to fill this void by efficiently proxying the Wayland protocol itself, rather than relying on an intermediate layer like VNC or RDP. Its development has focused on high performance, low latency, and secure transport, making it the de facto standard for Wayland remote graphics.