A Wayland desktop, written in Rust

Your desktop, your rhythm.

Mandara draws the bar, dock, launcher, notifications, widgets, lock and login in one program, in your wallpaper’s colours, with spring motion and live settings.

sh -c 'f=$(mktemp) && trap "rm -f -- \"\$f\"" 0 && curl --proto =https -fL https://thehamdiz.github.io/mandara/install.sh -o "$f" && sh "$f" "$@"' sh
A Mandara desktop: an edge-frame bar with the song playing, a headline clock, a to-do list on torn paper, two sticky notes, a month calendar, the week’s agenda and the dock.

Coloured by your wallpaper

The frame time is a historical figure from release builds: 95% of sampled frames finished inside the 1 ms a 1000 Hz display allows. Your display, driver and widgets change it, and Studio → Performance shows yours live. How it is measured

Fewer apps to open. More shell.

Each of these is part of the one program that draws your desktop, in the same colours, type and motion as the bar you look at all day.

Pick a Look.

Six desktops named for Alexandria’s coast. Each sets the bar, widgets, type and colours in one click. Choose one and this page wears its palette too.

Looks

Your own setup is saved before the first Look, so Restore my look in Studio brings it back.

Corniche Dusk: a sunset desktop with floating glass pills, a headline clock, a system monitor column and a music card.
Rose evening glass: headline clock, system monitor, media card and glass pills. mandara msg look apply corniche-dusk
Pharos Ink: a monochrome contour-line desktop with a hairline bar of stats, a greeting and a calendar.
Monochrome ink: a hairline bar dense with stats, a greeting and a calendar. mandara msg look apply pharos-ink
Montaza Crimson: a red desktop with a framed spectrum box, a clock in Arabic numerals and vertical calligraphy.
Bold palace red: a framed spectrum box, an Arabic clock and calligraphy. mandara msg look apply montaza-crimson
Qaitbay Forest: a green hillside desktop with a giant stacked clock and the music player joined to the dock.
Deep green: a giant stacked clock behind the subject and a dock media chip. mandara msg look apply qaitbay-forest
Anfushi Wave: layered sea waves, a stacked clock, a glowing wave visualizer and a katakana accent.
Open sea: a full-width glowing wave, a katakana accent and one tiny pill. mandara msg look apply anfushi-wave
Night Frame: northern lights framed by a side bar, a greeting, a calendar and mirrored audio bars.
Midnight violet: a side bar framing the screen, a greeting, calendar and bars. mandara msg look apply night-frame

Eight bars.

Pick one in Studio → Bars → Presets or with its command. Panels still grow out of each one, every style shows each workspace's apps on its buttons, and the left and right side bars can each wear a style of their own.

Bar styles
The Expressive bar: a tall bar along the bottom inside a frame around the screen, joined to a rail on the left.
The Tile dock bar: one floating island of rounded square tiles at the bottom of the screen.
The Rail bar: a wide rail of flower-shaped buttons down the left side, inside a frame around the screen.
The Segmented style: no bar, only rows of connected tiles under the top edge of the screen.
The System monitor bar: a slim bar along the bottom where every reading sits on a square stat block in a monospace font, with CPU and memory rings and network rates.
The Stanley Bridge bar: three floating docks of squircle tiles spanning the bottom of the screen.
The Pharos Beam bar: a half-width notch hanging from the top edge, with scalloped accent buttons and tonal tiles.
The Raml Tram bar: a top bar joined to a rail of flower-shaped buttons down the left edge.
A side bar drawn in one of the new styles beside a differently styled main bar.

Every piece, your shape.

Real parts of the shell, enlarged. Studio → Themes → Components restyles buttons, fields, sliders, cards and the bar itself.

64%
Slider design

Sliders in five designs. Drag it, then try each design Studio offers.

A shape for every character. Lock and login hide each typed character as a soft shape.

Tags that join. On MangoWM, two shown tags merge into one pill.

Tabular figures. Clocks and counters never jitter.

Quick settings. Toggles that answer at a touch.

Notifications. Actions, history and do not disturb.

Change it. Watch it change.

Mandara Studio is the desktop’s design desk. Colours, type, spacing, motion, widgets and plugins apply to the running shell as you drag. Meet Studio

Mandara Studio’s Themes page: a live desktop preview, the current theme with its colour bar, and the list of themes and Looks.

Ask in your words.

Turn on the optional AI Shell Agent in Studio, download its required models once, then type !switch to dark mode in the launcher. Control your shell in natural language: you see the exact action before it runs, and it works offline, so your words stay on your computer.

Meet the AI Shell Agent

Seven compositors.

Each driver speaks its compositor’s own language. Your config gets one include line at most, checked by the compositor’s own validator and rolled back if it objects.

Twenty languages.

The shell, Studio and the login screen, with right-to-left layouts for Arabic, Persian and Urdu. The language guide

  • English
  • العربيةright to left
  • فارسیright to left
  • اردوright to left
  • Español
  • Português
  • Français
  • Deutsch
  • Türkçe
  • Русский
  • हिन्दी
  • मराठी
  • বাংলা
  • తెలుగు
  • Bahasa Indonesia
  • Kiswahili
  • Tiếng Việt
  • 简体中文
  • 日本語
  • 한국어
Mandara Studio’s Home page in Arabic, laid out right to left, with a desktop preview.
Studio’s Home, in Arabic.

81 plugins, one shelf.

