Ejecutando aplicaciones remotas en Wayland con Waypipe

Si vienen de siglos pasados, puede que les suene la posibilidad de ejecutar aplicaciones gráficas remotamente en Linux a través del protocolo X forwarding. Hace poco me vi en la necesidad de hacer algo parecido, puesto que mi computador portátil no tiene la potencia necesaria para editar fotos de forma fluída, pero tampoco quería estar siempre en la habitación donde está mi equipo de escritorio. Como los tiempos son otros y Wayland1 vino a reemplazar a X11/Xorg2 como protocolo de servidor gráfico, quise probar la herramienta de este siglo para ejecutar aplicaciones gráficas remotamente: Waypipe3.

En principio, la historio es simple: instalamos waypipe en las máquinas que harán de servidor y de cliente:

sudo pacman -S waypipe

Y luego lanzamos la aplicación en el servidor con

waypipe ssh <servidor> <comando>

Sin embargo, es probable que nuestra aplicación no rinda como nos gustaría, pues por defecto Waypipe no activa la compresión de datos. Por suerte para nosotros, existe el sub-comando waypipe bench que nos ayudará a optimizar los parámetros de compresión de Waypipe para nuestro caso de uso.

Primero, debemos obtener el ancho de banda entre nuestro equipos. Para ello podemos usar el siguiente comando4

dd if=/dev/urandom| ssh <servidor> ' cat - > /dev/null'

que nos dará un estimado de ancho de banda en MB/s\text{MB}/\text{s}. Ahora en nuestro servidor debemos ejecutar:

waypipe bench <B>

donde <B> es el estimado que obtuvimos antes. Luego de unos momentos, este comando nos dará una salida del estilo

Text heavy image, best compression level: "lz4=-1", with 0.001837+/-0.013525 sec for sample transfer
Photo-like image, best compression level: "zstd=17", with 0.331728+/-0.002882 sec for sample transfer

Dependiendo del tipo de aplicación a usar, debemos agregar el parámetro de compresión con la opción -c. En mi caso, como quiero usar un programa de edición de fotos, voy a ejecutar

waypipe -c zstd=17 ssh <server> darktable

Ejecutando darktable remotamente.

Otro parámetro a probar es la aceleración de video, que se puede activar agregando --video=hw antes del sub-comando ssh. Así, el comando final quedaría

waypipe -c zstd=17 --video=hw ssh <server> darktable