Sep. 28, 2020

Refinando la experiencia de mi SO para tablets

Usando Surface Go 2 con 4G/LTE, Debian GNU/Linux e i3wm

A principios de este año intenté crear mi propio sistema operativo para tableta instalando Debian GNU/Linux en una tableta Microsoft Surface Go. Aprendí mucho sobre lo que me gusta de las tabletas. Pero seguía prefiriendo mi iPad Pro, principalmente por su experiencia de usuario pulida. Esta vez me propuse refinar mi software de tableta para reemplazar mi iPad.

Linux en tabletas (Surface)

Si estás pensando en instalar Linux en una tableta: no estás solo. Mi publicación anterior sobre instalar Debian GNU/Linux en Surface GO recibió mucha atención. Aparentemente, muchos de ustedes están buscando una alternativa para los sistemas operativos cerrados que generalmente se instalan en las tabletas (como iPadOS, Android o Windows 10S).

Hardware de Microsoft Surface y Linux

Como la historia está llena de dulce ironía, es Microsoft quien realmente fabrica un hardware bastante atractivo que funciona bien con Linux. Su línea Surface incluye diferentes computadoras portátiles y tabletas. La página de reddit "SurfaceLinux" está llena de interesantes historias de usuarios que vale la pena consultar. La gente lo está haciendo y tú también podrías hacerlo.

El hardware de Microsoft Surface es popular porque es realmente bueno
El hardware de Microsoft Surface es popular porque es realmente bueno

Primer intento: Surface Go (versus iPad Pro)

Después de instalar y modificar Debian GNU/Linux en Surface Go, apodado "Willem OS", intenté convertirlo en mi computadora principal. Si eres un visitante frecuente de mi blog, sabrás que he estado usando iPads y tabletas durante años como computadora principal. Finalmente, consideré que mi primera versión de "WillemOS" no era lo suficientemente buena: el iPad Pro estaba a años luz de distancia en lo que respecta a una experiencia de usuario pulida.

De este primer intento aprendí mucho, lo que me llevó a una mejor comprensión de lo que busco en una experiencia de tableta. Busco un software simple pero versátil para ejecutar en mi tableta.

Pero "simple" es en realidad muy difícil de lograr. Para hacer las cosas realmente simples, necesitas integrar perfectamente el hardware y el software. Apple lo hace bien, el iPad Pro proporciona una gran experiencia de usuario porque:

Resulta que lograr que estas cosas funcionen a la perfección con Debian GNU/Linux en Surface es difícil. Mi primer sistema operativo para tableta requería mucha interacción manual y, por lo tanto, era engorroso en comparación con el iPad Pro.

Segundo intento: Surface Go 2

Microsoft lanzó una nueva tableta Surface Go este año, la Surface Go 2. Tiene un procesador más rápido (¡hasta un 64%!), biseles más delgados y una pantalla mejorada. Es una actualización muy decente que pone a la Surface Go 2 mucho más a la par con el iPad Pro de 11 pulgadas en términos de hardware. Para mi segundo intento de crear la mejor experiencia de tableta, decidí usar el modelo superior de Surface Go 2:

Microsoft Surface Go 2 con teclado Type Cover negro y Surface Pen: ¡una pieza de hardware excelente!
Microsoft Surface Go 2 con teclado Type Cover negro y Surface Pen: ¡una pieza de hardware excelente!

Instalación de Debian GNU/Linux en Surface Go 2

La Surface Go 2 es muy similar a su predecesora cuando se trata de instalar una instalación básica de tu distribución GNU/Linux favorita. Seguí mis propios pasos de la instalación original de Surface Go aquí.

Instalar Debian GNU/Linux en Surface Go 2 es muy similar al Surface Go original
Instalar Debian GNU/Linux en Surface Go 2 es muy similar al Surface Go original

En resumen, debes seguir los siguientes pasos al instalar Linux en tu Surface:

