Today, we bring you a new report on Maui Shell’s progress.
We’ve included a preview of Maui Shell with Nitrux, and since then, new features, bug fixes, and improvements have been made to Cask (the shell), the startup scripts, and the session manager.
The following blog post will cover some of the changes and highlights from the last month of development.
Among many bug fixes that will be listed below, some of the highlights include a new dark mode toggle, adaptive color scheme, more controllers for audio, Bluetooth, and power management, styling cleanups, and UX interaction refinements.
Cask packs all the Maui Shell graphic elements, such as the panel, dock, launcher, cards, dialogs, notifications, etc. Let’s break down each part to see what has been improved, modified, and introduced.
Panel & Cards
The top panel is now slicker: on the desktop mode, it maintains the floating look, and on tablet and phone mode, it is more compact. This type of change in the size of elements like padding, margins, and height are all animated for smooth transitions between form factors.
The Panel cards are now “stackable,” meaning that you can open multiple sections on the desktop mode, and its cards will be stacked in that order. On desktop mode, you can still open all the panel section cards at once by using the mouse wheel shortcut.
The size of sliders and buttons has been reviewed, and the size of such elements has been reduced on the desktop.
[You can check the video below to see the transition between different form factor sizes]
Among many other minor fixes, the panel cards from the right and left sections no longer collide on constrained spaces, with more excellent drop shadows.
Users can now use the status bar section to manage audio levels, Bluetooth connections, device brightness, and check battery state regarding new features. However, some features still need more work, such as setting power profiles.
The media player card has been redesigned and now is a lot neater at first glance: only the artwork, title, and playback controls are shown, for more control users can expand it.
The session card now has a new button to switch between users, and when available it also shows the battery status of the connected devices.
The notifications cards can now list actions.
Initial work for listing tasks in the calendar has been started, and the plan is to use KOrganizer API.
Dock & Launcher
The dock layout has been tweaked, and the apps overview button is now at the end; it now has a drop shadow.
The launcher has been polished, and elements in the categories are bolder. The main page will now list shortcuts to standard locations such as Pictures, Downloads, etc. The main page will also list recent downloaded files and images; this will be optional.
The wallpaper can now be changed from the workspace, using a contextual menu entry.
We will eventually move the new wallpaper dialog to our Maui Manager application.
For now, the dialog will let you switch the wallpaper image source, dim the wallpaper, and set the fill mode.
Maui Shell will look for wallpaper images at /usr/share/wallpapers by default.
There’s an option to make the shell color scheme adaptive; it will take the colors from the current wallpaper, and in the process, it will pick the light or dark mode.
Another addition has been a Polkit agent for authentication; this new agent integrates with the Maui Shell interface as a built-in dialog.
To those of you interested in the development of Maui Shell, from a tester, packager, or contributor point of view, here’s some information regarding its development.
Cask uses Qt Quick Controls 2 with QML. Most of the controllers used are in the form of plugins written in C++, be it from Maui Shell or KDE projects:
- BlueDevil, for handling the Bluetooth connections.
- Plasma-nm handles Network connections.
- PowerDevil, handles power management, such as setting screen brightness, battery state, and power profiles.
These KDE projects expose their functionality as plugins that QML can consume, although some seem to be targeted for Plasma, making it a bit messy to be used outside of it.
For Zpace, the compositor, we are using Qt Wayland Compositor. Right now, shell and compositor live in the same process. There’s an initial idea to use the wroots layer-shell interface to make the shell, aka Cask, live in a separate process.
Zpace positions the surfaces correctly depending on the form factor: floating free for desktop, tilling for tablet, etc.
The program, startcask-wayland, starts Maui Shell.
It takes care of checking and setting the right environment variables needed, also launching the proper process, such as Cask itself, and services required by the plugins the cards use, such as PowerDevil, DBus, etc.
The session manager is supposed to handle the processes launched during Cask’s activity, which is still pending work.
If you are interested in contributing, there are a bunch of reasons you can get started, to list a few:
- You know about Linux file system structure, environment variables, bash, DBus, Systemd, etc.
- You care about symmetry, consistency, the right amount of padding and spacing, the right contrast ratio, etc.
- You want to correct some typos, spelling, or simply correct grammatical errors to make messages clear and clean.
- To make the UI unique and appealing, you want to propose a design pattern, mockup, etc.
- You have time to test and report issues on the current features.
- You know C++ or QML and want to hack.
- You want to try and deploy Maui Shell on a tablet or phone to test.
- You know about the Wayland protocol
- You want to learn and start hacking and get help to learn more in the process.
- Session manager
- Startup script
- Lock Screen
- XWayland support
- Zpace features
- Although the SIGTERM signal has been handled in the startup program startcask-wayland and cask, still, CTRL+C shortcut seems to end the session when Cask is started from the login screen; if you try startcask-wayland from a TTY, it works as expected.
- Dragging apps from the launcher crashes the session.
- Drag & Drop, between apps, is buggy.
- PowerDevil is not autostarted when Cask is started as a session. It seems to depend on some still unknown env variables, which lead to brightness and power controllers showing up.
To follow the Maui Project’s development or say hi, you can join us on Telegram: https://t.me/mauiproject.
We are present on Twitter and Mastodon: