A beautiful, fast Linux desktop that fits in under 100 MiB of RAM.
Design-first, spring-animated and written entirely in Rust.
Frames built in about 0.1 ms, ready for 1000 Hz displays: a shell that feels like an instrument, not a toolkit.
Install · Documentation · Studio · Plugins · Commands · What's new
Mandara Shell is a native Linux Wayland desktop shell, written in Rust on GPUI. It's everything around your windows: the bar, a dynamic island, a dock, a launcher, a sidebar, notifications, wallpapers, desktop widgets, the lock screen and the login screen, plus a settings app that changes all of it live. It runs on MangoWM, Niri, Hyprland, Umbriel, Sway and River Classic, and it's one small, fast program you install with one command.
It's made to feel good to use. Panels pour out of the bar on real spring physics, colours follow your wallpaper and your music, and the whole desktop stays light enough to run all day without you noticing it.
Pick a bar style, a wallpaper and a few desktop widgets, and Mandara turns into a different desktop. Each of these takes a minute in Studio, and every widget can be moved, resized and restyled right on the desktop.
| What | A complete Wayland desktop shell: bar, island, dock, launcher, sidebar, notifications, OSDs, wallpapers, desktop widgets, lock screen, login manager, settings app |
| Compositors | MangoWM, Niri, Hyprland, Umbriel, Sway and River Classic (0.3), all first-class; your own config gets one include line at most, nothing more |
| Built with | 100 % Rust, one binary (mandara), GPU-rendered with GPUI and wgpu |
| Resources | Under 100 MiB RAM, under 190 MiB video memory, about 0.1 % CPU idle |
| Settings | ~/.config/mandara/config.toml, edited live by Mandara Studio (mandara studio) |
| Automation | mandara msg <command> with JSON replies; mandara commands --json lists them all |
| Plugins | 73 built in; third-party plugins in Rust, compiled to sandboxed WebAssembly |
| Languages | 15, including right-to-left Arabic, Persian and Urdu |
| License | GPL-3.0-or-later |
Mandara is built for one job: being the complete desktop for MangoWM, Niri, Hyprland, Umbriel, Sway and River Classic. These are the strengths it was designed around, each one measured or shipped today:
- Six compositors, each first-class. It speaks every compositor's own IPC natively: MangoWM's and River's tag bitmasks (view, toggle-view, tag moves), Niri's scrolling columns, Hyprland's, Umbriel's and Sway's workspaces. It reads each compositor's version and writes its exact config dialect, down to Hyprland 0.57's Lua config.
- It never breaks your compositor config. It adds one include line
(none at all on River, whose settings it sends over River's protocol);
everything else goes into its own drop-in files. Every change is
checked by the compositor's own validator (
mango -p,niri validate,Hyprland --verify-config,umbriel config validate,sway --validate) and rolled back if it objects. - A whole desktop in one native binary. Bar, dynamic island, dock, launcher, side bars and sidebar, notification center, on-screen displays, wallpaper engine, desktop widgets, clipboard manager, screenshots, screen recording, offline OCR, polkit agent, lock screen, login manager and a settings app: one Rust program, no QML, JavaScript, Python or shell glue.
- Fast by measurement, not by claim. Under 100 MiB of RAM, under 190 MiB of video memory, about 0.1 % CPU idle, and frames built in 0.1–0.2 ms: 95% of frames finish inside the 1 ms a 1000 Hz display allows. How it's measured
- Real motion. Analytical spring physics that can be interrupted mid-flight, and OKLCH colour blending, so every morph, slide and theme change stays smooth.
- Every setting live, in a real app. Mandara Studio has 31 pages; drag a slider and the bar follows as you drag. Nothing needs a config file unless you want one.
- A colour engine, not a colour picker. Material You (HCT) palettes from your wallpaper, hand-tuned themes, and opt-in theming of Ghostty, GTK 3/4, Qt 5/6, Kvantum, Zed, kitty, foot, Alacritty, btop and more.
- Your desktop, your look. Six bar styles on any edge, side bars that join the top bar into one frame, one-click Looks, dozens of desktop widgets placed per monitor, and three launcher looks.
- Safe, rich extensions. 73 plugins built in. Third-party plugins are Rust compiled to sandboxed WebAssembly: a crashing plugin is switched off and the shell keeps running.
- Scriptable end to end. Almost everything the interface does is a
mandara msgcommand with JSON replies, so scripts and AI agents can drive and inspect the whole desktop. How - Installs and updates itself, safely. One command sets it up on Arch, Debian/Ubuntu, Fedora, openSUSE, Void, Alpine, Gentoo and Solus, takes over an existing setup without losing it, and updates arrive as small, signed binary patches from Studio → About → Update now. NixOS gets a flake with NixOS and Home Manager modules.
- Made for everyone. 15 interface languages, right-to-left Arabic, Persian and Urdu included, and fonts chosen for every script it shows.
- It's light. The whole desktop needs less memory than a browser tab and sits at about 0.1 % CPU when idle. How
- It looks the way you want. Six bar styles (now including a notch that hangs from the top edge), side bars of icons and pills that join the top bar into one frame, one-click Looks, desktop widgets, a hundred dials for corners, glass and motion, and themes made from your wallpaper. Your desktop
- Everything is a click away in Studio. 31 pages of settings, all live: drag a slider and the bar follows as you drag. Mandara Studio
- It does a lot out of the box. A media island with lyrics, a sound mixer per app, screenshots and screen recording, copying text from the screen, a launcher with three looks (a list, an icon grid or a centred Spotlight-style search bar), a clipboard that sorts what you copy, a drag-and-drop app installer, night light, and 73 built-in plugins. Everything else
- It welcomes you in. A matching lock screen and login screen with your own wallpaper, and ready-made looks for both. Lock screen and login
- It speaks your language. Fifteen languages, with Arabic, Persian and Urdu laid out right to left. Languages
- It plays well with scripts and AI agents. Nearly everything the interface does is also a command with JSON replies. Automation
Six Looks, one click each: the bar, widgets, colours and fonts change together.
![]() Mandara Login, the login screen: the Mandara design |
![]() …and its Midnight card design |
![]() The lock screen, made to match |
|
Mandara Studio: every setting, live, with previews like this login screen designer.
Dress up your desktop with dozens of widgets: clocks of every kind, calendars with your events, the sky, the weather, what's playing, a to-do list you tick right there, quick toggles, a desk cat and more. Each one can sit on a glass or solid plate, take a shape (a circle, a scalloped cookie, a flower, torn paper…) and wear a frame like washi tape or a polaroid. Pick Western or Eastern Arabic digits, the Gregorian or Hijri calendar and the language of the day names. Widgets come from plugins, so you turn on only the ones you want, and plugins can add their own. Desktop widgets
One command, from any shell:
sh -c 'cd "$(mktemp -d)" && curl -fsSL "https://github.com/theHamdiz/mandara/releases/latest/download/mandara-$(uname -m)-linux-gnu.tar.gz" | tar xz && exec ./mandara-*/bin/mandara install'The installer checks its own signature, sets up what your distribution needs, and hooks into your compositor without touching your own config files (no compositor yet? it offers to install one). It works on Arch, Debian and Ubuntu, Fedora, openSUSE, Void, Alpine, Gentoo and Solus. Updates arrive by small binary patch: Studio → About → Update now.
On NixOS, Mandara is a flake: try it with
nix run github:theHamdiz/mandara, or add it to your system with
programs.mandara.enable = true; (a NixOS module and a Home Manager
module come with it). Nix keeps it updated.
→ Install guide: Arch packages, NixOS, other options, coming from another setup.
Does Mandara change my compositor config? Only by one include line.
Everything else goes to ~/.config/mandara/generated/, and each change is
checked by the compositor's own validator and rolled back if it objects.
How do I update? Studio → About → Update now. Updates are small, signed binary patches.
Can I script it or let an AI agent drive it? Yes. Nearly every action
is a mandara msg command with a JSON reply, and scripts can push live
progress to the bar.
Can I write my own plugins? Yes, in Rust, compiled to a sandboxed WebAssembly component. They hot-reload while you work and can be shared through the GitHub marketplace. Writing plugins
More answers in the FAQ.
- Documentation: every feature, one topic per page
- FAQ: short answers to common questions
- Using Mandara: commands and default shortcuts
- Plugins and writing your own
- Why Mandara: how it compares with other shells
- Building from source and contributing
Mandara is free, open source and always will be. If it makes your desktop a little nicer and you'd like to say thanks, you can chip in toward the AI credits and developer time that go into it:
It's entirely optional. Using Mandara, telling a friend, writing a plugin or reporting a bug helps just as much. Thank you!
Mandara Shell is free software under the GNU General Public License, version 3 or later (LICENSE.md, notice in COPYRIGHT.md). Vendored code keeps the license in its folder, and fonts and models downloaded on demand keep their own: OFL for Google Fonts, Apache-2.0 for the PaddleOCR models and the Depth Anything V2 Small depth model.














