Macora
pre-alpha · daily-driven on one NVIDIA desktop

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.

Macora desktop: menu bar, dock, Settings and a tabbed file manager
Twenty-two seconds at 60 fps, no cuts: the dock under the pointer, the window overview, and workspaces sliding past each other.
Why

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.

Numbers

Measured, with the caveats attached.

60.0005fps over 151k frames, 42-minute session
16.72 msframetime p99 · 0.031 ms stddev
535tests in the workspace

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.

Six editor windows grouped into one tabbed titlebar
Six editor windows in one titlebar. The editor has no idea — the compositor groups them.
Notification Center with world clocks, weather, system activity and calendar
Notification Center: world clocks, weather, calendar, and system activity — load, RAM, CPU temperature, and the processes the scheduler has parked marked batch.
Weather and Calendar applications open, with a magnified dock icon below
Weather and Calendar — two of the applications that ship with the desktop. The dock magnifies under the pointer without the bar height moving.
Current state

Pre-alpha, and used every day.

Daily driverThe author's only desktop for months — development, browsing, games
Tested onRyzen 7 7800X3D · RTX 5070 · 4K 60 Hz · Fedora · single monitor
Verified by535 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-management is 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.

Full status, gap by gap →

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.

Install

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.