Background
Over the past few weeks, myself and @rinigus had the idea to build and make available Qt 5.15 to other developers on SailfishOS.
This is not some magical rebuild of the operating system using a newer Qt version, but instead, packaging and making available Qt 5.15.8
as an alternate set of APIs available to application developers. The new Qt build installs in /opt/qt5 and it is possible to use in parallel
with the default system Qt 5.6.
Why have we done this
It started as a fun experiment to see if it was even possible, as SailfishOS is currenty stuck at Qt 5.6, and there are many improvements
in newer releases, and newer APIs available. Due to licensing issues, Jolla has been unable (so far) to update the Qt release, and we think
this avoids that issue by shipping newer a Qt as a community effort.
What is availabale
We hope to bring many Qt modules to SailfishOS, and KDE frameworks including Kirigami. The following modules are currently available:
- qtbase
- qt3d
- qtconnectivity
- qtdatavis3d
- qtdeclarative
- qtgraphicaleffects
- qtgamepad
- qtimageformats
- qtlocation
- qtmultimedia
- qtnetworkauth
- qtquickcontrols
- qtquickcontrols2
- qtsvg
- qtsensors
- qttools
- qtvirtualkeyboard
- qtwayland
- qtwebchannel
- qtwebsocket
- qtxmlpatterns
- kirigami2 5.104
What not to expect
Do not expect this to integrate nicely with the Qt 5.6 Silica components and the SailfishOS operating system, it is basically entirely seperate.
Why should I use this
We think the use case for this is to bring exisiting applications based on the likes of qtquickcontrols2, kirigami, plasma etc to users of SailfishOS.
You can also certainly use it to develop new SailfishOS and Linux applications, with the caveats described above around integration.
This sounds amazing, how do I use it
All packages are currently in one obscure OBS repository [1] so you can just install them from there. We have names packaged with the opt-qt5 prefix to not interfere
with existing packages, and are taking care that they will not interfere with system packages or interfere minimally. After we resolve any packaging issues, the intention is to make this available via SailfishOS:Chum.
There is a GettingStarted guide on the wiki, with a sample project, see [2]
What issues will I see
Right now, the libraries in /opt/qt5 will advertise their provided libraries via RPM provides facility. This will have to be fixed before wider usage by users.
The new QtWayland would prefer to use xdg-shell, which isnt available in the SailfishOS compositor Lipstick. This causes issues like dissapearing windows
when minimized, and the zoom levels are very much too small. To fix this, @rinigus has repurposed Flatpak wrapper application into “qt-runner” which application developers
can include as a dependency, and use it to launch the application.
Finally, it looks like Qt 5.15 at /opt is pushing SDK to the limits with the frequent and reproducible failures in builds on either one or all architectures. Failures usually
involve creation of files with weird permissions or the whole directories changing them. So, it could that building apps could be more complicated in this case.
How can I help?
As a developer, you can install, use and experiment with the new Qt version and provide feedback. You can develop against them and try all the things we havn’t yet been able to. Please leave feedback in this thread or via IRC in #SailfishOS.
Issues can be reported at GitHub - sailfishos-chum/qt5: Qt5 meta package for Sailfish OS and the PRs submitted against the packages in SailfishOS:Chum community · GitHub
[1] Show home:rinigus:qt515:packaging - SailfishOS Open Build Service
[2] Getting Started · sailfishos-chum/qt5 Wiki · GitHub