@@ -409,13 +409,18 @@ void CHyprBar::draw(PHLMONITOR pMonitor, const float& a) {
409409void CHyprBar::renderPass (PHLMONITOR pMonitor, const float & a) {
410410 const auto PWINDOW = m_pWindow.lock ();
411411
412- static auto * const PCOLOR = (Hyprlang::INT* const *)HyprlandAPI::getConfigValue (PHANDLE, " plugin:hyprbars:bar_color" )->getDataStaticPtr ();
413- static auto * const PHEIGHT = (Hyprlang::INT* const *)HyprlandAPI::getConfigValue (PHANDLE, " plugin:hyprbars:bar_height" )->getDataStaticPtr ();
414- static auto * const PPRECEDENCE = (Hyprlang::INT* const *)HyprlandAPI::getConfigValue (PHANDLE, " plugin:hyprbars:bar_precedence_over_border" )->getDataStaticPtr ();
415- static auto * const PALIGNBUTTONS = (Hyprlang::STRING const *)HyprlandAPI::getConfigValue (PHANDLE, " plugin:hyprbars:bar_buttons_alignment" )->getDataStaticPtr ();
416- static auto * const PENABLETITLE = (Hyprlang::INT* const *)HyprlandAPI::getConfigValue (PHANDLE, " plugin:hyprbars:bar_title_enabled" )->getDataStaticPtr ();
412+ static auto * const PCOLOR = (Hyprlang::INT* const *)HyprlandAPI::getConfigValue (PHANDLE, " plugin:hyprbars:bar_color" )->getDataStaticPtr ();
413+ static auto * const PHEIGHT = (Hyprlang::INT* const *)HyprlandAPI::getConfigValue (PHANDLE, " plugin:hyprbars:bar_height" )->getDataStaticPtr ();
414+ static auto * const PPRECEDENCE = (Hyprlang::INT* const *)HyprlandAPI::getConfigValue (PHANDLE, " plugin:hyprbars:bar_precedence_over_border" )->getDataStaticPtr ();
415+ static auto * const PALIGNBUTTONS = (Hyprlang::STRING const *)HyprlandAPI::getConfigValue (PHANDLE, " plugin:hyprbars:bar_buttons_alignment" )->getDataStaticPtr ();
416+ static auto * const PENABLETITLE = (Hyprlang::INT* const *)HyprlandAPI::getConfigValue (PHANDLE, " plugin:hyprbars:bar_title_enabled" )->getDataStaticPtr ();
417+ static auto * const PENABLEBLUR = (Hyprlang::INT* const *)HyprlandAPI::getConfigValue (PHANDLE, " plugin:hyprbars:bar_blur" )->getDataStaticPtr ();
418+ static auto * const PENABLEBLURGLOBAL = (Hyprlang::INT* const *)HyprlandAPI::getConfigValue (PHANDLE, " decoration:blur:enabled" )->getDataStaticPtr ();
417419
418- const bool BUTTONSRIGHT = std::string{*PALIGNBUTTONS} != " left" ;
420+ CHyprColor color = m_bForcedBarColor.value_or (**PCOLOR);
421+ color.a *= a;
422+ const bool BUTTONSRIGHT = std::string{*PALIGNBUTTONS} != " left" ;
423+ const bool SHOULDBLUR = **PENABLEBLUR && **PENABLEBLURGLOBAL && color.a < 1 .F ;
419424
420425 if (**PHEIGHT < 1 ) {
421426 m_iLastHeight = **PHEIGHT;
@@ -429,9 +434,6 @@ void CHyprBar::renderPass(PHLMONITOR pMonitor, const float& a) {
429434
430435 const auto scaledRounding = ROUNDING > 0 ? ROUNDING * pMonitor->scale - 2 /* idk why but otherwise it looks bad due to the gaps */ : 0 ;
431436
432- CHyprColor color = m_bForcedBarColor.value_or (**PCOLOR);
433- color.a *= a;
434-
435437 m_seExtents = {{0 , **PHEIGHT}, {}};
436438
437439 const auto DECOBOX = assignedBoxGlobal ();
@@ -475,7 +477,10 @@ void CHyprBar::renderPass(PHLMONITOR pMonitor, const float& a) {
475477 glStencilOp (GL_KEEP, GL_KEEP, GL_REPLACE);
476478 }
477479
478- g_pHyprOpenGL->renderRect (&titleBarBox, color, scaledRounding);
480+ if (SHOULDBLUR)
481+ g_pHyprOpenGL->renderRectWithBlur (&titleBarBox, color, scaledRounding, a);
482+ else
483+ g_pHyprOpenGL->renderRect (&titleBarBox, color, scaledRounding);
479484
480485 // render title
481486 if (**PENABLETITLE && (m_szLastTitle != PWINDOW->m_szTitle || m_bWindowSizeChanged || m_pTextTex->m_iTexID == 0 || m_bTitleColorChanged)) {
0 commit comments