Skip to main content

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:

  1. Ubuntu's own firefox and chromium-browser packages 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: its firefox-esr and chromium packages are real builds.
  2. 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 -y

After 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/keyrings
$wget -q https://packages.mozilla.org/apt/repo-signing-key.gpg -O- | sudo tee /etc/apt/keyrings/packages.mozilla.org.asc > /dev/null
$echo "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/null
$printf 'Package: * Pin: origin packages.mozilla.org Pin-Priority: 1000 ' | sudo tee /etc/apt/preferences.d/mozilla > /dev/null
$sudo apt update && sudo apt install firefox -y

Hardware 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.

๐ŸŸกPerformance โ€” Medium Impact
Firefox's first launch is slow because it builds its profile and compiles cached data. Subsequent launches are much faster --- be patient the first time.

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 chromium package on ARM64: sudo apt install chromium -y
  • Ubuntu: chromium-browser is 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.

FeatureFirefoxChromium
RAM usage (5 tabs)~400-600 MB~600-900 MB
Startup time (warm)~8-15 seconds~10-20 seconds
Works under prootYes (disable hardware acceleration if needed)Unreliable โ€” sandbox/GPU failures common
Real package on DebianYes (firefox-esr)Yes (chromium)
Real package on UbuntuVia Mozilla's apt repoNo (Snap stub only)
Tab unloadingBuilt-inExtension needed
โœ…๐Ÿ’ก Tip
Firefox is the recommended browser for ADL: it has the most reliable field results, real packages on both Debian and Ubuntu (via Mozilla's repository), and a documented fix (software rendering) for its one common failure mode.

Extensions improve both usability and performance. Ad blockers in particular reduce memory usage and speed up page loads significantly on ARM devices.

ExtensionPurposeAvailable On
uBlock OriginAd and tracker blocking, reduces memory and bandwidthFirefox, Chromium
Auto Tab DiscardAutomatically suspends inactive tabs to free RAMFirefox, Chromium
Dark ReaderDark mode for all websites, easier on OLED screensFirefox, Chromium
NoScriptBlock JavaScript on untrusted sites for speed and securityFirefox
h264ifyForce H.264 video codec for better software playbackFirefox, Chromium
โ„น๏ธNote
uBlock Origin is strongly recommended. Blocking ads and trackers on ARM hardware frees substantial memory and CPU cycles, making every page load noticeably faster.

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.

SettingValuePurpose
gfx.webrender.softwaretrueForces software WebRender โ€” the reliable renderer on this GL stack
browser.tabs.unloadOnLowMemorytrueAutomatically unloads background tabs when RAM runs low
browser.cache.disk.capacity51200Limits disk cache to 50 MB to reduce storage writes
browser.sessionstore.interval30000Reduces session save frequency to every 30 seconds
image.mem.decode_bytes_at_a_time16384Decodes images in smaller chunks to reduce memory spikes
network.http.max-connections32Limits total connections to reduce memory pressure
๐ŸŸกPerformance โ€” Medium Impact
The 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 &
FlagPurpose
--disable-gpuPrevents GPU calls that fail under proot
--process-per-siteUses one process per site instead of per tab, saving RAM
--disable-features=TranslateUIRemoves 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.

โœ…๐Ÿ’ก Tip
If you use video-heavy sites, install the h264ify extension. It forces the H.264 codec, which has better software decoding performance than VP9 or AV1 on ARM processors.

Troubleshootingโ€‹

๐Ÿ”งTroubleshooting
๐Ÿ”งTroubleshooting
๐Ÿ”งTroubleshooting
๐Ÿ”งTroubleshooting
๐Ÿ”งTroubleshooting
๐Ÿ”ง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