Guia completo e um script único para rodar um Ubuntu com desktop KDE Plasma dentro do Galaxy S23, usando Termux + proot-distro + Termux-X11 — sem root, com aceleração de GPU e opcionalmente num monitor externo.
Stack escolhida: Termux-X11 (display nativo, melhor desempenho) + Ubuntu (via
proot-distro) + KDE Plasma (desktop completo) + Turnip/Mesa (GPU Adreno de verdade, sem root).
Dois modos de uso:
- Na tela do celular — funciona direto, sem hardware extra e sem DeX.
- Como computador de mesa — hub USB-C com HDMI + USB + carregador, virando um desktop Linux com monitor, teclado e mouse. Nesse caso o Samsung DeX é o caminho recomendado, por dar semântica nativa de mouse e não exigir opções de desenvolvedor: veja monitor externo.
✅ Status: validado em campo. Testado num Galaxy S23 (Snapdragon 8 Gen 2, Adreno 740) com Ubuntu 26.04 + Plasma 6 e aceleração de GPU ativa. O que ainda não foi testado é o uso em monitor externo — a parte de DeX/HDMI segue baseada em documentação. Encontrou um erro? Veja solução de problemas e/ou abra uma issue.
┌─────────────────────────────────────────────────┐
│ Android (Galaxy S23) │
│ │
│ ┌─────────────┐ ┌──────────────────────┐ │
│ │ Termux │ │ App Termux:X11 │ │
│ │ (ambiente) │ │ (mostra a tela) │ │
│ │ │ └──────────▲───────────┘ │
│ │ proot-distro│ │ display :0 │
│ │ └─ Ubuntu │───────────────────┘ │
│ │ └─ KDE Plasma (startplasma-x11) │
│ └─────────────┘ │
└─────────────────────────────────────────────────┘
- Termux roda o ambiente base (não é root, é um app normal).
- proot-distro instala uma distro Linux completa (Ubuntu) dentro do Termux.
- Termux:X11 é um app separado que funciona como "monitor" — o KDE desenha a tela nele.
- PulseAudio leva o som do Linux para o Android.
Tudo é feito pelo lx, o script único na raiz do repositório.
pkg install -y git
git clone https://github.com/NicolasArthurDev/linux-android.git
cd linux-android
./lx install # deixa o comando 'lx' disponível de qualquer pasta
lx # menu interativoO ./lx install cria um symlink em $PREFIX/bin. A partir daí você digita
apenas lx, de onde estiver — não precisa lembrar onde clonou o repositório.
Por que symlink e não um alias no
.zshrc? Um alias só existe em shells interativos do shell onde foi definido: não funciona dentro de scripts, emsh -c, em subshells, nem se você trocar de zsh para bash. O symlink num diretório doPATHfunciona em todos esses casos — é o que um gerenciador de pacotes faria. E, por ser symlink e não cópia, umgit pulljá atualiza o comando. Para remover:lx uninstall(o repositório fica intacto).
Sem argumento nenhum ele abre um menu interativo. Se preferir digitar:
| Comando | O que faz |
|---|---|
./lx setup |
Instala tudo: Termux, Ubuntu, KDE e GPU. Pula o que já está feito — pode rodar de novo sem medo |
./lx start |
Inicia o desktop (detecta a GPU sozinho) |
./lx stop |
Encerra e libera memória |
./lx dev |
Ambiente de desenvolvimento (zsh, NvChad, tmux, lazygit...) |
./lx gpu |
Ativa a aceleração de GPU |
./lx browser |
Instala um navegador que realmente roda em proot (o do apt é snap) |
./lx vscode |
Instala o VS Code (repo oficial arm64) sem o sandbox do Electron |
./lx rice |
Desktop "rice": bspwm + polybar + rofi + picom, tema Catppuccin Mocha. No DeX use --mod alt |
./lx de bspwm |
Define o ambiente padrão do start (kde · bspwm · xfce) |
./lx doctor |
Diagnostica o que está faltando — rode este quando algo der errado |
./lx status |
Mostra quais etapas já foram concluídas |
./lx shell |
Abre um terminal dentro do Ubuntu |
./lx update |
Atualiza o repositório e os pacotes dos dois ambientes |
./lx install |
Habilita o comando lx global · uninstall remove |
./lx log |
Log da última sessão, com as linhas repetidas colapsadas |
./lx version |
Versão e qual arquivo está sendo executado |
./lx help |
Ajuda completa |
⚠️ Antes dosetup, leia os pré-requisitos. Há dois APKs e uma opção de desenvolvedor que precisam ser feitos à mão — o./lx doctoravisa se algum ficou faltando, mas não consegue fazer por você.
Os scripts em
scripts/viraram atalhos que chamam olx. Continuam funcionando, mas o caminho recomendado é o./lx.
./lx dev # nos dois: Termux e Ubuntu
./lx dev termux # só no Termux
./lx dev --no-claude # sem o Claude CodeInstala em ambos: zsh + Oh My Zsh (tema darkblood), NvChad, tmux,
git, btop, bat, fzf, lazygit, fastfetch e Claude Code.
Dois detalhes que o script resolve por você:
- O Neovim do apt pode ser antigo demais para o NvChad, que exige 0.10+ (o Ubuntu 24.04, por exemplo, traz o 0.9.5) — então ele é instalado do tarball oficial.
- O Claude Code não roda no Termux nativo (é um binário glibc; o Android usa
bionic libc). Ele é instalado dentro do Ubuntu, e o comando
claudefica disponível no Termux através de um wrapper que executa lá — transparente.
| Doc | Assunto |
|---|---|
| pré-requisitos | apps e opções do Android — leia antes de tudo |
| instalação | o passo a passo detalhado |
| uso diário | iniciar, parar, arquivos, atalhos |
| solução de problemas | quando algo dá errado |
| dicas de desempenho | deixar mais leve, alternativas |
| monitor externo | hub USB-C, HDMI, DeX — virar um computador |
| aceleração de GPU | Turnip/Adreno, o maior ganho do projeto |
| dentro do desktop | subiu o KDE, e agora? terminal, rede, deixar bonito |
| rice | bspwm + Catppuccin Mocha, tiling e atalhos de teclado |
./tests/run.sh # toda a suite
./tests/run.sh rice # só as suites que casam com "rice"164 verificações que não instalam nada: carregam o lx com o main()
removido e substituem os comandos externos por mocks que registram como foram
chamados. Cobrem detecção de contexto, layouts do proot-distro, resolução de
GPU e locale, quoting do comando enviado ao proot, tolerância a pacote
inexistente e os arquivos de configuração gerados pelo rice.
Tudo aqui roda sem root e em modo de usuário comum. O desempenho é bom no S23 — especialmente com a GPU ativada — mas o KDE Plasma em proot pode ter pequenos bugs (efeitos visuais, bloqueio de tela). A configuração já desativa o que costuma dar problema. Se quiser algo mais leve e estável, o XFCE é uma ótima alternativa (veja as dicas de desempenho).
Nicolas Arthur — @NicolasArthurDev
Projeto criado e validado num Galaxy S23. Se este guia te poupou tempo, deixe uma ⭐ no repositório.
Licença: MIT © 2026 Nicolas Arthur.