3 pontos por GN⁺ 2024-01-28 | 1 comentários | Compartilhar no WhatsApp
  • O Sxmo é um ambiente minimalista que combina programas simples e scripts de shell em celulares Linux e outros dispositivos móveis para criar uma UI alinhada à filosofia Unix
  • Usa uma interface baseada em menus junto com um gerenciador de janelas lado a lado e, sobre configurações como sway, oferece suporte tanto a Wayland quanto ao Xorg legado
  • Oferece operação por toque, gestos e botões de hardware, e compensa a usabilidade em telas pequenas com menus de contexto que mudam conforme o app ativo é CLI ou GUI
  • Inclui recursos móveis como modem, chamadas, mensagens de texto, leitura de notificações e otimizações para dispositivos a bateria; também permite acessar menus e enviar mensagens via SSH
  • Chamadas, mensagens, gestos e botões físicos podem ser ligados a scripts do usuário, ficando mais próximo do uso ao estilo Linux, em que você modifica diretamente, do que de um ecossistema de apps fechado

O ambiente Linux móvel que o Sxmo busca oferecer

  • Sxmo é um ambiente minimalista para dispositivos móveis Linux e se apresenta como “minimal, mobile, hackable”
  • Celulares ou tablets Android antigos também podem funcionar com alguma configuração, e os exemplos de dispositivos incluem OnePlus 6 e Poco F1
  • Informações sobre suporte a dispositivos podem ser consultadas em device profile, e usuários iniciantes podem consultar o getting started guide

Forma de operação e customização

  • A UI usa uma interface baseada em menus simples junto com um gerenciador de janelas lado a lado
    • Como exemplo, é possível usar sway
    • As ferramentas buscam ser interoperáveis e fáceis de substituir
    • Há suporte tanto a Wayland quanto ao Xorg legado
  • O método de entrada móvel parte do pressuposto de uso em telas pequenas e com botões físicos
    • Há suporte a toque e gestos
    • É possível controlar menus com botões de hardware
    • Os menus de contexto mantidos pela comunidade mudam conforme o aplicativo ativo é CLI ou GUI
  • Os recursos de Linux móvel incluem até modem, chamadas, mensagens de texto e notificações
    • É possível ler notificações e mensagens de texto
    • Inclui otimizações para dispositivos alimentados por bateria e telas pequenas
    • O SSH é suportado como forma central de uso, e todos os menus podem ser acessados via SSH
    • É possível enviar mensagens de texto via SSH usando editores de texto como vis, emacs e vim
  • Para possibilitar hacking, várias ações podem ser ligadas a scripts de shell
    • É possível executar scripts personalizados em eventos de chamadas ou mensagens
    • Com lisgd, é possível vincular scripts a gestos
    • É possível associar scripts a cliques simples, duplos e triplos nos botões físicos do dispositivo
    • Logs do modem, lista de contatos e textos de SMS são armazenados como texto simples
  • O ecossistema de apps não é fechado, e apps FOSS usados no desktop também podem ser usados no mobile
    • Funciona em distribuições Linux otimizadas para mobile, como Alpine Linux e postmarketOS
    • É possível usar aplicativos baseados em terminal em um smartphone

