LinuxCommandLibrary

waypipe

Remotely display Wayland applications

TLDR

Run a graphical program remotely and display it locally

$ waypipe ssh [user]@[server] [program]
copy

Open an SSH tunnel to run any program remotely and display it locally
$ waypipe ssh [user]@[server]
copy

Skip testing for Vulkan support
$ waypipe --test-skip-vulkan ssh [user]@[server] [program]
copy

Display help
$ waypipe [[-h|--help]]
copy

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 '. The host can be 'user@host'.

--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 using waypipe --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.

SEE ALSO

ssh(1), wayland(7), xpra(1), weston(1), socat(1)

Copied to clipboard