Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package hyprland-plugins for 
openSUSE:Factory checked in at 2026-07-28 17:50:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/hyprland-plugins (Old)
 and      /work/SRC/openSUSE:Factory/.hyprland-plugins.new.2004 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "hyprland-plugins"

Tue Jul 28 17:50:12 2026 rev:10 rq:1366847 version:0.56.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/hyprland-plugins/hyprland-plugins.changes        
2026-07-17 01:45:27.017233498 +0200
+++ 
/work/SRC/openSUSE:Factory/.hyprland-plugins.new.2004/hyprland-plugins.changes  
    2026-07-28 17:51:25.526868536 +0200
@@ -1,0 +2,7 @@
+Mon Jul 20 21:53:16 UTC 2026 - Florian "spirit" <[email protected]>
+
+- Update to version 0.56.0:
+  + The plugins were updated to use the plugin interface in use by
+    hyprland 0.56.0.
+
+-------------------------------------------------------------------
@@ -17,0 +25,12 @@
+
+-------------------------------------------------------------------
+Mon Jul 13 09:58:32 UTC 2026 - Florian "sp1rit" <[email protected]>
+
+- Update to version 0.55.0:
+  + The plugins were updated to use the plugin interface in use by
+    hyprland 0.55.0.
+  + Packages for plugins no longer included upstream (hyprexpo,
+    hyprtrails, hyprwinwrap & xtra-dispatchers) were dropped:
+    - Dropped expo-Chase-new-gesture-param-disableInhibit-581.patch &
+      Fix-hyprtrails-compilation-errors.patch
+  + Dropped all-chase-hyprland.patch

Old:
----
  hyprland-plugins-0.55.0.tar.gz

New:
----
  hyprland-plugins-0.56.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ hyprland-plugins.spec ++++++
--- /var/tmp/diff_new_pack.8tdhdK/_old  2026-07-28 17:51:26.470901546 +0200
+++ /var/tmp/diff_new_pack.8tdhdK/_new  2026-07-28 17:51:26.474901686 +0200
@@ -15,8 +15,8 @@
 # Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
-%define hypr_tgt 0.55.0
-%define pkg_version 0.55.0
+%define hypr_tgt 0.56.0
+%define pkg_version 0.56.0
 
 Name:           hyprland-plugins
 Version:        %{pkg_version}
@@ -33,6 +33,10 @@
 BuildRequires:  pkgconfig(pangocairo)
 %requires_eq    hyprland
 
