Documentation
Why Margine? (and a love letter to Universal Blue)
Margine is a small downstream of Universal Blue's work. Bluefin, Bluefin DX, and Bazzite are excellent in their own right — Margine would not exist without them. This page is about what Margine adds on top, when one of the others might suit you better, and how to give back to the people who do the heavy lifting upstream.
First — Margine is downstream of Universal Blue ❤️
Everything good about Margine starts somewhere upstream. The image build pipeline pattern is Universal Blue's image-template. The base we ship is Bluefin DX. The gaming stack borrows heavily from Bazzite. The Bazaar app store, the dconf overrides, the installer config, the Plymouth integration, the background-update orchestrator — every single one of those was solved upstream by people who do this full- time. We just curate a flavour on top.
The build pipeline (signed bootc image + cosign signature + reproducible OCI layers) follows the same conservative, supply-chain-aware pattern Bazzite uses. The full rationale lives in the history comment at the top of .github/workflows/build.yml — relevant if you're auditing how the image you boot actually gets made, not part of day-to-day use.
If you use Margine, please consider sponsoring the people whose code you're really running:
- Universal Blue on OpenCollective — covers Bluefin, Aurora, and the image-template that everything else descends from
- Bazzite on OpenCollective — if you're a gamer, this is the project that made Linux-on-a-Steam-Deck a serious answer
- CachyOS donations and firelzrd on Ko-fi — the kernel patches and the BORE scheduler that make Margine's kernel what it is
- GitHub: ublue-os — star the repos, file good bugs, contribute docs. Costs nothing, makes a real difference.
Margine itself has GitHub Sponsors if you want to support this specific downstream — but if you only sponsor one project, make it one of the upstreams above. That's where the heavy lifting happens.
Bluefin vs Margine — when to pick which
Bluefin is Universal Blue's general-purpose Fedora Atomic desktop. It has a wider audience than Margine, more polish on edge-case hardware, and a much bigger community answering questions in real time. If you want a broadly-supported atomic GNOME desktop and Margine's specific opinions don't apply to you, Bluefin is the safer pick.
Margine adds on top of Bluefin DX:
- A Secure Boot-signed CachyOS kernel with the BORE scheduler — measurably lower desktop latency under load, MOK-signed at image build time so Secure Boot stays on. Bluefin ships the stock Fedora kernel.
- A curated preinstall set of ~33 Flatpaks (Zen Browser, Thunderbird ESR, GNOME's modern default apps that Bluefin strips, Pinta, Blanket, Fragments, the full creative chain). Bluefin ships much lighter and expects you to install from Bazaar yourself.
- Hyprland-flavoured tiling, ready to go: o-tiling extension preinstalled and enabled, Super+H/J/K/L to move focus between tiles, Super+Return for terminal, Super+E for Files, Super+period for the emoji picker, and Super+number for workspaces. Bluefin defaults to stock GNOME workspace behaviour.
- A single image with an opt-in gaming layer: one command (
ujust margine-gaming) installs the gaming stack on top, andujust margine-gaming-removerolls it back — no separate Gaming edition to choose at download time. - A live CPU scheduler picker — six sched_ext schedulers in the base image, switchable at runtime from a GUI (CPU schedulers). Bluefin ships the stock kernel with no sched_ext tooling.
- Scroll speed as a real setting —
wsf(wayland-scroll-factor) baked into the image, because GNOME still has no scroll-speed slider (Scroll speed & gestures).
Pick Bluefin instead if: you want the stock Fedora kernel, you don't care about Hyprland-style keybindings, you'd rather assemble your own app set, or you want the upstream's level of polish and community support.
Bluefin DX vs Margine — almost the same audience
Bluefin DX is Bluefin's "developer experience" variant: same Bluefin base + VS Code from the Microsoft repo, podman-compose, the full virt stack (libvirt, qemu, virt-manager, swtpm, edk2-ovmf), Distrobox preconfigured, GNOME Boxes, Homebrew. It is specifically the base Margine inherits from.
If you are a developer and you'd be perfectly happy with the upstream's choices, Bluefin DX is the simpler answer — no downstream maintainer in the loop, fastest patching, biggest community.
Margine over Bluefin DX gets you the kernel + curated preinstall + tiling defaults listed in the section above. Same dev tooling, same Distrobox, same Homebrew, same Bazaar — Margine doesn't subtract anything from Bluefin DX.
Bazzite vs Margine with the gaming layer
Bazzite is the gold-standard Linux-for-gaming image. It has the Steam Deck Game Mode session, deep handheld support (ASUS ROG Ally, Lenovo Legion Go, GPD, OneXPlayer, Steam Deck itself), KDE Plasma as an option, more launchers, more aggressive HDR work. If you are buying a Linux gaming handheld, install Bazzite. That's its core use-case and they own it.
Margine's gaming layer (via ujust margine-gaming) is narrower on purpose:
- GNOME-only (no Steam Game Mode session, no Plasma). Margine's tiling-GNOME workflow is the centerpiece; if you want it, you want it across all your use cases including gaming.
- Same CachyOS kernel whether or not the gaming layer is on — BORE scheduler + signed Secure-Boot chain. Bazzite ships Bazzite's own kernel choices.
- Smaller in scope — no handheld-specific tweaks, no Game Mode session, no per-vendor compatibility packages. Less surface area to break, less surface area to support.
Pick Bazzite instead if: you have a handheld, you want Plasma, you want Steam Game Mode as the default session, or you want the upstream gaming community.
The map
Short decision aid — pick the distro that matches the row describing you best. Margine inherits everything from Bluefin DX, so anywhere you'd take Bluefin DX you can take Margine instead — you get the dev toolbox AND the curated kernel/apps/keybinds on top.
(Bluefin DX intentionally omitted: every reason you might pick it is also a reason to pick Margine — same dev toolbox underneath, with strictly more on top.)
One more time — please give to upstream ❤️
Margine is a small project run by one person. The upstreams it builds on are bigger, do more difficult engineering, and have more users depending on them. If you can spare a few euro a month, opencollective.com/ublue is where it has the most impact. The whole Linux atomic desktop ecosystem is a community thing — Margine tries to be a good citizen of it. And if after all that you still want to chip in for Margine's own work, there's github.com/sponsors/daniel-g-carrasco. Grazie. ❤️