Skip to main content

Omarchy on Fedora? Yes -- Meet omarchy-fedora

 


What if you could get the Omarchy desktop — without leaving Fedora?

That's exactly what omarchy-fedora does.

Omarchy Quatttro running on Fedora Rawhide

Omarchy is the opinionated Arch-based Hyprland desktop (originally from DHH). The current development branch is quattro — a v4 rewrite around Hyprland + Quickshell + a omarchy CLI for themes, plugins, captures, updates and snapshots.

omarchy-fedora is not a fork. It is a thin Fedora adapter that lets that same upstream desktop run on Fedora:

omacom/omarchy (quattro)  <-- authoritative
           |
git subtree vendor (upstream/)
           |
 +---------+---------+
 |                   |
Arch               Fedora (this repo: fedora/)
pacman/AUR         dnf / RPM / COPR

Upstream stays vendored under upstream/ via git-subtree and stays authoritative for themes, shell, config, apps and CLI. This repo only solves Fedora-side problems:

  • Arch → Fedora package mapping (233 entries in fedora/mappings/packages.yaml)
  • COPR / RPM Fusion / Flathub repo wiring
  • dracut instead of mkinitcpio, GRUB + snapper instead of Limine, akmods instead of dkms-hook
  • idempotent install.sh / bootstrap.sh / update.sh / uninstall.sh installer
  • Fedora RPMs for Omarchy's own tools (see below)

No SELinux / firewall / security bypasses. Every external repo is documented and gpg-verified.

Target today: Fedora Rawhide, 44 or 45, x86_64, systemd, Wayland-capable hardware. Status is IN DEVELOPMENT — it runs on VirtManager VMs and on Rawhide + Fedora 44 bare metal, Super keys work, updates work — but expect rough edges. Bug reports welcome.

Try it: VM (safest) or bare metal

Option A — VirtManager VM (recommended first try)

  1. Create a Fedora VM in VirtManager — Rawhide ideal, Fedora 44/45 fine, x86_64, network on. Starting from the Fedora Sway Spin gives the cleanest base (KDE also works).
  2. Inside the VM, snapshot it: Virtual Machine → Take Snapshot.
  3. Update + get the code:
    sudo dnf -y upgrade --refresh
    sudo dnf -y install git
    git clone https://github.com/whelanh/omarchy-fedora.git
    cd omarchy-fedora
  4. Static check (makes zero system changes):
    bash fedora/tests/static.sh
    # expect: == Result: 185 passed, 0 failed ==
  5. Dry-run, then install:
    sudo ./fedora/scripts/install.sh --dry-run
    sudo ./fedora/scripts/bootstrap.sh
    sudo ./fedora/scripts/install.sh
    sudo systemctl reboot
    Useful flags: --nvidia (RPM Fusion + akmod-nvidia), --user bob, --no-firstparty, --no-omarchy (deps only).
  6. Log in — SDDM is pre-selected to the Omarchy (Hyprland uwsm) session. If you log in as a different user, pick it manually at the login screen.

To undo: sudo ./fedora/scripts/uninstall.sh or just roll back to your snapshot.

Option B — Bare metal

omarchy-fedora on a Dell laptop that started with a Sway - Rawhide base

Back up first. This is pre-release software on your daily driver.

  1. Start from a fresh/clean Fedora — Sway Spin recommended.
  2. Same three commands as the VM:
    git clone https://github.com/whelanh/omarchy-fedora.git
    cd omarchy-fedora
    sudo ./fedora/scripts/bootstrap.sh
    sudo ./fedora/scripts/install.sh
    sudo systemctl reboot
  3. After reboot you land in Omarchy. Re-running the installer is safe (idempotent).
  4. Stay current:
    omarchy update
    This does dnf upgrade + re-applies the userspace tree + runs Fedora-native migrations. If you see a Hyprland config error mid-update, let it finish then reboot.
  5. Rollback: the installer sets up snapper + btrfs-assistant + grub-btrfs with pre/post + timeline snapshots. You can boot a snapshot from GRUB — see snapper docs to roll back.

What changed in the last month? A lot.

Mid-September to mid-October was the “make it real” month. Daily upstream-sync kept pace with quattro, while the Fedora layer went from “Hyprland starts” to feature parity work. Highlights:

1. All 26 first-party Omarchy apps now ship as Fedora RPMs

Omarchy's own tools -- now native RPMs from COPR

From the whelanh/omarchy COPR, installed by default (skip with --no-firstparty):

aether, cliamp, disktree-bin, elsewhen, gliff, herdr, hype, hyprland-preview-share-picker, monologue, omacalc, omacut, omapresent, omarchy-emacs, omarchy-hyprland-titlebars, omawrite, omasnap, openai-codex-bin, openai-codex-desktop, owe, owe-lockfeed, signed, superwhisper-bin, tensaku, try, ttfx, voxtype-bin

New just this month: elsewhen (world-clock plugin), owe + owe-lockfeed (wallpaper engine + lock feed), omasnap (replaces tensaku), disktree-bin + omapresent, hype + monologue (Qt6 presentation editor + webcam recorder), gliff, superwhisper-bin (now default-installed), voxtype-bin + omarchy-emacs (opt-in menu), signed + omarchy-hyprland-titlebars, openai-codex-bin + openai-codex-desktop, plus version bumps for herdr / hype 0.5.0 / omacalc / omacut / ttfx with desktop/icon fixes.

Builds now cover Rawhide + Fedora 44 + Fedora 45 chroots, with per-chroot nett00n/hyprland build repos.

2. SUPER+SPACE Install menu actually works on Fedora

