mirror of
https://github.com/hyprwm/hyprland-plugins.git
synced 2025-05-13 05:40:41 +01:00
This commit is contained in:
parent
61ab0385c8
commit
2b9a54f21b
10 changed files with 90 additions and 90 deletions
|
@ -8,8 +8,8 @@
|
||||||
#include "globals.hpp"
|
#include "globals.hpp"
|
||||||
|
|
||||||
CBordersPlusPlus::CBordersPlusPlus(PHLWINDOW pWindow) : IHyprWindowDecoration(pWindow), m_pWindow(pWindow) {
|
CBordersPlusPlus::CBordersPlusPlus(PHLWINDOW pWindow) : IHyprWindowDecoration(pWindow), m_pWindow(pWindow) {
|
||||||
m_vLastWindowPos = pWindow->m_vRealPosition->value();
|
m_vLastWindowPos = pWindow->m_realPosition->value();
|
||||||
m_vLastWindowSize = pWindow->m_vRealSize->value();
|
m_vLastWindowSize = pWindow->m_realSize->value();
|
||||||
}
|
}
|
||||||
|
|
||||||
CBordersPlusPlus::~CBordersPlusPlus() {
|
CBordersPlusPlus::~CBordersPlusPlus() {
|
||||||
|
@ -67,7 +67,7 @@ void CBordersPlusPlus::draw(PHLMONITOR pMonitor, const float& a) {
|
||||||
|
|
||||||
const auto PWINDOW = m_pWindow.lock();
|
const auto PWINDOW = m_pWindow.lock();
|
||||||
|
|
||||||
if (!PWINDOW->m_sWindowData.decorate.valueOrDefault())
|
if (!PWINDOW->m_windowData.decorate.valueOrDefault())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
CBorderPPPassElement::SBorderPPData data;
|
CBorderPPPassElement::SBorderPPData data;
|
||||||
|
@ -96,8 +96,8 @@ void CBordersPlusPlus::drawPass(PHLMONITOR pMonitor, const float& a) {
|
||||||
if (m_bAssignedGeometry.width < m_seExtents.topLeft.x + 1 || m_bAssignedGeometry.height < m_seExtents.topLeft.y + 1)
|
if (m_bAssignedGeometry.width < m_seExtents.topLeft.x + 1 || m_bAssignedGeometry.height < m_seExtents.topLeft.y + 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
const auto PWORKSPACE = PWINDOW->m_pWorkspace;
|
const auto PWORKSPACE = PWINDOW->m_workspace;
|
||||||
const auto WORKSPACEOFFSET = PWORKSPACE && !PWINDOW->m_bPinned ? PWORKSPACE->m_renderOffset->value() : Vector2D();
|
const auto WORKSPACEOFFSET = PWORKSPACE && !PWINDOW->m_pinned ? PWORKSPACE->m_renderOffset->value() : Vector2D();
|
||||||
|
|
||||||
auto rounding = PWINDOW->rounding() == 0 ? 0 : (PWINDOW->rounding() + **PBORDERSIZE) * pMonitor->scale;
|
auto rounding = PWINDOW->rounding() == 0 ? 0 : (PWINDOW->rounding() + **PBORDERSIZE) * pMonitor->scale;
|
||||||
const auto ROUNDINGPOWER = PWINDOW->roundingPower();
|
const auto ROUNDINGPOWER = PWINDOW->roundingPower();
|
||||||
|
@ -106,7 +106,7 @@ void CBordersPlusPlus::drawPass(PHLMONITOR pMonitor, const float& a) {
|
||||||
CBox fullBox = m_bAssignedGeometry;
|
CBox fullBox = m_bAssignedGeometry;
|
||||||
fullBox.translate(g_pDecorationPositioner->getEdgeDefinedPoint(DECORATION_EDGE_BOTTOM | DECORATION_EDGE_LEFT | DECORATION_EDGE_RIGHT | DECORATION_EDGE_TOP, m_pWindow.lock()));
|
fullBox.translate(g_pDecorationPositioner->getEdgeDefinedPoint(DECORATION_EDGE_BOTTOM | DECORATION_EDGE_LEFT | DECORATION_EDGE_RIGHT | DECORATION_EDGE_TOP, m_pWindow.lock()));
|
||||||
|
|
||||||
fullBox.translate(PWINDOW->m_vFloatingOffset - pMonitor->vecPosition + WORKSPACEOFFSET);
|
fullBox.translate(PWINDOW->m_floatingOffset - pMonitor->vecPosition + WORKSPACEOFFSET);
|
||||||
|
|
||||||
if (fullBox.width < 1 || fullBox.height < 1)
|
if (fullBox.width < 1 || fullBox.height < 1)
|
||||||
return;
|
return;
|
||||||
|
@ -156,8 +156,8 @@ eDecorationType CBordersPlusPlus::getDecorationType() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBordersPlusPlus::updateWindow(PHLWINDOW pWindow) {
|
void CBordersPlusPlus::updateWindow(PHLWINDOW pWindow) {
|
||||||
m_vLastWindowPos = pWindow->m_vRealPosition->value();
|
m_vLastWindowPos = pWindow->m_realPosition->value();
|
||||||
m_vLastWindowSize = pWindow->m_vRealSize->value();
|
m_vLastWindowSize = pWindow->m_realSize->value();
|
||||||
|
|
||||||
damageEntire();
|
damageEntire();
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,7 +48,7 @@ APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) {
|
||||||
|
|
||||||
// add deco to existing windows
|
// add deco to existing windows
|
||||||
for (auto& w : g_pCompositor->m_windows) {
|
for (auto& w : g_pCompositor->m_windows) {
|
||||||
if (w->isHidden() || !w->m_bIsMapped)
|
if (w->isHidden() || !w->m_isMapped)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
HyprlandAPI::addWindowDecoration(PHANDLE, w, makeUnique<CBordersPlusPlus>(w));
|
HyprlandAPI::addWindowDecoration(PHANDLE, w, makeUnique<CBordersPlusPlus>(w));
|
||||||
|
|
|
@ -32,10 +32,10 @@ void hkNotifyMotion(CSeatManager* thisptr, uint32_t time_msec, const Vector2D& l
|
||||||
|
|
||||||
Vector2D newCoords = local;
|
Vector2D newCoords = local;
|
||||||
|
|
||||||
if (**PFIX && !g_pCompositor->m_lastWindow.expired() && g_pCompositor->m_lastWindow->m_szInitialClass == *PCLASS && g_pCompositor->m_lastMonitor) {
|
if (**PFIX && !g_pCompositor->m_lastWindow.expired() && g_pCompositor->m_lastWindow->m_initialClass == *PCLASS && g_pCompositor->m_lastMonitor) {
|
||||||
// fix the coords
|
// fix the coords
|
||||||
newCoords.x *= (**RESX / g_pCompositor->m_lastMonitor->vecSize.x) / g_pCompositor->m_lastWindow->m_fX11SurfaceScaledBy;
|
newCoords.x *= (**RESX / g_pCompositor->m_lastMonitor->vecSize.x) / g_pCompositor->m_lastWindow->m_X11SurfaceScaledBy;
|
||||||
newCoords.y *= (**RESY / g_pCompositor->m_lastMonitor->vecSize.y) / g_pCompositor->m_lastWindow->m_fX11SurfaceScaledBy;
|
newCoords.y *= (**RESY / g_pCompositor->m_lastMonitor->vecSize.y) / g_pCompositor->m_lastWindow->m_X11SurfaceScaledBy;
|
||||||
}
|
}
|
||||||
|
|
||||||
(*(origMotion)g_pMouseMotionHook->m_pOriginal)(thisptr, time_msec, newCoords);
|
(*(origMotion)g_pMouseMotionHook->m_pOriginal)(thisptr, time_msec, newCoords);
|
||||||
|
@ -56,7 +56,7 @@ void hkSetWindowSize(CXWaylandSurface* surface, const CBox& box) {
|
||||||
|
|
||||||
CBox newBox = box;
|
CBox newBox = box;
|
||||||
|
|
||||||
if (PWINDOW && PWINDOW->m_szInitialClass == *PCLASS) {
|
if (PWINDOW && PWINDOW->m_initialClass == *PCLASS) {
|
||||||
newBox.w = **RESX;
|
newBox.w = **RESX;
|
||||||
newBox.h = **RESY;
|
newBox.h = **RESY;
|
||||||
|
|
||||||
|
@ -71,8 +71,8 @@ CRegion hkWLSurfaceDamage(CWLSurface* thisptr) {
|
||||||
|
|
||||||
static auto* const PCLASS = (Hyprlang::STRING const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:csgo-vulkan-fix:class")->getDataStaticPtr();
|
static auto* const PCLASS = (Hyprlang::STRING const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:csgo-vulkan-fix:class")->getDataStaticPtr();
|
||||||
|
|
||||||
if (thisptr->exists() && thisptr->getWindow() && thisptr->getWindow()->m_szInitialClass == *PCLASS) {
|
if (thisptr->exists() && thisptr->getWindow() && thisptr->getWindow()->m_initialClass == *PCLASS) {
|
||||||
const auto PMONITOR = thisptr->getWindow()->m_pMonitor.lock();
|
const auto PMONITOR = thisptr->getWindow()->m_monitor.lock();
|
||||||
if (PMONITOR)
|
if (PMONITOR)
|
||||||
g_pHyprRenderer->damageMonitor(PMONITOR);
|
g_pHyprRenderer->damageMonitor(PMONITOR);
|
||||||
else
|
else
|
||||||
|
|
|
@ -19,7 +19,7 @@ CHyprBar::CHyprBar(PHLWINDOW pWindow) : IHyprWindowDecoration(pWindow) {
|
||||||
|
|
||||||
static auto* const PCOLOR = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_color")->getDataStaticPtr();
|
static auto* const PCOLOR = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_color")->getDataStaticPtr();
|
||||||
|
|
||||||
const auto PMONITOR = pWindow->m_pMonitor.lock();
|
const auto PMONITOR = pWindow->m_monitor.lock();
|
||||||
PMONITOR->scheduledRecalc = true;
|
PMONITOR->scheduledRecalc = true;
|
||||||
|
|
||||||
//button events
|
//button events
|
||||||
|
@ -57,11 +57,11 @@ SDecorationPositioningInfo CHyprBar::getPositioningInfo() {
|
||||||
static auto* const PPRECEDENCE = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_precedence_over_border")->getDataStaticPtr();
|
static auto* const PPRECEDENCE = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_precedence_over_border")->getDataStaticPtr();
|
||||||
|
|
||||||
SDecorationPositioningInfo info;
|
SDecorationPositioningInfo info;
|
||||||
info.policy = m_bHidden ? DECORATION_POSITION_ABSOLUTE : DECORATION_POSITION_STICKY;
|
info.policy = m_hidden ? DECORATION_POSITION_ABSOLUTE : DECORATION_POSITION_STICKY;
|
||||||
info.edges = DECORATION_EDGE_TOP;
|
info.edges = DECORATION_EDGE_TOP;
|
||||||
info.priority = **PPRECEDENCE ? 10005 : 5000;
|
info.priority = **PPRECEDENCE ? 10005 : 5000;
|
||||||
info.reserved = true;
|
info.reserved = true;
|
||||||
info.desiredExtents = {{0, m_bHidden ? 0 : **PHEIGHT}, {0, 0}};
|
info.desiredExtents = {{0, m_hidden ? 0 : **PHEIGHT}, {0, 0}};
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,8 +77,8 @@ std::string CHyprBar::getDisplayName() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CHyprBar::inputIsValid() {
|
bool CHyprBar::inputIsValid() {
|
||||||
if (!m_pWindow->m_pWorkspace || !m_pWindow->m_pWorkspace->isVisible() || !g_pInputManager->m_dExclusiveLSes.empty() ||
|
if (!m_pWindow->m_workspace || !m_pWindow->m_workspace->isVisible() || !g_pInputManager->m_dExclusiveLSes.empty() ||
|
||||||
(g_pSeatManager->seatGrab && !g_pSeatManager->seatGrab->accepts(m_pWindow->m_pWLSurface->resource())))
|
(g_pSeatManager->seatGrab && !g_pSeatManager->seatGrab->accepts(m_pWindow->m_wlSurface->resource())))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
const auto WINDOWATCURSOR = g_pCompositor->vectorToWindowUnified(g_pInputManager->getMouseCoordsInternal(), RESERVED_EXTENTS | INPUT_EXTENTS | ALLOW_FLOATING);
|
const auto WINDOWATCURSOR = g_pCompositor->vectorToWindowUnified(g_pInputManager->getMouseCoordsInternal(), RESERVED_EXTENTS | INPUT_EXTENTS | ALLOW_FLOATING);
|
||||||
|
@ -114,7 +114,7 @@ void CHyprBar::onTouchDown(SCallbackInfo& info, ITouch::SDownEvent e) {
|
||||||
|
|
||||||
void CHyprBar::onMouseMove(Vector2D coords) {
|
void CHyprBar::onMouseMove(Vector2D coords) {
|
||||||
// ensure proper redraws of button icons on hover when using hardware cursors
|
// ensure proper redraws of button icons on hover when using hardware cursors
|
||||||
static auto* const PICONONHOVER = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:icon_on_hover")->getDataStaticPtr();
|
static auto* const PICONONHOVER = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:icon_on_hover")->getDataStaticPtr();
|
||||||
if (**PICONONHOVER)
|
if (**PICONONHOVER)
|
||||||
damageOnButtonHover();
|
damageOnButtonHover();
|
||||||
|
|
||||||
|
@ -168,7 +168,7 @@ void CHyprBar::handleDownEvent(SCallbackInfo& info, std::optional<ITouch::SDownE
|
||||||
if (g_pCompositor->m_lastWindow.lock() != PWINDOW)
|
if (g_pCompositor->m_lastWindow.lock() != PWINDOW)
|
||||||
g_pCompositor->focusWindow(PWINDOW);
|
g_pCompositor->focusWindow(PWINDOW);
|
||||||
|
|
||||||
if (PWINDOW->m_bIsFloating)
|
if (PWINDOW->m_isFloating)
|
||||||
g_pCompositor->changeWindowZOrder(PWINDOW, true);
|
g_pCompositor->changeWindowZOrder(PWINDOW, true);
|
||||||
|
|
||||||
info.cancelled = true;
|
info.cancelled = true;
|
||||||
|
@ -495,12 +495,12 @@ void CHyprBar::renderBarButtonsText(CBox* barBox, const float scale, const float
|
||||||
}
|
}
|
||||||
|
|
||||||
void CHyprBar::draw(PHLMONITOR pMonitor, const float& a) {
|
void CHyprBar::draw(PHLMONITOR pMonitor, const float& a) {
|
||||||
if (m_bHidden || !validMapped(m_pWindow))
|
if (m_hidden || !validMapped(m_pWindow))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
const auto PWINDOW = m_pWindow.lock();
|
const auto PWINDOW = m_pWindow.lock();
|
||||||
|
|
||||||
if (!PWINDOW->m_sWindowData.decorate.valueOrDefault())
|
if (!PWINDOW->m_windowData.decorate.valueOrDefault())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
auto data = CBarPassElement::SBarData{this, a};
|
auto data = CBarPassElement::SBarData{this, a};
|
||||||
|
@ -533,8 +533,8 @@ void CHyprBar::renderPass(PHLMONITOR pMonitor, const float& a) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto PWORKSPACE = PWINDOW->m_pWorkspace;
|
const auto PWORKSPACE = PWINDOW->m_workspace;
|
||||||
const auto WORKSPACEOFFSET = PWORKSPACE && !PWINDOW->m_bPinned ? PWORKSPACE->m_renderOffset->value() : Vector2D();
|
const auto WORKSPACEOFFSET = PWORKSPACE && !PWINDOW->m_pinned ? PWORKSPACE->m_renderOffset->value() : Vector2D();
|
||||||
|
|
||||||
const auto ROUNDING = PWINDOW->rounding() + (*PPRECEDENCE ? 0 : PWINDOW->getRealBorderSize());
|
const auto ROUNDING = PWINDOW->rounding() + (*PPRECEDENCE ? 0 : PWINDOW->getRealBorderSize());
|
||||||
|
|
||||||
|
@ -549,7 +549,7 @@ void CHyprBar::renderPass(PHLMONITOR pMonitor, const float& a) {
|
||||||
CBox titleBarBox = {DECOBOX.x - pMonitor->vecPosition.x, DECOBOX.y - pMonitor->vecPosition.y, DECOBOX.w,
|
CBox titleBarBox = {DECOBOX.x - pMonitor->vecPosition.x, DECOBOX.y - pMonitor->vecPosition.y, DECOBOX.w,
|
||||||
DECOBOX.h + ROUNDING * 3 /* to fill the bottom cuz we can't disable rounding there */};
|
DECOBOX.h + ROUNDING * 3 /* to fill the bottom cuz we can't disable rounding there */};
|
||||||
|
|
||||||
titleBarBox.translate(PWINDOW->m_vFloatingOffset).scale(pMonitor->scale).round();
|
titleBarBox.translate(PWINDOW->m_floatingOffset).scale(pMonitor->scale).round();
|
||||||
|
|
||||||
if (titleBarBox.w < 1 || titleBarBox.h < 1)
|
if (titleBarBox.w < 1 || titleBarBox.h < 1)
|
||||||
return;
|
return;
|
||||||
|
@ -558,9 +558,9 @@ void CHyprBar::renderPass(PHLMONITOR pMonitor, const float& a) {
|
||||||
|
|
||||||
if (ROUNDING) {
|
if (ROUNDING) {
|
||||||
// the +1 is a shit garbage temp fix until renderRect supports an alpha matte
|
// the +1 is a shit garbage temp fix until renderRect supports an alpha matte
|
||||||
CBox windowBox = {PWINDOW->m_vRealPosition->value().x + PWINDOW->m_vFloatingOffset.x - pMonitor->vecPosition.x + 1,
|
CBox windowBox = {PWINDOW->m_realPosition->value().x + PWINDOW->m_floatingOffset.x - pMonitor->vecPosition.x + 1,
|
||||||
PWINDOW->m_vRealPosition->value().y + PWINDOW->m_vFloatingOffset.y - pMonitor->vecPosition.y + 1, PWINDOW->m_vRealSize->value().x - 2,
|
PWINDOW->m_realPosition->value().y + PWINDOW->m_floatingOffset.y - pMonitor->vecPosition.y + 1, PWINDOW->m_realSize->value().x - 2,
|
||||||
PWINDOW->m_vRealSize->value().y - 2};
|
PWINDOW->m_realSize->value().y - 2};
|
||||||
|
|
||||||
if (windowBox.w < 1 || windowBox.h < 1)
|
if (windowBox.w < 1 || windowBox.h < 1)
|
||||||
return;
|
return;
|
||||||
|
@ -589,8 +589,8 @@ void CHyprBar::renderPass(PHLMONITOR pMonitor, const float& a) {
|
||||||
g_pHyprOpenGL->renderRect(titleBarBox, color, scaledRounding);
|
g_pHyprOpenGL->renderRect(titleBarBox, color, scaledRounding);
|
||||||
|
|
||||||
// render title
|
// render title
|
||||||
if (**PENABLETITLE && (m_szLastTitle != PWINDOW->m_szTitle || m_bWindowSizeChanged || m_pTextTex->m_iTexID == 0 || m_bTitleColorChanged)) {
|
if (**PENABLETITLE && (m_szLastTitle != PWINDOW->m_title || m_bWindowSizeChanged || m_pTextTex->m_iTexID == 0 || m_bTitleColorChanged)) {
|
||||||
m_szLastTitle = PWINDOW->m_szTitle;
|
m_szLastTitle = PWINDOW->m_title;
|
||||||
renderBarTitle(BARBUF, pMonitor->scale);
|
renderBarTitle(BARBUF, pMonitor->scale);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -660,8 +660,8 @@ CBox CHyprBar::assignedBoxGlobal() {
|
||||||
CBox box = m_bAssignedBox;
|
CBox box = m_bAssignedBox;
|
||||||
box.translate(g_pDecorationPositioner->getEdgeDefinedPoint(DECORATION_EDGE_TOP, m_pWindow.lock()));
|
box.translate(g_pDecorationPositioner->getEdgeDefinedPoint(DECORATION_EDGE_TOP, m_pWindow.lock()));
|
||||||
|
|
||||||
const auto PWORKSPACE = m_pWindow->m_pWorkspace;
|
const auto PWORKSPACE = m_pWindow->m_workspace;
|
||||||
const auto WORKSPACEOFFSET = PWORKSPACE && !m_pWindow->m_bPinned ? PWORKSPACE->m_renderOffset->value() : Vector2D();
|
const auto WORKSPACEOFFSET = PWORKSPACE && !m_pWindow->m_pinned ? PWORKSPACE->m_renderOffset->value() : Vector2D();
|
||||||
|
|
||||||
return box.translate(WORKSPACEOFFSET);
|
return box.translate(WORKSPACEOFFSET);
|
||||||
}
|
}
|
||||||
|
@ -671,33 +671,33 @@ PHLWINDOW CHyprBar::getOwner() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void CHyprBar::updateRules() {
|
void CHyprBar::updateRules() {
|
||||||
const auto PWINDOW = m_pWindow.lock();
|
const auto PWINDOW = m_pWindow.lock();
|
||||||
auto rules = PWINDOW->m_vMatchedRules;
|
auto rules = PWINDOW->m_matchedRules;
|
||||||
auto prev_m_bHidden = m_bHidden;
|
auto prevHidden = m_hidden;
|
||||||
auto prev_m_bForcedTitleColor = m_bForcedTitleColor;
|
auto prevForcedTitleColor = m_bForcedTitleColor;
|
||||||
|
|
||||||
m_bForcedBarColor = std::nullopt;
|
m_bForcedBarColor = std::nullopt;
|
||||||
m_bForcedTitleColor = std::nullopt;
|
m_bForcedTitleColor = std::nullopt;
|
||||||
m_bHidden = false;
|
m_hidden = false;
|
||||||
|
|
||||||
for (auto& r : rules) {
|
for (auto& r : rules) {
|
||||||
applyRule(r);
|
applyRule(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (prev_m_bHidden != m_bHidden)
|
if (prevHidden != m_hidden)
|
||||||
g_pDecorationPositioner->repositionDeco(this);
|
g_pDecorationPositioner->repositionDeco(this);
|
||||||
if (prev_m_bForcedTitleColor != m_bForcedTitleColor)
|
if (prevForcedTitleColor != m_bForcedTitleColor)
|
||||||
m_bTitleColorChanged = true;
|
m_bTitleColorChanged = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CHyprBar::applyRule(const SP<CWindowRule>& r) {
|
void CHyprBar::applyRule(const SP<CWindowRule>& r) {
|
||||||
auto arg = r->szRule.substr(r->szRule.find_first_of(' ') + 1);
|
auto arg = r->m_rule.substr(r->m_rule.find_first_of(' ') + 1);
|
||||||
|
|
||||||
if (r->szRule == "plugin:hyprbars:nobar")
|
if (r->m_rule == "plugin:hyprbars:nobar")
|
||||||
m_bHidden = true;
|
m_hidden = true;
|
||||||
else if (r->szRule.starts_with("plugin:hyprbars:bar_color"))
|
else if (r->m_rule.starts_with("plugin:hyprbars:bar_color"))
|
||||||
m_bForcedBarColor = CHyprColor(configStringToInt(arg).value_or(0));
|
m_bForcedBarColor = CHyprColor(configStringToInt(arg).value_or(0));
|
||||||
else if (r->szRule.starts_with("plugin:hyprbars:title_color"))
|
else if (r->m_rule.starts_with("plugin:hyprbars:title_color"))
|
||||||
m_bForcedTitleColor = CHyprColor(configStringToInt(arg).value_or(0));
|
m_bForcedTitleColor = CHyprColor(configStringToInt(arg).value_or(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -57,7 +57,7 @@ class CHyprBar : public IHyprWindowDecoration {
|
||||||
SP<CTexture> m_pButtonsTex;
|
SP<CTexture> m_pButtonsTex;
|
||||||
|
|
||||||
bool m_bWindowSizeChanged = false;
|
bool m_bWindowSizeChanged = false;
|
||||||
bool m_bHidden = false;
|
bool m_hidden = false;
|
||||||
bool m_bTitleColorChanged = false;
|
bool m_bTitleColorChanged = false;
|
||||||
bool m_bButtonHovered = false;
|
bool m_bButtonHovered = false;
|
||||||
std::optional<CHyprColor> m_bForcedBarColor;
|
std::optional<CHyprColor> m_bForcedBarColor;
|
||||||
|
|
|
@ -22,8 +22,8 @@ static void onNewWindow(void* self, std::any data) {
|
||||||
// data is guaranteed
|
// data is guaranteed
|
||||||
const auto PWINDOW = std::any_cast<PHLWINDOW>(data);
|
const auto PWINDOW = std::any_cast<PHLWINDOW>(data);
|
||||||
|
|
||||||
if (!PWINDOW->m_bX11DoesntWantBorders) {
|
if (!PWINDOW->m_X11DoesntWantBorders) {
|
||||||
if (std::ranges::any_of(PWINDOW->m_dWindowDecorations, [](const auto& d) { return d->getDisplayName() == "Hyprbar"; }))
|
if (std::ranges::any_of(PWINDOW->m_windowDecorations, [](const auto& d) { return d->getDisplayName() == "Hyprbar"; }))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
auto bar = makeUnique<CHyprBar>(PWINDOW);
|
auto bar = makeUnique<CHyprBar>(PWINDOW);
|
||||||
|
@ -147,7 +147,7 @@ APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) {
|
||||||
|
|
||||||
// add deco to existing windows
|
// add deco to existing windows
|
||||||
for (auto& w : g_pCompositor->m_windows) {
|
for (auto& w : g_pCompositor->m_windows) {
|
||||||
if (w->isHidden() || !w->m_bIsMapped)
|
if (w->isHidden() || !w->m_isMapped)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
onNewWindow(nullptr /* unused */, std::any(w));
|
onNewWindow(nullptr /* unused */, std::any(w));
|
||||||
|
|
|
@ -122,7 +122,7 @@ APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) {
|
||||||
|
|
||||||
// add deco to existing windows
|
// add deco to existing windows
|
||||||
for (auto& w : g_pCompositor->m_windows) {
|
for (auto& w : g_pCompositor->m_windows) {
|
||||||
if (w->isHidden() || !w->m_bIsMapped)
|
if (w->isHidden() || !w->m_isMapped)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
HyprlandAPI::addWindowDecoration(PHANDLE, w, makeUnique<CTrail>(w));
|
HyprlandAPI::addWindowDecoration(PHANDLE, w, makeUnique<CTrail>(w));
|
||||||
|
|
|
@ -16,8 +16,8 @@ void CTrail::onTick() {
|
||||||
const auto PWINDOW = m_pWindow.lock();
|
const auto PWINDOW = m_pWindow.lock();
|
||||||
|
|
||||||
if (m_iTimer > **PHISTORYSTEP) {
|
if (m_iTimer > **PHISTORYSTEP) {
|
||||||
m_dLastGeoms.push_front({box{(float)PWINDOW->m_vRealPosition->value().x, (float)PWINDOW->m_vRealPosition->value().y, (float)PWINDOW->m_vRealSize->value().x,
|
m_dLastGeoms.push_front({box{(float)PWINDOW->m_realPosition->value().x, (float)PWINDOW->m_realPosition->value().y, (float)PWINDOW->m_realSize->value().x,
|
||||||
(float)PWINDOW->m_vRealSize->value().y},
|
(float)PWINDOW->m_realSize->value().y},
|
||||||
std::chrono::system_clock::now()});
|
std::chrono::system_clock::now()});
|
||||||
while (m_dLastGeoms.size() > **PHISTORYPOINTS)
|
while (m_dLastGeoms.size() > **PHISTORYPOINTS)
|
||||||
m_dLastGeoms.pop_back();
|
m_dLastGeoms.pop_back();
|
||||||
|
@ -32,8 +32,8 @@ void CTrail::onTick() {
|
||||||
}
|
}
|
||||||
|
|
||||||
CTrail::CTrail(PHLWINDOW pWindow) : IHyprWindowDecoration(pWindow), m_pWindow(pWindow) {
|
CTrail::CTrail(PHLWINDOW pWindow) : IHyprWindowDecoration(pWindow), m_pWindow(pWindow) {
|
||||||
m_vLastWindowPos = pWindow->m_vRealPosition->value();
|
m_vLastWindowPos = pWindow->m_realPosition->value();
|
||||||
m_vLastWindowSize = pWindow->m_vRealSize->value();
|
m_vLastWindowSize = pWindow->m_realSize->value();
|
||||||
|
|
||||||
pTickCb = HyprlandAPI::registerCallbackDynamic(PHANDLE, "trailTick", [this](void* self, SCallbackInfo& info, std::any data) { this->onTick(); });
|
pTickCb = HyprlandAPI::registerCallbackDynamic(PHANDLE, "trailTick", [this](void* self, SCallbackInfo& info, std::any data) { this->onTick(); });
|
||||||
}
|
}
|
||||||
|
@ -86,7 +86,7 @@ void CTrail::draw(PHLMONITOR pMonitor, const float& a) {
|
||||||
|
|
||||||
const auto PWINDOW = m_pWindow.lock();
|
const auto PWINDOW = m_pWindow.lock();
|
||||||
|
|
||||||
if (!PWINDOW->m_sWindowData.decorate.valueOrDefault())
|
if (!PWINDOW->m_windowData.decorate.valueOrDefault())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
auto data = CTrailPassElement::STrailData{this, a};
|
auto data = CTrailPassElement::STrailData{this, a};
|
||||||
|
@ -106,7 +106,7 @@ void CTrail::renderPass(PHLMONITOR pMonitor, const float& a) {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
box thisbox =
|
box thisbox =
|
||||||
box{(float)PWINDOW->m_vRealPosition->value().x, (float)PWINDOW->m_vRealPosition->value().y, (float)PWINDOW->m_vRealSize->value().x, (float)PWINDOW->m_vRealSize->value().y};
|
box{(float)PWINDOW->m_realPosition->value().x, (float)PWINDOW->m_realPosition->value().y, (float)PWINDOW->m_realSize->value().x, (float)PWINDOW->m_realSize->value().y};
|
||||||
CBox wlrbox = {thisbox.x - pMonitor->vecPosition.x, thisbox.y - pMonitor->vecPosition.y, thisbox.w, thisbox.h};
|
CBox wlrbox = {thisbox.x - pMonitor->vecPosition.x, thisbox.y - pMonitor->vecPosition.y, thisbox.w, thisbox.h};
|
||||||
wlrbox.scale(pMonitor->scale).round();
|
wlrbox.scale(pMonitor->scale).round();
|
||||||
|
|
||||||
|
@ -246,10 +246,10 @@ void CTrail::renderPass(PHLMONITOR pMonitor, const float& a) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
box thisboxopengl = box{(PWINDOW->m_vRealPosition->value().x - pMonitor->vecPosition.x) / pMonitor->vecSize.x,
|
box thisboxopengl = box{(PWINDOW->m_realPosition->value().x - pMonitor->vecPosition.x) / pMonitor->vecSize.x,
|
||||||
(PWINDOW->m_vRealPosition->value().y - pMonitor->vecPosition.y) / pMonitor->vecSize.y,
|
(PWINDOW->m_realPosition->value().y - pMonitor->vecPosition.y) / pMonitor->vecSize.y,
|
||||||
(PWINDOW->m_vRealPosition->value().x + PWINDOW->m_vRealSize->value().x) / pMonitor->vecSize.x,
|
(PWINDOW->m_realPosition->value().x + PWINDOW->m_realSize->value().x) / pMonitor->vecSize.x,
|
||||||
(PWINDOW->m_vRealPosition->value().y + PWINDOW->m_vRealSize->value().y) / pMonitor->vecSize.y};
|
(PWINDOW->m_realPosition->value().y + PWINDOW->m_realSize->value().y) / pMonitor->vecSize.y};
|
||||||
glUniform4f(g_pGlobalState->trailShader.gradient, thisboxopengl.x, thisboxopengl.y, thisboxopengl.w, thisboxopengl.h);
|
glUniform4f(g_pGlobalState->trailShader.gradient, thisboxopengl.x, thisboxopengl.y, thisboxopengl.w, thisboxopengl.h);
|
||||||
glUniform4f(g_pGlobalState->trailShader.color, COLOR.r, COLOR.g, COLOR.b, COLOR.a);
|
glUniform4f(g_pGlobalState->trailShader.color, COLOR.r, COLOR.g, COLOR.b, COLOR.a);
|
||||||
|
|
||||||
|
@ -325,12 +325,12 @@ eDecorationType CTrail::getDecorationType() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void CTrail::updateWindow(PHLWINDOW pWindow) {
|
void CTrail::updateWindow(PHLWINDOW pWindow) {
|
||||||
const auto PWORKSPACE = pWindow->m_pWorkspace;
|
const auto PWORKSPACE = pWindow->m_workspace;
|
||||||
|
|
||||||
const auto WORKSPACEOFFSET = PWORKSPACE && !pWindow->m_bPinned ? PWORKSPACE->m_renderOffset->value() : Vector2D();
|
const auto WORKSPACEOFFSET = PWORKSPACE && !pWindow->m_pinned ? PWORKSPACE->m_renderOffset->value() : Vector2D();
|
||||||
|
|
||||||
m_vLastWindowPos = pWindow->m_vRealPosition->value() + WORKSPACEOFFSET;
|
m_vLastWindowPos = pWindow->m_realPosition->value() + WORKSPACEOFFSET;
|
||||||
m_vLastWindowSize = pWindow->m_vRealSize->value();
|
m_vLastWindowSize = pWindow->m_realSize->value();
|
||||||
|
|
||||||
damageEntire();
|
damageEntire();
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,27 +36,27 @@ std::vector<PHLWINDOWREF> bgWindows;
|
||||||
void onNewWindow(PHLWINDOW pWindow) {
|
void onNewWindow(PHLWINDOW pWindow) {
|
||||||
static auto* const PCLASS = (Hyprlang::STRING const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprwinwrap:class")->getDataStaticPtr();
|
static auto* const PCLASS = (Hyprlang::STRING const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprwinwrap:class")->getDataStaticPtr();
|
||||||
|
|
||||||
if (pWindow->m_szInitialClass != *PCLASS)
|
if (pWindow->m_initialClass != *PCLASS)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
const auto PMONITOR = pWindow->m_pMonitor.lock();
|
const auto PMONITOR = pWindow->m_monitor.lock();
|
||||||
|
|
||||||
if (!PMONITOR)
|
if (!PMONITOR)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!pWindow->m_bIsFloating)
|
if (!pWindow->m_isFloating)
|
||||||
g_pLayoutManager->getCurrentLayout()->changeWindowFloatingMode(pWindow);
|
g_pLayoutManager->getCurrentLayout()->changeWindowFloatingMode(pWindow);
|
||||||
|
|
||||||
pWindow->m_vRealSize->setValueAndWarp(PMONITOR->vecSize);
|
pWindow->m_realSize->setValueAndWarp(PMONITOR->vecSize);
|
||||||
pWindow->m_vRealPosition->setValueAndWarp(PMONITOR->vecPosition);
|
pWindow->m_realPosition->setValueAndWarp(PMONITOR->vecPosition);
|
||||||
pWindow->m_vSize = PMONITOR->vecSize;
|
pWindow->m_size = PMONITOR->vecSize;
|
||||||
pWindow->m_vPosition = PMONITOR->vecPosition;
|
pWindow->m_position = PMONITOR->vecPosition;
|
||||||
pWindow->m_bPinned = true;
|
pWindow->m_pinned = true;
|
||||||
pWindow->sendWindowSize(true);
|
pWindow->sendWindowSize(true);
|
||||||
|
|
||||||
bgWindows.push_back(pWindow);
|
bgWindows.push_back(pWindow);
|
||||||
|
|
||||||
pWindow->m_bHidden = true; // no renderino hyprland pls
|
pWindow->m_hidden = true; // no renderino hyprland pls
|
||||||
|
|
||||||
g_pInputManager->refocus();
|
g_pInputManager->refocus();
|
||||||
|
|
||||||
|
@ -76,15 +76,15 @@ void onRenderStage(eRenderStage stage) {
|
||||||
for (auto& bg : bgWindows) {
|
for (auto& bg : bgWindows) {
|
||||||
const auto bgw = bg.lock();
|
const auto bgw = bg.lock();
|
||||||
|
|
||||||
if (bgw->m_pMonitor != g_pHyprOpenGL->m_RenderData.pMonitor)
|
if (bgw->m_monitor != g_pHyprOpenGL->m_RenderData.pMonitor)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// cant use setHidden cuz that sends suspended and shit too that would be laggy
|
// cant use setHidden cuz that sends suspended and shit too that would be laggy
|
||||||
bgw->m_bHidden = false;
|
bgw->m_hidden = false;
|
||||||
|
|
||||||
g_pHyprRenderer->renderWindow(bgw, g_pHyprOpenGL->m_RenderData.pMonitor.lock(), Time::steadyNow(), false, RENDER_PASS_ALL, false, true);
|
g_pHyprRenderer->renderWindow(bgw, g_pHyprOpenGL->m_RenderData.pMonitor.lock(), Time::steadyNow(), false, RENDER_PASS_ALL, false, true);
|
||||||
|
|
||||||
bgw->m_bHidden = true;
|
bgw->m_hidden = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,17 +97,17 @@ void onCommitSubsurface(CSubsurface* thisptr) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// cant use setHidden cuz that sends suspended and shit too that would be laggy
|
// cant use setHidden cuz that sends suspended and shit too that would be laggy
|
||||||
PWINDOW->m_bHidden = false;
|
PWINDOW->m_hidden = false;
|
||||||
|
|
||||||
((origCommitSubsurface)subsurfaceHook->m_pOriginal)(thisptr);
|
((origCommitSubsurface)subsurfaceHook->m_pOriginal)(thisptr);
|
||||||
if (const auto MON = PWINDOW->m_pMonitor.lock(); MON)
|
if (const auto MON = PWINDOW->m_monitor.lock(); MON)
|
||||||
g_pHyprOpenGL->markBlurDirtyForMonitor(MON);
|
g_pHyprOpenGL->markBlurDirtyForMonitor(MON);
|
||||||
|
|
||||||
PWINDOW->m_bHidden = true;
|
PWINDOW->m_hidden = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void onCommit(void* owner, void* data) {
|
void onCommit(void* owner, void* data) {
|
||||||
const auto PWINDOW = ((CWindow*)owner)->m_pSelf.lock();
|
const auto PWINDOW = ((CWindow*)owner)->m_self.lock();
|
||||||
|
|
||||||
if (std::find_if(bgWindows.begin(), bgWindows.end(), [PWINDOW](const auto& ref) { return ref.lock() == PWINDOW; }) == bgWindows.end()) {
|
if (std::find_if(bgWindows.begin(), bgWindows.end(), [PWINDOW](const auto& ref) { return ref.lock() == PWINDOW; }) == bgWindows.end()) {
|
||||||
((origCommit)commitHook->m_pOriginal)(owner, data);
|
((origCommit)commitHook->m_pOriginal)(owner, data);
|
||||||
|
@ -115,13 +115,13 @@ void onCommit(void* owner, void* data) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// cant use setHidden cuz that sends suspended and shit too that would be laggy
|
// cant use setHidden cuz that sends suspended and shit too that would be laggy
|
||||||
PWINDOW->m_bHidden = false;
|
PWINDOW->m_hidden = false;
|
||||||
|
|
||||||
((origCommit)commitHook->m_pOriginal)(owner, data);
|
((origCommit)commitHook->m_pOriginal)(owner, data);
|
||||||
if (const auto MON = PWINDOW->m_pMonitor.lock(); MON)
|
if (const auto MON = PWINDOW->m_monitor.lock(); MON)
|
||||||
g_pHyprOpenGL->markBlurDirtyForMonitor(MON);
|
g_pHyprOpenGL->markBlurDirtyForMonitor(MON);
|
||||||
|
|
||||||
PWINDOW->m_bHidden = true;
|
PWINDOW->m_hidden = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void onConfigReloaded() {
|
void onConfigReloaded() {
|
||||||
|
|
|
@ -36,7 +36,7 @@ static SDispatchResult moveOrExec(std::string in) {
|
||||||
if (!PWINDOW)
|
if (!PWINDOW)
|
||||||
g_pKeybindManager->spawn(vars[1]);
|
g_pKeybindManager->spawn(vars[1]);
|
||||||
else {
|
else {
|
||||||
if (g_pCompositor->m_lastMonitor->activeWorkspace != PWINDOW->m_pWorkspace)
|
if (g_pCompositor->m_lastMonitor->activeWorkspace != PWINDOW->m_workspace)
|
||||||
g_pCompositor->moveWindowToWorkspaceSafe(PWINDOW, g_pCompositor->m_lastMonitor->activeWorkspace);
|
g_pCompositor->moveWindowToWorkspaceSafe(PWINDOW, g_pCompositor->m_lastMonitor->activeWorkspace);
|
||||||
else
|
else
|
||||||
g_pCompositor->warpCursorTo(PWINDOW->middle());
|
g_pCompositor->warpCursorTo(PWINDOW->middle());
|
||||||
|
@ -52,15 +52,15 @@ static SDispatchResult throwUnfocused(std::string in) {
|
||||||
if (id == WORKSPACE_INVALID)
|
if (id == WORKSPACE_INVALID)
|
||||||
return SDispatchResult{.success = false, .error = "Failed to find workspace"};
|
return SDispatchResult{.success = false, .error = "Failed to find workspace"};
|
||||||
|
|
||||||
if (!g_pCompositor->m_lastWindow || !g_pCompositor->m_lastWindow->m_pWorkspace)
|
if (!g_pCompositor->m_lastWindow || !g_pCompositor->m_lastWindow->m_workspace)
|
||||||
return SDispatchResult{.success = false, .error = "No valid last window"};
|
return SDispatchResult{.success = false, .error = "No valid last window"};
|
||||||
|
|
||||||
auto pWorkspace = g_pCompositor->getWorkspaceByID(id);
|
auto pWorkspace = g_pCompositor->getWorkspaceByID(id);
|
||||||
if (!pWorkspace)
|
if (!pWorkspace)
|
||||||
pWorkspace = g_pCompositor->createNewWorkspace(id, g_pCompositor->m_lastWindow->m_pWorkspace->monitorID(), name, false);
|
pWorkspace = g_pCompositor->createNewWorkspace(id, g_pCompositor->m_lastWindow->m_workspace->monitorID(), name, false);
|
||||||
|
|
||||||
for (const auto& w : g_pCompositor->m_windows) {
|
for (const auto& w : g_pCompositor->m_windows) {
|
||||||
if (w == g_pCompositor->m_lastWindow || w->m_pWorkspace != g_pCompositor->m_lastWindow->m_pWorkspace)
|
if (w == g_pCompositor->m_lastWindow || w->m_workspace != g_pCompositor->m_lastWindow->m_workspace)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
g_pCompositor->moveWindowToWorkspaceSafe(w, pWorkspace);
|
g_pCompositor->moveWindowToWorkspaceSafe(w, pWorkspace);
|
||||||
|
@ -85,7 +85,7 @@ static SDispatchResult bringAllFrom(std::string in) {
|
||||||
const auto PLASTWINDOW = g_pCompositor->m_lastWindow.lock();
|
const auto PLASTWINDOW = g_pCompositor->m_lastWindow.lock();
|
||||||
|
|
||||||
for (const auto& w : g_pCompositor->m_windows) {
|
for (const auto& w : g_pCompositor->m_windows) {
|
||||||
if (w->m_pWorkspace != pWorkspace)
|
if (w->m_workspace != pWorkspace)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
g_pCompositor->moveWindowToWorkspaceSafe(w, g_pCompositor->m_lastMonitor->activeWorkspace);
|
g_pCompositor->moveWindowToWorkspaceSafe(w, g_pCompositor->m_lastMonitor->activeWorkspace);
|
||||||
|
@ -104,7 +104,7 @@ static SDispatchResult closeUnfocused(std::string in) {
|
||||||
return SDispatchResult{.success = false, .error = "No focused monitor"};
|
return SDispatchResult{.success = false, .error = "No focused monitor"};
|
||||||
|
|
||||||
for (const auto& w : g_pCompositor->m_windows) {
|
for (const auto& w : g_pCompositor->m_windows) {
|
||||||
if (w->m_pWorkspace != g_pCompositor->m_lastMonitor->activeWorkspace || w->m_pMonitor != g_pCompositor->m_lastMonitor || !w->m_bIsMapped)
|
if (w->m_workspace != g_pCompositor->m_lastMonitor->activeWorkspace || w->m_monitor != g_pCompositor->m_lastMonitor || !w->m_isMapped)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
g_pCompositor->closeWindow(w);
|
g_pCompositor->closeWindow(w);
|
||||||
|
|
Loading…
Reference in a new issue