- Sxmo es un entorno minimalista que combina programas simples y scripts de shell en teléfonos Linux y otros dispositivos móviles para crear una UI acorde con la filosofía Unix
- Usa una interfaz basada en menús junto con un gestor de ventanas en mosaico, y admite tanto Wayland como el Xorg heredado sobre configuraciones como sway
- Ofrece operación táctil, gestos y botones de hardware, y compensa la usabilidad en pantallas pequeñas con menús contextuales que cambian según la app activa sea CLI o GUI
- Incluye funciones móviles como módem, llamadas, mensajes de texto, lectura de notificaciones y optimización ligera para dispositivos con batería; también permite acceder a menús y enviar mensajes por SSH
- Permite conectar llamadas, mensajes, gestos y botones físicos a scripts de usuario, por lo que se acerca más al uso al estilo Linux, modificable directamente, que a un ecosistema de apps cerrado
El entorno Linux móvil al que apunta Sxmo
- Sxmo es un entorno minimalista para dispositivos móviles Linux y se presenta como “minimal, mobile, hackable”
- Teléfonos o tablets Android antiguos también pueden funcionar con algo de configuración, e incluye como dispositivos de ejemplo el OnePlus 6 y el Poco F1
- La información de compatibilidad de dispositivos se puede consultar en device profile, y quienes lo usen por primera vez pueden consultar la getting started guide
Forma de uso y personalización
- La UI usa una interfaz basada en menús simple junto con un gestor de ventanas en mosaico
- Por ejemplo, puede usar sway
- Las herramientas apuntan a poder integrarse entre sí y reemplazarse fácilmente
- Admite tanto Wayland como el Xorg heredado
- El método de entrada móvil está pensado para pantallas pequeñas y el uso de botones físicos
- Admite toque y gestos
- Los menús se pueden controlar con botones de hardware
- Los menús contextuales basados en la comunidad cambian según la aplicación activa sea CLI o GUI
- Las funciones de Linux móvil incluyen módem, llamadas, mensajes y notificaciones
- Permite leer notificaciones y mensajes
- Incluye optimización ligera para dispositivos con batería y pantallas pequeñas
- Admite SSH como forma de uso central, y permite acceder a todos los menús por SSH
- Permite enviar mensajes por SSH usando editores de texto como vis, emacs y vim
- Para facilitar la hackeabilidad, varias acciones pueden conectarse con scripts de shell
- Se pueden ejecutar scripts personalizados ante eventos de llamadas o mensajes
- Con lisgd se pueden vincular scripts a gestos
- Se pueden conectar scripts a clics simples, dobles o triples de los botones físicos del dispositivo
- Los registros del módem, la lista de contactos y el texto de SMS se guardan como texto plano
- El ecosistema de apps no es una estructura cerrada, y las apps FOSS usadas en escritorio también se pueden usar en móvil
- Funciona en distribuciones Linux optimizadas para móviles como Alpine Linux y postmarketOS
- Permite usar aplicaciones basadas en terminal en un smartphone
1 comentarios
Opiniones de Hacker News
De todas las interfaces que probé en PinePhone, sxmo fue por lejos la mejor.
Normalmente no uso mucho cosas del ecosistema suckless y, aunque respeto ese software, me atraen más las opciones con muchas funciones como Emacs o KDE. Aun así, sxmo se siente mucho más ágil que KDE o Phosh y, una vez que superas la barrera de descubribilidad, es bastante funcional e intuitivo. Creo que también había una buena chuleta hecha por megi.
Pero KDE decidió rehacer sus apps principales con un framework más amigable para móviles, así que no sé qué tan realista será como plataforma de apps. Por ahora no hay mucho en qué meterse, y es muy probable que siga así durante los próximos años. Por la recomendación, pienso probar sxmo también.
Probé otros entornos de escritorio, pero al final me quedé con sxmo/swmo porque me gustaba la filosofía de poder combinar y controlar los componentes por mi cuenta, y también pesó mucho poder manejar el teléfono por SSH desde la laptop. Ya estaba acostumbrado a Sway, y al comienzo Phosh y KDE tenían problemas bastante graves.
Dicho eso, sxmo siempre tuvo muchísimos bugs serios. Hay muchas condiciones de carrera que lo rompen hasta reiniciar, y para desbloquearlo hay que presionar el botón de encendido una, dos o tres veces, o mantenerlo presionado y volver a presionarlo, con comportamientos distintos según el estado de suspensión y la acción anterior. Los cambios de estado o modo también tardan casi 1 segundo en reflejarse en pantalla, lo que termina siendo sorprendentemente estresante.
Si algún estado de mutex se enreda, empiezan a multiplicarse procesos nuevos que intentan controlar el parpadeo del LED, y a veces ni siquiera funciona mantener presionado el botón de encendido, así que hay que sacar la batería.
Cuando se dice que Rust es mejor que C, se suele mencionar que la seguridad de memoria y un mejor modelo de datos eliminan ciertas categorías de bugs, pero sxmo está implementado en gran parte con scripts de shell y, desde el punto de vista del diseño a gran escala, es mucho peor que C. Tiene menos bloques básicos adecuados, y esas limitaciones quedan en evidencia.
El sistema completo se parece más a una mezcolanza de piezas que fingen no verse entre sí; si colaboraran, probablemente podrían producir un resultado mucho más estable. A veces algo parece estar bien por fuera, pero no está implementado de forma completamente correcta, y otras veces el propio diseño es demasiado complejo y está mal planteado.
No creo que haya cambiado mucho en los últimos 6 meses, así que me gustaría plantearles un reto a los usuarios de sxmo. Busquen cómo cambiar la visualización del reloj en la bandeja del sistema y cómo hacer que se actualice a la hora exacta en vez de actualizarse con hasta 55 segundos de retraso. En el proceso pasarán por varios sistemas distintos, como un temporizador de 55 segundos que establece un valor en caché y la barra de estado que toma ese valor, y terminarán revisando al menos unas tres ubicaciones en el disco. Van a necesitar herramientas como
ripgrep, y al final probablemente se preguntarán si no habría bastado con poner simplementedate +'%H:%M'en el comando de la barra de estado y cambiarlo pordate +'%-I:%M %P'.En cuanto a funciones, hay cosas que en Android simplemente funcionan y aquí no funcionan en absoluto, o cosas que en Phosh sí funcionan pero aquí no van de forma fluida. A cambio, una vez que averiguas cómo hacer que algo funcione, puedes scriptarlo mucho mejor. Dejé mi flujo de trabajo personal más cómodo que en cualquier otro sistema operativo, pero para eso escribí muchos scripts.
Con el tiempo se corrigieron algunos problemas y aparecieron otros nuevos, pero la calidad real en general sigue siendo baja. Aun así, lo sigo usando, así que quizá sea masoquista.
En conclusión, no se me ocurre literalmente nadie a quien recomendarle sxmo/swmo. Si hubiera un tipo de persona a quien recomendárselo, probablemente sería alguien que ya usa un gestor de ventanas en mosaico en el escritorio y a quien el teléfono en sí no le interesa demasiado.
Creo que si en la página principal hubiera un video demo de 1 o 2 minutos en vez de una presentación de 45 minutos, el concepto se transmitiría con mucha más claridad.
Me gusta. Todo está conectado con scripts de shell, así que dependerá de gustos, pero me agrada poder destripar y modificar rápido la UI del teléfono.
Durante mis traslados escribí un script de despertador en el propio PinePhone, y debería publicarlo. Funciona despertando desde suspensión profunda justo antes de la alarma y haciendo sonar la alarma.
Todavía faltan muchas funciones, como un despertador que configure el despertar por RTC, pero en general es un sistema genial y pienso volver a usarlo y hackearlo en un futuro cercano.
Si vas a FOSDEM y te interesa Linux en teléfonos, conviene revisar el programa de la sala de desarrolladores [0] y los stands relacionados [1].
[0]: https://fosdem.org/2024/schedule/track/foss-on-mobile-device...
[1]: https://fosdem.org/2024/stands/
Me cuesta estar de acuerdo con la afirmación de que “el kernel que corre en dispositivos Android está tan modificado que la comunidad no puede mantenerlo”.
Android también funciona con el kernel Linux mainline. Si la comunidad ya puede mantener el kernel mainline, una serie de 210 parches incluida en el Android Common Kernel no debería ser algo imposible de manejar. Tirar por la borda todo el valor de Android por esto sería matar moscas a cañonazos.
Android tiene soporte multiventana, así que también parece razonable que alguien implemente un gestor de ventanas en mosaico para Android.
Me da curiosidad si esto se puede ejecutar en un servidor Intel/AMD común y luego usarlo mediante una sesión xrdp/nx.
Necesito compatibilidad social y una buena cámara. También probé i3, pero era difícil usarlo sin teclado físico.
pinephone-sway-poc: https://github.com/Dejvino/pinephone-sway-poc#components
rpm-ostree ahora admite usar imágenes de contenedor OCI como imágenes de host, así que las actualizaciones del sistema operativo son fáciles y resistentes a errores. Se puede elegir otra entrada del menú de arranque para volver al estado anterior, es decir, kernel + overlay de
/etc+ partición raíz + paquetes."Using OSTree Native Containers as Node Base Images" (2023) https://www.opensourcerers.org/2023/06/16/using-ostree-nativ...
Si quieres cambiar el estilo de SXMO sobre Sway, por ejemplo agrandar los elementos del menú para que sea más fácil tocarlos con el dedo, cambiar a una fuente estrecha para que quepa más texto en una línea, o ajustar la apariencia, esta guía sirve: https://porkyofthepine.org/blog/rice_sxmo_sway.html
Creo que sería mucho mejor si hubiera un gestor de pantalla que realmente funcionara bien en el teléfono, y esto podría ayudar a avanzar en esa dirección.
Todo lo que he visto sobre SXMO da la impresión de ser para hackers barbudos que valoran más la libertad al estilo Stallman que la estética o la usabilidad.
Es bueno no tener que ejecutar necesariamente apps de Google.
Aun así, sería de mucha ayuda poder acceder a algunas apps necesarias aunque no me gusten mucho, como ciertas apps clave de bancos o de automatización del hogar.
Sxmo, pese a su nombre, puede ejecutarse con Wayland en lugar de X, así que soporta Waydroid.
Personalmente no logré hacer funcionar Waydroid, y fue más difícil por las descargas grandes necesarias para la configuración inicial. De todos modos, tampoco lo intenté con demasiado empeño, y en línea hay videos de gente que sí lo consiguió.
[1]: https://waydro.id/
[2]: https://tilvids.com/w/2b2f3a24-ae23-458e-a0fd-2f24a185a11b
En PmOS parece haber dos variantes de SXMO.
sxmo-de-dwm: entorno móvil Simple Mobile basado en SXMO y ejecutado sobre dwm.sxmo-de-sway: entorno móvil Simple Mobile basado en SXMO y ejecutado sobre sway.Me da curiosidad qué hay de nuevo en SXMO.
No lo he seguido desde 2021, y quisiera saber si ya hay algún teléfono en el que valga la pena usarlo de forma estable.
He visto a varias personas usarlo en ese dispositivo, y en hilos recientes sobre PinePhone también se lo mencionó varias veces como una buena alternativa al Plasma predeterminado.