From 7580a9aaaad09e8c051e69336389cbbf7f447623 Mon Sep 17 00:00:00 2001 From: Martin Date: Sat, 16 Aug 2025 15:14:14 +0200 Subject: [PATCH] renderer: Add rounding power setting to groupbar and gradient roundness. (#11420) --- src/config/ConfigDescriptions.hpp | 12 ++++++++++++ src/config/ConfigManager.cpp | 2 ++ src/render/decorations/CHyprGroupBarDecoration.cpp | 4 ++++ 3 files changed, 18 insertions(+) diff --git a/src/config/ConfigDescriptions.hpp b/src/config/ConfigDescriptions.hpp index a2234dcc..2d9582f6 100644 --- a/src/config/ConfigDescriptions.hpp +++ b/src/config/ConfigDescriptions.hpp @@ -1013,12 +1013,24 @@ inline static const std::vector CONFIG_OPTIONS = { .type = CONFIG_OPTION_INT, .data = SConfigOptionDescription::SRangeData{1, 0, 20}, }, + SConfigOptionDescription{ + .value = "group:groupbar:rounding_power", + .description = "rounding power of groupbar corners (2 is a circle)", + .type = CONFIG_OPTION_FLOAT, + .data = SConfigOptionDescription::SFloatData{2, 2, 10}, + }, SConfigOptionDescription{ .value = "group:groupbar:gradient_rounding", .description = "how much to round the groupbar gradient", .type = CONFIG_OPTION_INT, .data = SConfigOptionDescription::SRangeData{1, 0, 20}, }, + SConfigOptionDescription{ + .value = "group:groupbar:gradient_rounding_power", + .description = "rounding power of groupbar gradient corners (2 is a circle)", + .type = CONFIG_OPTION_FLOAT, + .data = SConfigOptionDescription::SFloatData{2, 2, 10}, + }, SConfigOptionDescription{ .value = "group:groupbar:round_only_edges", .description = "if yes, will only round at the groupbar edges", diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp index 0615a1d4..4427906f 100644 --- a/src/config/ConfigManager.cpp +++ b/src/config/ConfigManager.cpp @@ -525,7 +525,9 @@ CConfigManager::CConfigManager() { registerConfigVar("group:groupbar:text_color_locked_inactive", Hyprlang::INT{-1}); registerConfigVar("group:groupbar:stacked", Hyprlang::INT{0}); registerConfigVar("group:groupbar:rounding", Hyprlang::INT{1}); + registerConfigVar("group:groupbar:rounding_power", {2.F}); registerConfigVar("group:groupbar:gradient_rounding", Hyprlang::INT{2}); + registerConfigVar("group:groupbar:gradient_rounding_power", {2.F}); registerConfigVar("group:groupbar:round_only_edges", Hyprlang::INT{1}); registerConfigVar("group:groupbar:gradient_round_only_edges", Hyprlang::INT{1}); registerConfigVar("group:groupbar:gaps_out", Hyprlang::INT{2}); diff --git a/src/render/decorations/CHyprGroupBarDecoration.cpp b/src/render/decorations/CHyprGroupBarDecoration.cpp index 9890ba80..10f1503a 100644 --- a/src/render/decorations/CHyprGroupBarDecoration.cpp +++ b/src/render/decorations/CHyprGroupBarDecoration.cpp @@ -113,7 +113,9 @@ void CHyprGroupBarDecoration::draw(PHLMONITOR pMonitor, float const& a) { static auto PGRADIENTS = CConfigValue("group:groupbar:gradients"); static auto PSTACKED = CConfigValue("group:groupbar:stacked"); static auto PROUNDING = CConfigValue("group:groupbar:rounding"); + static auto PROUNDINGPOWER = CConfigValue("group:groupbar:rounding_power"); static auto PGRADIENTROUNDING = CConfigValue("group:groupbar:gradient_rounding"); + static auto PGRADIENTROUNDINGPOWER = CConfigValue("group:groupbar:gradient_rounding_power"); static auto PGRADIENTROUNDINGONLYEDGES = CConfigValue("group:groupbar:gradient_round_only_edges"); static auto PROUNDONLYEDGES = CConfigValue("group:groupbar:round_only_edges"); static auto PGROUPCOLACTIVE = CConfigValue("group:groupbar:col.active"); @@ -163,6 +165,7 @@ void CHyprGroupBarDecoration::draw(PHLMONITOR pMonitor, float const& a) { rectdata.color = color; rectdata.box = rect; if (*PROUNDING) { + rectdata.roundingPower = *PROUNDINGPOWER; if (*PROUNDONLYEDGES) { static constexpr double PADDING = 20; @@ -203,6 +206,7 @@ void CHyprGroupBarDecoration::draw(PHLMONITOR pMonitor, float const& a) { data.tex = GRADIENTTEX; data.box = rect; if (*PGRADIENTROUNDING) { + data.roundingPower = *PGRADIENTROUNDINGPOWER; if (*PGRADIENTROUNDINGONLYEDGES) { static constexpr double PADDING = 20;