+# TODO: this should be provided by hyprland-devel
+BuildRequires:  glslang-devel
+BuildRequires:  pkgconfig(lua5.5)
+
 %{lua: plugins = {
        ['borders-plus-plus'] = 'This plugin adds one or two additional borders 
to windows',
        ['csgo-vulkan-fix'] = 'This fixes custom resolutions on CS:GO with 
-vulkan',

++++++ hyprland-plugins-0.55.0.tar.gz -> hyprland-plugins-0.56.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hyprland-plugins-0.55.0/borders-plus-plus/borderDeco.cpp 
new/hyprland-plugins-0.56.0/borders-plus-plus/borderDeco.cpp
--- old/hyprland-plugins-0.55.0/borders-plus-plus/borderDeco.cpp        
2026-05-13 12:47:38.000000000 +0200
+++ new/hyprland-plugins-0.56.0/borders-plus-plus/borderDeco.cpp        
2026-07-15 09:59:07.000000000 +0200
@@ -16,8 +16,8 @@
 }
 
 CBordersPlusPlus::CBordersPlusPlus(PHLWINDOW pWindow) : 
IHyprWindowDecoration(pWindow), m_pWindow(pWindow) {
-    m_lastWindowPos  = pWindow->m_realPosition->value();
-    m_lastWindowSize = pWindow->m_realSize->value();
+    m_lastWindowPos  = 
pWindow->position(Desktop::View::IGeometric::GEOMETRIC_CURRENT);
+    m_lastWindowSize = 
pWindow->size(Desktop::View::IGeometric::GEOMETRIC_CURRENT);
 }
 
 CBordersPlusPlus::~CBordersPlusPlus() {
@@ -156,8 +156,8 @@
 }
 
 void CBordersPlusPlus::updateWindow(PHLWINDOW pWindow) {
-    m_lastWindowPos  = pWindow->m_realPosition->value();
-    m_lastWindowSize = pWindow->m_realSize->value();
+    m_lastWindowPos  = 
pWindow->position(Desktop::View::IGeometric::GEOMETRIC_CURRENT);
+    m_lastWindowSize = 
pWindow->size(Desktop::View::IGeometric::GEOMETRIC_CURRENT);
 
     damageEntire();
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hyprland-plugins-0.55.0/borders-plus-plus/main.cpp 
new/hyprland-plugins-0.56.0/borders-plus-plus/main.cpp
--- old/hyprland-plugins-0.55.0/borders-plus-plus/main.cpp      2026-05-13 
12:47:38.000000000 +0200
+++ new/hyprland-plugins-0.56.0/borders-plus-plus/main.cpp      2026-07-15 
09:59:07.000000000 +0200
@@ -6,6 +6,7 @@
 #include <array>
 #include <hyprland/src/Compositor.hpp>
 #include <hyprland/src/desktop/view/Window.hpp>
+#include <hyprland/src/desktop/state/WindowState.hpp>
 #include <hyprland/src/config/ConfigManager.hpp>
 #include <hyprland/src/render/Renderer.hpp>
 #include <hyprland/src/event/EventBus.hpp>
@@ -19,6 +20,9 @@
 }
 
 static void onNewWindow(PHLWINDOW window) {
+    if (std::ranges::any_of(window->m_windowDecorations, [](const auto& d) { 
return d->getDisplayName() == "Borders++"; }))
+        return;
+
     HyprlandAPI::addWindowDecoration(PHANDLE, window, 
makeUnique<CBordersPlusPlus>(window));
 }
 
@@ -60,7 +64,7 @@
     static auto P = Event::bus()->m_events.window.open.listen([&](PHLWINDOW w) 
{ onNewWindow(w); });
 
     // add deco to existing windows
-    for (auto& w : g_pCompositor->m_windows) {
+    for (auto& w : Desktop::windowState()->windows()) {
         if (w->isHidden() || !w->m_isMapped)
             continue;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hyprland-plugins-0.55.0/csgo-vulkan-fix/main.cpp 
new/hyprland-plugins-0.56.0/csgo-vulkan-fix/main.cpp
--- old/hyprland-plugins-0.55.0/csgo-vulkan-fix/main.cpp        2026-05-13 
12:47:38.000000000 +0200
+++ new/hyprland-plugins-0.56.0/csgo-vulkan-fix/main.cpp        2026-07-15 
09:59:07.000000000 +0200
@@ -4,6 +4,7 @@
 
 #include <hyprland/src/Compositor.hpp>
 #include <hyprland/src/desktop/state/FocusState.hpp>
+#include <hyprland/src/desktop/state/WindowQuery.hpp>
 #include <hyprland/src/desktop/view/Window.hpp>
 #include <hyprland/src/config/ConfigManager.hpp>
 #include <hyprland/src/xwayland/XSurface.hpp>
@@ -80,7 +81,8 @@
     }
 
     const auto SURF    = surface->m_surface.lock();
-    const auto PWINDOW = g_pCompositor->getWindowFromSurface(SURF);
+    const auto CWLSURF = Desktop::View::CWLSurface::fromResource(SURF);
+    const auto PWINDOW = CWLSURF ? 
Desktop::View::CWindow::fromView(CWLSURF->view()) : nullptr;
 
     CBox       newBox = box;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hyprland-plugins-0.55.0/hyprbars/README.md 
new/hyprland-plugins-0.56.0/hyprbars/README.md
--- old/hyprland-plugins-0.55.0/hyprbars/README.md      2026-05-13 
12:47:38.000000000 +0200
+++ new/hyprland-plugins-0.56.0/hyprbars/README.md      2026-07-15 
09:59:07.000000000 +0200
@@ -34,6 +34,7 @@
 `col.text` | color | bar's title text color
 `bar_title_enabled` | bool | whether to render the title | `true`
 `bar_text_size` | int | bar's title text font size | `10`
+`bar_text_weight` | font weight | bar's title text weight. Named (`thin`, 
`light`, `normal`, `medium`, `semibold`, `bold`, `ultrabold`, `heavy`, ...) or 
integer 100-1000 | `400`
 `bar_text_font` | str | bar's title text font | `Sans`
 `bar_text_align` | left, center | bar's title text alignment | `center`
 `bar_buttons_alignment` | right, left | bar's buttons alignment | `right`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hyprland-plugins-0.55.0/hyprbars/barDeco.cpp 
new/hyprland-plugins-0.56.0/hyprbars/barDeco.cpp
--- old/hyprland-plugins-0.55.0/hyprbars/barDeco.cpp    2026-05-13 
12:47:38.000000000 +0200
+++ new/hyprland-plugins-0.56.0/hyprbars/barDeco.cpp    2026-07-15 
09:59:07.000000000 +0200
@@ -2,7 +2,11 @@
 
 #include <hyprland/src/Compositor.hpp>
 #include <hyprland/src/desktop/state/FocusState.hpp>
+#include <hyprland/src/desktop/state/WindowState.hpp>
+#include <hyprland/src/desktop/state/LayerState.hpp>
+#include <hyprland/src/desktop/state/ViewHitTester.hpp>
 #include <hyprland/src/desktop/view/Window.hpp>
+#include <hyprland/src/desktop/view/LayerSurface.hpp>
 #include <hyprland/src/helpers/MiscFunctions.hpp>
 #include <hyprland/src/managers/SeatManager.hpp>
 #include <hyprland/src/managers/input/InputManager.hpp>
@@ -12,11 +16,12 @@
 #include <hyprland/src/config/shared/parserUtils/ParserUtils.hpp>
 #include <hyprland/src/config/supplementary/executor/Executor.hpp>
 #include <hyprland/src/config/shared/actions/ConfigActions.hpp>
-#include <hyprland/src/managers/animation/AnimationManager.hpp>
+#include <hyprland/src/animation/AnimationManager.hpp>
 #include <hyprland/src/protocols/LayerShell.hpp>
 #include <hyprland/src/event/EventBus.hpp>
 #include <hyprland/src/layout/LayoutManager.hpp>
 #include <hyprland/src/render/OpenGL.hpp>
+#include <hyprland/src/state/MonitorState.hpp>
 
 #include "globals.hpp"
 #include "BarPassElement.hpp"
@@ -44,8 +49,8 @@
     m_pTouchMoveCallback = 
Event::bus()->m_events.input.touch.motion.listen([&](ITouch::SMotionEvent e, 
Event::SCallbackInfo& info) { onTouchMove(info, e); });
     m_pMouseMoveCallback = 
Event::bus()->m_events.input.mouse.move.listen([&](Vector2D c, 
Event::SCallbackInfo& info) { onMouseMove(c); });
 
-    
g_pAnimationManager->createAnimation(configColor(g_pGlobalState->config.barColor->value()),
 m_cRealBarColor, Config::animationTree()->getAnimationPropertyConfig("border"),
-                                         pWindow, AVARDAMAGE_NONE);
+    
Animation::mgr()->createAnimation(configColor(g_pGlobalState->config.barColor->value()),
 m_cRealBarColor, Config::animationTree()->getAnimationPropertyConfig("border"),
+                                      pWindow, AVARDAMAGE_NONE);
     m_cRealBarColor->setUpdateCallback([&](auto) { damageEntire(); });
 }
 
