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.)

Subscribe
Notify of
guest
26 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
You don't have to know
You don't have to know
5 months ago

Came here directly from KDE tweet. Interesting project. Will be donating as soon as I get my hands on the alpha version. Thank you community.

Mohamed Trabelsi
Mohamed Trabelsi
5 months ago

No Iso file ?
I want To test it 🙁

Uri Herrera
Uri Herrera
Admin
Reply to  Mohamed Trabelsi
5 months ago
Ken
Ken
Reply to  Uri Herrera
5 months ago

Can i upgrade from 1.7.1 or do I have to perform a fresh install?

Uri Herrera
Uri Herrera
Admin
Reply to  Ken
5 months ago

Yes, you can upgrade, check the release notes https://nxos.org/notes/notes-nitrux-1-8-0/

Quasar
Quasar
5 months ago

Great work and congratulations on the pace the project is evolving.

Uri Herrera
Uri Herrera
Admin
Reply to  Quasar
5 months ago

Thanks.

Daniel Eriksson
Daniel Eriksson
5 months ago

Looks cool, it would be interesting to try this on my phone. Would be really awesome to have an option to always display that dock on mobile and have apps displayed above it: a fantastic quality-of-life to have quick one-step app switching on mobile without using gestures and such!

Uri Herrera
Uri Herrera
Admin
Reply to  Daniel Eriksson
5 months ago

Thanks. You can make feature requests here https://github.com/Nitrux/maui-shell/issues.

Cristiioan
Cristiioan
5 months ago

Wow. I have to say that it looks insane. If this turns into reality and not alpha software, I will switch again.

Jonathan Frederickson
Jonathan Frederickson
5 months ago

Wow, this looks amazing! One thing I’m curious about: what does it look like when you plug e.g. a phone into an external display? Does the phone display remain in phone mode or does it act as a tiny extended display? (And if the former, is there some way to push/pull apps to/from the phone display from the desktop mode?)

…or is it too early for this and it hasn’t been decided yet? 🙂

Uri Herrera
Uri Herrera
Admin
Reply to  Jonathan Frederickson
5 months ago

Yes, at this moment is still too early to say. Currently, Maui Shell does not have multi-monitor support.

Peter
Peter
5 months ago

PLEASE as option to disable vsync in compositor, similar to cinnamon’s “none” or xfce’s vblank command.

ive got multiple monitors with different refresh rates and this will be a deal breaker if no included, thank you!

Uri Herrera
Uri Herrera
Admin
Reply to  Peter
5 months ago

You can make feature requests here https://github.com/Nitrux/maui-shell/issues

SpecialExtendedEdition
SpecialExtendedEdition
5 months ago

Looks really sick! Can’t wait until it’s in a place I can take for a test spin. I hope this goes better than previous attempts to unify the desktop/tablet/mobile experience (e.g. Canonical with Unity)

Anonymous - You May Have Heard of Me
Anonymous - You May Have Heard of Me
5 months ago

I hope this eventually winds up like LEDE and OpenWRT. LEDE and OpenWRT forked but evenutually merged back together, and today are unstoppable in routers.

It would be great to see the best of Maui and Plasma unite and finally deliver Linux on phones and tablets in a similar, tipping point manner.

(Posting anonymously because my name might infer I’m not genuine in this… and I very much am.)

Ivan
Ivan
5 months ago

Can i download to Motorola Xoom MZ601 tablet? thanks a lot, looks like new os interesting.

Uri Herrera
Uri Herrera
Admin
Reply to  Ivan
5 months ago

Maui Shell is not a Linux distribution.

EDER FLAVIO RODRIGUES
EDER FLAVIO RODRIGUES
5 months ago

I can’t wait to test it. Sensational.

Koenigs
Koenigs
5 months ago

The name is really confusing with the .NET MAUI Shell from Microsoft, a Shell that was already existing in Xamarin and is now ported to .NET MAUI…

Expect lots of people to be quite confused between the two in a near future

Carl
Carl
5 months ago

The sad thing IMHO is that it uses CSD and I think it’s the most horrible looking title bar ever, as the height of the “title bar” ain’t uniformed anymore, it depends on the components inside as buttons and input fields do not have a proper unified size. Also you are forced into having the traditional title-bar buttons in either one or the other end of the window and it seems more and more common people stuck it on the right side (the favored by gnome and more or less forced up on us by them).

Why not try something new, just have a two pixel line on the top as a the “title bar”, you use it to move around (left mouse button hold), maximize or previous size (double click left button), send to the back of the other windows (right click), and show a traditional title-bar over the window content in the top (click middle button and title-bar disappears when mouse pointer leaves the title-bar area). This would be a lot more revolutionary than today’s ugly nonuniform CSD and could take less space than the space hogging CDS and the less space hogging traditional title-bar.

Uri Herrera
Uri Herrera
Admin
Reply to  Carl
5 months ago

CSD is supported by Maui Apps, yes. We have set it as the default for the latest distribution release, too, yes. But, it is optional to use. You can disable it if you want and use conventional decorations. As the post mentions, “Windows can have client-side decorations, and Zpace, using MauiKit WindowControls components, will style windows with server-side decorations.” Maybe you didn’t notice, but in one of the images, one of the displayed apps is Plasma System Monitor, which uses Kirigami but not MauiKit, and it doesn’t use CSD; the window decoration is a conventional title bar.

You can make feature requests here https://github.com/Nitrux/maui-shell/issues

Cody Evans
Cody Evans
5 months ago

This looks like it would work quite well on the pinephone pro that’s launching very soon.

Darojatun
Darojatun
5 months ago

Indonesia siap mendukung maui shell 🙂

Frank
Frank
5 months ago

This looks freakin’ amazing! Can’t wait to use this on my pinephone or pinephone pro once a stable release is out 🙂
Maybe this will finally be the shell that nails the convergence so we have our phone/desktop with us at all times.