1 comentários

 
GN⁺ 2024-01-28
Opiniões do Hacker News
  • Entre as interfaces que testei no PinePhone, sxmo foi de longe a melhor
    Não costumo usar muito coisas da família suckless e, embora eu respeite esse tipo de software, sou mais atraído por opções cheias de recursos como Emacs ou KDE. Ainda assim, o sxmo é muito mais responsivo que KDE ou Phosh e, depois que você supera a barreira da descobribilidade, ele é bem funcional e intuitivo. Acho que havia também uma boa folha de dicas feita pelo megi

    • Estou usando Plasma Mobile no Librem 5 e ele é bem responsivo
      Mas, como o KDE decidiu refazer seus apps principais em um framework mais amigável a mobile, não sei o quanto ele será viável como plataforma de apps. No momento não há muito no que se aprofundar, e é bem provável que continue assim pelos próximos anos. Pela recomendação, pretendo experimentar o sxmo também
    • Fiquei uns 6 meses sem usar o PinePhone e, antes disso, também passei um tempo sem usá-lo porque, por algum motivo desconhecido, o áudio das chamadas não saía, mas, somando tudo, usei-o como telefone principal por cerca de um ano e meio
      Também testei outros ambientes de desktop, mas acabei ficando no sxmo/swmo; gostei da filosofia de poder compor e controlar os componentes por conta própria, e o fato de poder mexer no telefone via SSH a partir do notebook pesou bastante. Eu já estava acostumado ao Sway e, na época em que comecei, Phosh e KDE tinham problemas bem graves
      Dito isso, o sxmo sempre teve bugs sérios. Há muitas condições de corrida que quebram tudo até reiniciar, e o comportamento varia conforme o estado de suspensão e a ação anterior: para desbloquear, às vezes é preciso apertar o botão de energia uma, duas ou três vezes, ou segurar e depois apertar de novo. Mudanças de estado ou modo também levam quase 1 segundo para aparecer na tela, o que acaba sendo surpreendentemente estressante
      Quando algum estado de mutex se embaralhava, novos processos tentando controlar o piscar do LED continuavam se acumulando e, no fim, às vezes nem segurar o botão de energia funcionava, sendo necessário remover a bateria
      Nas discussões de que Rust é melhor que C, costuma-se dizer que a segurança de memória e um modelo de dados melhor eliminam certas categorias de bugs, mas boa parte do sxmo é implementada em scripts de shell e, do ponto de vista de projeto em larga escala, isso é muito pior que C. Há menos componentes básicos adequados, e essas limitações ficam evidentes
      O sistema inteiro parece mais um amontoado de pedaços que fingem não ver a existência uns dos outros; se eles cooperassem entre si, provavelmente o resultado seria muito mais estável. À primeira vista pode parecer bom, mas há partes que não foram implementadas de forma totalmente correta e, às vezes, o próprio design é complexo demais e mal definido
      Não acho que tenha mudado muito nos últimos 6 meses, então quero lançar um desafio aos usuários do sxmo. Tentem descobrir como alterar a exibição do relógio na bandeja do sistema e como fazer com que ele atualize no horário exato, em vez de poder atualizar com até 55 segundos de atraso. Nesse processo, vocês passarão por vários sistemas diferentes, como um timer de 55 segundos que define um valor em cache e a barra de status que busca esse valor, e acabarão vasculhando pelo menos uns três lugares no disco. Vocês provavelmente precisarão de uma ferramenta como ripgrep e, no fim, vão se perguntar se não bastava colocar date +'%H:%M' no comando da barra de status e trocar por date +'%-I:%M %P'
      Em termos de recursos, também há coisas que simplesmente funcionariam no Android, mas não funcionam de jeito nenhum, ou coisas que funcionam no Phosh mas não rodam de forma suave. Em compensação, depois que você descobre como fazer algo funcionar, dá para scriptar muito melhor. Tornei meu fluxo de trabalho pessoal mais confortável do que em qualquer outro sistema operacional, mas escrevi muitos scripts para isso
      Com o tempo, alguns problemas foram corrigidos e outros surgiram, mas a qualidade real geral continua baixa. Mesmo assim, continuo usando, então talvez eu seja masoquista
      Em resumo, não consigo pensar em uma única pessoa a quem eu realmente recomendaria sxmo/swmo. Mas, se houver um perfil para o qual eu recomendaria, provavelmente seria alguém que já usa um gerenciador de janelas em mosaico no desktop e não se importa muito com o telefone em si
  • Se a página inicial tivesse um vídeo de demonstração de 1 a 2 minutos em vez de uma apresentação de 45 minutos, acho que conseguiria transmitir o conceito com muito mais clareza

  • Gostei. Tudo é conectado por scripts de shell, então vai depender do gosto de cada um, mas gosto da possibilidade de mexer rapidamente na UI do telefone
    Escrevi um script de despertador no próprio PinePhone durante o trajeto para o trabalho, e preciso publicá-lo. Ele acorda do estado de suspensão profunda pouco antes do alarme e toca o alarme
    Ainda faltam muitas coisas, como um despertador que configure o despertar pelo RTC, mas, no geral, é um sistema legal e pretendo voltar a usá-lo e hackeá-lo num futuro próximo

  • Se você vai à FOSDEM e tem interesse em Linux em telefones, vale conferir a programação da sala de desenvolvedores [0] e os estandes relacionados [1]
    [0]: https://fosdem.org/2024/schedule/track/foss-on-mobile-device...
    [1]: https://fosdem.org/2024/stands/

  • É difícil concordar com a afirmação de que “o kernel que roda em dispositivos Android foi modificado a tal ponto que a comunidade não consegue mantê-lo”
    Android também funciona com o kernel Linux mainline. Se a comunidade já consegue manter o kernel mainline, a série de 210 patches incluída no Android Common Kernel não deveria ser algo impossível de lidar. Descartar todo o valor do Android por causa disso é como queimar a casa para se livrar dos percevejos
    Como o Android tem suporte a múltiplas janelas, também parece razoável que alguém implemente um gerenciador de janelas em mosaico para Android

  • Fico curioso se dá para rodar isso em um servidor Intel/AMD comum e usar via sessão xrdp/nx
    Preciso de compatibilidade social e de uma boa câmera. Já usei i3, mas era difícil usar sem teclado físico

    • Também fico curioso se seria possível adicionar gestos de ação ao Sway móvel
      pinephone-sway-poc: https://github.com/Dejvino/pinephone-sway-poc#components
      O rpm-ostree agora oferece suporte a usar imagens de contêiner OCI como imagens do host, o que torna as atualizações do sistema operacional fáceis e mais resilientes a erros. É possível selecionar outro item no menu de boot para voltar ao estado anterior, ou seja, kernel + overlay de /etc + partição raiz + pacotes
      "Using OSTree Native Containers as Node Base Images" (2023) https://www.opensourcerers.org/2023/06/16/using-ostree-nativ...
  • Se você quiser mudar o estilo do SXMO sobre o Sway — por exemplo, deixar os itens de menu maiores para facilitar o toque com o dedo, trocar para uma fonte estreita para caber mais texto em uma linha, ou ajustar a aparência — este guia é útil: https://porkyofthepine.org/blog/rice_sxmo_sway.html

    • Já pensei em rodar uma sessão de telefone Linux no servidor, e por enquanto uso só tmux+mosh
      Acho que seria muito melhor se existisse um gerenciador de display que realmente funcionasse bem no telefone, e isso pode ajudar a avançar nessa direção
    • Seria bom ter capturas de tela
      Tudo que vi sobre o SXMO me passa a impressão de ser para hackers barbados que valorizam mais a liberdade à la Stallman do que estética ou usabilidade
  • É bom não precisar necessariamente rodar apps do Google
    Ainda assim, seria realmente útil poder acessar alguns apps necessários, mesmo que eu não goste muito deles, como certos apps essenciais de banco ou de automação residencial

    • Existe um software chamado Waydroid que permite executar apps Android em plataformas GNU/Linux, incluindo o PinePhone
      Apesar do nome, o Sxmo pode rodar em Wayland em vez de X, então oferece suporte ao Waydroid
      Pessoalmente, não consegui fazer o Waydroid funcionar, e o download grande exigido na configuração inicial dificultou ainda mais. Mesmo assim, não tentei com tanto afinco, e há vídeos online de pessoas que conseguiram
      [1]: https://waydro.id/
      [2]: https://tilvids.com/w/2b2f3a24-ae23-458e-a0fd-2f24a185a11b
    • Apps de banco geralmente não gostam de rodar em ambientes com root por motivos de “segurança”. Fico curioso se existe alguma forma de contornar isso
  • Parece que o PmOS tem duas variantes do SXMO
    sxmo-de-dwm: ambiente móvel Simple Mobile baseado no SXMO e executado no dwm
    sxmo-de-sway: ambiente móvel Simple Mobile baseado no SXMO e executado no sway

  • Fico curioso sobre o que há de novo no SXMO
    Não acompanho desde 2021, e queria saber se agora existe algum telefone em que ele rode de forma estável

    • Provavelmente o PinePhone é a opção mais estável
      Vi algumas pessoas usando nele, e em threads recentes sobre o PinePhone ele também foi mencionado várias vezes como uma boa alternativa ao Plasma padrão