diff --git a/src/config/ConfigDescriptions.hpp b/src/config/ConfigDescriptions.hpp index a2234dccc..2d9582f65 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 0615a1d42..4427906fd 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 9890ba80c..10f1503ac 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;