Your phone is a Linux workstation โ in 30 seconds.
curl -sL https://raw.githubusercontent.com/arinadi/arinanoX/main/bootstrap.sh | bash
Debian 13 ย ยทย XFCE ย ยทย Firefox ESR ย ยทย Dev tools ย ยทย Touch-optimized
TermuXย โย X11ย โย LinuXย โย Trixieย โย XFCE
Your Android phone is a pocket PC with 8GB+ RAM and an ARM64 CPU โ it deserves a real desktop.
| arinanoX | |
|---|---|
| ๐๏ธ | Declarative. A single Dockerfile defines the entire system. Like NixOS, but on Debian. |
| โก | Prebuilt. 580MB image from CI. Extract and run โ 30 seconds. No 30-minute apt wait. |
| ๐ | Atomic. Updates to a fresh image. Old one kept as arinanox-prev. Instant rollback. |
| ๐ฏ | Proot-aware. Compositing off, power daemon removed, all systemd warnings suppressed. |
| ๐จ | Orchis Material Design + elementary-hidpi icons. Dark, touch-friendly, baked in. |
| ๐ฑ | Termux:API. Battery, clipboard, voice, camera, notifications โ from inside proot. |
- Android ARM64 + Termux (F-Droid, NOT Play Store)
- Termux:X11 โ display server
- Termux:API (optional โ battery, clipboard, voice)
- Termux:Widget (recommended โ home screen launchers)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ USER LAYER (mutable) โ โ Your packages, configs, data
โ VS Code, Chromium, Ollama, etc. โ Preserved across updates
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ CORE LAYER (declarative & reproducible) โ โ Built from Dockerfile in CI
โ Debian 13 + XFCE + Firefox + dev โ ghcr.io/arinadi/arinanox
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
The image is built from a single Dockerfile โ your system as code.
- ๐ฆ All packages, configs, and themes defined declaratively in one file
- โ๏ธ XFCE optimized for proot: compositing off, DPI/scale, touch-friendly
- ๐จ Orchis Material Design + elementary-hidpi icons โ baked in
- ๐ฏ Proot-aware: systemd warnings suppressed, power daemon removed, dbus locked down
- โก CI-built and deployed to GHCR on every push
Silverblue-style atomic upgrades: bash ~/update.sh renames the old deployment to arinanox-prev before deploying the new image. Instant rollback: bash ~/.arinanox/scripts/proot-rollback.sh.
| Concept | NixOS | arinanoX |
|---|---|---|
| System definition | configuration.nix |
image/Dockerfile |
| Packages | declarative list | RUN apt-get install |
| Config files | environment.etc |
COPY configs/ โ /home/admin |
| Reproducible | yes (closures) | yes (CI + GHCR) |
| Atomic upgrades | generations | rename + rollback script |
| Rollback | nixos-rebuild switch --rollback |
proot-rollback.sh |
| User overlays | home-manager | patch.sh (layers tracked) |
Base: Debian 13 (Trixie). Firefox ESR from native repos โ zero external APT sources.
Update: bash ~/update.sh pulls latest GHCR image, re-deploys as new atomic generation.
| arinanoX (prebuilt) | DIY (manual install) | |
|---|---|---|
| Download | ~580 MB (1 image) | ~450 MB (base distro) + packages |
| Install time | ~30s (extract + setup) | 20-30 min (apt + config + theme) |
| XFCE desktop | configured, ready | must install + configure |
| Orchis theme | baked-in | manual install + set |
| Touch-friendly | scrollbars, single-click, scale 2x | manual GTK config |
| Proot fixes | compositing off, warnings suppressed, power removed | trial-and-error |
| TAPI utilities | included | must copy + configure |
| Rollback | atomic (rename) | manual backup/restore |
| Updates | 2-update-arinanox.sh (30s) |
re-do everything |
Why prebuilt? The Dockerfile does 30 minutes of apt installs, config tweaks, and proot optimizations so you skip straight to a working desktop.
| Category | Tools |
|---|---|
| ๐ Browser | Firefox ESR |
| ๐ฅ๏ธ Desktop | XFCE4 + Whisker Menu + PulseAudio tray |
| ๐ฑ๏ธ Touch | Single-click Thunar, large scrollbars, clipboard auto-sync |
| ๐ Apps | Mousepad (editor), Ristretto (images) |
| ๐ง Dev | Git, Node.js 22 LTS, Python 3 (pip/venv/dev), GCC, Make, CMake |
| ๐ Sys | htop, tmux, OpenSSH |
| ๐จ Theme | Orchis-Dark (Material Design) + elementary-hidpi icons |
bash ~/.arinanox/scripts/patch.sh # Interactive
bash ~/.arinanox/scripts/patch.sh --chromium --code --zsh
bash ~/.arinanox/scripts/patch.sh --list| Category | Packages |
|---|---|
| ๐ Browser | Chromium |
| ๐ป IDE | VS Code (code-server), Geany, Neovim |
| ๐ค AI | Ollama (local LLM) |
| ๐ฅ๏ธ System | Zsh + Oh My Zsh, Nala |
| ๐ง CLI | ripgrep, GitHub CLI |
| ๐จ GUI | Viewnior, Xarchiver, Galculator |
bash ~/start.sh # PulseAudio โ X11 โ virgl(?) โ XFCE (one command)
bash ~/stop.sh # Stop everythingarinanoX auto-detects virglrenderer-android. Install once:
pkg install virglrenderer-android
# โ restart ~/start.sh (now with GPU)| Mode | Env | Performance |
|---|---|---|
| GPU (virgl) | GALLIUM_DRIVER=virpipe |
4K video, 3D games |
| CPU (fallback) | LIBGL_ALWAYS_SOFTWARE=1 |
Desktop only |
| Shortcut | Action |
|---|---|
๐ข 1-start-arinanox.sh |
Full startup |
๐ด 0-stop-arinanox.sh |
Full stop |
# Back up configs first, then:
curl -sL https://raw.githubusercontent.com/arinadi/arinanoX/main/bootstrap.sh | bash| Command | Action |
|---|---|
bash ~/start.sh |
Start desktop (auto GPU) |
bash ~/stop.sh |
Stop everything |
| Command | Action |
|---|---|
battery |
Battery % and health |
clipget / clipset |
Android clipboard |
vol-up / vol-down |
Media volume |
bright 50 |
Brightness 0-100 |
toast "msg" |
Toast popup |
notify "T" "B" |
Notification |
buzz |
Short vibration |
speak "hello" |
Text-to-speech |
listen |
Speech-to-text |
openurl / share |
Open / share in Android |
whereami / wifi |
GPS / WiFi |
photo / flash |
Camera / flashlight |
bash ~/.arinanox/tools/genmon-battery.sh # ๐
bash ~/.arinanox/tools/genmon-volume.sh # ๐
| Problem | arinanoX Solution |
|---|---|
| Chrome sleeps tabs | Firefox ESR desktop browser โ stays alive |
| No glibc apps | Debian 13 proot โ standard glibc |
| No dev tools | Node.js 22, Python 3, GCC, CMake built-in |
| Background killed | Termux:WakeLock keeps sessions alive |
| No clipboard bridge | Auto-sync Android โ proot |
| Limitation | Workaround |
|---|---|
| No root | proot provides root-like environment |
| No systemd | Start services manually; power-manager removed |
| No GPU acceleration | Mesa software rendering; xfwm4 compositing off |
| ARM64 only | QEMU user-mode for cross-arch |
| No native X11 | Termux:X11 app |
| Storage restrictions | termux-setup-storage |
All warnings (systemd proxy, system bus, DPMS, GL renderer) are suppressed at the declarative layer โ arinanoX runs clean out of the box.
Cannot do: Docker containers, GPU hardware access, systemd services, x86 natively.
- Android 14+: Developer Options โ Disable child process restrictions
- Android 12-13:
adb shell settings put global settings_enable_monitor_phantom_procs false
arinanoX/
โโโ bootstrap.sh โ one-command entry point
โโโ image/ โ ๐ฏ System definition (Dockerfile)
โ โโโ Dockerfile โ declarative: packages, configs, themes
โ โโโ configs/ โ XFCE, bash, GTK, autostart
โโโ scripts/ โ setup, patch, theme, rollback
โโโ launchers/ โ start/kill/update shortcuts
โโโ docs/ โ documentation
โโโ .github/workflows/ โ CI โ GHCR image on push
Trackpad mode is recommended. For right-click without switching modes:
Ctrl+Alt+Rtriggers right-click at pointer (via xdotool)- Add a button to Termux Extra Keys:
~/.termux/termux.properties:
extra-keys = [ \
['ESC','/',{key: '-', popup: '|'},'HOME','UP','END','PGUP',{macro: "CTRL ALT r", display: "๐ฑ๏ธR"}], \
['TAB','CTRL','ALT','LEFT','DOWN','RIGHT','PGDN','KEYBOARD'] \
]Run termux-reload-settings after saving.
GPLv3