sailfish-browser-next153

Rating: 
5
Your rating: None Average: 5 (5 votes)

Experimental Gecko ESR153 (Firefox 153) browser for Sailfish OS 5.1 and 5.2.

Sailfish OS ships a browser based on Gecko ESR91 from 2021; this is a community port of the current ESR153 engine, the successor of my ESR140 port (sailfish-browser-next).

Installs alongside the stock browser

Every package in this stack carries a "-next153" suffix and uses its own directories and profile. The system browser is not touched, and the ESR140 "-next" stack can stay installed as well — all of them appear in the app grid and can be used side by side. Uninstalling the -next153 packages leaves everything else exactly as it was.

Installation

Enable this repository and install ONLY this package. The dependencies (xulrunner-qt5-next153, embedlite-components-qt5-next153, qtmozembed-qt5-next153 and the three sailfish-components-webview-qt5-next153 packages) are pulled in automatically. Download is roughly 70 MB, installed size around 200 MB.

The app grid entry uses a purple icon, so it is easy to tell apart from the stock browser's blue one.

 

Open with dialog

 

if you want to open links with this browser you can edit the desktop file like thia to add the mimetype field, thanks to mautz for finding that: sudo python3 - <<'PY' src = '/usr/share/applications/sailfish-browser.desktop' dst = '/usr/share/applications/sailfish-browser-next153.desktop' mime = next((l for l in open(src) if l.startswith('MimeType=')),     'MimeType=text/html;application/xhtml+xml;application/xml;text/xml;'     'x-scheme-handler/http;x-scheme-handler/https;\n') s = open(dst).read() if 'MimeType=' in s:     print('already present') else:     j = s.index('\n', s.index('Exec=')) + 1     open(dst, 'w').write(s[:j] + mime + s[j:])     print('added:', mime.strip()[:60]) PY

or manually this line MimeType=text/html;application/xhtml+xml;application/xml;text/xml;x-scheme-handler/http;x-scheme-handler/https;

 

 and sudo update-desktop-database /usr/share/applications

This release: extensions

WebExtensions work. Open the menu, tap the puzzle-piece icon, and search addons.mozilla.org from inside the browser — installing, enabling, disabling and removing all work from there.

Tested and working:

  • uBlock Origin — filtering, including its dynamic rules
  • Cookie-banner blockers (I still don't care about cookies) — banners are removed on load
  • Tampermonkey — installs and its settings page opens; running userscripts not verified yet
  • Social Fixer for Facebook (in desktop view; it targets the desktop layout)

Extensions are on by default. Earlier builds needed a pref set by hand, so a fresh profile silently had none.

What works

  • Mobile layout and a mobile user agent (Firefox/153 Mobile) — sites no longer render in desktop mode
  • Touch: tap, scroll, flick, pinch zoom, double-tap zoom; long-press context menu and text selection
  • Dialogs (alert/confirm/prompt), HTTP authentication
  • FIDO2 / WebAuthn security tokens over USB, including PIN entry — registration and login tested with a YubiKey on webauthn.io
  • Downloads with the native Sailfish transfer UI
  • Camera and microphone access (WebRTC / getUserMedia) with permission dialog
  • Sign-in popups that close themselves (Google OAuth), landscape orientation

For developers: remote debugging

The Firefox devtools protocol is available, off by default. To turn it on, add these to ~/.local/share/org.sailfishos/browser-next153/.mozilla/user.js and restart the browser:

user_pref("devtools.debugger.remote-enabled", true);
user_pref("devtools.debugger.prompt-connection", false);
user_pref("devtools.chrome.enabled", true);
user_pref("embedlite.devtools.enabled", true);
user_pref("embedlite.devtools.port", 6000);

The server then listens on port 6000 on localhost and speaks the standard remote debugging protocol, so anything that talks RDP can attach — Firefox's about:debugging, or a terminal client for evaluating chrome-privileged JavaScript, which is how most of the extension work was debugged. You add a new connection with localhost:6000 after you opened the terminal window with ssh portforwarding.

To reach it from another machine, forward the port over SSH rather than opening it up:

ssh -L 6000:localhost:6000 defaultuser@<device>

There is a devtools.debugger.force-local pref that would make the server listen on all interfaces. Don't set it: the protocol grants full chrome privileges with no authentication, so anyone on the same network could read your cookies and run code in the browser.

Known issues

  • Extension popups — the small panel a toolbar button opens — are not shown yet. Extensions that are configured through a popup (VPN clients, for instance) can be installed but not set up. In progress
  • Context menu entries added by extensions are missing
  • ID Austria login (login.id-austria.gv.at) reports a wrong password even with the correct one; the password arrives byte-exact, the site rejects the session. Affects the ESR140 port as well. Under investigation
  • Occasional crash on first start; restarting usually succeeds
  • Rear camera delivers frames but shows a still viewfinder on the Xperia 10 V (device HAL issue)

This is alpha software. Tested on Sony Xperia 10 V (pdx235) with SFOS 5.2.0.15 and on the Jolla Phone 2026 with SFOS 5.1, both aarch64. Reports from other devices are very welcome — please include the device model and SFOS version.

Sources

Engine and EmbedLite layer: https://github.com/smatkovi/gecko-dev (branch fork-esr153) JS components: https://github.com/smatkovi/embedlite-components (branch next153) Browser UI: https://github.com/smatkovi/sailfish-browser (branch next153)

Release notes and direct RPM downloads: https://github.com/smatkovi/gecko-dev/releases/tag/esr153-alpha1

Support this work

This port was built in my free time. If you find it useful:

https://www.paypal.me/smatkovi https://liberapay.com/smatkovi

Application versions: 
Changelog: 

untested armv7hl version built

Comments

ahjolinna's picture

tested both version on my xperia x compact, xperia 10 and JP26.

153 is noticeable smoother compare to 140. There are some regression, my guess its mostly related to the port.

one example if you watch any video from https://areena.yle.fi/ and then try to leave and it crashes

here is a log from my JP 26 when I try to play a yle video from and then leave and then it crashed: https://paste.opensuse.org/pastes/471b4b46e85f

edit/update: okay seems the new update fix the crash issue, but its not as smooth as 140 when scrolling

Pages