Onyx is a library with Sailfish GUI components for Qt6 apps.
Based on BSD licensed QML files from Sailfish Silica.
The closed parts of Sailfish Silica are not available so efforts have been made to reverse engineer those for Onyx. This has been done on best effort basis so Onyx will likely never be feature complete compared to Silica.
Most basic functionality is working. E.g. PageStack/Pages, PushUp/PullDown menus, Buttons, Icons, ComboBoxes, ContextMenus etc.
There is a sample app showing how to use Onyx in a Qt6 based SFOS app.
The sample app was not designed to be pretty but mostly to show how the code should look for setting up your app to use Onyx. It has also been used to try out different components during development so it just contains a lot of component next to each other.
Another aspect may be - easier porting of SFOS applications to other systems like desktop Linux, Android, Nemo mobile… Without change, or just minimal tweaks, in the UI.
It is nice experiment. Can’t wait to try compile OSM Scout on desktop with full UI.
I have not much knowledge of how lipstick works so I may have missed something when investigating cover handling. I could not find a way to “connect” the cover window to lipstick and show it in the grid of open apps. I found that the proprietary file lipstick-jolla-home-qt5/switcher/Switcher.qml is accessing a PersistentSwitcherModel but I could not find how the cover window should be added to that model.
I often find licensing a mess so I kept it simple and reused the BSD license from Silica qml files to avoid legal issues and make it easy for other developers to use Onyx. Do you see any issues using Onyx with BSD license? If I have understood correctly, changing to GPL license would require apps using it to be licensed as GPL?
I have not checked details of Opal but Onyx is (mostly) compatible with Silica API so if Opal is ported to Qt6 it will likely be beneficial for both projects. I would also welcome help improving Onyx.
I had one question about ‘ambience’ integration. It seems like you’re picking upt the theme/ambience preferences. I would guess that opacity blending to the them background is not implemented?
hmm… this would need collaboration from Jolla people. And now that I think of it, as the license is the same and you’re targeting Qt6 both Silica and Onyx live in very different niches but they could easily share code. Which means Jolla could benefit from Onyx when/if they every decide to move to Qt6, and meanwhile Onyx could benefit from Jolla’s help with native integration. Maybe Jolla would be more open to opening more (e.g. lipstick-jolla-home) if they see that they will actively benefit from this port/fork. I’m sure it would/will attract developers to Sailfish, which helps Jolla too.
Maybe you could propose collaboration in a community meeting?
No, but I’m neither a lawyer nor an expert. It’s just that someone could close your open sources without giving anything back. On the other hand, Jolla appears quite allergic to the GPL so collaboration with them is perhaps only possible if your work stays BSD. That’s also something they would have to answer.
Yes and no. Onyx would be installed separately and QML files would import Onyx modules. I don’t know if that constitutes “linking” which would make both works GPL. This might be a case for the LGPL but it’s discouraged.
Opal is different: Opal modules are currently copied into each app, which means only GPL apps can use it, or an app becomes GPL by using it.
GPL guarantees what was open once stays open forever. I personally like the “viral” nature of the GPL but that’s a matter of personal taste/ethics, I guess.
Nice Once I have more free time I’ll look into Onyx!
Assuming theme related colors have been stored with dconf then they will be available for the app but I prefer a solid app background so I have not looked into opacity blending yet.