Debian GNU/Linux con i3wm (“también conocido como WillemOS”) ejecutándose en Surface Go 2
Debian GNU/Linux con i3wm (“también conocido como WillemOS”) ejecutándose en Surface Go 2

Refinando la experiencia

El último paso de la instalación es donde puedes marcar la diferencia entre una experiencia de usuario fantástica y pésima. Para “alentarme” a seguir con este experimento, decidí vender mi iPad Pro: ¡quemando las naves (ya que no habría vuelta atrás)!

Vender tu iPad Pro es fácil si conservas las cajas originales; yo vendí el mío en solo unos días: ¡obligándome a mí mismo a hacer que la nueva tableta funcione!
Vender tu iPad Pro es fácil si conservas las cajas originales; yo vendí el mío en solo unos días: ¡obligándome a mí mismo a hacer que la nueva tableta funcione!

En una pantalla pequeña, ejecutar aplicaciones en pantalla completa tiene mucho sentido. Sé que el concepto convencional de PC de administrar ventanas de aplicaciones distintas no proporciona la mejor experiencia de usuario en una tableta pequeña. Por lo tanto, decidí probar un gestor de ventanas en mosaico: i3wm.

Gestor de ventanas en mosaico

El principio de un gestor de ventanas en mosaico es simple: las aplicaciones ocupan tanto espacio como haya disponible. Esto significa que si ejecutas solo una aplicación, estará en pantalla completa. Dos aplicaciones se ejecutan en pantalla dividida, etc., etc. Puedes definir reglas que automaticen la disposición de las aplicaciones. Usando atajos de teclado, puedes cambiar rápidamente entre aplicaciones. Es posible que necesites algo de tiempo para descubrir qué funciona mejor para ti cuando usas un gestor de ventanas en mosaico, ¡pero al final puede ahorrarte mucho tiempo!

Ejecutando Firefox (izquierda) y una ventana de terminal MOSH/tmux (derecha) en pantalla dividida usando el gestor de ventanas en mosaico i3wm
Ejecutando Firefox (izquierda) y una ventana de terminal MOSH/tmux (derecha) en pantalla dividida usando el gestor de ventanas en mosaico i3wm

Espacios de trabajo

Otra característica poderosa de i3wm es que puedes tener diferentes 'espacios de trabajo'. Son una forma fácil de organizar grupos de aplicaciones que se ejecutan juntas. Utilizo diferentes espacios de trabajo para diferentes cosas que hago. Un enfoque común es colocar el navegador web en un espacio de trabajo, las aplicaciones de correo en otro y aquellas con las que trabajas, en el tercero.

Los espacios de trabajo múltiples son muy potentes: es como cambiar de canal de televisión
Los espacios de trabajo múltiples son muy potentes: es como cambiar de canal de televisión

Lo bueno de los múltiples espacios de trabajo es que una aplicación (por ejemplo, tu navegador) puede ejecutar múltiples instancias en diferentes espacios de trabajo. Esto permite muchas combinaciones diferentes de aplicaciones. Aquí es realmente donde el gestor de ventanas i3wm es mucho mejor que la versión multitarea de iPadOS.

El gestor de ventanas i3wm admite muy bien los monitores externos, utilizando el mismo concepto de un espacio de trabajo. Simplemente designas uno o varios espacios de trabajo para que se muestren en la pantalla adicional/externa. Esto funciona bien con Surface Dock y los accesorios USB-C a HDMI para Surface. La compatibilidad con varios monitores es realmente excelente.

Deslizar tres dedos para cambiar de espacio de trabajo, un truco de macOS, usando fusuma puedes usar gestos multitáctiles en i3wm
Deslizar tres dedos para cambiar de espacio de trabajo, un truco de macOS, usando fusuma puedes usar gestos multitáctiles en i3wm