Switch on what you use. Write your own in Rust, compiled to sandboxed WebAssembly. See every plugin

Your hands stay on the keys.

Mandara writes these to its own drop-in and skips any chord your config already uses. Each runs as mandara msg plus the command shown. Every command

25 shortcuts

  • SuperSpaceOpen or close the launcherlauncher toggle
  • SuperAltSpaceOpen or close the launcherlauncher toggle
  • SuperBShow or hide the sidebarsidebar toggle
  • SuperShiftEPower and session menusession menu toggle
  • CtrlAltDeletePower and session menusession menu toggle
  • SuperShiftSScreenshot a regionscreenshot region
  • SuperShiftVClipboard historypanel toggle clipboard
  • AltVClipboard historypanel toggle clipboard
  • PrintScreenshot the whole screenscreenshot screen
  • CtrlPrintScreenshot a regionscreenshot region
  • AltPrintScreenshot a windowscreenshot window
  • SuperShiftTSwitch between light and darktheme mode toggle
  • CtrlShiftWPick a wallpaperwallpaper picker toggle
  • AltTabNext window; let go of Alt to switchswitcher next
  • AltShiftTabPrevious windowswitcher prev
  • Mute keyMute everythingaudio mute-all toggle
  • Volume up keyTurn the volume upaudio volume up
  • Volume down keyTurn the volume downaudio volume down
  • Brightness up keyBrighter screenbrightness up
  • Brightness down keyDimmer screenbrightness down
  • Play keyPlay or pause the musicmedia play-pause
  • Pause keyPlay or pause the musicmedia play-pause
  • Next keyNext trackmedia next
  • Previous keyPrevious trackmedia previous
  • Mic mute keyMute the microphoneaudio mic mute

On KWin, keep shortcuts in Plasma System Settings.

One line to install.

Works from bash, zsh or fish. Nothing is installed if the signature check fails. The installation guide covers compositor, login and unattended options.

sh -c 'f=$(mktemp) && trap "rm -f -- \"\$f\"" 0 && curl --proto =https -fL https://thehamdiz.github.io/mandara/install.sh -o "$f" && sh "$f" "$@"' sh
  1. DownloadThe script fetches the release for your CPU and shows its progress.
  2. VerifyIt checks the release signature and checksum before running anything.
  3. ChooseThe Rust installer asks about your compositor and login screen.
  4. Log inMandara starts with your compositor.

Not just Linux

FreeBSD

Every release has a FreeBSD 14+ build. One line with FreeBSD’s own fetch downloads it, checks its signature and sets everything up with pkg, except the login screen: greetd isn’t packaged for FreeBSD yet, so build it first.

sh -c 'f=$(mktemp) && trap "rm -f -- \"\$f\"" 0 && fetch -o "$f" https://thehamdiz.github.io/mandara/install.sh && sh "$f" "$@"' sh
  • Sway, Hyprland, niri and River from ports
  • Sound through OSS, PulseAudio or PipeWire
  • pkg and freebsd-update in the Updates panel
What works on FreeBSD

NixOS

Mandara is a flake with a NixOS module. Try it without installing:

nix run github:theHamdiz/mandara
Add it to your system

Immutable? No problem!

On Bazzite, Silverblue, Kinoite, Bluefin, Aurora, Aeon or Kalpa, the same one-line install sets Mandara up in your home folder and adds only what your image is missing, with rpm-ostree or transactional-update.

  • Nothing your image already ships gets layered again
  • Tells you when a reboot is needed, and sets up the rest right away
  • Mandara Login is one click away after that reboot (Studio → Login screen)
Install on an immutable system

The commands you’ll use

mandara studio
Open the settings and design studio.
mandara msg <command>
Control the running shell, with --json replies.
mandara commands
Every command, with its arguments and examples.
mandara setup --check
Check your compositor integration.
mandara update
See what’s new; Studio → About → Update now installs it.

Your first ten minutes

  1. SuperSpace Open the launcher and type to search.
  2. SuperB Pull out the sidebar.
  3. SuperShiftT Try light and dark.
  4. Open Studio from the launcher and pick a Look under Themes.
  5. Right-click the desktop, choose Add widget, and place a clock.

Good questions.

What does Mandara replace?
The parts around your windows: bar, dock, launcher, notifications, wallpaper, desktop widgets, lock screen, login screen and settings. Your Wayland compositor still manages the windows.
Will it touch my compositor config?
At most one include line. Everything else goes to Mandara’s own drop-in files, checked by your compositor’s validator and rolled back if it objects. River and KWin need no include line. Read the compositor notes.
How fast is it?
Spring motion and native GPU rendering keep everyday interactions responsive. Historical release samples built frames in about 0.1 ms. Studio runs separately, plugins load data when needed, and local AI inference stays off the UI thread. See the measurements, test setup and current limits.
Can I keep my own setup?
Yes. A first install offers configuration, startup and login choices, and updates keep your settings as you left them. Read about configuration.
Can I control it in my own words?
Yes, with the optional AI Shell Agent. Type !switch to dark mode in the launcher, check the previewed action, and press Enter. It runs offline on your CPU. Meet the AI Shell Agent.
How do updates work?
Open Studio → About → Update now. Supported installs download small binary patches when available. NixOS and package-managed installs update through their own tools.
Can I build a plugin?
Yes. Write it in Rust, compile it to sandboxed WebAssembly and preview it as you work. Start with the plugin guide.