Hyprforge

Free software for Hyprland/MIT

The rest of your Hyprland desktop.

Hyprland gives you a superb compositor and leaves the rest to you: the lock screen, the login, notifications, somewhere to change a setting. Hyprforge is that rest, made as one piece so it looks and behaves like one.

Arch packages, or build from source · needs Hyprland 0.55 or later with a Lua config

09:41
Thursday, 8 October
Type to unlock
82%
V

Welcome back.

That was a copy of hyprforge-lock running in your browser. The real one is a session-lock client that checks your password with PAM, and nothing you type there reaches a log either.

⚡
BatteryCharging, 82%
Fig. 1The lock screen, rebuilt in your browser. Start typing and the card comes up. Enter unlocks and Esc puts it away. Nothing you type leaves the page: it only keeps a count, which is all the dots need.
§1What's in it

Twelve pieces, and you can take any one of them.

Each piece has its own repository and its own package. Take the clipboard history and leave the other eleven, and it'll still work and still look right. Take all twelve and they share a look, a keyboard grammar and a set of libraries, so they feel like they came from the same place, because they did.

Apps

  1. 01SettingsNineteen pages over your Hyprland config. It writes plain Lua that you can open and read.hyprforge-settings→
  2. 02FilesTabs, split view, Quick Look, archives you can walk into like folders, phones and network shares.hyprforge-files→
  3. 03MediaPhotos, video and 3D models in one viewer, in the same order Files shows them.hyprforge-media→
  4. 04Lock screenPassword or fingerprint, what's playing, and a supervisor that keeps you locked if it ever falls over.hyprforge-lock→
  5. 05GreeterThe login screen for greetd. It uses the lock screen's own drawing code, so the two match exactly.hyprforge-greet→

Running in the background

  1. 06NotificationsToasts, a notification center to come back to, and do-not-disturb. It takes over from dunst or mako.hyprforge-notif→
  2. 07ClipboardYour copy history at the pointer. A password manager's secrets are never even read.hyprforge-clipboard→
  3. 08Emoji pickerEvery emoji, plus kaomoji and symbols, one key away, and it pastes for you.hyprforge-emojimenu→
  4. 09TrayWi-Fi, Bluetooth, battery, night light and more, in whichever bar you already use.hyprforge-tray→
  5. 10DisplaysPlug the dock back in and your monitors come back the way you arranged them.hyprforge-displayd→
  6. 11Administrator promptWhen an app needs administrator access, the lock screen's card asks, and your fingerprint can answer.hyprforge-polkit→
§2What it looks like

These aren't mockups. Each one was drawn by the code that draws it on your screen, with the same theme, read from the same files. Settings, Files and Media are still waiting for their portraits.

The clipboard history popup: pinned and recent entries tagged text, link, image and file, with the selected image previewed beside them
Fig. 2Clipboard history at the pointer, with the selected screenshot previewed on the right.
The emoji picker: search, Emoji, Kaomoji and Symbols tabs, frequently used emoji and a skin-tone button
Fig. 3The emoji picker. The ones you use most come first.
Notification toasts, one of them a critical battery warning, beside the notification center with live and earlier notifications
Fig. 4Notifications as they arrive, left, and the center you can come back to, right. Critical ones get through do-not-disturb.
Three tray menus side by side: Wi-Fi networks, Bluetooth devices, and battery with power profiles
Fig. 5Three of the tray's menus: Wi-Fi, Bluetooth, and battery with power profiles.
§3How it's made

Every mistake gets written down.

The repository keeps a running list called "the rules that came from being wrong." Each entry is a real bug: what happened, why it wasn't obvious, and what now stops it happening again. Three of them:

the lock screen

A keysym name is the password.

Logging "just the keysym" while debugging sounds harmless, until you notice that XK_a is the letter a and XK_comma is a comma.

Nothing derived from a keystroke reaches a log or a crash report. What you typed shows as a count.

your config

Unreadable isn't empty.

An import once treated a config file it couldn't parse as one with nothing in it, and that cost a user 37 keybinds they'd written by hand.

A missing file means first run. A broken one gets reported to you, and nothing is written over it.

the lock screen, again

A round number is someone else's timeout.

The lock screen took five seconds to appear, and our side finished in a millisecond. The compositor was waiting for windows we were holding back.

Measure before optimising anything that talks to another process.

More from the list, and how it's tested →

§4Getting it

One command, and you approve every step.

The installer builds what you ask for, copies only what changed, and checks the copy actually landed. Then it offers to wire each piece into your desktop: services, keybinds, the lock in hypridle, default apps. It asks first every time and keeps a record, so all of it can be undone.

The full install guide →

$ git clone --recurse-submodules \
    https://github.com/hyprforge-suite/hyprforge
$ cd hyprforge
$ ./hyprforge --install --all --dry-run   # look first
$ ./hyprforge --install --all