@@ -79,37 +84,38 @@
 }
 
 bool CHyprBar::inputIsValid() {
-    if (!g_pGlobalState->config.enabled->value())
+    if (m_hidden)
         return false;
 
-    if (!m_pWindow->m_workspace || !m_pWindow->m_workspace->isVisible() || 
!g_pInputManager->m_exclusiveLSes.empty() ||
-        (g_pSeatManager->m_seatGrab && 
!g_pSeatManager->m_seatGrab->accepts(m_pWindow->wlSurface()->resource())))
+    if (g_pSeatManager->m_seatGrab && 
!g_pSeatManager->m_seatGrab->accepts(m_pWindow->wlSurface()->resource()))
         return false;
 
-    const auto WINDOWATCURSOR = 
g_pCompositor->vectorToWindowUnified(g_pInputManager->getMouseCoordsInternal(),
-                                                                     
Desktop::View::RESERVED_EXTENTS | Desktop::View::INPUT_EXTENTS | 
Desktop::View::ALLOW_FLOATING);
+    const auto MOUSE    = g_pInputManager->getMouseCoordsInternal();
+    auto       PMONITOR = Desktop::focusState()->monitor();
 
-    auto       focusState = Desktop::focusState();
-    auto       window     = focusState->window();
-    auto       monitor    = focusState->monitor();
+    if (!PMONITOR)
+        return false;
+
+    Desktop::CViewHitTester hitTester{*Desktop::viewState()};
+
+    const auto              WINDOWATCURSOR = hitTester.windowAt(MOUSE, 
Desktop::View::RESERVED_EXTENTS | Desktop::View::INPUT_EXTENTS | 
Desktop::View::ALLOW_FLOATING);
+
+    auto                    focusState = Desktop::focusState();
+    auto                    window     = focusState->window();
 
     if (WINDOWATCURSOR != m_pWindow && m_pWindow != window)
         return false;
 
-    // check if input is on top or overlay shell layers
-    auto     PMONITOR     = monitor;
     PHLLS    foundSurface = nullptr;
     Vector2D surfaceCoords;
 
-    // check top layer
-    
g_pCompositor->vectorToLayerSurface(g_pInputManager->getMouseCoordsInternal(), 
&PMONITOR->m_layerSurfaceLayers[ZWLR_LAYER_SHELL_V1_LAYER_TOP], &surfaceCoords, 
&foundSurface);
-
+    // Check Top Layer
+    hitTester.layerSurfaceAt(MOUSE, 
&PMONITOR->m_layerSurfaceLayers[ZWLR_LAYER_SHELL_V1_LAYER_TOP], &surfaceCoords, 
&foundSurface);
     if (foundSurface)
         return false;
-    // check overlay layer
-    
g_pCompositor->vectorToLayerSurface(g_pInputManager->getMouseCoordsInternal(), 
&PMONITOR->m_layerSurfaceLayers[ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY], 
&surfaceCoords,
-                                        &foundSurface);
 
+    // Check Overlay Layer
+    hitTester.layerSurfaceAt(MOUSE, 
&PMONITOR->m_layerSurfaceLayers[ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY], 
&surfaceCoords, &foundSurface);
     if (foundSurface)
         return false;
 
@@ -184,9 +190,15 @@
     auto       COORDS = cursorRelativeToBar();
     if (m_bTouchEv) {
         ITouch::SDownEvent e        = touchEvent.value();
-        auto               PMONITOR = 
g_pCompositor->getMonitorFromName(!e.device->m_boundOutput.empty() ? 
e.device->m_boundOutput : "");
-        PMONITOR                    = PMONITOR ? PMONITOR : 
Desktop::focusState()->monitor();
-        COORDS = Vector2D(PMONITOR->m_position.x + e.pos.x * 
PMONITOR->m_size.x, PMONITOR->m_position.y + e.pos.y * PMONITOR->m_size.y) - 
assignedBoxGlobal().pos();
+        PHLMONITOR         PMONITOR = nullptr;
+        for (auto& m : State::monitorState()->monitors()) {
+            if (m->m_name == (!e.device->m_boundOutput.empty() ? 
e.device->m_boundOutput : "")) {
+                PMONITOR = m;
+                break;
+            }
+        }
+        PMONITOR = PMONITOR ? PMONITOR : Desktop::focusState()->monitor();
+        COORDS   = Vector2D(PMONITOR->m_position.x + e.pos.x * 
PMONITOR->m_size.x, PMONITOR->m_position.y + e.pos.y * PMONITOR->m_size.y) - 
assignedBoxGlobal().pos();
     }
 
     const auto HEIGHT           = g_pGlobalState->config.barHeight->value();
@@ -216,7 +228,7 @@
         Desktop::focusState()->fullWindowFocus(PWINDOW, 
Desktop::FOCUS_REASON_CLICK);
 
     if (PWINDOW->m_isFloating)
-        g_pCompositor->changeWindowZOrder(PWINDOW, true);
+        Desktop::windowState()->raise(PWINDOW);
 
     info.cancelled   = true;
     m_bCancelledDown = true;
@@ -247,7 +259,7 @@
         g_pKeybindManager->changeMouseBindMode(MBIND_INVALID);
         m_bDraggingThis = false;
         if (m_bTouchEv)
-            
Config::Actions::floatWindow(Config::Actions::eTogglableAction::TOGGLE_ACTION_DISABLE);
+            
(void)Config::Actions::floatWindow(Config::Actions::eTogglableAction::TOGGLE_ACTION_DISABLE);
 
         Log::logger->log(Log::DEBUG, "[hyprbars] Dragging ended on {:x}", 
(uintptr_t)m_pWindow.lock().get());
     }
