diff --git a/_service b/_service
index ab7875f..60f9368 100644
--- a/_service
+++ b/_service
@@ -6,7 +6,7 @@
hyprland
@PARENT_TAG@
v(.*)
- v0.46.2
+ @PARENT_TAG@
enable
diff --git a/disable-donation-nag-popup.patch b/disable-donation-nag-popup.patch
new file mode 100644
index 0000000..7201116
--- /dev/null
+++ b/disable-donation-nag-popup.patch
@@ -0,0 +1,28 @@
+From 4fcb3f028a8ca15a553faba77f262a3cb75d4a71 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Florian=20=22sp1rit=22=E2=80=8B?=
+Date: Mon, 27 Jan 2025 18:41:45 +0100
+Subject: [PATCH] disable donation nag popup
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Florian "sp1rit"
+---
+ src/managers/DonationNagManager.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/managers/DonationNagManager.cpp b/src/managers/DonationNagManager.cpp
+index d7eab9a..4fc8dc9 100644
+--- a/src/managers/DonationNagManager.cpp
++++ b/src/managers/DonationNagManager.cpp
+@@ -34,6 +34,7 @@ const std::vector NAG_DATE_POINTS = {
+ // clang-format on
+
+ CDonationNagManager::CDonationNagManager() {
++ return;
+ static auto PNONAG = CConfigValue("ecosystem:no_donation_nag");
+
+ if (g_pVersionKeeperMgr->fired() || *PNONAG)
+--
+2.48.1
+
diff --git a/hyprland-0.46.2.tar.xz b/hyprland-0.46.2.tar.xz
deleted file mode 100644
index a8df724..0000000
--- a/hyprland-0.46.2.tar.xz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:3da6226f362dd3ee3513933008806ecf85eb312b55112225e18413219ad17be3
-size 51341512
diff --git a/hyprland-0.47.1.tar.xz b/hyprland-0.47.1.tar.xz
new file mode 100644
index 0000000..fc4e104
--- /dev/null
+++ b/hyprland-0.47.1.tar.xz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7f9a5809019ba9ddfe1cfd4037fb395826c99c21f9ec269d61ca6bfcf14c44f0
+size 51366864
diff --git a/hyprland.changes b/hyprland.changes
index 25173c3..add8a7a 100644
--- a/hyprland.changes
+++ b/hyprland.changes
@@ -1,3 +1,233 @@
+-------------------------------------------------------------------
+Thu Jan 30 09:08:11 UTC 2025 - Florian "spirit"
+
+- Update to version 0.47.1:
+ + 0.47.1 comes with, as usual, a few fixes backported from main.
+ Some crashes, odd behavior, flickers, etc.
+ + Fixes backported:
+ * xwayland: send synthetic configure events (#9193)
+ * deps: add libinotify-kqueue on BSDs (#9197)
+ * xwayland: respect window size set by configure requests (#9190)
+ * ikeyboard: free xkbSymState in clearManuallyAllocd
+ * configmgr: properly free glob memory
+ * presentation: log a fixme when there is a feedback leak
+ * renderer: calculate UV using both pixel and monitor dimensions
+ * pass/rect: fix bounding / opaque regions
+ * config/hyprctl: fix keyword not updating autoreload
+ * monitor: round refresh rates in sorting modes
+ * popup: stop refocusing at unmap
+ * subsurface: fix invalid parent typo
+
+-------------------------------------------------------------------
+Mon Jan 27 17:15:02 UTC 2025 - Florian "spirit"
+
+- Update to version 0.47.0:
+ + New year, new Hyprland release brought to you by Yours Truly.
+ This update is quite large, so you might want to read these patch
+ notes.
+ There have been quite a bunch of internal rewrites, mostly around
+ memory safety, the renderer, and animation system. Although
+ performance shouldn't change much, it should improve stability in
+ edge cases. Please do report any regressions you might find, if
+ they aren't reported already.
+ + Breaking changes:
+ - master:always_center_master has been replaced with a more
+ flexible master:slave_count_for_center_master
+ + New features:
+ - config: add exec(-onec) with rules and execr(-once) (#8953)
+ - core/renderer: Add GPU hotplug support (#8980)
+ - core: Add render:allow_early_buffer_release to make buffer
+ release configurable (#9019)
+ - core: Add support for HDR and color management protocols
+ (#8715)
+ - core: add --verify-config to verify the config with Hyprland
+ - ctm: add an internal fade animation to ctm transitions
+ - debug: add debug:pass for debugging the render pass
+ - hyprpm: add an option to force reload all plugins (#8883)
+ - hyprpm: add glaze dependency FetchContent fallback (#8899)
+ - keybinds: add new window destruction dispatchers (#8962)
+ - keybinds: add visible arg for cyclenext (#9045)
+ - master: add option to show slaves on left in center orientation
+ (#8940)
+ - pluginAPI: add register dispatcher v2
+ - protocols: add hyprland_lock_notify_v1 implementation (#9092)
+ - protocols: add hyprland_surface_v1 implementation (#8877)
+ - protocols: add hyprland_surface_v1.set_visible_region
+ implementation (#9120)
+ - renderer: Add supercircular window corners (#8943)
+ - selectors: add a tag: to for matching window tag(s) by regex
+ (#8985)
+ - socket2: add focusedmonv2 event (#8921)
+ - windowrules: add negative: prefix for negating a regex
+ + Fixes:
+ - animation: fixup adding animvars during ::tick (#9030)
+ - animations: fix XWayland cursor glitch and refactor skill
+ issues (#9033)
+ - animations: fix borderangle once (#9149)
+ - compositor: fix incorrect cast, use lambda capture instead
+ (#9161)
+ - config: fix animations requiring all args
+ - config: fix float animation speeds < 0 (#9123)
+ - config/ConfigWatcher.cpp: add missing include needed for clang
+ (#9166)
+ - configmgr: fix crash on very early plugin loads
+ - core/compositor: fix too early buffer release (#8966)
+ - core: fix custom resolutions (#8897)
+ - core: fix possible crash on null active workspace
+ - data-device: fix edge case crash on null xwm
+ - debug: fix ISDEBUG checking (#8823)
+ - debug: fix overlay not rendering
+ - desktop/DesktopTypes.hpp: fix include (#9104)
+ - dwindle: fix possible crash on null ws
+ - functionHooks: wait for hyprland pages before returning addr
+ for trampo
+ - helpers/Monitor.cpp: fix include path (#9039)
+ - hyprctl: Fix hyprctl batch JSON command (#8749)
+ - hyprctl: fix hyprctl --batch not working with exec rules
+ (#8952)
+ - hyprpm: fix hyrpm sometimes returning 0 despite errors occurring
+ (#8761)
+ - keybinds: fix movefocus fallback for special workspaces (#9040)
+ - keybinds: fix nullptr deref in forcekillactive (#9021)
+ - keybinds: fix previous_per_monitor logic (#9010)
+ - logging: fix Gpu info (#8764)
+ - pass: fixup debug mode rendering of input boxes
+ - protocols: fix alpha-modifier noncompliance (#8929)
+ - protocols: fix compilation error (#8988)
+ - renderer: fix CRendererHintsPassElement reset duplication issue
+ (#8928)
+ - renderer: fix fullscreen hdr check (#9076)
+ - renderer: fix oversized blur precalcs not blurring at all
+ - renderer: fix rare case when a tiled window would be rendered
+ over fs
+ - shaders: fix blank windows when using corner rounding (#8969)
+ (#8971)
+ - window: fixup fade out animation on silent moves
+ - xwayland: fix clipboard mime name and atom mismatch (#9137)
+ - xwayland: fix compile with no xwayland
+ - xwayland: fix crash when trying to initialize without Xwayland
+ installed (#9077)
+ - xwayland: fix dnd including xwayland
+ - xwayland: fix pointer mismatches with multiple monitors (#9179)
+ - xwayland: fix sending large clipboard data (#9134)
+ - xwayland: various window handling fixes
+ - xwm: fixup targets in selection requests
+ + Other:
+ - properly install 'hyprland' symlink (#9091)
+ - Renderer: rewrite render scheduling (#8683)
+ - animation: avoid crashes in ::tick() on mutations
+ - animationmgr: don't warp based on POINTY value (#9000)
+ - binds: cycle within group on single monitor if no window found
+ in the argument direction. (#8714)
+ - config: avoid querying the fs every tick
+ - config: disable borderangle by default (#9165)
+ - config: update animation even if disabled
+ - config/ConfigManager.cpp: add instruction to edit config
+ (#9130)
+ - core: add LIKELY and UNLIKELY macros
+ - core: always use goal size to send to clients
+ - core: avoid activating toplevel-less surfaces
+ - core: cleanup header includes (#9088)
+ - core: fade in windows when they are brought from invisible
+ workspaces
+ - core: guard workspace and monitor in moveWorkspaceToMonitor
+ - core: make persistent workspaces always follow the config
+ - core: move all shared_ptrs from the STL to hyprutils (#9143)
+ - core: move parts of the animation system to hyprutils (#8868)
+ - core: move sendWindowSize off of xwaylandmgr
+ - core: move to inotify for monitoring the config files
+ - core: refactor/improve monitor mode selection (#8804)
+ - core: reserve vector sizes as much as we can (#9118)
+ - core: update groups on movewindow (#9183)
+ - core: use cpu-buffer hw cursors on nvidia by default
+ - core: use readFileAsString instead of cat for os-release
+ - ctm: disable fade animation by default on nvidia
+ - datadevice: do the unfocus surface stuff before dndActive is
+ true (#9157)
+ - datadevice: guard XWayland server against crashes
+ - desktop: move desktop types to memory-safe pointers
+ - dnd/seat: avoid sending button events during a dnd op
+ - foreign-toplevel: update active on null window focus (#8860)
+ - fractional-scale: avoid redundant and duplicate scale events
+ - groupbar: unify title rendering
+ - groups: honor group lock window rule (#8782)
+ - hooksystem: avoid huge include for HANDLE
+ - hyprpm: use glaze to parse hyprctl plugin list (#8812)
+ - input: abord dnd op on escape pressed
+ - input: pass touch events to lock screens (#9129)
+ - internal: Make static analysis more happy (#8767)
+ - internal: added reference to CTimer class in KeybindManager
+ (#8836)
+ - internal: few small monitor improvements (#8890)
+ - internal: update window position/size after changing
+ fullscreenstate (#8865)
+ - keybinds: attempt to wrap around if fallback is allowed in
+ movefocus
+ - layershell: check if layer is valid (#9156)
+ - layershell: return focus to a valid ls on close if possible
+ - layout: apply group rules after window creation (#8779)
+ - layout: damage window properly on float mode changes
+ - layout: force full damage on toggling floating mode
+ - layout: set window size after toggling floating
+ - logging: get broader GPUINFO (#8753)
+ - master: make loop around optional when cycling (#8926)
+ - master: replace always_center_master with
+ slave_count_for_center_master (#8871)
+ - monitor: avoid crashes on no good modes
+ - monitor: bring back old description behavior
+ - opengl: only allocate offMainFB on demand
+ - opengl: use uv to avoid rendering the entire blurbox
+ - pass: allow removing all pass elements of a given type
+ - pass: ignore empty rectangles queued
+ - pass: improve blur region detection
+ - pass: improve pass debug mode
+ - pass: improve pass debugging
+ - pass: mark crucial elements as undiscardable
+ - pass: scale blur region in ::render
+ - pass: scale blur regions properly
+ - pointer: always scale the cpu cursor to the right size
+ - protocols: allow hyprland-toplevel-export to capture hidden
+ windows (#9041)
+ - protocols: do not capture cursor in toplevel without pointer
+ focus (#9042)
+ - protocols: do not destroy screencopy resources before client
+ request (#9048)
+ - protocols: immediately copy toplevel content when ignoreDamage
+ set (#9049)
+ - regex: log an error if regex parsing fails
+ - renderer/internal: stop using box pointers
+ - renderer: Auto enable wide color gamut in HDR mode (#9090)
+ - renderer: Do not set hdr metadata unless needed (#9014)
+ - renderer: allow plugins to know what window was rendered in
+ post
+ - renderer: don't access hdrMetadata optional if it has no value
+ (#8987)
+ - renderer: unload background texture if it's disabled
+ - renderer: use a render pass for render modif in client render
+ - renderer: use cairo for cpu buffer rendering (#9071)
+ - shadow: avoid drawing empty shadows
+ - snap: don't snap to any windows if workspace has a fullscreen
+ window (#8870)
+ - snap: give edge snapping precedence over corner snapping
+ (#8873)
+ - snap: revert #8659, use bounds checking instead of bit mask
+ (#8872)
+ - subsurface: damage the entire parent on size change
+ - tablet: send motions on tip events (#9132)
+ - window: only set m_iMonitorMovedFrom, when moving to a
+ different monitor (#9160)
+ - windowrules: precompute regexes for window/layer rules
+ - windows: honor xdg_toplevel_set_fullscreen output hint (#8965)
+ - windows: minor initial workspace improvements
+ - xwayland: avoid sending value of real size to xwayland
+ - xwayland: don't create an abstract unix domain socket on linux
+ (#8874)
+ - xwayland: don't define atoms on no_xwayland builds
+ - xwayland: support sending clipboard change notification on
+ focus (#9111)
+- Added "disable-donation-nag-popup.patch" to prevent the donation
+ nag popup from spawning.
+
-------------------------------------------------------------------
Fri Dec 20 07:58:25 UTC 2024 - Florian "spirit"
diff --git a/hyprland.spec b/hyprland.spec
index 4e8d249..2eee663 100644
--- a/hyprland.spec
+++ b/hyprland.spec
@@ -1,7 +1,7 @@
#
# spec file for package hyprland
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
# Copyright (c) 2022-24 Florian "sp1rit"
#
# All modifications and additions to the file contributed by third parties
@@ -22,7 +22,7 @@
%define shortname hypr
Name: hyprland
-Version: 0.46.2
+Version: 0.47.1
Release: 0
Summary: Dynamic tiling Wayland compositor
License: BSD-3-Clause
@@ -30,14 +30,16 @@ URL: https://hyprland.org/
Source0: %{name}-%{version}.tar.xz
Source99: %{name}.rpmlintrc
Patch1: meson-missing-wayland-include.patch
+Patch2: disable-donation-nag-popup.patch
Patch100: opensuse-hyprpm-use-hyprland-devel-subpkg.patch
BuildRequires: cmake
BuildRequires: gcc-c++ >= 14
BuildRequires: git
+BuildRequires: glaze-devel
BuildRequires: glslang-devel
BuildRequires: meson
BuildRequires: pkgconfig
-BuildRequires: pkgconfig(aquamarine) >= 0.4.5
+BuildRequires: pkgconfig(aquamarine) >= 0.7.0
BuildRequires: pkgconfig(cairo)
BuildRequires: pkgconfig(egl)
BuildRequires: pkgconfig(gbm) >= 17.1.0
@@ -46,7 +48,7 @@ BuildRequires: pkgconfig(glesv2)
BuildRequires: pkgconfig(hyprcursor) >= 0.1.9
BuildRequires: pkgconfig(hyprgraphics) >= 0.1.1
BuildRequires: pkgconfig(hyprlang) >= 0.3.2
-BuildRequires: pkgconfig(hyprutils) >= 0.2.4
+BuildRequires: pkgconfig(hyprutils) >= 0.3.1
BuildRequires: pkgconfig(hyprwayland-scanner) >= 0.3.8
BuildRequires: pkgconfig(libdrm) >= 2.4.118
BuildRequires: pkgconfig(libinput) >= 1.14.0
@@ -174,6 +176,7 @@ sed -i 's;REPLACE_ME_WITH_PREFIX;%{_prefix};' hyprpm/src/core/DataState.cpp
%license LICENSE
%doc README.md
%{_bindir}/Hyprland
+%{_bindir}/hyprland
%{_bindir}/hyprctl
%{_bindir}/hyprpm
%dir %{_datadir}/%{shortname}
diff --git a/opensuse-hyprpm-use-hyprland-devel-subpkg.patch b/opensuse-hyprpm-use-hyprland-devel-subpkg.patch
index 14a83b3..6df8285 100644
--- a/opensuse-hyprpm-use-hyprland-devel-subpkg.patch
+++ b/opensuse-hyprpm-use-hyprland-devel-subpkg.patch
@@ -24,20 +24,16 @@ diff --git a/hyprpm/src/core/DataState.cpp b/hyprpm/src/core/DataState.cpp
index fb8679d..a1c7026 100644
--- a/hyprpm/src/core/DataState.cpp
+++ b/hyprpm/src/core/DataState.cpp
-@@ -21,7 +21,7 @@ std::string DataState::getDataStatePath() {
- }
-
+@@ -22,3 +22,3 @@ std::string DataState::getHeadersPath() {
std::string DataState::getHeadersPath() {
-- return getDataStatePath() + "/headersRoot";
+- return getDataStatePath() / "headersRoot";
+ return "REPLACE_ME_WITH_PREFIX/";
}
-
- void DataState::ensureStateStoreExists() {
diff --git a/hyprpm/src/core/PluginManager.cpp b/hyprpm/src/core/PluginManager.cpp
index 48b108c..b0f590b 100644
--- a/hyprpm/src/core/PluginManager.cpp
+++ b/hyprpm/src/core/PluginManager.cpp
-@@ -17,6 +17,7 @@
+@@ -15,6 +15,7 @@
#include
#include
@@ -45,7 +41,7 @@ index 48b108c..b0f590b 100644
#include
#include
-@@ -436,141 +437,27 @@ bool CPluginManager::updateHeaders(bool force) {
+@@ -435,141 +436,27 @@ bool CPluginManager::updateHeaders(bool force) {
const auto HLVER = getHyprlandVersion(false);
if (!hasDeps()) {
@@ -192,7 +188,7 @@ index 48b108c..b0f590b 100644
progress.m_szCurrentMessage = "Failed";
progress.print();
-@@ -953,6 +840,19 @@ std::string CPluginManager::headerErrorShort(const eHeadersErrors err) {
+@@ -945,6 +832,19 @@ std::string CPluginManager::headerErrorShort(const eHeadersErrors err) {
}
bool CPluginManager::hasDeps() {