# HyprMod A native GTK4/libadwaita settings app for [Hyprland](https://hyprland.org) β€” tweak any option, see it change live, save when you're happy. [![CI](https://github.com/BlueManCZ/hyprmod/actions/workflows/ci.yml/badge.svg)](https://github.com/BlueManCZ/hyprmod/actions/workflows/ci.yml) [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/) [![AUR](https://img.shields.io/aur/version/hyprmod?label=AUR)](https://aur.archlinux.org/packages/hyprmod)

Monitor configuration page with a multi-monitor layout preview Bezier curve editor with control points and live animation preview

## 🎬 Wall of Video Fame Huge thanks to the creators below β€” without you, HyprMod would reach far fewer people. ❀️ Finally a Settings App for Hyprland β€” by saneAspect New GUI Settings For Hyprland!! Game Changer! | HyprMod β€” by TheBlackDon Hyprmod: The Game-Changing Settings Tool Every Hyprland Beginner Needs β€” by Mattscreative FIZERAM uma CENTRAL DE CONFIG PRO HYPRLAND (e tΓ‘ insano de bom kkk) β€” by Raell Tech ## ⚑ Highlights - **Live preview** β€” changes apply instantly to your running compositor - **Your config stays untouched** β€” HyprMod writes only to its own `hyprland-gui.conf` - **Undo with Ctrl+Z** β€” step back one change at a time - **Profiles** β€” save, name, and share complete configurations as `.conf` files ## ✨ Features - **Lua config support** β€” migrate and edit `hyprland.lua` directly (Hyprland 0.55+) - Bezier curve editor with live animation preview - Monitor layout editor with VRR, 10-bit detection, and advanced HDR controls with safe defaults - Keybind editor with interactive key capture, including mouse-drag (`bindm`) binds - Window rules, layer rules, and workspace rules editors with live preview - Autostart (`exec` / `exec-once`) and environment variable management - Pending Changes page β€” review every unsaved edit before saving - Cursor theme picker with live preview - Config DNA β€” a unique visual fingerprint per profile - Global search across all options (Ctrl+F) ## ⌨️ Command line Switch profiles without opening the window. Handy to bind to a Hyprland keybind or call from a script. ```bash hyprmod profile list # show saved profiles (active marked with *) hyprmod profile apply Gaming # switch to a profile by name (case-insensitive) hyprmod profile next # cycle to the next profile (alphabetical, wraps around) hyprmod profile previous # cycle to the previous one (alias: prev) ``` ## πŸ“¦ Installation > HyprMod is in active development and not yet packaged for most distributions. Requires Python 3.12+, GTK4, and libadwaita. The one-line installer works on any distribution. ```bash curl -LsSf https://raw.githubusercontent.com/BlueManCZ/hyprmod/main/install.sh | sh ``` To uninstall: ```bash curl -LsSf https://raw.githubusercontent.com/BlueManCZ/hyprmod/main/install.sh | sh -s -- --uninstall ``` ### πŸ“¦ pkgit If you use [`pkgit`](https://git.symlinx.net/pkgit/about/), you can install `hyprmod` directly with: ```bash pkgit -i https://github.com/BlueManCZ/hyprmod ``` ### Distribution packages **Arch Linux** β€” [`hyprmod`](https://aur.archlinux.org/packages/hyprmod) on the AUR: ```bash yay -S hyprmod ``` **Gentoo** β€” via the [`edgets`](https://github.com/BlueManCZ/edgets) overlay: ```bash emerge -a hyprmod ``` **NixOS / home-manager** β€” via the flake: Add the input to your `flake.nix`: ```nix inputs = { nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; hyprmod = { url = "github:BlueManCZ/hyprmod"; inputs.nixpkgs.follows = "nixpkgs-unstable"; }; }; ``` Then add the package to `home.packages` or `environment.systemPackages`: ```nix # home-manager module { inputs, pkgs, ... }: { home.packages = [ inputs.hyprmod.packages.${pkgs.stdenv.hostPlatform.system}.default ]; } # NixOS module { inputs, pkgs, ... }: { environment.systemPackages = [ inputs.hyprmod.packages.${pkgs.stdenv.hostPlatform.system}.default ]; } ``` Make sure `inputs` reaches your module via `specialArgs` (NixOS) or `extraSpecialArgs` (home-manager).
Overlay usage (makes pkgs.hyprmod available everywhere) ```nix # Once, where you configure nixpkgs: { inputs, ... }: { nixpkgs.overlays = [ inputs.hyprmod.overlays.default ]; } # Then anywhere pkgs is in scope: { pkgs, ... }: { home.packages = [ pkgs.hyprmod ]; } ```
Minimal full flake example ```nix { inputs = { nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs-unstable"; }; hyprmod = { url = "github:BlueManCZ/hyprmod"; inputs.nixpkgs.follows = "nixpkgs-unstable"; }; }; outputs = { self, nixpkgs-unstable, home-manager, hyprmod, ... }: { nixosConfigurations.mymachine = nixpkgs-unstable.lib.nixosSystem { system = "x86_64-linux"; modules = [ { nixpkgs.overlays = [ hyprmod.overlays.default ]; } home-manager.nixosModules.home-manager { home-manager.users.alice = { pkgs, ... }: { home.packages = [ pkgs.hyprmod ]; }; } ./configuration.nix ]; }; }; } ```
Build or run from a local checkout ```bash git clone https://github.com/BlueManCZ/hyprmod.git cd hyprmod nix build .#hyprmod # build nix run .#hyprmod # run without installing nix shell .#hyprmod # shell with hyprmod on PATH ```
For the step-by-step release update procedure and hash regeneration reference, see [NIX.md](NIX.md).
Drive the install yourself ```bash # with uv uv tool install git+https://github.com/BlueManCZ/hyprmod.git hyprmod --install # places .desktop + icon under ~/.local/share # or with pipx pipx install git+https://github.com/BlueManCZ/hyprmod.git hyprmod --install ``` To remove: `hyprmod --uninstall`, then `uv tool uninstall hyprmod` or `pipx uninstall hyprmod`. `hyprmod --install` is idempotent and runs automatically on first launch if no desktop entry is visible yet.
Running from a checkout? See [CONTRIBUTING.md](CONTRIBUTING.md). ## πŸ—ΊοΈ Roadmap **Next** - Automatic backups on save, with a history browser - Translations (gettext) **Later** - Pages for the hypr* ecosystem β€” hyprpaper, hypridle, hyprlock - Plugin manager (`hyprpm`) **Out of scope** β€” Wi-Fi, Bluetooth, printing, default apps, and GTK theming belong in a desktop control center, not a Hyprland settings app. See [#15](https://github.com/BlueManCZ/hyprmod/issues/15) for the reasoning. ## 🀝 Contributing PRs are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, the checks CI runs, and scope notes. For larger changes, please open an issue first so we can discuss the approach. Star History Chart