Hey y’all I did share this on Mastodon before but I’ve been told I should share this with the Forum as well ![]()
Back in July I got the Jolla Phone 2026 and I instantly fell in love with the software! Sadly I had to abandon my Z Fold 7- I really love the foldable. Last week I traded that Z Fold in for a Pixel 9 Pro Fold. Why? It has an unlockable bootloader!
You know where this is heading to. I started to port SailfishOS to the Pixel 9 Pro Fold!
It’s based on LineageOS 23.2 (Android 16 QPR2) with a self-built GKI 6.1 kernel, using the hybris-23.2 adaptation. And it boots into the UI now! ![]()
What works
- Boots on its own into Sailfish OS, including the first-run setup
- Inner and outer display, including touch on both
- Folding/unfolding switches between the displays (more on that below)
- Kernel modules for Wi-Fi, speaker amps and haptics load (but they’re not usable yet)
- USB Developer Mode via NCM instead of RNDIS
- Audio
What doesn’t (yet)
- Wifi, cellular, camera, sensors, Bluetooth
Folding
I extended the hwcomposer QPA plugin so it can switch between built-in displays at runtime, driven by the hall sensor. That part works, but the UI doesn’t re-layout afterwards. Silica’s Screen reads the screen size once at startup, it’s read-only, and it doesn’t follow QScreen geometry changes. Since Silica is closed source, I can’t fix that on my end. For now the shell restarts on fold/unfold, which closes open apps. ![]()
@Jolla: if Silica’s Screen followed QScreen::geometryChanged (width, height, sizeCategory, widthRatio), foldables could switch seamlessly! Maybe something to consider ![]()
Anyway here is the “demo” you probably wanted to see before I started yapping: