A minimalistic and smooth Linux desktop.
Performance-first desktop environment for Fedora, written in Rust. One process draws the windows and the shell; the applications ship in the same tree.
Six decisions.
The shell is the compositor
Panel, dock, launcher, window overview and notifications are drawn in the same frame as your windows. No shell process, no IPC round-trip per pointer move.
Compositor-level tabs
When I moved from mac to fedora I missed tabs in VSCode. So there is a per app setting - any two windows of the same application share one native tabbed titlebar. No application support required — a terminal gets tabs the same way an editor does.
Foreground gets priority
cgroup-v2 slices plus a per-task daemon set nice, scheduler class and I/O priority, so a compile in the background does not cost the foreground its frames.
Fractional scaling
1.25 and 1.5 render through a supersampled path, not a stretched 1× buffer, and every release is checked at 1.0, 1.25, 1.5, 1.75 and 2.0 before it ships.
Applications in the same tree
Files, Settings, Calendar with Google sync, Clock, Weather, App Center, Telegram — same tokens as the shell, so accent and light/dark move everywhere at once.
Animation is spring physics
An interrupted gesture continues from where it is. Minimize interpolates the real window texture into its dock slot; the dock magnifies without the bar height moving.
Measured, with the caveats attached.
macora-ctl stats, desktop use on the machine below: 4K at 60 Hz,
single display, one GPU vendor. Fullscreen games skip composition entirely — the buffer goes
straight to the display plane.
batch.
Pre-alpha, and used every day.
| Daily driver | The author's only desktop for months — development, browsing, games |
|---|---|
| Tested on | Ryzen 7 7800X3D · RTX 5070 · 4K 60 Hz · Fedora · single monitor |
| Verified by | 535 tests, a security audit with its Critical findings closed, and months of being the only desktop on this machine. Written fast with AI assistance; APIs and the config format still move. |
Known limitations
- The shell runs inside the compositor process — a shell bug can end the session.
- Multi-monitor is experimental, and
wlr-output-managementis missing, so kanshi and wlr-randr cannot configure outputs. - No input methods (CJK does not work) and no accessibility layer.
- No power management, session restore or clipboard history.
- Source builds only — no RPM, COPR, Flatpak or image.
Where it sits
niri and Hyprland are compositors — good ones — but the panel, the launcher and the settings app are yours to assemble. COSMIC ships a whole desktop and keeps its shell in separate processes talking over IPC. Here the shell is drawn by the compositor and the applications live in the same tree, which is why the accent colour and the light/dark switch land everywhere in one frame. The trade is real: one crash surface instead of several, and no swapping the panel for someone else's.
Support
One person, spare time. Issues get read; they get fixed when the problem sits on the path I use daily or the report carries a reproduction. Frametime numbers and hardware reports from machines unlike this one are the most useful thing to send.
Build from source. Fedora 40+.
# build dependencies: see INSTALL.md sudo dnf install mold # the workspace links with mold cargo build --release ./install.sh # binaries, systemd units, portal backend macora-loginctl enable-greetd # make it a login session (reversible)
The display-manager swap backs up the previous configuration and restores it on failure;
disable-greetd puts your old login manager back. Keep a TTY available the first
time. Dependencies and non-Fedora notes:
INSTALL.md.