Fox en Linux, via Android
Este post resulta que al final es casi irrelevante. Dejé una nota al final, pero igual lo publico.
Como contexto, FoxWQ es un servidor de go chino, que tiene montones de personas conectas en esencialmente cualquier momento, por lo que siempre se puede conseguir un partido bastante rápido.
El problema que tiene Fox es que no tienen un cliente para Linux, y no hay clientes abiertos (hay uno que empezó a hacerlo, pero quedó abandonado). Tiene sí un cliente para Windows, pero la verdad es que cuando intenté usarlo con Wine me daba problemas. Hace bastante de eso, capaz que ahora cambió, pero hace tiempo vengo usando en el teléfono y en la tablet el cliente Android.
El cliente Android no es particularmente lindo, pero anda, que es lo que importa. Está en chino, lo cual es un problema porque no hablo chino, pero con un poco de sacar fotos y pasarlas por un traductor, ya pude aprenderme la secuencia de botones que tengo que apretar para arrancar un partido y jugar.
Entonces, si ya tengo un cliente que sé que anda, y lo sé usar, ¿puedo simplemente usar ese mismo cliente en mi computadora? Bueno, la respuesta es que sí, gracias a Waydroid.
Waydroid es una especie de emulador Android, pero no del mismo tipo que los emuladores bastante pesados que se usan normalmente para el desarrollo. Waydroid te permite instalar las apps en un entorno virtual Android, y usarlas como si fueran aplicaciones comunes de Linux. Un golazo.
Para instalarlo, depende de tu distribución, pero la mayoría tienen un paquete, así que ya sea apt install waydroid o pacman -S waydroid, va a ser sencillo. Después lo corrés una vez, para inicializar, y listo. Te va a tirar en una ventana con Android pelado, pero la podés cerrar, no pasa nada.
Después de eso, tenés que bajar el apk que querés instalar. Fdroid permite descargar apks directamente, pero en el caso de Fox lo podés descargar directo desde la página.
Para instalarlo, podés correr waydroid app install archivo.apk, y eso lo instala. Pero ojo: Waydroid por sí mismo no es un emulador, y si querés instalar en un procesador amd64, el apk tiene que o ser puro bytecode, o si tiene librerías nativas, tienen que soportarlo, lo cual no es muy común teniendo en cuenta que (casi?) todos los teléfonos son arm. Un problema de waydroid es que si falla la instalación, no te dice nada: sólo vas y ver que no se instaló.
Obviamente, con mi suerte, la app de Fox tiene librerías nativas. Muchas. Si tiene una o dos y son librerías open source, podés rearmar el apk a mano si querés. Pero Fox tiene un montón, la verdad no sirve.
La solución es waydroid_script. Waydroid script es una colección de pequeños scripts que te permiten instalar cosas extra en tu entorno Waydroid. O sea, nada que no puedas hacer vos manualmente, al final, pero waydroid_script te lo hace más fácil. Lo que tenés que hacer es instalar libndk y libhoudini. Lo que hacen esas dos cosas es traducir “al vuelo” las librerías arm para que corran en amd64. O sea, una capa de emulación.
Luego de tener eso instalado, ahí sí podés instalar cualquier apk. Y para correrlo podés hacer waydroid app launch <paquete>, pero no es necesario, porque waydroid ya te pone un atajo en tus aplicaciones, todo prolijito.

Ya con eso, la app corre. Pero dependiendo de la app y de tus preferencias, capaz que tenés algunas cosas que no están cien por ciento perfectas.
En el caso de Fox, resultó que la app no respondía al mouse, sólo al touchscreen. No sé si esto es un problema de Waydroid siempre, o sólo cuando hay un touchscreen presente, pero se arregla fácil corriendo un comando:
waydroid prop set persist.waydroid.fake_touch "com.foxwq.*"
Waydroid tiene varias opciones de configuración que se pueden poner de esa manera. Esto lo que hace es traducir los clicks del mouse a toques del touchscreen antes de pasarlos a la app.
Otro tema es que cuando corrés una app, por defecto, básicamente te levanta la pantalla maximizada del sistema Android con la app adentro. Funciona, no está mal, pero queda un poco feo. Y además, el tamaño de la pantalla está fijado al momento de iniciar Waydroid, y puede haber cambiado (si, por ejemplo, tu pantalla se puede rotar). Para eso, hay otro comando:
waydroid prop set persist.waydroid.multi_windows true
Eso le dice a waydroid que corra cada app en una pantalla independiente, lo cual se integra un poco mejor con tu manejador de ventanas. Igual tiene sus problemas, como que la decoración de la ventana (la barra de título) es una cosa fea que pone Waydroid y no la que tenés configurada en tu sistema.
Otro tema: cuando tenés la opción de multi_windows, si estás en KDE (aparentemente sólo pasa en KDE), el puntero del mouse tiende a desaparecer dentro de la ventana. Todavía funciona, pero no sabés dónde está exactamente, lo cual lo hace obviamente inusable (bueno, supongo que si la app que estás usando es un único botón gigante, o algo tipo flappy bird, sirve igual). La solución:
waydroid prop set persist.waydroid.cursor_on_subsurface true
En los foros donde encontré esa solución alguna gente decía que con eso les aparecía un puntero doble del mouse, pero la verdad es que a mí me anduvo sin ningún problema.
Y listo, con eso quedó andando, y ya puedo jugar en Fox desde Linux.

Como me pasa muchas veces, después de hacer todo esto, y de escribir este post, me encontré con que el proyecto que yo pensaba que estaba muerto (porque el repositorio al que estaba linkeado en Github ya no existe), en realidad existe, y parece funcionar. Así que bueno, si lo que querés es jugar en Fox en Linux, es más fácil: minifox tiene lo que necesitás. No es open source (porque es un reverse engineering del protocolo de Fox, que es contra sus ToS, entonces quiere reducir la chance de que se lo hagan bajar), y tiene el riesgo (posiblemente menor) de que te baneen la cuenta por usar un cliente no autorizado, pero parece funcionar.
Igual publico el post, porque toda la parte de Waydroid me sigue resultando interesante. Es sólo que para este caso había una solución mejor.