Wayland windows as DOM elements. Chromium as the compositor. May God have mercy on our souls.
TypeScript
0
913 commits
updated Sep 19, 2026
Wayland windows are DOM elements. Chromium is the compositor. May God have mercy on our souls.
const Shell = () => (
<main>
<app app-id="kitty" />
<webview src="https://example.com" />
</main>
);
A native Wayland window and a web page, siblings in the same DOM tree.
main {
display: flex;
}
app {
transform: rotate(17deg);
border-radius: 12px;
opacity: 0.9;
}
Want tiling? Use CSS.
Want floating? Use CSS.
Want to rotate Kitty 17 degrees because the user has sinned? Unfortunately, use CSS.
Domicile embeds Wayland surfaces directly into Chromium's layer tree. No screenshots, canvas copies, or other cowardice.
ARCHITECTURE.md · ROADMAP.md · running a desktop
A shell is a JavaScript module. You arrange the elements; Domicile handles the rest.
nix run github:cprussin/domicile -- ./dist/shell.js
Want to put Firefox inside Chromium?
Unfortunately:
<app app-id="firefox" />
WRITING-A-SHELL.md has the details. examples/minimal-shell is a complete shell built against the published SDK.
Manganese proves the abomination can actually be lived in.
nix run github:cprussin/domicile#manganese
Tiling, workspaces, a bar, native apps, and browser windows. No clone or Chromium build required; that particular penance has already been paid.
See shell-manganese for configuration and keys.
shell-simple is the same terrible idea with fewer opinions.
TypeScript
32.3%
Rust
30.0%
C++
17.3%
Shell
15.6%
Nix
1.3%
Python
1.1%
JavaScript
1.0%
Wayland windows as DOM elements. Chromium as the compositor. May God have mercy on our souls.
TypeScript
0
913 commits
updated Sep 19, 2026
Wayland windows are DOM elements. Chromium is the compositor. May God have mercy on our souls.
const Shell = () => (
<main>
<app app-id="kitty" />
<webview src="https://example.com" />
</main>
);
A native Wayland window and a web page, siblings in the same DOM tree.
main {
display: flex;
}
app {
transform: rotate(17deg);
border-radius: 12px;
opacity: 0.9;
}
Want tiling? Use CSS.
Want floating? Use CSS.
Want to rotate Kitty 17 degrees because the user has sinned? Unfortunately, use CSS.
Domicile embeds Wayland surfaces directly into Chromium's layer tree. No screenshots, canvas copies, or other cowardice.
ARCHITECTURE.md · ROADMAP.md · running a desktop
A shell is a JavaScript module. You arrange the elements; Domicile handles the rest.
nix run github:cprussin/domicile -- ./dist/shell.js
Want to put Firefox inside Chromium?
Unfortunately:
<app app-id="firefox" />
WRITING-A-SHELL.md has the details. examples/minimal-shell is a complete shell built against the published SDK.
Manganese proves the abomination can actually be lived in.
nix run github:cprussin/domicile#manganese
Tiling, workspaces, a bar, native apps, and browser windows. No clone or Chromium build required; that particular penance has already been paid.
See shell-manganese for configuration and keys.
shell-simple is the same terrible idea with fewer opinions.
TypeScript
32.3%
Rust
30.0%
C++
17.3%
Shell
15.6%
Nix
1.3%
Python
1.1%
JavaScript
1.0%