Web Browsers
A web browser is one of the first things most people install after setting up their ADL desktop. Firefox is the recommended browser on this stack; Chromium is possible on some configurations but commonly fails under proot. Two facts shape everything on this page:
- Ubuntu's own
firefoxandchromium-browserpackages are Snap stubs โ they only install a Snap, and Snaps cannot run under proot. On Ubuntu, Firefox must come from Mozilla's official apt repository instead. Debian is unaffected: itsfirefox-esrandchromiumpackages are real builds. - Run browsers as a normal (non-root) user. Browsers misbehave โ and Chromium refuses to start โ as root. The guided installer creates a non-root user as a standard step; log in with
proot-distro login <distro> --user <name> --shared-tmp.
Firefoxโ
Installation on Debianโ
Debian ships a real Firefox ESR (Extended Support Release) package โ security updates without rapid feature churn:
sudo apt install firefox-esr -yAfter installation, Firefox appears in the XFCE applications menu under Internet, or you can launch it from the terminal:
firefox-esr &Installation on Ubuntu (Mozilla's official apt repository)โ
Ubuntu's firefox deb is a transitional Snap stub that cannot work under proot. Install from Mozilla's official repository (it serves real ARM64 builds):
sudo install -d -m 0755 /etc/apt/keyringswget -q https://packages.mozilla.org/apt/repo-signing-key.gpg -O- | sudo tee /etc/apt/keyrings/packages.mozilla.org.asc > /dev/nullecho "deb [signed-by=/etc/apt/keyrings/packages.mozilla.org.asc] https://packages.mozilla.org/apt mozilla main" | sudo tee /etc/apt/sources.list.d/mozilla.list > /dev/nullprintf 'Package: *
Pin: origin packages.mozilla.org
Pin-Priority: 1000
' | sudo tee /etc/apt/preferences.d/mozilla > /dev/nullsudo apt update && sudo apt install firefox -yHardware acceleration: disable it if pages breakโ
The GL stack under proot + Termux:X11 is software-only and unusual; Firefox's hardware-acceleration path can crash or render black/corrupted pages here. If that happens: Settings โ General โ Performance โ uncheck Use recommended performance settings, then uncheck Use hardware acceleration when available, and restart Firefox. (Equivalent about:config switch: gfx.webrender.software = true.) This was exactly the fix in the Galaxy S22+ field report.
Backing up your profileโ
Your bookmarks, passwords, and settings live in ~/.mozilla/firefox/. Back it up with tar czf ~/firefox-profile-backup.tar.gz ~/.mozilla/firefox/ and restore by unpacking it into your home directory.
First Launchโ
The first launch takes longer than subsequent starts. Firefox needs to build its profile directory, initialize caches, and compile shaders. Expect 30-60 seconds on the first run. After that, startup times drop significantly.
Chromium (experimental under proot)โ
Chromium is the open-source project behind Google Chrome. Treat it as experimental on this stack โ its sandbox and GPU process commonly fail under proot, and it is not the default recommendation.
Availabilityโ
- Debian: ships a real
chromiumpackage on ARM64:sudo apt install chromium -y - Ubuntu:
chromium-browseris a Snap stub โ it cannot work under proot. There is no supported Chromium path on Ubuntu here; use Firefox from Mozilla's repository instead.
Why not --no-sandboxโ
Running as root, Chromium exits with "Running as root without --no-sandbox is not supported." The sandbox is Chromium's main security boundary โ it is what limits the damage a malicious web page can do if it exploits the renderer. Launching with --no-sandbox removes that boundary, so ADL does not recommend it, and never as a default or in desktop entries.
The correct response to that error is to run as a normal user (proot-distro login <distro> --user <name>). As a non-root user, Chromium may still fail under proot (namespace and GPU-process limitations) โ if it does, that configuration is simply unsupported; use Firefox.
Firefox vs. Chromium on ARMโ
Both browsers work, but they have different strengths in the ADL environment.
| Feature | Firefox | Chromium |
|---|---|---|
| RAM usage (5 tabs) | ~400-600 MB | ~600-900 MB |
| Startup time (warm) | ~8-15 seconds | ~10-20 seconds |
| Works under proot | Yes (disable hardware acceleration if needed) | Unreliable โ sandbox/GPU failures common |
| Real package on Debian | Yes (firefox-esr) | Yes (chromium) |
| Real package on Ubuntu | Via Mozilla's apt repo | No (Snap stub only) |
| Tab unloading | Built-in | Extension needed |
Recommended Extensionsโ
Extensions improve both usability and performance. Ad blockers in particular reduce memory usage and speed up page loads significantly on ARM devices.
| Extension | Purpose | Available On |
|---|---|---|
| uBlock Origin | Ad and tracker blocking, reduces memory and bandwidth | Firefox, Chromium |
| Auto Tab Discard | Automatically suspends inactive tabs to free RAM | Firefox, Chromium |
| Dark Reader | Dark mode for all websites, easier on OLED screens | Firefox, Chromium |
| NoScript | Block JavaScript on untrusted sites for speed and security | Firefox |
| h264ify | Force H.264 video codec for better software playback | Firefox, Chromium |
Performance Configurationโ
Firefox about:config Tweaksโ
Open about:config in the Firefox address bar, accept the warning, and search for each setting below. These changes optimize Firefox for ARM processors with limited resources.
| Setting | Value | Purpose |
|---|---|---|
gfx.webrender.software | true | Forces software WebRender โ the reliable renderer on this GL stack |
browser.tabs.unloadOnLowMemory | true | Automatically unloads background tabs when RAM runs low |
browser.cache.disk.capacity | 51200 | Limits disk cache to 50 MB to reduce storage writes |
browser.sessionstore.interval | 30000 | Reduces session save frequency to every 30 seconds |
image.mem.decode_bytes_at_a_time | 16384 | Decodes images in smaller chunks to reduce memory spikes |
network.http.max-connections | 32 | Limits total connections to reduce memory pressure |
browser.tabs.unloadOnLowMemory setting is critical for ADL. Since browser memory is shared with Android, aggressive tab management prevents Android from killing Termux when the system runs low on RAM.Chromium Launch Flags (non-root user, Debian)โ
If you experiment with Chromium as a non-root user on Debian, these flags reduce GPU-related failures โ note that none of them is --no-sandbox:
chromium --disable-gpu --process-per-site --disable-features=TranslateUI &| Flag | Purpose |
|---|---|
--disable-gpu | Prevents GPU calls that fail under proot |
--process-per-site | Uses one process per site instead of per tab, saving RAM |
--disable-features=TranslateUI | Removes the translate popup that wastes resources |
Hardware Accelerationโ
Hardware acceleration is limited in ADL because proot cannot access the Android GPU directly. Both Firefox and Chromium fall back to software rendering, which works but uses more CPU.
What this means in practice:
- Scrolling may be slightly less smooth on complex pages
- Video playback relies on software decoding, which increases CPU load
- WebGL content and canvas-heavy sites run slowly or not at all
- CSS animations work but may stutter on older devices
Despite these limitations, both browsers handle standard web browsing, web apps, and media consumption well. Most users will not notice a significant difference for everyday tasks like reading, email, and document editing.
Troubleshootingโ
Next Stepsโ
With a browser installed and configured, you can access web-based tools, documentation, and cloud applications from your ADL desktop. For related topics:
- Install additional applications from the Ubuntu repositories with
apt search <package-name> - Learn about managing packages in the apt commands reference