@@ -286,6 +298,7 @@
 void CHyprBar::renderBarTitle(const Vector2D& bufferSize, const float scale) {
     const auto COLORVAL         = g_pGlobalState->config.textColor->value();
     const auto SIZE             = g_pGlobalState->config.barTextSize->value();
+    const auto WEIGHT           = 
g_pGlobalState->config.barTextWeight->value();
     const auto FONT             = g_pGlobalState->config.barTextFont->value();
     const auto ALIGN            = g_pGlobalState->config.barTextAlign->value();
     const auto BARPADDING       = g_pGlobalState->config.barPadding->value();
@@ -308,7 +321,7 @@
     }
 
     const CHyprColor COLOR = 
m_bForcedTitleColor.value_or(configColor(COLORVAL));
-    m_pTextTex             = g_pHyprRenderer->renderText(m_szLastTitle, COLOR, 
scaledSize, false, FONT, maxWidth);
+    m_pTextTex             = g_pHyprRenderer->renderText(m_szLastTitle, COLOR, 
scaledSize, false, FONT, maxWidth, WEIGHT.m_value);
 }
 
 size_t CHyprBar::getVisibleButtonCount(Config::INTEGER barButtonPadding, 
Config::INTEGER barPadding, const Vector2D& bufferSize, const float scale) {
@@ -495,9 +508,9 @@
 
     if (ROUNDING) {
         // the +1 is a shit garbage temp fix until renderRect supports an 
alpha matte
-        CBox windowBox = {PWINDOW->m_realPosition->value().x + 
PWINDOW->m_floatingOffset.x - pMonitor->m_position.x + 1,
-                          PWINDOW->m_realPosition->value().y + 
PWINDOW->m_floatingOffset.y - pMonitor->m_position.y + 1, 
PWINDOW->m_realSize->value().x - 2,
-                          PWINDOW->m_realSize->value().y - 2};
+        CBox windowBox = 
{PWINDOW->position(Desktop::View::IGeometric::GEOMETRIC_CURRENT).x + 
PWINDOW->m_floatingOffset.x - pMonitor->m_position.x + 1,
+                          
PWINDOW->position(Desktop::View::IGeometric::GEOMETRIC_CURRENT).y + 
PWINDOW->m_floatingOffset.y - pMonitor->m_position.y + 1,
+                          
PWINDOW->size(Desktop::View::IGeometric::GEOMETRIC_CURRENT).x - 2, 
PWINDOW->size(Desktop::View::IGeometric::GEOMETRIC_CURRENT).y - 2};
 
         if (windowBox.w < 1 || windowBox.h < 1)
             return;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hyprland-plugins-0.55.0/hyprbars/globals.hpp 
new/hyprland-plugins-0.56.0/hyprbars/globals.hpp
--- old/hyprland-plugins-0.55.0/hyprbars/globals.hpp    2026-05-13 
12:47:38.000000000 +0200
+++ new/hyprland-plugins-0.56.0/hyprbars/globals.hpp    2026-07-15 
09:59:07.000000000 +0200
@@ -6,6 +6,7 @@
 #include <hyprland/src/config/values/types/IntValue.hpp>
 #include <hyprland/src/config/values/types/StringValue.hpp>
 #include <hyprland/src/config/values/types/ColorValue.hpp>
+#include <hyprland/src/config/values/types/FontWeightValue.hpp>
 
 inline HANDLE PHANDLE = nullptr;
 
@@ -29,13 +30,14 @@
     uint32_t                  titleColorRuleIdx = 0;
 
     struct {
-        SP<Config::Values::CColorValue>  barColor, textColor, 
inactiveButtonColor;
-        SP<Config::Values::CIntValue>    barHeight;
-        SP<Config::Values::CIntValue>    barTextSize;
-        SP<Config::Values::CIntValue>    barPadding;
-        SP<Config::Values::CIntValue>    barButtonPadding;
-        SP<Config::Values::CBoolValue>   barBlur, barTitleEnabled, 
barPartOfWindow, barPrecedenceOverBorder, enabled, iconOnHover;
-        SP<Config::Values::CStringValue> barTextFont, barTextAlign, 
barButtonsAlignment, onDoubleClick;
+        SP<Config::Values::CColorValue>      barColor, textColor, 
inactiveButtonColor;
+        SP<Config::Values::CIntValue>        barHeight;
+        SP<Config::Values::CIntValue>        barTextSize;
+        SP<Config::Values::CFontWeightValue> barTextWeight;
+        SP<Config::Values::CIntValue>        barPadding;
+        SP<Config::Values::CIntValue>        barButtonPadding;
+        SP<Config::Values::CBoolValue>       barBlur, barTitleEnabled, 
barPartOfWindow, barPrecedenceOverBorder, enabled, iconOnHover;
+        SP<Config::Values::CStringValue>     barTextFont, barTextAlign, 
barButtonsAlignment, onDoubleClick;
     } config;
 };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hyprland-plugins-0.55.0/hyprbars/main.cpp 
new/hyprland-plugins-0.56.0/hyprbars/main.cpp
--- old/hyprland-plugins-0.55.0/hyprbars/main.cpp       2026-05-13 
12:47:38.000000000 +0200
+++ new/hyprland-plugins-0.56.0/hyprbars/main.cpp       2026-07-15 
09:59:07.000000000 +0200
@@ -5,6 +5,7 @@
 #include <any>
 #include <hyprland/src/Compositor.hpp>
 #include <hyprland/src/desktop/view/Window.hpp>
+#include <hyprland/src/desktop/state/WindowState.hpp>
 #include <hyprland/src/config/ConfigManager.hpp>
 #include <hyprland/src/config/shared/parserUtils/ParserUtils.hpp>
 #include <hyprland/src/render/Renderer.hpp>
@@ -12,6 +13,7 @@
 #include <hyprland/src/desktop/rule/windowRule/WindowRuleEffectContainer.hpp>
 #include <hyprland/src/config/lua/bindings/LuaBindingsInternal.hpp>
 #include <hyprland/src/config/lua/types/LuaConfigColor.hpp>
+#include <hyprland/src/state/MonitorState.hpp>
 
 #include <hyprutils/string/VarList.hpp>
 
@@ -143,6 +145,7 @@
         if (err.errorCode != Config::Lua::PARSE_ERROR_OK)
             return Config::Lua::Bindings::Internal::configError(L, 
"add_button: failed to parse fg_color");
 
+        button.userfg = true;
         button.fgcol = parser.parsed();
     }
 
