From f99822818ec8276cfd6ec99ab60c4708c9884e3d Mon Sep 17 00:00:00 2001 From: Vaxry Date: Sun, 18 Feb 2024 15:30:21 +0000 Subject: [PATCH] all: chase hyprland --- borders-plus-plus/borderDeco.cpp | 49 +++++++------ borders-plus-plus/main.cpp | 8 +- csgo-vulkan-fix/main.cpp | 28 +++---- hyprbars/barDeco.cpp | 122 +++++++++++++++---------------- hyprbars/main.cpp | 46 +++++++----- hyprtrails/main.cpp | 10 +-- hyprtrails/trail.cpp | 20 ++--- hyprwinwrap/main.cpp | 10 +-- 8 files changed, 152 insertions(+), 141 deletions(-) diff --git a/borders-plus-plus/borderDeco.cpp b/borders-plus-plus/borderDeco.cpp index 2ab3392..cc5f45b 100644 --- a/borders-plus-plus/borderDeco.cpp +++ b/borders-plus-plus/borderDeco.cpp @@ -15,11 +15,11 @@ CBordersPlusPlus::~CBordersPlusPlus() { } SDecorationPositioningInfo CBordersPlusPlus::getPositioningInfo() { - static auto* const PBORDERS = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:borders-plus-plus:add_borders")->intValue; + static auto* const PBORDERS = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:borders-plus-plus:add_borders")->getDataStaticPtr(); - static std::vector PSIZES; + static std::vector PSIZES; for (size_t i = 0; i < 9; ++i) { - PSIZES.push_back(&HyprlandAPI::getConfigValue(PHANDLE, "plugin:borders-plus-plus:border_size_" + std::to_string(i + 1))->intValue); + PSIZES.push_back((Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:borders-plus-plus:border_size_" + std::to_string(i + 1))->getDataStaticPtr()); } SDecorationPositioningInfo info; @@ -31,8 +31,8 @@ SDecorationPositioningInfo CBordersPlusPlus::getPositioningInfo() { if (m_fLastThickness == 0) { double size = 0; - for (size_t i = 0; i < *PBORDERS; ++i) { - size += *PSIZES[i]; + for (size_t i = 0; i < **PBORDERS; ++i) { + size += **PSIZES[i]; } info.desiredExtents = {{size, size}, {size, size}}; @@ -67,39 +67,39 @@ void CBordersPlusPlus::draw(CMonitor* pMonitor, float a, const Vector2D& offset) if (!m_pWindow->m_sSpecialRenderData.decorate) return; - static std::vector PCOLORS; - static std::vector PSIZES; + static std::vector PCOLORS; + static std::vector PSIZES; for (size_t i = 0; i < 9; ++i) { - PCOLORS.push_back(&HyprlandAPI::getConfigValue(PHANDLE, "plugin:borders-plus-plus:col.border_" + std::to_string(i + 1))->intValue); - PSIZES.push_back(&HyprlandAPI::getConfigValue(PHANDLE, "plugin:borders-plus-plus:border_size_" + std::to_string(i + 1))->intValue); + PCOLORS.push_back((Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:borders-plus-plus:col.border_" + std::to_string(i + 1))->getDataStaticPtr()); + PSIZES.push_back((Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:borders-plus-plus:border_size_" + std::to_string(i + 1))->getDataStaticPtr()); } - static auto* const PBORDERS = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:borders-plus-plus:add_borders")->intValue; - static auto* const PNATURALROUND = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:borders-plus-plus:natural_rounding")->intValue; - static auto* const PROUNDING = &HyprlandAPI::getConfigValue(PHANDLE, "decoration:rounding")->intValue; - static auto* const PBORDERSIZE = &HyprlandAPI::getConfigValue(PHANDLE, "general:border_size")->intValue; + static auto* const PBORDERS = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:borders-plus-plus:add_borders")->getDataStaticPtr(); + static auto* const PNATURALROUND = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:borders-plus-plus:natural_rounding")->getDataStaticPtr(); + static auto* const PROUNDING = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "decoration:rounding")->getDataStaticPtr(); + static auto* const PBORDERSIZE = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "general:border_size")->getDataStaticPtr(); - if (*PBORDERS < 1) + if (**PBORDERS < 1) return; const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(m_pWindow->m_iWorkspaceID); const auto WORKSPACEOFFSET = PWORKSPACE && !m_pWindow->m_bPinned ? PWORKSPACE->m_vRenderOffset.vec() : Vector2D(); - auto rounding = m_pWindow->rounding() == 0 ? 0 : m_pWindow->rounding() * pMonitor->scale + *PBORDERSIZE; - const auto ORIGINALROUND = rounding == 0 ? 0 : m_pWindow->rounding() * pMonitor->scale + *PBORDERSIZE; + auto rounding = m_pWindow->rounding() == 0 ? 0 : m_pWindow->rounding() * pMonitor->scale + **PBORDERSIZE; + const auto ORIGINALROUND = rounding == 0 ? 0 : m_pWindow->rounding() * pMonitor->scale + **PBORDERSIZE; CBox fullBox = {m_vLastWindowPos.x, m_vLastWindowPos.y, m_vLastWindowSize.x, m_vLastWindowSize.y}; fullBox.translate(offset - pMonitor->vecPosition + WORKSPACEOFFSET).scale(pMonitor->scale); double fullThickness = 0; - fullBox.x -= *PBORDERSIZE * pMonitor->scale; - fullBox.y -= *PBORDERSIZE * pMonitor->scale; - fullBox.width += *PBORDERSIZE * 2 * pMonitor->scale; - fullBox.height += *PBORDERSIZE * 2 * pMonitor->scale; + fullBox.x -= **PBORDERSIZE * pMonitor->scale; + fullBox.y -= **PBORDERSIZE * pMonitor->scale; + fullBox.width += **PBORDERSIZE * 2 * pMonitor->scale; + fullBox.height += **PBORDERSIZE * 2 * pMonitor->scale; - for (size_t i = 0; i < *PBORDERS; ++i) { - const int PREVBORDERSIZESCALED = i == 0 ? 0 : (*PSIZES[i - 1] == -1 ? *PBORDERSIZE : *PSIZES[i - 1]) * pMonitor->scale; - const int THISBORDERSIZE = *PSIZES[i] == -1 ? *PBORDERSIZE : *PSIZES[i]; + for (size_t i = 0; i < **PBORDERS; ++i) { + const int PREVBORDERSIZESCALED = i == 0 ? 0 : (**PSIZES[i - 1] == -1 ? **PBORDERSIZE : **(PSIZES[i - 1])) * pMonitor->scale; + const int THISBORDERSIZE = **(PSIZES[i]) == -1 ? **PBORDERSIZE : (**PSIZES[i]); if (i != 0) { rounding += rounding == 0 ? 0 : PREVBORDERSIZESCALED / pMonitor->scale; @@ -114,7 +114,8 @@ void CBordersPlusPlus::draw(CMonitor* pMonitor, float a, const Vector2D& offset) g_pHyprOpenGL->scissor((CBox*)nullptr); - g_pHyprOpenGL->renderBorder(&fullBox, CColor{(uint64_t)*PCOLORS[i]}, *PNATURALROUND ? ORIGINALROUND : rounding, THISBORDERSIZE, a, *PNATURALROUND ? ORIGINALROUND : -1); + g_pHyprOpenGL->renderBorder(&fullBox, CColor{(uint64_t) * *PCOLORS[i]}, **PNATURALROUND ? ORIGINALROUND : rounding, THISBORDERSIZE, a, + **PNATURALROUND ? ORIGINALROUND : -1); fullThickness += THISBORDERSIZE; } diff --git a/borders-plus-plus/main.cpp b/borders-plus-plus/main.cpp index 23af5e5..3754daf 100644 --- a/borders-plus-plus/main.cpp +++ b/borders-plus-plus/main.cpp @@ -33,12 +33,12 @@ APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) { throw std::runtime_error("[bpp] Version mismatch"); } - HyprlandAPI::addConfigValue(PHANDLE, "plugin:borders-plus-plus:add_borders", SConfigValue{.intValue = 1}); - HyprlandAPI::addConfigValue(PHANDLE, "plugin:borders-plus-plus:natural_rounding", SConfigValue{.intValue = 1}); + HyprlandAPI::addConfigValue(PHANDLE, "plugin:borders-plus-plus:add_borders", Hyprlang::INT{1}); + HyprlandAPI::addConfigValue(PHANDLE, "plugin:borders-plus-plus:natural_rounding", Hyprlang::INT{1}); for (size_t i = 0; i < 9; ++i) { - HyprlandAPI::addConfigValue(PHANDLE, "plugin:borders-plus-plus:col.border_" + std::to_string(i + 1), SConfigValue{.intValue = configStringToInt("rgba(000000ee)")}); - HyprlandAPI::addConfigValue(PHANDLE, "plugin:borders-plus-plus:border_size_" + std::to_string(i + 1), SConfigValue{.intValue = -1}); + HyprlandAPI::addConfigValue(PHANDLE, "plugin:borders-plus-plus:col.border_" + std::to_string(i + 1), Hyprlang::INT{configStringToInt("rgba(000000ee)")}); + HyprlandAPI::addConfigValue(PHANDLE, "plugin:borders-plus-plus:border_size_" + std::to_string(i + 1), Hyprlang::INT{-1}); } HyprlandAPI::reloadConfig(); diff --git a/csgo-vulkan-fix/main.cpp b/csgo-vulkan-fix/main.cpp index 11bd435..20fb901 100644 --- a/csgo-vulkan-fix/main.cpp +++ b/csgo-vulkan-fix/main.cpp @@ -22,23 +22,23 @@ APICALL EXPORT std::string PLUGIN_API_VERSION() { } void hkNotifyMotion(wlr_seat* wlr_seat, uint32_t time_msec, double sx, double sy) { - static auto* const RESX = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:csgo-vulkan-fix:res_w")->intValue; - static auto* const RESY = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:csgo-vulkan-fix:res_h")->intValue; - static auto* const PCLASS = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:csgo-vulkan-fix:class")->strValue; + static auto* const RESX = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:csgo-vulkan-fix:res_w")->getDataStaticPtr(); + static auto* const RESY = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:csgo-vulkan-fix:res_h")->getDataStaticPtr(); + static auto* const PCLASS = (Hyprlang::STRING const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:csgo-vulkan-fix:class")->getDataStaticPtr(); if (g_pCompositor->m_pLastWindow && g_pCompositor->m_pLastWindow->m_szInitialClass == *PCLASS && g_pCompositor->m_pLastMonitor) { // fix the coords - sx *= (*RESX / g_pCompositor->m_pLastMonitor->vecSize.x) / g_pCompositor->m_pLastWindow->m_fX11SurfaceScaledBy; - sy *= (*RESY / g_pCompositor->m_pLastMonitor->vecSize.y) / g_pCompositor->m_pLastWindow->m_fX11SurfaceScaledBy; + sx *= (**RESX / g_pCompositor->m_pLastMonitor->vecSize.x) / g_pCompositor->m_pLastWindow->m_fX11SurfaceScaledBy; + sy *= (**RESY / g_pCompositor->m_pLastMonitor->vecSize.y) / g_pCompositor->m_pLastWindow->m_fX11SurfaceScaledBy; } (*(origMotion)g_pMouseMotionHook->m_pOriginal)(wlr_seat, time_msec, sx, sy); } void hkSetWindowSize(wlr_xwayland_surface* surface, int16_t x, int16_t y, uint16_t width, uint16_t height) { - static auto* const RESX = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:csgo-vulkan-fix:res_w")->intValue; - static auto* const RESY = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:csgo-vulkan-fix:res_h")->intValue; - static auto* const PCLASS = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:csgo-vulkan-fix:class")->strValue; + static auto* const RESX = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:csgo-vulkan-fix:res_w")->getDataStaticPtr(); + static auto* const RESY = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:csgo-vulkan-fix:res_h")->getDataStaticPtr(); + static auto* const PCLASS = (Hyprlang::STRING const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:csgo-vulkan-fix:class")->getDataStaticPtr(); if (!surface) { (*(origSurfaceSize)g_pSurfaceSizeHook->m_pOriginal)(surface, x, y, width, height); @@ -49,8 +49,8 @@ void hkSetWindowSize(wlr_xwayland_surface* surface, int16_t x, int16_t y, uint16 const auto PWINDOW = g_pCompositor->getWindowFromSurface(SURF); if (PWINDOW && PWINDOW->m_szInitialClass == *PCLASS) { - width = *RESX; - height = *RESY; + width = **RESX; + height = **RESY; CWLSurface::surfaceFromWlr(SURF)->m_bFillIgnoreSmall = true; } @@ -61,7 +61,7 @@ void hkSetWindowSize(wlr_xwayland_surface* surface, int16_t x, int16_t y, uint16 void hkSurfaceDamage(wlr_surface* surface, pixman_region32_t* damage) { (*(origSurfaceDamage)g_pSurfaceDamageHook->m_pOriginal)(surface, damage); - static auto* const PCLASS = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:csgo-vulkan-fix:class")->strValue; + static auto* const PCLASS = (Hyprlang::STRING const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:csgo-vulkan-fix:class")->getDataStaticPtr(); const auto SURF = CWLSurface::surfaceFromWlr(surface); @@ -72,9 +72,9 @@ void hkSurfaceDamage(wlr_surface* surface, pixman_region32_t* damage) { APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) { PHANDLE = handle; - HyprlandAPI::addConfigValue(PHANDLE, "plugin:csgo-vulkan-fix:res_w", SConfigValue{.intValue = 1680}); - HyprlandAPI::addConfigValue(PHANDLE, "plugin:csgo-vulkan-fix:res_h", SConfigValue{.intValue = 1050}); - HyprlandAPI::addConfigValue(PHANDLE, "plugin:csgo-vulkan-fix:class", SConfigValue{.strValue = "cs2"}); + HyprlandAPI::addConfigValue(PHANDLE, "plugin:csgo-vulkan-fix:res_w", Hyprlang::INT{1680}); + HyprlandAPI::addConfigValue(PHANDLE, "plugin:csgo-vulkan-fix:res_h", Hyprlang::INT{1050}); + HyprlandAPI::addConfigValue(PHANDLE, "plugin:csgo-vulkan-fix:class", Hyprlang::STRING{"cs2"}); g_pMouseMotionHook = HyprlandAPI::createFunctionHook(PHANDLE, (void*)&wlr_seat_pointer_notify_motion, (void*)&hkNotifyMotion); g_pSurfaceSizeHook = HyprlandAPI::createFunctionHook(PHANDLE, (void*)&wlr_xwayland_surface_configure, (void*)&hkSetWindowSize); diff --git a/hyprbars/barDeco.cpp b/hyprbars/barDeco.cpp index e964b5b..dafdf6b 100644 --- a/hyprbars/barDeco.cpp +++ b/hyprbars/barDeco.cpp @@ -27,15 +27,15 @@ CHyprBar::~CHyprBar() { } SDecorationPositioningInfo CHyprBar::getPositioningInfo() { - static auto* const PHEIGHT = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_height")->intValue; - static auto* const PPRECEDENCE = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_precedence_over_border")->intValue; + static auto* const PHEIGHT = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_height")->getDataStaticPtr(); + static auto* const PPRECEDENCE = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_precedence_over_border")->getDataStaticPtr(); SDecorationPositioningInfo info; info.policy = DECORATION_POSITION_STICKY; info.edges = DECORATION_EDGE_TOP; - info.priority = *PPRECEDENCE ? 10005 : 5000; + info.priority = **PPRECEDENCE ? 10005 : 5000; info.reserved = true; - info.desiredExtents = {{0, *PHEIGHT}, {0, 0}}; + info.desiredExtents = {{0, **PHEIGHT}, {0, 0}}; return info; } @@ -56,14 +56,14 @@ void CHyprBar::onMouseDown(SCallbackInfo& info, wlr_pointer_button_event* e) { const auto COORDS = cursorRelativeToBar(); - static auto* const PHEIGHT = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_height")->intValue; - static auto* const PBARBUTTONPADDING = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_button_padding")->intValue; - static auto* const PBARPADDING = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_padding")->intValue; - static auto* const PALIGNBUTTONS = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_buttons_alignment")->strValue; + static auto* const PHEIGHT = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_height")->getDataStaticPtr(); + static auto* const PBARBUTTONPADDING = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_button_padding")->getDataStaticPtr(); + static auto* const PBARPADDING = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_padding")->getDataStaticPtr(); + static auto* const PALIGNBUTTONS = (Hyprlang::STRING const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_buttons_alignment")->getDataStaticPtr(); - const bool BUTTONSRIGHT = *PALIGNBUTTONS != "left"; + const bool BUTTONSRIGHT = std::string{*PALIGNBUTTONS} != "left"; - if (!VECINRECT(COORDS, 0, 0, assignedBoxGlobal().w, *PHEIGHT - 1)) { + if (!VECINRECT(COORDS, 0, 0, assignedBoxGlobal().w, **PHEIGHT - 1)) { if (m_bDraggingThis) { g_pKeybindManager->m_mDispatchers["mouse"]("0movewindow"); @@ -102,19 +102,19 @@ void CHyprBar::onMouseDown(SCallbackInfo& info, wlr_pointer_button_event* e) { // check if on a button - float offset = *PBARPADDING; + float offset = **PBARPADDING; for (auto& b : g_pGlobalState->buttons) { - const auto BARBUF = Vector2D{(int)assignedBoxGlobal().w, *PHEIGHT}; - Vector2D currentPos = Vector2D{(BUTTONSRIGHT ? BARBUF.x - *PBARBUTTONPADDING - b.size - offset : offset), (BARBUF.y - b.size) / 2.0}.floor(); + const auto BARBUF = Vector2D{(int)assignedBoxGlobal().w, **PHEIGHT}; + Vector2D currentPos = Vector2D{(BUTTONSRIGHT ? BARBUF.x - **PBARBUTTONPADDING - b.size - offset : offset), (BARBUF.y - b.size) / 2.0}.floor(); - if (VECINRECT(COORDS, currentPos.x, currentPos.y, currentPos.x + b.size + *PBARBUTTONPADDING, currentPos.y + b.size)) { + if (VECINRECT(COORDS, currentPos.x, currentPos.y, currentPos.x + b.size + **PBARBUTTONPADDING, currentPos.y + b.size)) { // hit on close g_pKeybindManager->m_mDispatchers["exec"](b.cmd); return; } - offset += *PBARBUTTONPADDING + b.size; + offset += **PBARBUTTONPADDING + b.size; } m_bDragPending = true; @@ -190,30 +190,30 @@ void CHyprBar::renderText(CTexture& out, const std::string& text, const CColor& } void CHyprBar::renderBarTitle(const Vector2D& bufferSize, const float scale) { - static auto* const PCOLOR = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:col.text")->intValue; - static auto* const PSIZE = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_text_size")->intValue; - static auto* const PFONT = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_text_font")->strValue; - static auto* const PALIGN = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_text_align")->strValue; - static auto* const PALIGNBUTTONS = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_buttons_alignment")->strValue; - static auto* const PBARPADDING = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_padding")->intValue; - static auto* const PBARBUTTONPADDING = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_button_padding")->intValue; + static auto* const PCOLOR = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:col.text")->getDataStaticPtr(); + static auto* const PSIZE = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_text_size")->getDataStaticPtr(); + static auto* const PFONT = (Hyprlang::STRING const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_text_font")->getDataStaticPtr(); + static auto* const PALIGN = (Hyprlang::STRING const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_text_align")->getDataStaticPtr(); + static auto* const PALIGNBUTTONS = (Hyprlang::STRING const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_buttons_alignment")->getDataStaticPtr(); + static auto* const PBARPADDING = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_padding")->getDataStaticPtr(); + static auto* const PBARBUTTONPADDING = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_button_padding")->getDataStaticPtr(); - const bool BUTTONSRIGHT = *PALIGNBUTTONS != "left"; + const bool BUTTONSRIGHT = std::string{*PALIGNBUTTONS} != "left"; const auto BORDERSIZE = m_pWindow->getRealBorderSize(); - float buttonSizes = *PBARBUTTONPADDING; + float buttonSizes = **PBARBUTTONPADDING; for (auto& b : g_pGlobalState->buttons) { - buttonSizes += b.size + *PBARBUTTONPADDING; + buttonSizes += b.size + **PBARBUTTONPADDING; } - const auto scaledSize = *PSIZE * scale; + const auto scaledSize = **PSIZE * scale; const auto scaledBorderSize = BORDERSIZE * scale; const auto scaledButtonsSize = buttonSizes * scale; - const auto scaledButtonsPad = *PBARBUTTONPADDING * scale; - const auto scaledBarPadding = *PBARPADDING * scale; + const auto scaledButtonsPad = **PBARBUTTONPADDING * scale; + const auto scaledBarPadding = **PBARPADDING * scale; - const CColor COLOR = *PCOLOR; + const CColor COLOR = **PCOLOR; const auto CAIROSURFACE = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, bufferSize.x, bufferSize.y); const auto CAIRO = cairo_create(CAIROSURFACE); @@ -228,7 +228,7 @@ void CHyprBar::renderBarTitle(const Vector2D& bufferSize, const float scale) { PangoLayout* layout = pango_cairo_create_layout(CAIRO); pango_layout_set_text(layout, m_szLastTitle.c_str(), -1); - PangoFontDescription* fontDesc = pango_font_description_from_string(PFONT->c_str()); + PangoFontDescription* fontDesc = pango_font_description_from_string(*PFONT); pango_font_description_set_size(fontDesc, scaledSize * PANGO_SCALE); pango_layout_set_font_description(layout, fontDesc); pango_font_description_free(fontDesc); @@ -274,18 +274,18 @@ void CHyprBar::renderBarTitle(const Vector2D& bufferSize, const float scale) { } void CHyprBar::renderBarButtons(const Vector2D& bufferSize, const float scale) { - static auto* const PBARBUTTONPADDING = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_button_padding")->intValue; - static auto* const PBARPADDING = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_padding")->intValue; + static auto* const PBARBUTTONPADDING = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_button_padding")->getDataStaticPtr(); + static auto* const PBARPADDING = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_padding")->getDataStaticPtr(); - const auto scaledButtonsPad = *PBARBUTTONPADDING * scale; - const auto scaledBarPadding = *PBARPADDING * scale; + const auto scaledButtonsPad = **PBARBUTTONPADDING * scale; + const auto scaledBarPadding = **PBARPADDING * scale; const auto CAIROSURFACE = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, bufferSize.x, bufferSize.y); const auto CAIRO = cairo_create(CAIROSURFACE); - static auto* const PALIGNBUTTONS = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_buttons_alignment")->strValue; + static auto* const PALIGNBUTTONS = (Hyprlang::STRING const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_buttons_alignment")->getDataStaticPtr(); - const bool BUTTONSRIGHT = *PALIGNBUTTONS != "left"; + const bool BUTTONSRIGHT = std::string{*PALIGNBUTTONS} != "left"; // clear the pixmap cairo_save(CAIRO); @@ -337,18 +337,18 @@ void CHyprBar::renderBarButtons(const Vector2D& bufferSize, const float scale) { } void CHyprBar::renderBarButtonsText(CBox* barBox, const float scale, const float a) { - static auto* const PBARBUTTONPADDING = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_button_padding")->intValue; - static auto* const PBARPADDING = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_padding")->intValue; + static auto* const PBARBUTTONPADDING = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_button_padding")->getDataStaticPtr(); + static auto* const PBARPADDING = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_padding")->getDataStaticPtr(); + static auto* const PALIGNBUTTONS = (Hyprlang::STRING const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_buttons_alignment")->getDataStaticPtr(); - const auto scaledButtonsPad = *PBARBUTTONPADDING * scale; - const auto scaledBarPad = *PBARPADDING * scale; + const bool BUTTONSRIGHT = std::string{*PALIGNBUTTONS} != "left"; + + const auto scaledButtonsPad = **PBARBUTTONPADDING * scale; + const auto scaledBarPad = **PBARPADDING * scale; int offset = scaledBarPad; + // - static auto* const PALIGNBUTTONS = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_buttons_alignment")->strValue; - - const bool BUTTONSRIGHT = *PALIGNBUTTONS != "left"; - - auto drawButton = [&](SHyprButton& button) -> void { + auto drawButton = [&](SHyprButton& button) -> void { const auto scaledButtonSize = button.size * scale; if (button.iconTex.m_iTexID == 0 /* icon is not rendered */ && !button.icon.empty()) { @@ -383,16 +383,16 @@ void CHyprBar::draw(CMonitor* pMonitor, float a, const Vector2D& offset) { if (!m_pWindow->m_sSpecialRenderData.decorate) return; - static auto* const PCOLOR = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_color")->intValue; - static auto* const PHEIGHT = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_height")->intValue; - static auto* const PPRECEDENCE = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_precedence_over_border")->intValue; - static auto* const PALIGNBUTTONS = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_buttons_alignment")->strValue; - static auto* const PENABLETITLE = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_title_enabled")->intValue; + static auto* const PCOLOR = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_color")->getDataStaticPtr(); + static auto* const PHEIGHT = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_height")->getDataStaticPtr(); + static auto* const PPRECEDENCE = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_precedence_over_border")->getDataStaticPtr(); + static auto* const PALIGNBUTTONS = (Hyprlang::STRING const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_buttons_alignment")->getDataStaticPtr(); + static auto* const PENABLETITLE = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_title_enabled")->getDataStaticPtr(); - const bool BUTTONSRIGHT = *PALIGNBUTTONS != "left"; + const bool BUTTONSRIGHT = std::string{*PALIGNBUTTONS} != "left"; - if (*PHEIGHT < 1) { - m_iLastHeight = *PHEIGHT; + if (**PHEIGHT < 1) { + m_iLastHeight = **PHEIGHT; return; } @@ -403,10 +403,10 @@ void CHyprBar::draw(CMonitor* pMonitor, float a, const Vector2D& offset) { const auto scaledRounding = ROUNDING > 0 ? ROUNDING * pMonitor->scale - 2 /* idk why but otherwise it looks bad due to the gaps */ : 0; - CColor color = *PCOLOR; + CColor color = **PCOLOR; color.a *= a; - m_seExtents = {{0, *PHEIGHT}, {}}; + m_seExtents = {{0, **PHEIGHT}, {}}; const auto DECOBOX = assignedBoxGlobal(); @@ -446,7 +446,7 @@ void CHyprBar::draw(CMonitor* pMonitor, float a, const Vector2D& offset) { g_pHyprOpenGL->renderRect(&titleBarBox, color, scaledRounding); // render title - if (*PENABLETITLE && (m_szLastTitle != m_pWindow->m_szTitle || m_bWindowSizeChanged || m_tTextTex.m_iTexID == 0)) { + if (**PENABLETITLE && (m_szLastTitle != m_pWindow->m_szTitle || m_bWindowSizeChanged || m_tTextTex.m_iTexID == 0)) { m_szLastTitle = m_pWindow->m_szTitle; renderBarTitle(BARBUF, pMonitor->scale); } @@ -461,7 +461,7 @@ void CHyprBar::draw(CMonitor* pMonitor, float a, const Vector2D& offset) { } CBox textBox = {titleBarBox.x, titleBarBox.y, (int)BARBUF.x, (int)BARBUF.y}; - if (*PENABLETITLE) + if (**PENABLETITLE) g_pHyprOpenGL->renderTexture(m_tTextTex, &textBox, a); if (m_bButtonsDirty || m_bWindowSizeChanged) { @@ -478,9 +478,9 @@ void CHyprBar::draw(CMonitor* pMonitor, float a, const Vector2D& offset) { m_bWindowSizeChanged = false; // dynamic updates change the extents - if (m_iLastHeight != *PHEIGHT) { + if (m_iLastHeight != **PHEIGHT) { g_pLayoutManager->getCurrentLayout()->recalculateWindow(m_pWindow); - m_iLastHeight = *PHEIGHT; + m_iLastHeight = **PHEIGHT; } } @@ -505,8 +505,8 @@ eDecorationLayer CHyprBar::getDecorationLayer() { } uint64_t CHyprBar::getDecorationFlags() { - static auto* const PPART = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_part_of_window")->intValue; - return DECORATION_ALLOWS_MOUSE_INPUT | (*PPART ? DECORATION_PART_OF_MAIN_WINDOW : 0); + static auto* const PPART = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprbars:bar_part_of_window")->getDataStaticPtr(); + return DECORATION_ALLOWS_MOUSE_INPUT | (**PPART ? DECORATION_PART_OF_MAIN_WINDOW : 0); } CBox CHyprBar::assignedBoxGlobal() { diff --git a/hyprbars/main.cpp b/hyprbars/main.cpp index 128b75a..7ebd774 100644 --- a/hyprbars/main.cpp +++ b/hyprbars/main.cpp @@ -30,24 +30,34 @@ void onPreConfigReload() { g_pGlobalState->buttons.clear(); } -void onNewButton(const std::string& k, const std::string& v) { - CVarList vars(v); +Hyprlang::CParseResult onNewButton(const char* K, const char* V) { + std::string v = V; + CVarList vars(v); + + Hyprlang::CParseResult result; // hyprbars-button = color, size, icon, action - if (vars[0].empty() || vars[1].empty()) - return; + if (vars[0].empty() || vars[1].empty()) { + result.setError("var 1 and 2 cannot be empty"); + return result; + } float size = 10; try { size = std::stof(vars[1]); - } catch (std::exception& e) { return; } + } catch (std::exception& e) { + result.setError("failed parsing var 2 as int"); + return result; + } g_pGlobalState->buttons.push_back(SHyprButton{vars[3], configStringToInt(vars[0]), size, vars[2]}); for (auto& b : g_pGlobalState->bars) { b->m_bButtonsDirty = true; } + + return result; } APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) { @@ -65,20 +75,20 @@ APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) { HyprlandAPI::registerCallbackDynamic(PHANDLE, "openWindow", [&](void* self, SCallbackInfo& info, std::any data) { onNewWindow(self, data); }); - HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:bar_color", SConfigValue{.intValue = configStringToInt("rgba(33333388)")}); - HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:bar_height", SConfigValue{.intValue = 15}); - HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:col.text", SConfigValue{.intValue = configStringToInt("rgba(ffffffff)")}); - HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:bar_text_size", SConfigValue{.intValue = 10}); - HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:bar_title_enabled", SConfigValue{.intValue = 1}); - HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:bar_text_font", SConfigValue{.strValue = "Sans"}); - HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:bar_text_align", SConfigValue{.strValue = "center"}); - HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:bar_part_of_window", SConfigValue{.intValue = 1}); - HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:bar_precedence_over_border", SConfigValue{.intValue = 0}); - HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:bar_buttons_alignment", SConfigValue{.strValue = "right"}); - HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:bar_padding", SConfigValue{.intValue = 7}); - HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:bar_button_padding", SConfigValue{.intValue = 5}); + HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:bar_color", Hyprlang::INT{configStringToInt("rgba(33333388)")}); + HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:bar_height", Hyprlang::INT{15}); + HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:col.text", Hyprlang::INT{configStringToInt("rgba(ffffffff)")}); + HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:bar_text_size", Hyprlang::INT{10}); + HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:bar_title_enabled", Hyprlang::INT{1}); + HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:bar_text_font", Hyprlang::STRING{"Sans"}); + HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:bar_text_align", Hyprlang::STRING{"center"}); + HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:bar_part_of_window", Hyprlang::INT{1}); + HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:bar_precedence_over_border", Hyprlang::INT{0}); + HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:bar_buttons_alignment", Hyprlang::STRING{"right"}); + HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:bar_padding", Hyprlang::INT{7}); + HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprbars:bar_button_padding", Hyprlang::INT{5}); - HyprlandAPI::addConfigKeyword(PHANDLE, "hyprbars-button", [&](const std::string& k, const std::string& v) { onNewButton(k, v); }); + HyprlandAPI::addConfigKeyword(PHANDLE, "hyprbars-button", onNewButton, Hyprlang::SHandlerOptions{}); HyprlandAPI::registerCallbackDynamic(PHANDLE, "preConfigReload", [&](void* self, SCallbackInfo& info, std::any data) { onPreConfigReload(); }); // add deco to existing windows diff --git a/hyprtrails/main.cpp b/hyprtrails/main.cpp index e62e087..579b34f 100644 --- a/hyprtrails/main.cpp +++ b/hyprtrails/main.cpp @@ -110,11 +110,11 @@ APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) { throw std::runtime_error("[ht] Version mismatch"); } - HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprtrails:bezier_step", SConfigValue{.floatValue = 0.025}); - HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprtrails:points_per_step", SConfigValue{.intValue = 2}); - HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprtrails:history_points", SConfigValue{.intValue = 20}); - HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprtrails:history_step", SConfigValue{.intValue = 2}); - HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprtrails:color", SConfigValue{.intValue = configStringToInt("rgba(ffaa00ff)")}); + HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprtrails:bezier_step", Hyprlang::FLOAT{0.025}); + HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprtrails:points_per_step", Hyprlang::INT{2}); + HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprtrails:history_points", Hyprlang::INT{20}); + HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprtrails:history_step", Hyprlang::INT{2}); + HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprtrails:color", Hyprlang::INT{configStringToInt("rgba(ffaa00ff)")}); HyprlandAPI::registerCallbackDynamic(PHANDLE, "openWindow", [&](void* self, SCallbackInfo& info, std::any data) { onNewWindow(self, data); }); diff --git a/hyprtrails/trail.cpp b/hyprtrails/trail.cpp index 131cee2..e376caa 100644 --- a/hyprtrails/trail.cpp +++ b/hyprtrails/trail.cpp @@ -6,16 +6,16 @@ #include "globals.hpp" void CTrail::onTick() { - static auto* const PHISTORYSTEP = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprtrails:history_step")->intValue; - static auto* const PHISTORYPOINTS = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprtrails:history_points")->intValue; + static auto* const PHISTORYSTEP = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprtrails:history_step")->getDataStaticPtr(); + static auto* const PHISTORYPOINTS = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprtrails:history_points")->getDataStaticPtr(); m_iTimer++; - if (m_iTimer > *PHISTORYSTEP) { + if (m_iTimer > **PHISTORYSTEP) { m_dLastGeoms.push_front({box{(float)m_pWindow->m_vRealPosition.vec().x, (float)m_pWindow->m_vRealPosition.vec().y, (float)m_pWindow->m_vRealSize.vec().x, (float)m_pWindow->m_vRealSize.vec().y}, std::chrono::system_clock::now()}); - while (m_dLastGeoms.size() > *PHISTORYPOINTS) + while (m_dLastGeoms.size() > **PHISTORYPOINTS) m_dLastGeoms.pop_back(); m_iTimer = 0; @@ -83,11 +83,11 @@ void CTrail::draw(CMonitor* pMonitor, float a, const Vector2D& offset) { if (!m_pWindow->m_sSpecialRenderData.decorate) return; - static auto* const PBEZIERSTEP = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprtrails:bezier_step")->floatValue; - static auto* const PPOINTSPERSTEP = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprtrails:points_per_step")->intValue; - static auto* const PCOLOR = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprtrails:color")->intValue; + static auto* const PBEZIERSTEP = (Hyprlang::FLOAT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprtrails:bezier_step")->getDataStaticPtr(); + static auto* const PPOINTSPERSTEP = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprtrails:points_per_step")->getDataStaticPtr(); + static auto* const PCOLOR = (Hyprlang::INT* const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprtrails:color")->getDataStaticPtr(); - const CColor COLOR = *PCOLOR; + const CColor COLOR = **PCOLOR; if (m_dLastGeoms.size() < 2) return; @@ -193,8 +193,8 @@ void CTrail::draw(CMonitor* pMonitor, float a, const Vector2D& offset) { } float maxAge = agesForBezier.back(); - float tCoeff = *PBEZIERSTEP; - int pointsPerBezier = *PPOINTSPERSTEP; + float tCoeff = **PBEZIERSTEP; + int pointsPerBezier = **PPOINTSPERSTEP; bezierPts.push_back(vecForBezierT(0, pointsForBezier)); for (float t = tCoeff; t <= 1.0; t += tCoeff) { bezierPts.push_back(vecForBezierT(t, pointsForBezier)); diff --git a/hyprwinwrap/main.cpp b/hyprwinwrap/main.cpp index 3ad5996..f5c12bf 100644 --- a/hyprwinwrap/main.cpp +++ b/hyprwinwrap/main.cpp @@ -30,7 +30,7 @@ std::vector bgWindows; // void onNewWindow(CWindow* pWindow) { - static auto* const PCLASS = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprwinwrap:class")->strValue; + static auto* const PCLASS = (Hyprlang::STRING const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprwinwrap:class")->getDataStaticPtr(); if (pWindow->m_szInitialClass != *PCLASS) return; @@ -118,9 +118,9 @@ void onCommit(void* owner, void* data) { } void onConfigReloaded() { - static auto* const PCLASS = &HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprwinwrap:class")->strValue; - g_pConfigManager->parseKeyword("windowrulev2", "float, class:^(" + *PCLASS + ")$", true); - g_pConfigManager->parseKeyword("windowrulev2", "size 100\% 100\%, class:^(" + *PCLASS + ")$", true); + static auto* const PCLASS = (Hyprlang::STRING const*)HyprlandAPI::getConfigValue(PHANDLE, "plugin:hyprwinwrap:class")->getDataStaticPtr(); + g_pConfigManager->parseKeyword("windowrulev2", std::string{"float, class:^("} + *PCLASS + ")$"); + g_pConfigManager->parseKeyword("windowrulev2", std::string{"size 100\% 100\%, class:^("} + *PCLASS + ")$"); } APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) { @@ -155,7 +155,7 @@ APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) { if (!hkResult) throw std::runtime_error("hyprwinwrap: hooks failed"); - HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprwinwrap:class", SConfigValue{.strValue = "kitty-bg"}); + HyprlandAPI::addConfigValue(PHANDLE, "plugin:hyprwinwrap:class", Hyprlang::STRING{"kitty-bg"}); HyprlandAPI::addNotification(PHANDLE, "[hyprwinwrap] Initialized successfully!", CColor{0.2, 1.0, 0.2, 1.0}, 5000);