🐧 Arch Linux rolling · GNOME 50 · Btrfs + Snapper rollbacks

The Power of Arch.
The Polish of GNOME.

Gnomarchy takes Omarchy's developer tooling, theme engine and rolling Arch base, and replaces the Hyprland stack with a tuned GNOME 50 desktop on GDM and Wayland. One ISO, one CLI, and a config repository that keeps updating the machine long after the install.

$ curl -fsSL https://raw.githubusercontent.com/hteariH/Gnomarchy/main/boot.sh | bash [Copy]
gnomarchy help
Super + Alt + Space opens the same thing as a menu
Usage: gnomarchy <command> [subcommand] [arguments...]

Commands:
  menu                         Open the Gnomarchy command center (Super+Alt+Space)
  theme <set|list|current>     Manage system and desktop color themes
  tiling <enable|disable|status>
                               Dynamic auto-tiling (Hyprland-style) or manual grid
  keymap <omarchy|gnome|status>
                               Switch between Omarchy and Gnomarchy key layouts
  keybindings [--list]         Search the keybindings that are actually active
  manual [page|--grep <text>]  Read the Gnomarchy manual
  gaming <install|status|proton>
                               Steam, Proton-GE, Wine and launchers in one go
  asus <status|charge|profile|keyboard|graphics>
                               Asus ROG/TUF laptop controls
  snapshot <create|list>       Manage Btrfs Snapper rollback snapshots
  webapp <add|list|remove>     Turn websites into isolated desktop applications
  voxtype [toggle|start|stop]  Speech-to-text AI dictation (Super+D)
  windows <setup|start|stop>   Manage accelerated Windows 11 KVM VM
  update                       Perform system & Gnomarchy configuration updates
  migrate [--list]             Apply pending Gnomarchy migrations
Abridged. gnomarchy help also lists backgrounds, gnome, agent, reminder, capture, screensaver, hook, first-run and version.

GNOME, with the sharp edges filed down

A bare window manager asks you to rebuild display handling, portals and a lock screen yourself. Gnomarchy keeps Mutter and GDM, then configures the parts a tiling user actually misses.

πŸ–₯️

Fractional scaling, one command

Mutter's fractional scaling is still behind an experimental flag, so it ships off rather than pretending otherwise. gnomarchy gnome scaling enable sets scale-monitor-framebuffer and 125% or 150% becomes available in Settings.

🧩

Two tiling models, one switch

Dynamic auto-tiling in the Hyprland sense, or a manual grid where nothing moves unless you move it. Both are installed; gnomarchy tiling picks which one is live, because with both enabled they fight over placement.

πŸ›‘οΈ

A snapshot before every upgrade

The installer lays out @, @home, @snapshots, @var_log and @var_cache on Btrfs and configures Snapper on root. snap-pac then takes a pre and post snapshot around every pacman transaction, so a bad upgrade is something you can step back out of.

Session GNOME 50 Β· Wayland Β· GDM
Filesystem Btrfs subvolumes, LUKS optional
Bootloader limine + snapper
Audio PipeWire (+ ALSA and Pulse shims)

Dynamic tiling, or a grid you drive yourself

Pick the model rather than the compositor. One command switches between them and disables the other, and the keys follow.

gnomarchy tiling enable

Dynamic β€” Tiling Shell

New windows are placed into the layout automatically and their neighbours resize to fit. This is the Hyprland-style behaviour, and it is opt-in.

Super + h j k lfocus window
Super + Shift + h j k lmove window
Super + Shift + Ccentre window

hjkl rather than the arrows, so Super + Up stays maximize and GNOME's edge tiling keeps working.

default

Manual β€” Tactile grid

Super + T opens a grid overlay and you pick the zone with a letter. Nothing is ever moved for you, which is what you want the moment a dialogue or a picture-in-picture window appears.

Super + Topen the grid overlay
Super + Upmaximize
Super + Left / RightGNOME edge tiling

The grid is set up at install time: three columns with relative widths 1:2:1, two equal rows, 18 px gaps.

A third window opens and the other two shrink to make room. You never place anything.
Alacritty
Brave
nvim

22 themes, applied everywhere at once

Each theme's alacritty.toml is the canonical 16-colour palette; everything else is generated from it. Click any theme to repaint this page.

What a theme switch touches

  • Alacritty β€” the palette is copied to colors.toml, which the base config imports
  • GNOME Terminal β€” the same palette written into the profile's dconf keys
  • GTK 3 and 4 β€” a generated gnomarchy-theme.css, imported once from your gtk.css
  • Neovim β€” the theme's lazy.nvim spec, plus a pin so LazyVim does not override it
  • btop β€” the theme file, and btop.conf is edited to actually select it
  • GNOME accent and wallpaper β€” the accent is one of GNOME's named hues, not an arbitrary hex value

