@domicile-desktop/manganese
v0.0.0-alpha-9044b1a30eb5
Published
Domicile's default desktop shell, as a library: runManganese(), its bar items and its keybindings, so you can compose your own.
Readme
@domicile-desktop/manganese
Domicile's reference shell: a tiling desktop with sway's layout and keys, under a transparent top bar.
- The chrome is a React app built from
@domicile-desktop/component-libraryand styled with Panda CSS from the library's preset. - Each Wayland client is an
<app>element. Each browser window is a<webview>under an address bar. Both tile, float and close with the same keys. - One page spans every monitor. The bar is drawn once per screen; the windows are drawn once for the whole desktop. See ONE-PAGE-FOR-THE-DESK.md.
Configure
A config module exports Shell = runManganese(options) (see
WRITING-A-SHELL.md). Every option is optional:
applications:omit, desktop file IDs the launcher hides, andbookmarks, pages it opens by name. See LAUNCHER.md.keybindings: the key table. Defaults toDEFAULT_KEYBINDINGSandDEFAULT_MODES, sway's keys on Meta.topBar: the bar'sleft,middleandrightcolumns. Defaults toDEFAULT_TOP_BAR.
More
- Window management: workspaces, screens, focus, floating, dragging, title bars and animations.
- Keys: default bindings, commands, and the differences from sway.
- The top bar: workspaces, clock, battery, brightness, volume, notifications and tray.
- The launcher, the clipboard and the wallpaper.
- Host readouts: how the backlight and audio are read.
- Custom bar items: styling your own bar items.
- Focus internals.
- Source layout.
Build and run
bun run turbo build:vite --filter @domicile-desktop/manganesebuilds the chrome to.vite/renderer/main_window/.nix run 'github:cprussin/domicile/stable#manganese'runs it../scripts/dev-shell.sh manganesedoes the same from a checkout.bun run --filter @domicile-desktop/manganese start:devruns it on the pinned engine and a compositor built from the checkout, and rebuilds on edit. To load the rebuilt shell, rundomicile load-shell .vite/renderer/main_window/shell.jsin a terminal on that desktop.styled-system/is Panda's generated output.bun run preparemakes it, and turbo runs that before build, type check and tests. It is not checked in.
Test
bun run turbo test --filter @domicile-desktop/manganeseRuns the type check, the unit tests and the Vite build. Components render
against happy-dom via @domicile-desktop/test-support.
