# release-only tracking: Version is the newest upstream release tag (the # sweeper's custom feed bumps it); the official source-vX.Y.Z.tar.gz # release asset bundles all subprojects, so there are no submodule pins Name: hyprland Version: 0.56.2 Release: 1%{?dist} %define debug_package %{nil} Summary: Dynamic tiling Wayland compositor that doesn't sacrifice on its looks # hyprland: BSD-3-Clause # subprojects/hyprland-protocols: BSD-3-Clause # subproject/udis86: BSD-2-Clause # protocols/ext-workspace-unstable-v1.xml: HPND-sell-variant # protocols/wlr-foreign-toplevel-management-unstable-v1.xml: HPND-sell-variant # protocols/wlr-layer-shell-unstable-v1.xml: HPND-sell-variant # protocols/idle.xml: LGPL-2.1-or-later License: BSD-3-Clause AND BSD-2-Clause AND HPND-sell-variant AND LGPL-2.1-or-later URL: https://github.com/hyprwm/Hyprland Source0: %{url}/releases/download/v%{version}/source-v%{version}.tar.gz Source4: macros.hyprland BuildRequires: cmake BuildRequires: gcc-c++ BuildRequires: meson # CMakeLists pins glaze 7.2.0 via FetchContent when the buildroot's glaze # is newer, and FetchContent clones with git BuildRequires: git-core BuildRequires: muParser-devel BuildRequires: glaze-static BuildRequires: pkgconfig(aquamarine) BuildRequires: pkgconfig(cairo) BuildRequires: pkgconfig(egl) BuildRequires: pkgconfig(gbm) BuildRequires: pkgconfig(gio-2.0) BuildRequires: pkgconfig(glesv2) BuildRequires: pkgconfig(glslang) BuildRequires: pkgconfig(hwdata) BuildRequires: pkgconfig(hyprcursor) BuildRequires: pkgconfig(hyprgraphics) BuildRequires: pkgconfig(hyprlang) BuildRequires: pkgconfig(hyprutils) BuildRequires: pkgconfig(hyprwayland-scanner) BuildRequires: pkgconfig(hyprwire) BuildRequires: pkgconfig(lcms2) BuildRequires: pkgconfig(libcanberra) BuildRequires: pkgconfig(libdisplay-info) BuildRequires: pkgconfig(libdrm) BuildRequires: pkgconfig(libeis-1.0) BuildRequires: pkgconfig(libinput) >= 1.28 BuildRequires: pkgconfig(libliftoff) BuildRequires: pkgconfig(libseat) BuildRequires: pkgconfig(libudev) BuildRequires: pkgconfig(lua) BuildRequires: pkgconfig(pango) BuildRequires: pkgconfig(pangocairo) BuildRequires: pkgconfig(pixman-1) BuildRequires: pkgconfig(re2) BuildRequires: pkgconfig(readline) BuildRequires: pkgconfig(sdbus-c++) BuildRequires: pkgconfig(systemd) BuildRequires: pkgconfig(tomlplusplus) BuildRequires: pkgconfig(uuid) BuildRequires: pkgconfig(wayland-client) BuildRequires: pkgconfig(wayland-protocols) >= 1.45 BuildRequires: pkgconfig(wayland-scanner) BuildRequires: pkgconfig(wayland-server) BuildRequires: pkgconfig(xcb-composite) BuildRequires: pkgconfig(xcb-dri3) BuildRequires: pkgconfig(xcb-errors) BuildRequires: pkgconfig(xcb-ewmh) BuildRequires: pkgconfig(xcb-icccm) BuildRequires: pkgconfig(xcb-present) BuildRequires: pkgconfig(xcb-render) BuildRequires: pkgconfig(xcb-renderutil) BuildRequires: pkgconfig(xcb-res) BuildRequires: pkgconfig(xcb-shm) BuildRequires: pkgconfig(xcb-util) BuildRequires: pkgconfig(xcb-xfixes) BuildRequires: pkgconfig(xcb-xinput) BuildRequires: pkgconfig(xcb) BuildRequires: pkgconfig(xcursor) BuildRequires: pkgconfig(xkbcommon) BuildRequires: pkgconfig(xwayland) %if 0%{?rhel} == 10 BuildRequires: gcc-toolset-15 BuildRequires: gcc-toolset-15-gcc-c++ BuildRequires: gcc-toolset-15-annobin-plugin-gcc %endif # udis86 is packaged in Fedora, but the copy bundled here is actually a # modified fork. Provides: bundled(udis86) = 1.7.2 Requires: xorg-x11-server-Xwayland%{?_isa} Requires: aquamarine%{?_isa} >= 0.9.2 Requires: hyprcursor%{?_isa} >= 0.1.13 Requires: hyprgraphics%{?_isa} >= 0.1.6 Requires: hyprlang%{?_isa} >= 0.6.3 Requires: hyprutils%{?_isa} >= 0.8.4 %{lua:do if string.match(rpm.expand('%{name}'), '%-git$') then print('Conflicts: hyprland'..'\n') print('Obsoletes: hyprland-nvidia-git < 0.32.3^30.gitad3f688-2'..'\n') print(rpm.expand('Provides: hyprland-nvidia-git = %{version}-%{release}')..'\n') print('Obsoletes: hyprland-aquamarine-git < 0.41.2^20.git4b84029-2'..'\n') elseif not string.match(rpm.expand('%{name}'), 'hyprland$') then print(rpm.expand('Provides: hyprland = %{version}-%{release}')..'\n') print('Conflicts: hyprland'..'\n') else print('Obsoletes: hyprland-nvidia < 1:0.32.3-2'..'\n') print(rpm.expand('Provides: hyprland-nvidia = %{version}-%{release}')..'\n') print('Obsoletes: hyprland-legacyrenderer < 0.49.0'..'\n') end end} # Used in the default configuration Recommends: kitty Recommends: wofi Recommends: playerctl Recommends: brightnessctl Recommends: hyprland-guiutils # Lack of graphical drivers may hurt the common use case Recommends: mesa-dri-drivers # Logind needs polkit to create a graphical session Recommends: polkit # https://wiki.hyprland.org/Useful-Utilities/Systemd-start Recommends: %{name}-uwsm Recommends: (qt5-qtwayland if qt5-qtbase-gui) Recommends: (qt6-qtwayland if qt6-qtbase-gui) %description Hyprland is a dynamic tiling Wayland compositor that doesn't sacrifice on its looks. It supports multiple layouts, fancy effects, has a very flexible IPC model allowing for a lot of customization, a powerful plugin system and more. %package uwsm Summary: Files for a uwsm-managed session Requires: uwsm %description uwsm Files for a uwsm-managed session. %package devel Summary: Header and protocol files for %{name} License: BSD-3-Clause Requires: %{name}%{?_isa} = %{version}-%{release} Requires: cpio %{lua:do if string.match(rpm.expand('%{name}'), 'hyprland%-git$') then print('Obsoletes: hyprland-nvidia-git-devel < 0.32.3^30.gitad3f688-2'..'\n') print(rpm.expand('Provides: hyprland-nvidia-git-devel = %{version}-%{release}')..'\n') print('Obsoletes: hyprland-aquamarine-git-devel < 0.41.2^20.git4b84029-2'..'\n') elseif string.match(rpm.expand('%{name}'), 'hyprland$') then print('Obsoletes: hyprland-nvidia-devel < 1:0.32.3-2'..'\n') print(rpm.expand('Provides: hyprland-nvidia-devel = %{version}-%{release}')..'\n') print('Obsoletes: hyprland-legacyrenderer-devel < 0.49.0'..'\n') end end} Requires: git-core Requires: pkgconfig(aquamarine) Requires: pkgconfig(cairo) Requires: pkgconfig(hyprcursor) Requires: pkgconfig(hyprgraphics) Requires: pkgconfig(hyprlang) Requires: pkgconfig(hyprutils) Requires: pkgconfig(pixman-1) Requires: pkgconfig(wayland-client) Requires: pkgconfig(xkbcommon) %description devel %{summary}. %prep %autosetup -n hyprland-source -N # Fedora names it lua.pc . The correct version is ensured in the BuildRequires section sed -i 's/lua55/lua/g' CMakeLists.txt %if 0%{?fedora} == 43 sed -i 's/\.subview(/ .substr(/g' src/ipc/s1/S1.cpp sed -i '/return (.* || std::ranges::starts_with(str_view, prefixes));/c\ auto check = [&](auto prefix) { return std::string(str_view.begin(), str_view.end()).starts_with(prefix); };\ return (... || check(prefixes));' src/helpers/MiscFunctions.cpp %endif cp -p subprojects/hyprland-protocols/LICENSE LICENSE-hyprland-protocols cp -p subprojects/udis86/LICENSE LICENSE-udis86 sed -i \ -e "s|@@HYPRLAND_VERSION@@|%{version}|g" \ %{SOURCE4} %build %if 0%{?rhel} == 10 source /usr/lib/gcc-toolset/15-env.source %endif %cmake \ -GNinja \ -DCMAKE_BUILD_TYPE=Release \ -DNO_TESTS=TRUE \ -DBUILD_TESTING=FALSE %cmake_build %install %if 0%{?rhel} == 10 source /usr/lib/gcc-toolset/15-env.source %endif %cmake_install install -Dpm644 %{SOURCE4} -t %{buildroot}%{_rpmconfigdir}/macros.d %files %license LICENSE LICENSE-udis86 LICENSE-hyprland-protocols %{_bindir}/[Hh]yprland %{_bindir}/hyprctl %{_bindir}/hyprpm %{_bindir}/start-hyprland %{_datadir}/hypr/ %{_datadir}/wayland-sessions/hyprland.desktop %{_datadir}/xdg-desktop-portal/hyprland-portals.conf # 0.56.2 installs no systemd user units (the session target was dropped # upstream; uwsm's wayland-sessions entry replaces it) %{_mandir}/man1/hyprctl.1* %{_mandir}/man1/Hyprland.1* %{bash_completions_dir}/hypr* %{fish_completions_dir}/hypr*.fish %{zsh_completions_dir}/_hypr* %files uwsm %{_datadir}/wayland-sessions/hyprland-uwsm.desktop %files devel %{_datadir}/pkgconfig/hyprland.pc %{_includedir}/hyprland/ %{_rpmconfigdir}/macros.d/macros.hyprland %changelog * Wed Sep 23 2026 halcyon-autobump - converted to an explicit Release and changelog for the anda build