Every theme carries a small SVG wallpaper in the repository. The full photographic sets are fetched per machine with gnomarchy backgrounds β€” they are not committed, because the upstream collection ships no attribution. See BACKGROUNDS.md.

The gnomarchy dispatcher

One command in front of the themes, the tiling mode, snapshots, web apps, the gaming stack and the update path. Every output below is what the scripts print.

user@gnomarchy:~$ gnomarchy theme set nord
Applied theme: nord

The block above is the command's real output. The grey line under it is this page talking, not the script.

A gaming stack and laptop controls, on demand

Neither is in the base image, because neither belongs on every machine. Both are one command when you want them.

gnomarchy gaming install

Steam, Proton-GE and the rest

Enables multilib, detects the GPU vendor and installs only the matching 32-bit Vulkan driver, then pulls the stack from the official repositories.

steam Β· lutris Β· gamescope gamemode Β· mangohud Β· goverlay wine Β· winetricks Β· vkd3d umu-launcher Β· ttf-liberation

Proton-GE, ProtonUp-Qt and Faugus Launcher are not in the official repositories, so they come from the AUR, with a Flatpak fallback when no AUR helper is present. gnomarchy gaming proton manages versions afterwards.

gnomarchy asus

Asus ROG and TUF laptops

A front end over asusctl and supergfxctl for the settings worth changing day to day, so the common cases are one obvious command.

charge 80battery charge limit
profilequiet / balanced / performance
keyboard medkeyboard backlight
statusmodel, asusd, supergfxd

Untested on real Asus hardware so far. It reports clearly when asusctl is missing or asusd is not running rather than failing quietly.

Voxtype: local dictation on Super + D

Press once to record, press again to transcribe and type the result into whatever has focus. Nothing leaves the machine.

How it actually runs

  • Capture β€” 16 kHz mono, through pw-record, sox or ffmpeg, whichever is present
  • Model β€” Whisper base.en, about 140 MB, downloaded once on first use
  • Inference β€” whisper-cpp on the CPU. A GPU backend means adding ggml-vulkan yourself
  • Typing β€” ydotool, with ydotoold enabled and a uinput rule installed
16 kHz mono capture IDLE
Press Super+D once to start, again to stop and transcribe.
An illustration of the sequence, not a live model.

The default layout

Applied at first login. Super + K searches whatever is actually bound on the machine in front of you, which is the only list that cannot go stale.

Super + Alt + SpaceGnomarchy menu
Super + ReturnGNOME Terminal
Super + BBrave
Super + ENautilus
Super + DVoxtype dictation
Super + KSearch keybindings
Super + Shift + KThe manual
Super + TTactile grid overlay
Super + EscMatrix screensaver
Super + WClose window
Super + UpMaximize
Super + BackspaceBegin resize
Super + 1…6Switch workspace
Super + Shift + 1…6Move window to workspace
Ctrl + PrintRegion into Satty
PrintGNOME screenshot

Prefer Omarchy's layout?

gnomarchy keymap omarchy moves the apps onto Super + Shift + B / F / N, puts ten workspaces on Super + 1…0, close on Super + W and Super + Q, and directional focus on the arrows. A handful of Hyprland bindings have no GNOME equivalent β€” window groups, the scratchpad, pseudo-tiling β€” and are left deliberately unbound rather than mapped to something that does not match. gnomarchy keymap gnome puts it back.

Install Gnomarchy

Expect a normal Arch install: partitioning is quick, then it spends a while pulling packages, extensions and Brave over the network.

Method 1 Β· recommended

Bootable ISO

Write the ISO to a USB stick and boot it. The installer partitions the Btrfs subvolumes, optionally sets up LUKS, installs Snapper and limine, and deploys the GNOME 50 desktop.

# Every release ships a SHA256SUMS file sha256sum -c SHA256SUMS # Flash it (replace /dev/sdX) sudo dd if=gnomarchy-linux-*-x86_64.iso of=/dev/sdX bs=4M status=progress
Method 2 Β· over existing Arch

Deploy onto a minimal Arch install

Already have a clean Arch system? The same staged installer runs on top of it and installs the desktop, the tooling and the CLI without touching your partitions.

curl -fsSL https://raw.githubusercontent.com/hteariH/Gnomarchy/main/boot.sh | bash

Prefer to try it first? Clone the repository and run ./run-vm.sh to boot the ISO under QEMU. CI builds the ISO, installs from it in a QEMU virtual machine and checks the result both offline and inside a real GNOME session.

After the install gnomarchy update pulls the repo, then applies pending migrations
If something looks wrong /var/log/gnomarchy-install.log carries per-stage markers