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]