The reference shell for Domicile →

Sway, with more <div>s.

A tiling Wayland desktop that feels like Sway, where websites are windows too. Change its bar, launcher or anything else in React and CSS, without writing a desktop.

nix run github:cprussin/domicile/release#manganese
With Nix, try it in a window first. Packages for Debian, Ubuntu, Fedora, openSUSE and Arch are below.A trial's screen doesn't lock, not even when the computer sleeps. Why

Why manganese

Tiling that feels like Sway

Split, tab, stack, float and the scratchpad, on Sway's keys and with Sway's command names. Your fingers already know it.

LibreOffice beside a browser window with the address bar focused

Websites are windows

Put the page you're reading beside the document you're writing. Web pages tile, tab, float and move between workspaces like every other window, with the same keys.

An extension popup open from the top bar

Chrome extensions, on the desktop

Add your password manager or ad blocker from the Chrome Web Store. Their buttons sit in the top bar, and they work in every browser window.

Make it yours, a piece at a time

Keep all of manganese and add what you're missing. This bar item is a React component and a CSS file. Everything else stays as it was.

import { DEFAULT_BAR, runManganese } from "@domicile-desktop/manganese";import { useEffect, useState } from "react";import "./tokyo.css";const Tokyo = () => {  const [now, setNow] = useState(new Date());  useEffect(() => {    const timer = setInterval(() => setNow(new Date()), 1000);    return () => clearInterval(timer);  }, []);  const time = now.toLocaleTimeString("en-US", {    hour: "numeric",    minute: "2-digit",    timeZone: "Asia/Tokyo",  });  return <span className="tokyo">Tokyo {time}</span>;};export const Shell = runManganese({  bar: {    ...DEFAULT_BAR,    center: [...DEFAULT_BAR.center, <Tokyo key="tokyo" />],  },});
Manganese's top bar with the time in Tokyo beside the clock, over a document and a browser window
domicile ./domicile.tsx

Try it in a window. To keep it, make it your config module.

And everything else

The rest of a complete desktop, ready when you log in.

The launcher

Apps, files and bookmarks in one search. Meta+Space.

A web app window tiled beside LibreOffice

Web apps

Any site as its own app window, without an address bar.

The clock and status icons at the right end of the bar, over a browser window

The top bar

Workspaces, tray, quick settings and the clock.

Notifications

Toasts, and a drawer that keeps the ones you missed.

The clipboard history open with text and an image

Clipboard history

Meta+Shift+V. It keeps what you copied after the app closes.

The screenshot dialog open over a film and a browser

Screenshots

Press Print, pick an area, then save or copy it.

The lock screen over the wallpaper

Lock screen

Meta+Shift+Return, before the machine sleeps, or after the idle time you set.

Several monitors

Windows move across the edge from one screen to the next.

The Settings app beside GIMP

Settings and History

Displays, theme, shell options and your browsing history.

Coming from Sway?

The layout and the keys will feel familiar. Your sway config won't carry over.

Feels the same

  • Splits, tabs, stacks, floating and the scratchpad
  • Ten workspaces on Meta+1 … Meta+0
  • Meta+H/J/K/L to focus, with Shift to move
  • Focus follows the pointer
  • Sway's command names, and modes, in your keybindings: layout toggle split

Works differently

  • Meta+Space opens the launcher. Meta+Tab switches between floating and tiled
  • Meta+Shift+Tab floats a window, and nothing is on Meta+Return until you bind it
  • No sway config file. Settings live in domicile.json, and keys in a domicile.tsx config module
  • Commands from a terminal: domicile send-shell workspace 2
  • Wayland apps only: there's no Xwayland

Try it in a window

Run it in a window on the desktop you have now. Close the window and you're back.

With Nix, run manganese in a window on your current desktop, with nothing installed:

nix run github:cprussin/domicile/release#manganese

From a console login, the same command takes the whole screen.

nix run installs nothing on the system, so the password check the lock screen uses (/etc/pam.d/domicile) is missing. Without it the screen doesn't lock, not even when the computer sleeps, and a notification says so. To lock, install a package or add the file (LOCK.md).

Installed already? From a terminal on your current Wayland desktop:

domicile @domicile-desktop/manganese

Your fingers already know it

Sway's keys, on Meta. Rebind any of them.

The full cheat sheet →
MetaSpace
Open the launcher
MetaH J K L
Move focus
Meta1 … 0
Go to workspace 1–10
MetaB / V
Split horizontally / vertically
MetaW
Tab the container
MetaF
Fullscreen
MetaShiftV
Clipboard history
MetaShiftQ
Close the window

Install

Install it from your package manager, then log in to the Domicile session.

Runs on x86_64 Linux. Wayland apps only, with no Xwayland. Checked on NVIDIA, AMD and Intel GPUs. What it runs on

Debian 13+ and Ubuntu 24.04+. On Debian 12 and Ubuntu 22.04, write legacy in place of current.

sudo curl -fsSL -o /etc/apt/keyrings/domicile.asc https://packages.domicile-desktop.com/domicile.ascecho "deb [signed-by=/etc/apt/keyrings/domicile.asc] https://packages.domicile-desktop.com/apt current main" |  sudo tee /etc/apt/sources.list.d/domicile.listsudo apt update && sudo apt install domicile

After installing

On every distribution but NixOS:

  1. Pick manganese as your desktop in ~/.config/domicile/domicile.json:

    { "shell": "@domicile-desktop/manganese" }
  2. Log out, and pick Domicile in your login screen.

Then read First steps.

Full install guide →

Configure it your way

Click through the Settings app or write a config file. They change the same things, and every page in the docs shows both.

The Settings app's Shell page with the clock set to 12h
Built on Domicile

Every pixel is a web page you can change.

Manganese is HTML and CSS running on Domicile, and every part of it is a package. Write your own bar item, swap out the launcher, or build a whole new desktop.

Build on Domicile →

Docs