Extra QEMU arguments to enable headless `virgl`/hardware accelerated rendering: ```shell -device vhost-vsock-pci,guest-cid=3 -display egl-headless,gl=on ``` On client: ```shell rm -f /tmp/socket-local; waypipe -s /tmp/socket-local client # TCP waypipe --vsock -s 2:5000 client # VSock ``` On remote (change `-p 8022` and `pojntfx@localhost` to match your system): ```shell ssh -p 8022 -R /tmp/socket-remote:/tmp/socket-local -t pojntfx@localhost waypipe --display=0 --unlink-socket -s /tmp/socket-remote server -- bash # TCP ssh -p 8022 -t pojntfx@localhost waypipe --display=0 --vsock -s 5000 server -- bash # VSock ``` Now, in any future SSH sessions to your server, you can start graphical Wayland applications like so: ```shell export XDG_SESSION_TYPE=wayland export WAYLAND_DISPLAY=0 weston-terminal ``` And they will be rendered on your local system. If you want portals to work too, use: ```shell systemctl --user set-environment WAYLAND_DISPLAY=0 systemctl --user set-environment XDG_SESSION_TYPE=wayland systemctl --user import-environment WAYLAND_DISPLAY XDG_SESSION_TYPE # Restart the portal services systemctl --user restart xdg-desktop-portal.service systemctl --user restart xdg-desktop-portal-gtk.service ``` Electron-based apps, e.g. those installed via Flatpak, might need some additional flags, e.g.: ```shell flatpak run com.vscodium.codium --enable-features=UseOzonePlatform --ozone-platform=wayland ```