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 Wayland[1] vino a reemplazar a X11/Xorg[2] como protocolo de servidor gráfico, quise probar la herramienta de este siglo para ejecutar aplicaciones gráficas remotamente: Waypipe[3].
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 comando[4]
dd if=/dev/urandom| ssh <servidor> ' cat - > /dev/null'
que nos dará un estimado de ancho de banda en . 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
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