Una cosa que deberías probar es usar fusuma para habilitar gestos de tres dedos en el trackpad. Si alguna vez has trabajado en una MacBook, sabrás que los trackpads multitáctiles habilitan gestos útiles para cambiar de escritorio (o espacios de trabajo en i3wm). ¡Funciona realmente bien!

Almacenamiento

Para administrar mis fotos usando Shotwell quería un almacenamiento serio en mi tableta. Aunque tengo el modelo superior de Surface Go 2 con la unidad SSD de 256 GB, utilicé la ranura para tarjetas MicroSD para ampliar mi capacidad de almacenamiento en otros 512 GB. La tarjeta MicroSD es más lenta que la SSD integrada, pero para archivos que no lees todos los días/horas/minutos es lo suficientemente rápida.

Ampliar el almacenamiento en un Surface Go 2 es posible usando una tarjeta MicroSD
Ampliar el almacenamiento en un Surface Go 2 es posible usando una tarjeta MicroSD

Mi instalación de Debian GNU/Linux no tuvo problemas para reconocer la tarjeta MicroSD. Cifré toda la tarjeta MicroSD para evitar que mis fotos se filtraran si alguna vez perdía mi tarjeta. Siempre debes considerar esto, ¡toma las medidas adecuadas para proteger y respaldar tus datos!

Conectividad WiFi/4G/LTE

Después de instalar el firmware inalámbrico "no libre" en Debian, el WiFi funciona bien en Surface Go 2. ¡Hacer que LTE/4G funcionara fue mucho más difícil! Por alguna razón, la conexión WWAN no se inició, aunque inserté una tarjeta SIM que funcionaba en la Surface Go. Por alguna razón misteriosa, el módem no se inició correctamente, ¡4G/LTE no funcionó!

Instalando la SIM en la tableta Surface Go 2
Instalando la SIM en la tableta Surface Go 2

Una de las mejores cosas del iPad es que comparte la lógica de conectividad del iPhone. Administra automáticamente diferentes redes inalámbricas y conexiones de banda ancha móvil. ¡Quería que esto también funcionara en mi tableta Linux!

Cuando buscaba una pista para que 4G/LTE funcionara, busqué informes sobre Surface Pro. La Surface Go 2 es técnicamente muy similar a la Pro más grande. Pensé que podría aprender de los esfuerzos de las personas con banda ancha móvil en la Surface Pro. Después de muchas horas de búsqueda y probando diferentes cosas, encontré esta solución para hacer que 4G funcione en Surface:

¡Restablecer los búferes del módem de banda ancha Surface permitió que funcionara con Debian GNU/Linux!
¡Restablecer los búferes del módem de banda ancha Surface permitió que funcionara con Debian GNU/Linux!

Puedes usar el Network Manager (y Modem Manager) para automatizar la gestión de la conectividad en Linux. De forma predeterminada, preferirá las conexiones WiFi sobre la banda ancha móvil. Puedes hacer que se conecte automáticamente a través de 4G/LTE si no hay WiFi disponible. ¡Ahora funciona muy bien en combinación con el hardware de Surface Go 2!

Network Manager (nm-applet) cambia automáticamente entre conexiones WiFi y de banda ancha móvil
Network Manager (nm-applet) cambia automáticamente entre conexiones WiFi y de banda ancha móvil

Suspender/Hibernar/Reanudar

Otra cosa en la que ningún usuario de iPad piensa jamás es en lo bien que Apple hizo las cosas en lo que respecta a suspender y reanudar. Cuando tienes un iPad, puedes tenerlo en modo de espera durante muchos días y, sin embargo, siempre es muy rápido continuar donde lo dejaste una vez que lo vuelves a recoger.

Para que mi Surface con GNU/Linux hiciera lo mismo, necesitaba una forma de suspender y reanudar rápidamente. En el mundo de Linux/PC, básicamente hay cuatro modos de energía:

