Run local headless Chromium on Android (Termux) with a DevTools endpoint at 127.0.0.1:9222.
This project is primarily designed to support Pi's
browser-toolsskill: https://github.com/badlogic/pi-skills/tree/main/browser-tools
- Android device with Termux
- Network access for first-time package installs
- Enough storage for Debian + Chromium packages
git clone https://github.com/<you>/chrome-headless.git
cd chrome-headlessmake installThis installs chrome-headless to:
$PREFIX/bin(Termux default), or~/.local/binwhenPREFIXis not set.
Re-run make install after pulling updates.
chrome-headless installThis command is idempotent and will:
- install
proot-distro(if missing) - install Debian distro (if missing)
- install Chromium in Debian
- install
fonts-noto-color-emojifor better screenshot parity
chrome-headless start
chrome-headless start --mobile
chrome-headless stop
chrome-headless restart
chrome-headless restart --mobile
chrome-headless status
chrome-headless logs--mobile / --desktop may appear before or after start / restart.
- viewport:
412x915 - device scale factor:
2.625 - Android mobile user-agent
CHROME_HEADLESS_PROFILE=mobile
CHROME_HEADLESS_WINDOW_SIZE=412,915
CHROME_HEADLESS_DEVICE_SCALE_FACTOR=2.625
CHROME_HEADLESS_USER_AGENT='Mozilla/5.0 ...'
CHROME_HEADLESS_PORT=9222- DevTools endpoint:
http://127.0.0.1:9222/json/version - Log file:
~/.cache/browser-tools/chromium-headless.log - Chromium user data:
~/.cache/browser-tools/user-data
chrome-headless statussays stopped:- run
chrome-headless logs - ensure
chrome-headless installcompleted successfully
- run
- Port conflict on
9222:- stop other DevTools instances
- set
CHROME_HEADLESS_PORTto another local port
- Slow first run:
- package installation in proot can take several minutes
Local checks:
bash -n chrome-headless
shellcheck chrome-headlessCI runs the same checks on pushes and pull requests.
GNU General Public License v3.0 (GPL-3.0). See LICENSE.