Skip to main content
Difficulty
Beginner
Time
10 minutes
Verified 2026-07-11

ADL scripts

Estimated time: 10 minutes ยท Difficulty: Beginner ยท Requirements: Termux installed ยท Expected outcome: you know what each optional script does, how to verify its checksum, and how to run it.

These scripts are optional โ€” everything they do is also written out step-by-step in the Get Started guide. They exist so you can automate the mechanical parts after reading what they do. Every script:

  • prints what it is doing and detects the wrong environment (Termux host vs inside the distro) and refuses to run there;
  • validates every argument against an allowlist;
  • supports --help and --version (and --dry-run where meaningful);
  • never touches Android security settings, never collects personal data, and never deletes user data without explicit typed confirmation;
  • passes ShellCheck, and ships with SHA-256 checksums.

Version: 1.0.0 ยท Last updated: 2026-07-11 ยท Changelog: initial release.

The scriptsโ€‹

ScriptRuns inWhat it does
adl-device-report.shTermux hostPrints a JSON report of non-sensitive device facts for the wizard. Collects no identifiers, makes no network connections.
adl-preflight.shTermux hostPASS/WARN/FAIL readiness checks (Android version, arch, RAM, storage, Termux source). Read-only.
adl-install-base.shTermux hostInstalls x11-repo, termux-x11-nightly, pulseaudio, proot-distro. Idempotent.
adl-install-distro.shTermux hostInstalls Debian/Ubuntu/Alpine/Arch via proot-distro; refuses to overwrite an existing install.
adl-create-user.shInside the distroCreates a normal (non-root) user with sudo, per distro family.
adl-install-desktop.shInside the distroInstalls Xfce/MATE/LXQt/Plasma packages + dbus. GNOME intentionally excluded (unsupported under proot).
adl-configure-audio.shTermux hostStarts/stops the localhost-only PulseAudio forwarding server.
adl-create-launcher.shTermux hostGenerates ~/start-desktop.sh from your configuration (backs up any existing one).
adl-doctor.shTermux hostDiagnoses the whole chain (PASS/WARN/FAIL + next step). --redact makes output safe for public issues. Changes nothing.
adl-backup.shTermux hostSnapshots a distro to a restorable archive via proot-distro backup.
adl-remove-installation.shTermux hostScoped removal (launcher / one distro / everything ADL-managed) with typed confirmation and a backup offer.

Checksums: SHA256SUMS ยท Machine-readable manifest: manifest.json

Download and verifyโ€‹

You may (and should) read any script before running it โ€” they are plain shell. The safe pattern is download โ†’ verify โ†’ inspect โ†’ run:

cd ~
curl -fLO https://thebpandey.github.io/ADL/downloads/scripts/adl-preflight.sh
curl -fLO https://thebpandey.github.io/ADL/downloads/scripts/SHA256SUMS
sha256sum -c --ignore-missing SHA256SUMS
less adl-preflight.sh # read it
bash adl-preflight.sh

Expected output: adl-preflight.sh: OK from the checksum step, then the script's own output.

Common errors: sha256sum: โ€ฆ FAILED means the download is corrupted or tampered with โ€” delete it and re-download over a trusted network. curl: (22) means the URL was mistyped.

Why not curl | bash? Piping straight to a shell executes code you never saw and skips checksum verification. ADL never recommends it.

Scripts that run inside the distroโ€‹

adl-create-user.sh and adl-install-desktop.sh run inside the Linux distribution. Download them in Termux, then pass them in:

proot-distro login debian -- bash ~/adl-create-user.sh --username myname

(Termux's home directory is visible inside proot sessions started this way.)

Summaryโ€‹

Optional, inspectable, checksummed automation for each phase โ€” with the doctor and removal scripts covering diagnosis and clean rollback.

Next stepsโ€‹