“SUPER+SPACE → Install rows now resolve Arch names to dnf / COPR / Flathub automatically.

Upstream’s menu calls omarchy-pkg-add with Arch/AUR names. New fedora/mappings/menu-packages.conf translates them at runtime to Fedora names, COPRs, vendor repos or Flathub — native first, Flathub fallback on Rawhide, with shims (launcher, desktop alias, Chromium policy bind-mount) so Flatpaks still theme correctly. Unavailable apps warn instead of failing the script.

3. Update now converges — it also removes what upstream dropped

New fedora/mappings/retired-packages.conf: packages upstream removes are skipped on install and dependency-aware removed on omarchy update (set OMARCHY_FEDORA_NO_PRUNE=1 to opt out). Plus fixed userspace pull, elsewhen migration, and group-aware presence checks.

4. Login, fingerprint, and “black window” fixes

  • First login: installer pre-selects omarchy.desktop in /var/lib/sddm/state.conf (stock greeter has no picker), disables GDM/LightDM/LXDM on Workstation bases before enabling SDDM. Thanks to Lukas Dolzer for the SDDM/root-ownership hardening.
  • Fingerprint: omarchy-setup-security-fingerprint rewritten for dnf (fprintd + fprintd-pam + libfprint) — no more “pacman: command not found”.
  • KDE base black window: KDE’s xwaylandvideobridge autostart is masked (Hidden=true) in Omarchy sessions. Don’t remove Xwayland itself — you need it for X11 apps/games.
  • IME + codecs: fcitx5 IME packages mapped, new upstream ffmpeg / qt6-* base packages mapped, Hyprland stack standardized on actively-maintained nett00n/hyprland COPR.

5. Maintainer automation so it doesn’t rot

  • New fedora/rpm/copr/auto-update.sh + check-updates.sh --packages --pins — catches version drift, unmapped/stale packages, and stale omarchy-pkgs commit pins.
  • CI now builds each RPM in its own container, enables nett00n/hyprland in the build job, weekly + manual rebuilds.

Should you try it?

If you love Fedora (SELinux, dnf, COPR, Wayland just working) but ogle Omarchy screenshots — yes, in a VM today, on spare hardware if you’re adventurous.

If you need a rock-solid daily driver with zero surprises — wait, star the repo, and follow along. Daily upstream syncs mean it tracks quattro closely.

Links + how to help

Most useful contributions right now: VM test reports (Fedora version + resolve.py --package <x> output + full error), package-mapping fixes, and testing omarchy update paths. See CONTRIBUTING.md.

Disclosure: omarchy-fedora is IN DEVELOPMENT, community-maintained, not affiliated with upstream Omarchy. Upstream remains authoritative for the desktop experience.

Comments

Popular posts from this blog

Install Windows 11 on Virt-Manager

 Virt-Manager will have been installed in base install.  But to enable it (make sure SVM, or whatever virtualization is called in your BIOS is enabled). From https://computingforgeeks.com/install-kvm-qemu-virt-manager-arch-manjar/ sudo pacman -S qemu-full virt-manager virt-viewer dnsmasq vde2 bridge-utils openbsd-netcat dmidecode ip tables libguestfs edk2-ovmf swtpm Then enable and start libritd.service sudo systemctl enable libvirtd.service sudo systemctl start libvirtd.service sudo micro /etc/libvirt/libvirtd.conf Set the UNIX domain socket group ownership to libvirt, (around line 85 ) unix_sock_group = "libvirt" Set the UNIX socket permissions for the R/W socket (around line 102 ) unix_sock_rw_perms = "0770" Add your user account to libvirt group.   sudo usermod -a -G libvirt $(whoami) newgrp libvirt Restart libvirt daemon. sudo systemctl restart libvirtd.service Section below is quoted directly from https://linustechtips.com/topic/1379063-windows-11-in-virt-mana...

KDE's Own Distro

For installation details see the Installation section https://community.kde.org/KDE_Linux#Installation  and  https://kde.org/linux/install/ Install homebrew: (do oh-my-zsh and powerlevel10k first so .zshrc modification by brew survives) /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" Install distrobox:    curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --prefix ~/.local echo 'export PATH="$PATH:~/.local/bin"' >> ~/.bashrc echo 'export PATH="$PATH:~/.local/bin"' >> ~/.zshrc OneDrive:  brew install onedrive # type onedrive to register/connect with your MSft OneDrive account  brew services start onedrive-cli onedrive --force --skip-dot-files --skip-dir venv --sync    NOW ON MY Kinoite IMAGE, so just initiate normally and then: mkdir -p ~/.config/systemd/user/onedrive.service.d cat > ~/.config/systemd/user/onedrive.service.d/override.conf <...

Using rclone to integrate Google Drive in Arch

 sudo pacman -S rclone rclone config  # will need to set up secret key and client ID follow instructions    mkdir ~/GoogleDrive   rclone mount gdrive: ~/GoogleDrive --vfs-cache-mode writes --daemon  # can also use following to run in background (nohup): nohup rclone mount gdrive: ~/GoogleDrive --vfs-cache-mode writes --allow-non-empty --dir-cache-time 1000h --poll-interval 15s  systemctl --user edit --force --full rclone-mount.service   add: [Unit] Description=RClone Mount Google Drive After=network-online.target [Service] Type=notify ExecStart=/usr/bin/rclone mount gdrive: %h/GoogleDrive --vfs-cache-mode writes --vfs-cache-max-age 1h ExecStop=/bin/fusermount -u %h/GoogleDrive Restart=on-failure RestartSec=5 [Install] WantedBy=default.target    Enable: systemctl --user enable --now rclone-mount.service