Skip to content

arinadi/DroidDesk

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

119 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📱 DroidDesk

Your phone is a Linux workstation.

Debian 13 + XFCE + Firefox ESR + dev tools — running natively on Android.


⚡ Install

curl -sL "https://raw.githubusercontent.com/arinadi/DroidDesk/main/bootstrap.sh" | bash

Installs XFCE desktop, launchers, and all built-in tools. Under 30 seconds.

Requirements


🏗️ How It Works

┌─────────────────────────────────────┐
│  USER LAYER (mutable)               │  ← Your packages, configs, data
│  VS Code, Chromium, Ollama, etc.    │     Preserved across updates
├─────────────────────────────────────┤
│  IMAGE LAYER (immutable)            │  ← Pre-built from Dockerfile
│  Debian 13 + XFCE + Firefox + dev   │     ghcr.io/arinadi/droiddesk
└─────────────────────────────────────┘

Two-layer architecture:

  • Image layer (immutable) — Debian 13 ARM64, XFCE, Firefox ESR, dev tools. Pre-built on GHCR. Download once.
  • User layer (mutable) — Your packages via patch.sh, dotfiles, configs. Preserved across updates via auto backup/restore.

Base: Debian 13 (Trixie). Firefox ESR from native repos — zero external APT sources. Update: bash ~/update.sh pulls latest image, restores user layer.


📦 Built-In + Extras

In the image (ready to use)

Category Tools
🌐 Browser Firefox ESR
🖥️ Desktop XFCE4 + Whisker Menu + Power Manager + 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 Adwaita icons, Greybird, SVG support

Install more with patch

bash ~/.droiddesk/scripts/patch.sh                    # Interactive
bash ~/.droiddesk/scripts/patch.sh --chromium --code --zsh
bash ~/.droiddesk/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

🚀 Start / Stop / Update

bash ~/start-x11.sh    # X11 server + PulseAudio
# → Open Termux:X11 app
bash ~/start-xfce.sh   # XFCE desktop

bash ~/kill-all.sh     # Stop everything
bash ~/update.sh       # Update DroidDesk

📱 Termux:Widget (1-tap launchers)

Shortcut Action
🟢 start-x11.sh X11 + audio
🟢 start-xfce.sh Desktop
🔴 kill-all.sh Stop all
🔄 update.sh Update

📋 Commands

Desktop

Command Action
bash ~/start-x11.sh Start X11 + PulseAudio
bash ~/start-xfce.sh Start XFCE desktop
bash ~/kill-all.sh Stop everything
bash ~/update.sh Update
bash ~/.droiddesk/scripts/patch.sh Install software

Termux:API (inside proot terminal)

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

Panel Widgets (Whisker Menu → Panel → Add → Generic Monitor)

bash ~/.droiddesk/tools/genmon-battery.sh   # 🔋
bash ~/.droiddesk/tools/genmon-volume.sh    # 🔊

💡 Why DroidDesk?

Problem DroidDesk 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

⚠️ Limitations

Limitation Workaround
No root proot provides root-like environment
No systemd Start services manually
No GPU acceleration Mesa software rendering
ARM64 only QEMU user-mode for cross-arch
No native X11 Termux:X11 app
Storage restrictions termux-setup-storage

Cannot do: Docker containers, GPU hardware access, systemd services, x86 natively.


🛑 Android 12+ Phantom Process Killer

  • Android 14+: Developer Options → Disable child process restrictions
  • Android 12-13: adb shell settings put global settings_enable_monitor_phantom_procs false

📂 Structure

DroidDesk/
├── bootstrap.sh          ← one-command entry point
├── scripts/              ← setup, patch, config
├── launchers/            ← start/kill/update shortcuts
├── image/                ← Dockerfile + XFCE/TAPI configs
├── docs/                 ← documentation
└── archive/              ← git history

📜 License

GPLv3

About

A portable Linux workstation for Android. Overcome mobile OS sleep limits for browsers (Google Colab/Bots) and run full IDEs for web development.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Shell 96.0%
  • Dockerfile 3.2%
  • CSS 0.8%