MauiKit: A Toolkit for Multi Adaptable User Interfaces.
Today, we bring you a report on a brand-new release of the Maui Project.
We are excited to announce the latest release of MauiKit version 3.0.1, our comprehensive user interface toolkit specifically designed for convergent interfaces, the complying frameworks and in-house developed set of convergent applications.
Built on the foundations of Qt Quick Controls, QML, and the power and stability of C++, MauiKit empowers developers to create adaptable and seamless user interfaces across a range of devices, and with this release, we also mark the active beginning of the migration to a new major version – the upcoming MauiKit 4 release – which has been kick started by already started porting Maui Shell to MauiKit4.
Join us on this journey as we unveil the potential of MauiKit3 for building convergent interfaces and discover the possibilities offered by the enhanced Maui App stack.
To follow the Maui Project’s development or to just say hi, you can join us on Telegram: https://t.me/mauiproject.
We are present on Twitter and Mastodon:
Thanks to the KDE contributors who have helped translate the Maui Apps and Frameworks!
You can get the stable release packages [APKs, AppImage, TARs] directly from the KDE downloads server at https://download.kde.org/stable/maui/
And if you are feeling a bit curious about the Maui DE, you can download a new Manjaro-based image for **testing** the project’s state as a snapshot of MauiKit3.
Note: Please be aware that this is an ISO image from a third party.
With this update, we have focused on setting the groundwork for the ongoing migration to the Qt6 stack – this meant refactoring and tweaking the code base to be able to have the MauiKit Frameworks working with Qt5 and Qt6.
Keeping compatibility with Qt5 during the migration, will help us to maintain the stability of all Maui Apps and keep on working on them with minor changes; while the effort shifts into shaping the new major version of MauiKit -based on Qt6. This is where a bunch of new changes has been – and will bee – introduced, for example by renaming the MauiKit target names to keep the version compatibility. MauiKit based on Qt5 is now named MauiKit3 and the upcoming version will be MauiKit4, which should be ready for early 2024.
At the moment of this release, most of all the MauiKit Frameworks are already fully ported to Qt6 and working as expected. This migration will probably introduce API changes and more refactoring- resulting in renaming and cleaning up bits of code everywhere- which will be a great opportunity to finally introduce to the users some fine and proper documentation, and hopefully draw more attention to third-party developers already interested in the project.
As part of the documentation effort, now MauiKit4 has a demo application, where you can live-test all the convergent UI components from the Core module; the MauiDemo4 application is bundled when building the new MauiKit4.
For those interested in trying out MauiKit4, the feature branch of the porting to Qt6, has already been merged into the master, and all needed to build MauiKit4 is to set the flag:
So, to make it concise: this cycle of development was focused on porting MauiKit Frameworks to Qt6, which resulted in MauiKit4, while keeping backward compatibility. Why? This way we can focus on developing Maui Shell and all its components with MauiKit4 while the stacks of Maui Apps stays stable with MauiKit3 during the whole process. Upcoming releases will now only introduce changes to the Maui Apps and MauiKit4 – MauiKit3 is now frozen.
As part of this new release, Maui Shell has been fully ported to Qt6 and MauiKit4, but more information about it later. With the migration plan to MauiKit4, the sub-project organization namespaces will be renamed to follow a more coherent structure and hierarchy :
The MauiKit framework will now follow this scheme:
And the Maui Shell’s component shceme :
The Settings modules:
The system core components:
At the core of the Maui Project lies its foundational framework, MauiKit Controls, which provides a comprehensive set of template controls for creating user interfaces. In this latest release, alongside with porting to Qt6, we have made small improvements to MauiKit Controls, focusing on enhancing its consistent user experience, and tweaking minor details.
As part of the migration process, all of the frameworks have been bumped to use the same version scheme: 3.0.1 for MauiKit3; and starting in 2024 the version will be bumped to 4.0.0 for MauiKit4.
Controls & Style – [3.0.1]
- Now makes use of the QQC2 Dialog component, instead of a custom Popup.
- Separate Dialog from Popup, and introduce the variations template components: InfoDialog, InputDialog, and PopupPage.
- Styled the SplitViewItem with floating style in desktop mode.
- Ported to Qt6.
- Clean up the style for Qt6, removing references to Controls imports.
- Reused private ToolBarSection controls for the TabBar control.
- Fixes to the ApplicationWindow borders with CSD.
- Fixes issues with the ComboBox style and its Popup child.
FileBrowser, TextEditor, ImageTools, and Accounts – [3.0.1]
MauiKit FileBrowsing, has been fully ported to Qt6 and can be built using the same method as mentioned before with MauiKit4. The other frameworks are only partially ported and should be fully working with Qt6 by November 2023.
A few issues with the TextArea were also resolved.
Documents, Calendar & Terminal– [3.0.1]
Updated to the latest MauiKit Controls changes. MauiKit Calendar has been updated to the latest changes in the Akonadi Frameworks.
Now has been ported to Qt6 and maintains compatibility with Qt5. Target names follow the same scheme as MauiKit, MauiMan3 for MauiKit3 and Qt5, and MauiMan for Mauikit4 and Qt6.
The binary follows the same convention: MauiManServer3 and MauiManServer4, both of which would work.
The Maui Apps cover a wide range of essential functionalities, including a file browser, music player, text editor, image viewer, notes taker, video player, web browser, and calendar. In this latest release, our focus has been on updating them to use the new MauiKit target names and its newly introduced changes, for keep on developing on them for the next cycle..
It’s worth noting that some of these Maui Apps are also available on Android, making them accessible across multiple platforms. Furthermore, these apps are designed to work flawlessly on Linux phones, tablets, and desktop computers, ensuring a consistent and seamless user experience regardless of the device being used.
The next cycle will be focused on updating and fixing issues on the Maui Apps themselves.
Maui Shell & Maui Settings
Maui Shell has now been ported fully to Qt6! This means that Qt5 is not longer supported and now it depends on MauiKit4. The idea is to keep on developing MauiKit4 along with Maui Shell, while Maui Apps remain stable with MauiKit3.
The general plan is to have a stable release of Maui Shell by the time MauiKit4 comes out, around the first quarter of 2014.
This cycle of development took us to also port all the sub projects related to Maui Shell…
Some of the good things that Qt6 has to offer to Maui Shell will include a newly added support for custom shell extensions and protocols, this will allows us to have support for XWayland, which was a pending item in the realease-blocking issues:
You can find out more information about whats new with Qt Wayland Compositor at: https://www.qt.io/blog/shell-extensions-in-qt-wayland-6.3
And few more link for more information, for me and you all:
- Fix bugs on dragging around CSD surfaces.
- Now uses the new MauiMan InputDevices keymap properties.
- Now uses the new QPA Theme and set the right env var to make use of it.
- Other Qt applications now look better with the new Maui QPA Theme.
- Tweaked the padding of the Chrome title bars.
Maui shell is now rebased to qt6 🦾🦾🦾 pic.twitter.com/RAj9u8bpsf— Camilo Higuita (@cmhiguita) July 17, 2023
Fully ported to Qt6 and has now started using the Maui Core modules for the audio control panel, and network. The QPA Theme integration has also been ported.
Maui Settings now ported to Qt6! This is the last piece to now start developing Maui Shell fully with Qt6.— Camilo Higuita (@cmhiguita) July 25, 2023
Behind is Index, still using Qt5, but as an AppImage – it is self-contained so I can still keep using it – even is the frameworks are still broken. #mauikit @maui_project pic.twitter.com/nLmVwv4ZVq
Maui Core & Maui Wallpapers & CaskLib
Fully ported to Qt6.