Hyprland hyprpm¶
- ID
hyprpm- Link
- Upstream stars
⭐ 38,801
- Last commit
2026-10-04
- Version requirement
>= 0.56
- Platforms
🐧 Linux
- Operations
installed·install·upgrade_all·remove- purl types
pkg:hyprpm/- CLI name
hyprpm- Issues and PRs
- Source
hyprpm is the plugin manager shipped inside Hyprland (https://github.com/hyprwm/Hyprland), the Wayland compositor.
A package is a plugin repository, not a plugin. hyprpm nests the two: one
git repository is added, built and removed as a unit, and the plugins it
carries are enabled and disabled inside it. add, remove and update all
take the repository, which is the object mpm’s package model describes, while
enable and disable configure something already installed rather than
installing it. Mapping those two onto install and remove would be faking
operations, so mpm reports the repositories and leaves the plugins to
hyprpm’s own verbs. The cost is real and worth stating: the per-plugin
enabled/failed state the listing prints is not carried into mpm.
Parsing notes, verified against hyprpm 0.56.2 on Arch Linux:
The listing is a two-level tree. Each repository heads a block, and its plugins follow indented beneath it, so only the
Repositorylines are packages and every other line falls through the pattern unmatched.The pattern is unanchored on purpose. hyprpm writes SGR escapes whether or not it holds a terminal, and honors neither
NO_COLORnorTERM=dumbnorCLICOLOR, all three verified, so the line opens with escapes rather than with its text. Matching mid-line steps over them instead of fighting levers that do nothing, which is the readingbobsettled.The id is the bare repository name, not
author/name. Both are accepted byremove, and the author is printed right beside the name, but a regex parser maps one named group to one package field and cannot join two captures into a single id. Two repositories sharing a name would collide, which is an ambiguity hyprpm has itself and resolves the same way.No
installed_versionis captured: the listing carries none. The state file records a commit hash, but reading it would mean parsing hyprpm’s private files rather than driving its CLI.
Important
hyprpm has no version flag of its own: hyprpm --version answers
Unrecognized option --version. It ships with the compositor and is
versioned with it, so the probe runs Hyprland --version through
version_cli, the same escape hatch the base-system suites use. That makes a
host with no Hyprland report no version and leaves the manager unavailable,
which is the right answer: hyprpm without its compositor cannot build a
plugin. hyprctl version was rejected for the probe because it talks to a
running instance and fails with HYPRLAND_INSTANCE_SIGNATURE not set! on a
host that merely has Hyprland installed.
Caution
add and remove both stop on an Are you sure? [Y/n] confirmation that no
flag disables. mpm clears it without answering: click-extra runs every child
with stdin on subprocess.DEVNULL, hyprpm reads an empty line, and
its check only aborts on an explicit n, so the default applies. Both halves
are deliberate rather than lucky, but the pair is what makes this manager
drivable unattended: read a hang here as one of them having changed.
Note
install takes a git URL, where the listing reports a name, so an id read
back from installed cannot be handed to install. That is hyprpm’s own
asymmetry: add accepts a URL alone while remove accepts a URL, a name or
author/name. Removal and upgrade therefore round-trip on a listed id and
installation does not, the same shape bob documents for its catalog.
No outdated: nothing reports staleness without acting, update computing
what is behind and building it in one pass. No search: hyprpm has no
catalog, a repository being whatever URL the user hands it. No cleanup:
purge-cache removes every built plugin, the headers and hyprpm’s own
settings, which is a mass removal rather than reclamation, the same reading
that left bob erase and luarocks purge unmapped.
What mpm adds to hyprpm¶
mpm reaches across every manager at once, not hyprpm alone: mpm installed and mpm outdated cover hyprpm alongside every other manager you run in one table, mpm upgrade --all updates them together, and mpm sbom exports the whole machine as one bill of materials.
Every mpm command also gains --dry-run and --plan previews, cross-scheme version comparison and purl identifiers. See manager augmentations for how each one is built.
Your hyprpm commands, in mpm¶
You already know hyprpm: each operation maps one-to-one onto mpm, in an interface shared by every manager.
To… |
With |
With |
|---|---|---|
List what’s installed |
|
|
Install a package |
|
|
Upgrade everything |
|
|
Remove a package |
|
|
Prefix any command above with --dry-run to simulate the underlying manager calls without touching the system: the safe way to watch what mpm would do before trusting it.
Operations¶
Operation |
Supported |
|---|---|
|
✅ |
|
|
|
|
|
|
|
✅ |
|
|
|
✅ |
|
✅ |
|
|
|
|
|
Configuration¶
Ignore
hyprpmon thempmCLI by passing the--no-hyprpmoption.Ignore it for every run in your configuration:
[mpm] hyprpm = false
Raise the timeout of all
hyprpmcalls:[mpm.overrides.hyprpm] timeout = 900
Run
mpm config-template hyprpmto print all overridable settings for your configuration file:[mpm.overrides.hyprpm] cli_names = [ "hyprpm", ] cli_search_path = [] dry_run = false ignore_auto_updates = true plan = false post_args = [] pre_args = [] pre_cmds = [] requirement = ">=0.56.0" stop_on_error = false unmaintained = false version_cli_options = [ "--version", ] version_regexes = [ "^Hyprland (?P<version>\\S+)", ]
Recipes¶
A few jobs you would otherwise script around hyprpm, one mpm command each:
Snapshot and clone a machine:
mpm --hyprpm dump hyprpm.toml, thenmpm restore hyprpm.tomlon the next one.Export a compliance SBOM:
mpm --hyprpm sbom(CycloneDX by default,--spdxfor SPDX).
Privilege escalation¶
mpm runs this manager as the current user and never prepends sudo by default. Flip the policy for its privileged operations with --sudo or the per-manager sudo override.
None of its operations is privileged.
See privilege escalation for the full policy.
Cooldown¶
State of Hyprland hyprpm’s release-age gating, from the cooldown support table:
Status: ❌ None (a plugin repository is a git clone, which carries no publication date)
A cooldown only pays off where a compromised release can be withdrawn while the clock runs, and can only be emulated where the registry dates its releases. From the retraction table:
Registry: Upstream Git clones
Retraction: None: a plugin is cloned straight from its upstream repository, so withdrawing a bad revision is its author force-pushing, retagging or deleting it themselves. No index sits in between
Publish date: ❌ a commit or tag date is set by the author and freely rewritable
With --cooldown set, mpm skips this manager’s install and upgrade operations rather than run them unguarded (fail-closed); --cooldown best-effort opts back in.
Reference traces¶
A collection of raw native outputs captured from the manager’s own CLI and recorded in the bundled definition. If you know Hyprland hyprpm well and a transcript below looks wrong, or a newer release changed its output format, report it.
$ hyprpm list
[0m→[0m Repository hyprsplit (by shezdy):
│ Plugin hyprsplit
└─ enabled: [32mtrue
[0m
[0m→[0m Repository hyprland-plugins (by hyprwm):
│ Plugin csgo-vulkan-fix
└─ enabled: [31mPlugin failed to build
[0m
│ Plugin hyprbars
└─ enabled: [32mtrue
[0m
Version check¶
The version is probed by running:
$ Hyprland --version
Hyprland 0.56.2 built from branch v0.56.2 at commit efb50993780079460b0cbed1363e2166a2de1d9f clean ([gha] Nix: update inputs).
Date: Wed Aug 5 14:13:21 2026
Tag: v0.56.2, commits: 7661
Libraries:
Hyprgraphics: built against 0.5.1, system has 0.5.1
Hyprutils: built against 0.14.0, system has 0.14.1
Hyprcursor: built against 0.1.13, system has 0.1.13
Hyprlang: built against 0.6.8, system has 0.6.8
Aquamarine: built against 0.14.0, system has 0.14.0
Version ABI string: efb50993780079460b0cbed1363e2166a2de1d9f_aq_0.14_hu_0.14_hg_0.5_hc_0.1_hlg_0.6
no flags were set
and extracted with:
r"^Hyprland (?P<version>\S+)"
Upstream project¶
Metrics |
|
|---|---|
Activity |
|
Popularity |
|
Metadata |
|
Changelog¶
8.0.0(2026-09-20)Add the hyprpm Hyprland plugin manager, listing, installing, removing and upgrading plugin repositories.