This is going to be a fairly niche post, so I will make it clear right away: If you are not using Hyprland on Fedora 43, you can close this post and move on with your day.

Now, those of you who are using Hyprland on Fedora 43 are likely doing so via the widely linked and recommended solopasha/hyprland COPR. However, that COPR is no longer maintained, and when running updates, you might have seen errors like these:

- installed package hyprland-qt-support-0.1.0-8.fc43.x86_64 requires libQt6Core.so.6(Qt_6.9_PRIVATE_API)(64bit), but none of the providers can be installed
- package hyprland-qt-support-0.1.0-8.fc43.x86_64 from copr:copr.fedorainfracloud.org:solopasha:hyprland requires libQt6Core.so.6(Qt_6.9_PRIVATE_API)(64bit), but none of the providers can be installed

Skipping packages with conflicts:
 qt6-qtbase                                  x86_64 6.10.1-3.fc43
 qt6-qtbase-common                           noarch 6.10.1-3.fc43

The background

In my case, this was caused by the fact that I use hyprpolkitagent for elevated privileges auth handling. Hyprpolkit is a Qt program that (at least in solopasha’s COPR) was built against Qt 6.9, but Fedora has moved on to Qt 6.10, which introduces some breaking changes to its private APIs, as chronicled by Jan Grulich on the Fedora mailing list.

This is a clear dead-end: solopasha’s COPR is not getting any updates (the latest git version of Hyprland is from late October - version 0.51.1) and even the discussion on the COPR page (which is helpfully sorted oldest first) does not give any helpful hints. Most of my Google searches also do not lead anywhere.

The solution that worked for me is taken from JaKooLit’s Fedora-Hyprland GitHub, specifically this pull request that mentions moving to sdegler/hyprland COPR.

The solution

In order to remove solopasha’s abandoned COPR and add sdegler’s maintained fork of the repo, run this:

sudo dnf copr remove solopasha/hyprland
sudo dnf copr enable sdegler/hyprland
sudo dnf update

You should now be on the newest version of Hyprland and related programs.

Bonus: Hyprland 0.53 config migration tool

When you inevitably update to Hyprland 0.53, you’ll find that version 0.53 introduces breaking changes to window rules. Unfortunately, your old rules are not automatically migrated and will stop working after the update. The new syntax is documented well on the Hyprland wiki, but it does not show before-and-after comparisons or specific migration steps.

In essence, a rule for always opening a terminal (ghostty in my case) on workspace 1 used to look like this:

windowrulev2 = workspace 1, class:^(com.mitchellh.ghostty)$

But in the new version, the same rule will look like this (if you opt for the anonymous rule syntax):

windowrule = workspace 1, match:class ^(com.mitchellh.ghostty)$

You could also opt for the more readable named rule syntax:

windowrule {
 name = terminal
 workspace = 1
 match:class = ^(com.mitchellh.ghostty)$
}

Now the good news is that you don’t have to migrate your config manually: ItsOhen created a tool to migrate your Hyprland config to 0.53 compatible rules. You can do it in your browser or via a simple python script. Thank you, ItsOhen!