Skip to main content

Happy holidays everyone!

Today we have a big announcement to make. This milestone is an incredible realization of the initial idea of the Maui Project — a simple and unobtrusive desktop environment meant for different form factors.

To know more, continue reading.


We are happy to introduce the new Maui Shell.

The objective of Maui Shell is to deploy a convergent desktop shell with different form factors, from mobile phones and tablets to desktop computers. Maui Shell will adapt to various form factors, and there’s no need for multiple versions targeting different form factors. This blog post will cover some details of the shell design and architecture.

Maui Shell is a convergent shell for desktops, tablets, and phones.

Maui Shell is composed of two parts:

  • Cask is the shell container and elements templates, such as panels, popups, cards, etc.
  • Zpace is the composer, which is the layout and places the windows or surfaces into the Cask container.

This is still under active development so many things can change along the way.

You can find its source code here https://github.com/Nitrux/maui-shell.

Testing Maui Shell in Nitrux

We will include a preview of Maui Shell in the next release of Nitrux as an alternative graphical session. This way, users can test the current work to get early feedback.

There is a standalone Wayland session that you can use, but be aware that this session is very hackish and has many issues. For example, a session manager is still missing, which causes redirecting the keyboard input to the TTY, so keyboard shortcuts such as CTRL+ C will kill the session. And there’s also a nested X11 session.

This testing version lacks many features, has unfinished features, and will have bugs.

We include it to get feedback from testers to improve upon it the subsequent iterations.

Missing features:

  • Multiscreen support
  • Session manager
  • Settings center
  • XWayland shell extension

W.I.P.:

  • Pulseaudio
  • Bluetooth via Bluedevil
  • Drag and drop
  • Network toggles
  • Workspaces
  • MPRIs control.
  • Launcher
  • Dock and Panels
  • XDG-shell extension

To open a feature request or a bug, go here https://github.com/Nitrux/maui-shell/issues.

Maui Shell: Cask

Cask is the shell layer of Maui Shell, and it encompasses the top panel, popups, cards, notifications, the dock, the launcher, etc.

The top panel spans across the width of the leading edge of the screen. It’s divided into two main sections: notifications and calendar on the left side and toggles for quick access on the right side.

The notifications popups appear on the left side of the screen.

The current selection of quick-access toggles includes network settings, volume adjustment, screen brightness adjustment, audio playback controls, and session controls.

Each section has sub-items, called PanelItem, which can have Cards associated with them: For example, the left PanelSection has two PanelItems: Notifications and Calendar, Notifications which is a PanelItem has its Card, and so does the calendar. These cards can be open individually or all the cards belonging to a section. These Cards can open by using touch gestures such as sliding down, which would open all the Cards. Or by single-clicking each PanelItem which will open its Card. You can also use a mouse wheel in desktops to open all of the Cards.

On the right PanelSection, the current PanelItems include Toggles, Sliders, Player, and Session, each with its Card.

The dock is at the bottom of the screen, listing pinned apps and opened ones. It also contains the launcher, which you can open by clicking the button or sliding up from the dock.

The dock has, by default, a window dodge feature and can be brought back by mouse hovering or by a gesture by sliding up or down to hide it.

The launcher has two pages, one where categories and another with filtered categories group apps. The idea is to add quick places sections to the main page of the launcher and other quick-access stuff.

These Cask components will adapt depending on the form factor, such as screen size and input type.

Desktop

On the desktop, the top panel is discreet and clean. The panel items in the right section are collapsable. The panel items can interact with a mouse if the desktop form factor does not have a touch screen. You can open all PanelSection cards by using the mouse wheel o opening individual cards by clicking the single PanelItem.

The opened cards do not dim the screen, and cards are also auto closed when clicking outside of them or clicking again in the item.

The launcher popup card is in the center, above the dock. You can pin an app to the dock.

Maximized application windows do not cover the dock.

Tablet

Here the windows take the entire screen of the tablet and do not have window decorations. There can be up to two windows per workspace, side by side or stacked. Windows can move freely using three fingers and resized using a pinch gesture with four fingers. [demo video below]

The launcher here takes the full available height and width. The panel cards, when opened, dim the screen to avoid too much visual noise.

Phone

On the phone, the launcher and panel cards take all available space. If you slide from the left side of the top panel, you open the notifications and calendar, and if you slide from the right, you open the status and quick settings toggles. The notification section fills the width of the top bar, so you can slide from the middle and still open the notifications.

If the dock contains too many items, it can be scrolled or flicked using a mouse wheel or slide gesture.

Maui Shell: Zpace

Zpace is the compositor, which handles the surfaces and windows and takes care of the workspaces, which is what a Wayland compositor is supposed to do.

Zpace uses the Qt Wayland Compositor API.

In this preview version, Maui Shell includes initial support for workspaces. You can access the workspace overview from the bottom area by sliding up and moving between workspaces, slide left or right. To create a new workspace, slide up, and then from the dock, a new item should be revealed “+” to add a new workspace.

Zpace will take care of handling window positioning on the different form factors:

Desktop Zpace

For the desktop layout, you can place any number of windows in the workspace. Those windows are floating and are stackable, just as any other common desktop window manager metaphor. You can move windows freely between workspaces (still under work)

Windows can have client-side decorations, and Zpace, using MauiKit WindowControls components, will style windows with server-side decorations.

(Click the video below if it doesn’t play.)

Tablet Zpace

A workspace can have up to two windows per workspace on the Tablet layout. The windows will be positioned side by side, as in a tiling wm, windows cover the dock. Windows can also be moved and placed as stackable. It supports three-finger gestures for moving around the window and four pinch gestures to resize them. Moving between workspaces is accessible by sliding from the bottom edge.

(Click the videos below if they don’t play.)

 

Phone Zpace

There is only a single window per workspace on the phone layout, and they take the entire screen covering the dock. You can reveal the dock by sliding up, switching between opened apps, or launching new ones, convenient for multitasking.

(Click the video below if it doesn’t play.)

Maui Session Manager

Maui Session should set up the environment and manage to autostart programs and control the device state, but that’s still a W.I.P. For now, Maui Shell has a simple startup program to be used in a standalone session.

There are two ways to test Maui Shell: nested inside X11 or standalone testing session.

Roadmap

Release date March June September December
2021 Testing
2022 Alpha 0.5.0 Beta 0.5.5 Stable 1.0.0 1.2.0
2023 1.3.0 1.4.0 1.5.0 2.0.0
2024 2.1.0 2.2.0 2.3.0 2.4.0

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:


Disclaimer: Maui Shell is not a Linux distribution. Maui Shell is a convergent (read: adaptable to multiple form factors) desktop shell (read: interchangeable definition to refer to the graphical workspace of an operating system, not referring to the desktop form factor specifically or exclusively; also see “Paper paradigm”). A ‘desktop shell’ is but one of the components of a desktop environment (read: an implementation of the desktop metaphor made of a bundle of programs running on top of a computer operating system that shares a standard graphical user interface). Not to be confused with a Unix shell (read: command-line interpreter or shell that provides a command-line user interface for Unix-like operating systems, i.e., Bash; and not to be confused with the shell scripting language (read: A shell script is a computer program designed to be run by the Unix shell, a command-line interpreter.)