<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Fedora on Tom Burkert</title><link>https://blog.burkert.me/tags/fedora/</link><description>Recent content in Fedora on Tom Burkert</description><image><title>Tom Burkert</title><url>https://blog.burkert.me/assets/</url><link>https://blog.burkert.me/assets/</link></image><generator>Hugo -- 0.148.0</generator><language>en-us</language><lastBuildDate>Tue, 30 Dec 2025 23:50:42 +0100</lastBuildDate><atom:link href="https://blog.burkert.me/tags/fedora/index.xml" rel="self" type="application/rss+xml"/><item><title>Making Hyprland work on Fedora 43</title><link>https://blog.burkert.me/posts/fedora_43_hyprland/</link><pubDate>Tue, 30 Dec 2025 23:50:42 +0100</pubDate><guid>https://blog.burkert.me/posts/fedora_43_hyprland/</guid><description>&lt;p>This is going to be a fairly niche post, so I will make it clear right away: If you are not using &lt;a href="https://hypr.land/" target="_blank" rel="noopener">Hyprland&lt;/a> on Fedora 43, you can close this post and move on with your day.&lt;/p>
&lt;p>Now, those of you who are using Hyprland on Fedora 43 are likely doing so via the widely linked and recommended &lt;a href="https://copr.fedorainfracloud.org/coprs/solopasha/hyprland/" target="_blank" rel="noopener">solopasha/hyprland COPR&lt;/a>. However, that COPR is no longer maintained, and when running updates, you might have seen errors like these:&lt;/p></description><content:encoded><![CDATA[<p>This is going to be a fairly niche post, so I will make it clear right away: If you are not using <a href="https://hypr.land/" target="_blank" rel="noopener">Hyprland</a> on Fedora 43, you can close this post and move on with your day.</p>
<p>Now, those of you who are using Hyprland on Fedora 43 are likely doing so via the widely linked and recommended <a href="https://copr.fedorainfracloud.org/coprs/solopasha/hyprland/" target="_blank" rel="noopener">solopasha/hyprland COPR</a>. However, that COPR is no longer maintained, and when running updates, you might have seen errors like these:</p>
<pre tabindex="0"><code>- 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
</code></pre><h2 id="the-background">The background</h2>
<p>In my case, this was caused by the fact that I use <a href="https://wiki.hypr.land/Hypr-Ecosystem/hyprpolkitagent/" target="_blank" rel="noopener">hyprpolkitagent</a> for elevated privileges auth handling. Hyprpolkit is a Qt program that (at least in solopasha&rsquo;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 <a href="https://www.mail-archive.com/development@qt-project.org/msg45277.html" target="_blank" rel="noopener">Fedora mailing list</a>.</p>
<p>This is a clear dead-end: solopasha&rsquo;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 <em>oldest first</em>) does not give any helpful hints. Most of my Google searches also do not lead anywhere.</p>
<p>The solution that worked for me is taken from JaKooLit&rsquo;s <a href="https://github.com/JaKooLit/Fedora-Hyprland" target="_blank" rel="noopener">Fedora-Hyprland</a> GitHub, specifically <a href="https://github.com/JaKooLit/Fedora-Hyprland/pull/257" target="_blank" rel="noopener">this pull request</a> that mentions moving to <a href="https://copr.fedorainfracloud.org/coprs/sdegler/hyprland/" target="_blank" rel="noopener">sdegler/hyprland COPR</a>.</p>
<h2 id="the-solution">The solution</h2>
<p>In order to remove solopasha&rsquo;s abandoned COPR and add sdegler&rsquo;s maintained fork of the repo, run this:</p>
<pre tabindex="0"><code>sudo dnf copr remove solopasha/hyprland
sudo dnf copr enable sdegler/hyprland
sudo dnf update
</code></pre><p>You should now be on the newest version of Hyprland and related programs.</p>
<h2 id="bonus-hyprland-053-config-migration-tool">Bonus: Hyprland 0.53 config migration tool</h2>
<p>When you inevitably update to Hyprland 0.53, you&rsquo;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 <a href="https://wiki.hypr.land/Configuring/Window-Rules/" target="_blank" rel="noopener">Hyprland wiki</a>, but it does not show before-and-after comparisons or specific migration steps.</p>
<p>In essence, a rule for always opening a terminal (ghostty in my case) on workspace 1 used to look like this:</p>
<p><code>windowrulev2 = workspace 1, class:^(com.mitchellh.ghostty)$</code></p>
<p>But in the new version, the same rule will look like this (if you opt for the anonymous rule syntax):</p>
<p><code>windowrule = workspace 1, match:class ^(com.mitchellh.ghostty)$</code></p>
<p>You could also opt for the more readable named rule syntax:</p>
<pre tabindex="0"><code>windowrule {
 name = terminal
 workspace = 1
 match:class = ^(com.mitchellh.ghostty)$
}
</code></pre><p>Now the good news is that you don&rsquo;t have to migrate your config manually: <a href="https://github.com/ItsOhen" target="_blank" rel="noopener">ItsOhen</a> created a <a href="https://github.com/ItsOhen/hyprrulefix" target="_blank" rel="noopener">tool</a> to migrate your Hyprland config to 0.53 compatible rules. You can do it in your <a href="https://itsohen.github.io/hyprrulefix/" target="_blank" rel="noopener">browser</a> or via a simple python script. Thank you, ItsOhen!</p>
]]></content:encoded></item></channel></rss>