Para "reanudar instantáneamente donde lo dejaste", debes conservar los estados de las aplicaciones. Las reanudaciones más rápidas (y casi instantáneas) son posibles cuando el estado de la aplicación se almacena en la memoria RAM. El problema con la memoria RAM es que necesita corriente (¡energía!) para mantener su valor. Una vez que se pierde la energía, se pierden los estados de las aplicaciones.

La alternativa es suspender a disco (o hibernar), donde el estado se almacena en el dispositivo de almacenamiento permanente de la computadora. Permitirá que la computadora se apague por completo. El problema con la suspensión a disco es que la reanudación es más lenta y requerirá volver a ingresar frases de contraseña de cifrado para el cifrado completo del disco.

La buena noticia es que el GNU/Linux moderno viene con systemd que te permite configurar cómo maneja la computadora la suspensión y la reanudación. Puedes configurar tu tableta para que primero suspenda a RAM (permitiendo la reanudación instantánea) y luego, después de un período de tiempo, suspenda a disco.

La configuración de systemd
La configuración de systemd "AllowSuspendThenHibernate" en sleep.conf te permite definir un tiempo de espera entre la suspensión a RAM y la suspensión a disco (hibernación)

En un día laboral normal, me despierto (muy) temprano para trabajar en mis proyectos más desafiantes desde casa. Luego voy en bicicleta al trabajo y sigo trabajando desde allí. Calculé el tiempo de mi viaje y pensé que si mi tableta permaneciera encendida durante al menos dos horas, me permitiría reanudar el trabajo instantáneamente. Si no continúo trabajando en mi tableta dentro de dos horas, ahorrará energía de la batería suspendiendo a disco. De esta manera tengo la mejor experiencia para mi situación particular.

Configura LidSwitch (en login.conf de systemd) para suspender y reanudar automáticamente cuando cierras la Type Cover de Surface, yo lo he configurado para suspender y luego hibernar usando un tiempo de espera
Configura LidSwitch (en login.conf de systemd) para suspender y reanudar automáticamente cuando cierras la Type Cover de Surface, yo lo he configurado para suspender y luego hibernar usando un tiempo de espera

Apariencia uniforme

A diferencia del iPad, estrechamente controlado, el software en GNU/Linux se crea utilizando muchos enfoques diferentes para el diseño de la interfaz de usuario. No existe tal cosa como las Pautas de la interfaz de usuario que Apple dicta para iOS y iPadOS. Este es un problema, ya que hace que el software se vea y se sienta inconsistente.

Una apariencia uniforme es importante para permitir un entorno y una experiencia de usuario sin fricciones. Por lo tanto, hice muchos pequeños ajustes en el color, las fuentes, los iconos y las barras de herramientas para que todas mis aplicaciones se vieran y se sintieran similares. Aunque no es perfectamente armonioso, ya no se siente como si estuviera trabajando con "Frankenstein OS".

Prefiero un tema oscuro, ya que es más agradable para mis ojos, pero debes decidir por ti mismo. Usa herramientas como lxappearance para realizar ajustes para múltiples aplicaciones. Pero, probablemente también necesites realizar ajustes en cada aplicación individual. Utilizo el tema adwaita-dark y los iconos (monocromáticos) HighContrast, con la fuente Open Sans Light.

Explorador de archivos Thunar (izquierda) y GIMP (derecha) en armonía visual: crea una apariencia uniforme combinando colores, iconos y fuentes
Explorador de archivos Thunar (izquierda) y GIMP (derecha) en armonía visual: crea una apariencia uniforme combinando colores, iconos y fuentes
Shotwell (izquierda) y Xournal (derecha): dos aplicaciones muy diferentes ejecutándose una al lado de la otra, con una apariencia visualmente coherente
Shotwell (izquierda) y Xournal (derecha): dos aplicaciones muy diferentes ejecutándose una al lado de la otra, con una apariencia visualmente coherente

Usándolo como controlador diario