@@ -214,6 +217,7 @@
         "plugin:hyprbars:inactive_button_color", "Change the inactive button's 
color. 0x00000000 means unset", 0x00000000);
     g_pGlobalState->config.barHeight       = 
makeShared<Config::Values::CIntValue>("plugin:hyprbars:bar_height", "Change the 
bar's height", 15);
     g_pGlobalState->config.barTextSize     = 
makeShared<Config::Values::CIntValue>("plugin:hyprbars:bar_text_size", "Change 
the bar's text size", 10);
+    g_pGlobalState->config.barTextWeight   = 
makeShared<Config::Values::CFontWeightValue>("plugin:hyprbars:bar_text_weight", 
"Bar's title text weight (e.g. \"bold\" or an integer 100-1000)", 400);
     g_pGlobalState->config.barTitleEnabled = 
makeShared<Config::Values::CBoolValue>("plugin:hyprbars:bar_title_enabled", 
"Whether to enable titles in the bar", true);
     g_pGlobalState->config.barBlur         = 
makeShared<Config::Values::CBoolValue>("plugin:hyprbars:bar_blur", "Whether to 
enable blur of the bar", false);
     g_pGlobalState->config.barTextFont     = 
makeShared<Config::Values::CStringValue>("plugin:hyprbars:bar_text_font", 
"Bar's text font", "Sans");
@@ -234,6 +238,7 @@
     HyprlandAPI::addConfigValueV2(PHANDLE, 
g_pGlobalState->config.inactiveButtonColor);
     HyprlandAPI::addConfigValueV2(PHANDLE, g_pGlobalState->config.barHeight);
     HyprlandAPI::addConfigValueV2(PHANDLE, g_pGlobalState->config.barTextSize);
+    HyprlandAPI::addConfigValueV2(PHANDLE, 
g_pGlobalState->config.barTextWeight);
     HyprlandAPI::addConfigValueV2(PHANDLE, 
g_pGlobalState->config.barTitleEnabled);
     HyprlandAPI::addConfigValueV2(PHANDLE, g_pGlobalState->config.barBlur);
     HyprlandAPI::addConfigValueV2(PHANDLE, g_pGlobalState->config.barTextFont);
@@ -255,7 +260,7 @@
     static auto P5 = Event::bus()->m_events.config.reloaded.listen([&] { 
onConfigReloaded(); });
 
     // add deco to existing windows
-    for (auto& w : g_pCompositor->m_windows) {
+    for (auto& w : Desktop::windowState()->windows()) {
         if (w->isHidden() || !w->m_isMapped)
             continue;
 
@@ -268,7 +273,7 @@
 }
 
 APICALL EXPORT void PLUGIN_EXIT() {
-    for (auto& m : g_pCompositor->m_monitors)
+    for (auto& m : State::monitorState()->monitors())
         m->m_scheduledRecalc = true;
 
     g_pHyprRenderer->m_renderPass.removeAllOfType("CBarPassElement");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hyprland-plugins-0.55.0/hyprfocus/README.md 
new/hyprland-plugins-0.56.0/hyprfocus/README.md
--- old/hyprland-plugins-0.55.0/hyprfocus/README.md     2026-05-13 
12:47:38.000000000 +0200
+++ new/hyprland-plugins-0.56.0/hyprfocus/README.md     2026-07-15 
09:59:07.000000000 +0200
@@ -14,10 +14,13 @@
 
 ### Variables
 
-| name                     | description                                       
                   | type    | default |
-|--------------------------|----------------------------------------------------------------------|---------|---------|
-| `mode`                   | which mode to use (flash / bounce / slide)        
                   | str     | flash   |
-| `only_on_monitor_change` | whether to only perform the animation when 
changing between monitors | boolean | false   |
-| `fade_opacity`           | for flash, what opacity to flash to               
                   | float   | 0.8     |
-| `bounce_strength`        | for bounce, what fraction of the window's size to 
jump to            | float   | 0.95    |
-| `slide_height`           | for slide, how far up to slide                    
                   | float   | 20      |
+| name                       | description                                     
                     | type  | default |
+|----------------------------|----------------------------------------------------------------------|-------|---------|
+| `enable`                   | enable or disable the plugin                    
                     | bool  | true    |
+| `animate_floating`         | animate floating windows                        
                     | bool  | true    |
+| `only_on_monitor_change`   | whether to only perform the animation when 
changing between monitors | bool  | false   |
+| `keyboard_focus_animation` | animation for keyboard-driven focus changes 
(`flash` / `shrink` / `slide` / `none`) | str | flash |
+| `mouse_focus_animation`    | animation for mouse-driven focus changes 
(`flash` / `shrink` / `slide` / `none`)    | str | none  |
+| `fade_opacity`             | for flash, opacity at the peak of the animation 
                     | float | 0.8     |
+| `shrink_percentage`        | for shrink, fraction of the window size to 
scale to at the peak      | float | 0.95    |
+| `slide_height`             | for slide, how many pixels to slide upward      
                     | float | 20      |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hyprland-plugins-0.55.0/hyprfocus/main.cpp 
new/hyprland-plugins-0.56.0/hyprfocus/main.cpp
--- old/hyprland-plugins-0.55.0/hyprfocus/main.cpp      2026-05-13 
12:47:38.000000000 +0200
+++ new/hyprland-plugins-0.56.0/hyprfocus/main.cpp      2026-07-15 
09:59:07.000000000 +0200
@@ -12,14 +12,17 @@
 #include <hyprland/src/config/ConfigValue.hpp>
 #include <hyprland/src/config/shared/animation/AnimationTree.hpp>
 #include <hyprland/src/helpers/AnimatedVariable.hpp>
-#include <hyprland/src/managers/animation/AnimationManager.hpp>
+#include <hyprland/src/animation/AnimationManager.hpp>
 #include <hyprland/src/managers/eventLoop/EventLoopManager.hpp>
+#include <hyprland/src/managers/fullscreen/FullscreenController.hpp>
 #include <hyprland/src/layout/LayoutManager.hpp>
 #include <hyprland/src/config/ConfigManager.hpp>
 #include <hyprland/src/config/values/types/BoolValue.hpp>
 #include <hyprland/src/config/values/types/FloatValue.hpp>
 #include <hyprland/src/config/values/types/StringValue.hpp>
 #include <hyprland/src/event/EventBus.hpp>
+#include <hyprland/src/desktop/state/FocusState.hpp>
+#include <hyprland/src/desktop/state/WindowState.hpp>
 #undef private
 
 #include "globals.hpp"
@@ -30,9 +33,14 @@
 using namespace Hyprutils::Animation;
 
 static struct {
-    SP<Config::Values::CBoolValue> onlyOnMonitorChange;
-    SP<Config::Values::CFloatValue> fadeOpacity, slideHeight, bounceStrength;
-    SP<Config::Values::CStringValue> mode;
+    SP<Config::Values::CBoolValue>   enable;
+    SP<Config::Values::CBoolValue>   animateFloating;
+    SP<Config::Values::CBoolValue>   onlyOnMonitorChange;
+    SP<Config::Values::CStringValue> keyboardFocusAnimation;
+    SP<Config::Values::CStringValue> mouseFocusAnimation;
+    SP<Config::Values::CFloatValue>  fadeOpacity;
+    SP<Config::Values::CFloatValue>  shrinkPercentage;
+    SP<Config::Values::CFloatValue>  slideHeight;
 } configValues;
 
 // Do NOT change this function.
@@ -40,10 +48,20 @@
     return HYPRLAND_API_VERSION;
 }
 
-static void onFocusChange(PHLWINDOW window) {
+static bool isMouseReason(Desktop::eFocusReason r) {
+    return r == Desktop::FOCUS_REASON_CLICK || r == Desktop::FOCUS_REASON_FFM;
+}
+
+static void onFocusChange(PHLWINDOW window, Desktop::eFocusReason reason) {
     if (!window)
         return;
 
+    if (!configValues.enable->value())
+        return;
+
+    if (!configValues.animateFloating->value() && window->m_isFloating)
+        return;
+
     static PHLWINDOWREF lastWindow;
 
     if (lastWindow == window)
@@ -53,10 +71,18 @@
         return;
 
     lastWindow = window;
-    const auto        PIN      = 
Config::animationTree()->getAnimationPropertyConfig("hyprfocusIn");
-    const auto        POUT     = 
Config::animationTree()->getAnimationPropertyConfig("hyprfocusOut");
 
-    if (configValues.mode->value() == "flash") {
+    const auto mode = isMouseReason(reason)
+        ? configValues.mouseFocusAnimation->value()
+        : configValues.keyboardFocusAnimation->value();
+
+    if (mode == "none")
+        return;
+
+    const auto PIN  = 
Config::animationTree()->getAnimationPropertyConfig("hyprfocusIn");
+    const auto POUT = 
Config::animationTree()->getAnimationPropertyConfig("hyprfocusOut");
+
+    if (mode == "flash") {
         const auto ORIGINAL = 
window->alpha(Desktop::View::WINDOW_ALPHA_ACTIVE)->goal();
         window->alpha(Desktop::View::WINDOW_ALPHA_ACTIVE)->setConfig(PIN);
         *window->alpha(Desktop::View::WINDOW_ALPHA_ACTIVE) = 
configValues.fadeOpacity->value();
@@ -69,49 +95,49 @@
 
             
w->alpha(Desktop::View::WINDOW_ALPHA_ACTIVE)->setCallbackOnEnd(nullptr);
         });
-    } else if (configValues.mode->value() == "bounce") {
-        const auto ORIGINAL = CBox{window->m_realPosition->goal(), 
window->m_realSize->goal()};
+    } else if (mode == "shrink") {
+        const auto ORIGINAL = CBox{window->positionAnimation()->goal(), 
window->sizeAnimation()->goal()};
 
-        window->m_realPosition->setConfig(PIN);
-        window->m_realSize->setConfig(PIN);
+        window->positionAnimation()->setConfig(PIN);
+        window->sizeAnimation()->setConfig(PIN);
 
-        auto box = 
ORIGINAL.copy().scaleFromCenter(configValues.bounceStrength->value());
+        auto box = 
ORIGINAL.copy().scaleFromCenter(configValues.shrinkPercentage->value());
 
-        *window->m_realPosition = box.pos();
-        *window->m_realSize     = box.size();
+        *window->positionAnimation() = box.pos();
+        *window->sizeAnimation()     = box.size();
 
-        window->m_realSize->setCallbackOnEnd([w = PHLWINDOWREF{window}, POUT, 
ORIGINAL](WP<CBaseAnimatedVariable> pav) {
+        window->sizeAnimation()->setCallbackOnEnd([w = PHLWINDOWREF{window}, 
POUT, ORIGINAL](WP<CBaseAnimatedVariable> pav) {
             if (!w)
                 return;
-            w->m_realSize->setConfig(POUT);
-            w->m_realPosition->setConfig(POUT);
+            w->sizeAnimation()->setConfig(POUT);
+            w->positionAnimation()->setConfig(POUT);
 
-            if (w->m_isFloating || w->isFullscreen()) {
-                *w->m_realPosition = ORIGINAL.pos();
-                *w->m_realSize     = ORIGINAL.size();
+            if (w->m_isFloating || 
Fullscreen::controller()->isFullscreen(w.lock())) {
+                *w->positionAnimation() = ORIGINAL.pos();
+                *w->sizeAnimation()     = ORIGINAL.size();
             } else
                 w->layoutTarget()->recalc();
 
-            w->m_realSize->setCallbackOnEnd(nullptr);
+            w->sizeAnimation()->setCallbackOnEnd(nullptr);
         });
-    } else if (configValues.mode->value() == "slide") {
-        const auto ORIGINAL = window->m_realPosition->goal();
+    } else if (mode == "slide") {
+        const auto ORIGINAL = window->positionAnimation()->goal();
 
-        window->m_realPosition->setConfig(PIN);
+        window->positionAnimation()->setConfig(PIN);
 
-        *window->m_realPosition = ORIGINAL - Vector2D{0.F, 
configValues.slideHeight->value()};
+        *window->positionAnimation() = ORIGINAL - Vector2D{0.F, 
configValues.slideHeight->value()};
 
-        window->m_realPosition->setCallbackOnEnd([w = PHLWINDOWREF{window}, 
POUT, ORIGINAL](WP<CBaseAnimatedVariable> pav) {
+        window->positionAnimation()->setCallbackOnEnd([w = 
PHLWINDOWREF{window}, POUT, ORIGINAL](WP<CBaseAnimatedVariable> pav) {
             if (!w)
                 return;
-            w->m_realPosition->setConfig(POUT);
+            w->positionAnimation()->setConfig(POUT);
 
-            if (w->m_isFloating || w->isFullscreen())
-                *w->m_realPosition = ORIGINAL;
+            if (w->m_isFloating || 
Fullscreen::controller()->isFullscreen(w.lock()))
+                *w->positionAnimation() = ORIGINAL;
             else
                 w->layoutTarget()->recalc();
 
-            w->m_realPosition->setCallbackOnEnd(nullptr);
+            w->positionAnimation()->setCallbackOnEnd(nullptr);
         });
     }
 }
@@ -128,19 +154,25 @@
         throw std::runtime_error("[hww] Version mismatch");
     }
 
-    static auto P = Event::bus()->m_events.window.active.listen([&](PHLWINDOW 
w, Desktop::eFocusReason r) { onFocusChange(w); });
+    static auto P = Event::bus()->m_events.window.active.listen([&](PHLWINDOW 
w, Desktop::eFocusReason r) { onFocusChange(w, r); });
 
-    configValues.mode = 
makeShared<Config::Values::CStringValue>("plugin:hyprfocus:mode", "mode to 
use", "flash");
+    configValues.enable = 
makeShared<Config::Values::CBoolValue>("plugin:hyprfocus:enable", "enable or 
disable the plugin", true);
+    configValues.animateFloating = 
makeShared<Config::Values::CBoolValue>("plugin:hyprfocus:animate_floating", 
"animate floating windows", true);
     configValues.onlyOnMonitorChange = 
makeShared<Config::Values::CBoolValue>("plugin:hyprfocus:only_on_monitor_change",
 "whether to fire the animation only on monitor change", false);
-    configValues.fadeOpacity = 
makeShared<Config::Values::CFloatValue>("plugin:hyprfocus:fade_opacity", "fade 
opacity", 0.8F, Config::Values::SFloatValueOptions{.min = 0.F, .max = 1.F} );
-    configValues.slideHeight = 
makeShared<Config::Values::CFloatValue>("plugin:hyprfocus:slide_height", "slide 
height", 20.F, Config::Values::SFloatValueOptions{.min = 0.F, .max = 150.F} );
-    configValues.bounceStrength = 
makeShared<Config::Values::CFloatValue>("plugin:hyprfocus:bounce_strength", 
"bounce strength", 0.95F, Config::Values::SFloatValueOptions{.min = 0.F, .max = 
1.F} );
+    configValues.keyboardFocusAnimation = 
makeShared<Config::Values::CStringValue>("plugin:hyprfocus:keyboard_focus_animation",
 "animation for keyboard focus changes", "flash");
+    configValues.mouseFocusAnimation = 
makeShared<Config::Values::CStringValue>("plugin:hyprfocus:mouse_focus_animation",
 "animation for mouse focus changes", "none");
+    configValues.fadeOpacity = 
makeShared<Config::Values::CFloatValue>("plugin:hyprfocus:fade_opacity", "fade 
opacity", 0.8F, Config::Values::SFloatValueOptions{.min = 0.F, .max = 1.F});
+    configValues.shrinkPercentage = 
makeShared<Config::Values::CFloatValue>("plugin:hyprfocus:shrink_percentage", 
"shrink percentage", 0.95F, Config::Values::SFloatValueOptions{.min = 0.F, .max 
= 1.F});
+    configValues.slideHeight = 
makeShared<Config::Values::CFloatValue>("plugin:hyprfocus:slide_height", "slide 
height", 20.F, Config::Values::SFloatValueOptions{.min = 0.F, .max = 150.F});
 
-    HyprlandAPI::addConfigValueV2(PHANDLE, configValues.mode);
+    HyprlandAPI::addConfigValueV2(PHANDLE, configValues.enable);
+    HyprlandAPI::addConfigValueV2(PHANDLE, configValues.animateFloating);
     HyprlandAPI::addConfigValueV2(PHANDLE, configValues.onlyOnMonitorChange);
+    HyprlandAPI::addConfigValueV2(PHANDLE, 
configValues.keyboardFocusAnimation);
+    HyprlandAPI::addConfigValueV2(PHANDLE, configValues.mouseFocusAnimation);
     HyprlandAPI::addConfigValueV2(PHANDLE, configValues.fadeOpacity);
+    HyprlandAPI::addConfigValueV2(PHANDLE, configValues.shrinkPercentage);
     HyprlandAPI::addConfigValueV2(PHANDLE, configValues.slideHeight);
-    HyprlandAPI::addConfigValueV2(PHANDLE, configValues.bounceStrength);
 
     // this will not be cleaned up after we are unloaded but it doesn't really 
matter,
     // as if we create this again it will just overwrite the old one.
@@ -152,12 +184,12 @@
 
 APICALL EXPORT void PLUGIN_EXIT() {
     // reset the callbacks to avoid crashes
-    for (const auto& w : g_pCompositor->m_windows) {
-        if (!validMapped(w))
+    for (const auto& w : Desktop::windowState()->windows()) {
+        if (!Desktop::View::validMapped(w))
             continue;
 
-        w->m_realSize->setCallbackOnEnd(nullptr);
-        w->m_realPosition->setCallbackOnEnd(nullptr);
+        w->sizeAnimation()->setCallbackOnEnd(nullptr);
+        w->positionAnimation()->setCallbackOnEnd(nullptr);
         
w->alpha(Desktop::View::WINDOW_ALPHA_ACTIVE)->setCallbackOnEnd(nullptr);
     }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hyprland-plugins-0.55.0/hyprpm.toml 
new/hyprland-plugins-0.56.0/hyprpm.toml
--- old/hyprland-plugins-0.55.0/hyprpm.toml     2026-05-13 12:47:38.000000000 
+0200
+++ new/hyprland-plugins-0.56.0/hyprpm.toml     2026-07-15 09:59:07.000000000 
+0200
@@ -47,7 +47,11 @@
     ["4b07770b9ef1cceb2e6f56d33538aaffb9186b9c", 
"6acc0738f298f5efe40a99db2c12449112d65633"], # 0.54.1
     ["59f9f2688ac508a0584d1462151195a6c4992f99", 
"6acc0738f298f5efe40a99db2c12449112d65633"], # 0.54.2
     ["521ece463c4a9d3d128670688a34756805a4328f", 
"6acc0738f298f5efe40a99db2c12449112d65633"], # 0.54.3
-    ["af923e30d1d24f1f4a4f5cb8308065173c1d9539", 
"3aa21f2e0ca72412f1b434c3126f8f1fec3c716c"]  # 0.55.0
+    ["af923e30d1d24f1f4a4f5cb8308065173c1d9539", 
"3aa21f2e0ca72412f1b434c3126f8f1fec3c716c"], # 0.55.0
+    ["a47147bc095e5b3be3eb8bd04f0ac242b968cd4d", 
"3aa21f2e0ca72412f1b434c3126f8f1fec3c716c"], # 0.55.1
+    ["39d7e209c79d451efab1b21151d5938289da838d", 
"3aa21f2e0ca72412f1b434c3126f8f1fec3c716c"], # 0.55.2
+    ["fe5fe79a29ac3adaf3e75560b2f4b7a6d58b31c9", 
"3aa21f2e0ca72412f1b434c3126f8f1fec3c716c"], # 0.55.3
+    ["a0136d8c04687bb36eb8a28eb9d1ff92aea99704", 
"3aa21f2e0ca72412f1b434c3126f8f1fec3c716c"]  # 0.55.4
 ]
 
 [borders-plus-plus]

Reply via email to