Construir un sistema hermoso es una cosa, ¡pero usarlo como controlador diario es otra cosa! La Surface Go es mi controlador diario y durante las últimas semanas he estado experimentando con diferentes cosas y configuraciones. Aquí hay algunos aspectos destacados.

Surface Pen es genial y cuando configuras Xournal para usar Xinput, la sensibilidad a la presión funciona perfectamente: puedes ver cómo varía el grosor de la línea, como un bolígrafo real
Surface Pen es genial y cuando configuras Xournal para usar Xinput, la sensibilidad a la presión funciona perfectamente: puedes ver cómo varía el grosor de la línea, como un bolígrafo real
El soporte es brillante en combinación con Xournal y Surface Pen: ningún iPad puede hacer esto
El soporte es brillante en combinación con Xournal y Surface Pen: ningún iPad puede hacer esto
El soporte es muy resistente ya que utiliza dos fuertes bisagras de metal
El soporte es muy resistente ya que utiliza dos fuertes bisagras de metal
Escribir en la Type Cover es un encanto con teclas reales (retroiluminadas), incluyendo ESC y una fila de teclas de función
Escribir en la Type Cover es un encanto con teclas reales (retroiluminadas), incluyendo ESC y una fila de teclas de función
También puedes usar un teclado Bluetooth, lo que permite una distancia cómoda entre tus ojos y la pantalla
También puedes usar un teclado Bluetooth, lo que permite una distancia cómoda entre tus ojos y la pantalla
Si bien USB-C es el futuro, el puerto conector Surface es bastante útil ya que funciona con Surface Dock 2 (que ofrece una gran cantidad de conectividad)
Si bien USB-C es el futuro, el puerto conector Surface es bastante útil ya que funciona con Surface Dock 2 (que ofrece una gran cantidad de conectividad)
La parte posterior de la Surface no tiene una lente de cámara que sobresalga, lo que permite que la tableta se apoye perfectamente plana sobre una mesa, ¡como debería ser!
La parte posterior de la Surface no tiene una lente de cámara que sobresalga, lo que permite que la tableta se apoye perfectamente plana sobre una mesa, ¡como debería ser!
¡Es una computadora pequeña, pero es increíblemente potente y versátil!
¡Es una computadora pequeña, pero es increíblemente potente y versátil!
¡Leer correos electrónicos en Evolution funciona bien!
¡Leer correos electrónicos en Evolution funciona bien!
Es lo suficientemente liviana como para manejarla con una mano; puedes leer el sensor de giroscopio para rotar automáticamente la pantalla, útil cuando lees un artículo (interesante)
Es lo suficientemente liviana como para manejarla con una mano; puedes leer el sensor de giroscopio para rotar automáticamente la pantalla, útil cuando lees un artículo (interesante)
La Surface Go 2 es una herramienta seria, capaz de cosas poderosas cuando te conectas a la nube (usando una terminal, MOSH y tmux)
La Surface Go 2 es una herramienta seria, capaz de cosas poderosas cuando te conectas a la nube (usando una terminal, MOSH y tmux)

Conclusión

Construir mi propio sistema operativo para tableta es un verdadero desafío. Mi primer intento no fue lo suficientemente bueno como para reemplazar mi iPad. Sin embargo, este segundo intento es diferente. El tiempo y el esfuerzo que dediqué a refinar la experiencia del usuario dan como resultado un sistema mucho mejor. Ahora lo uso como mi computadora principal a diario.

Aunque siempre aprecié el trabajo que Apple ha hecho en el iPad, sigue estando limitado por su software cerrado. Especialmente ahora, cuando Apple ha decidido duplicar su control de la AppStore. La única forma de controlar el futuro es crearlo tú mismo: ¡creo que es el momento adecuado para convertirme en capitán de mi propio barco!

Actualización de enero de 2021

Después de meses de uso intenso he decidido abandonar mi propio sistema operativo para tableta