summaryrefslogtreecommitdiff
path: root/somebar/contrib/hide-vacant-tags.patch
diff options
context:
space:
mode:
Diffstat (limited to 'somebar/contrib/hide-vacant-tags.patch')
-rw-r--r--somebar/contrib/hide-vacant-tags.patch54
1 files changed, 54 insertions, 0 deletions
diff --git a/somebar/contrib/hide-vacant-tags.patch b/somebar/contrib/hide-vacant-tags.patch
new file mode 100644
index 0000000..055dd51
--- /dev/null
+++ b/somebar/contrib/hide-vacant-tags.patch
@@ -0,0 +1,54 @@
+From: medanisjbara anis2834133766619@gmail.com
+Date: Mon, 14 Nov 2022 22:52:00
+Description: somebar equivalent of https://dwm.suckless.org/patches/hide_vacant_tags
+diff --git a/src/bar.cpp b/src/bar.cpp
+index fab5a8f..38e7b5f 100644
+--- a/src/bar.cpp
++++ b/src/bar.cpp
+@@ -240,13 +240,36 @@ void Bar::render()
+
+ void Bar::renderTags()
+ {
++ // Check if all tags are active (Mod+0)
++ bool allActive = true;
+ for (auto &tag : _tags) {
++ if (tag.state & TagState::Active){
++ if (!allActive){
++ allActive = true;
++ break;
++ }
++ allActive = false;
++ }
++ }
++
++ bool renderThis;
++ for (auto &tag : _tags) {
++ renderThis = false;
+ setColorScheme(
+ tag.state & TagState::Active ? colorActive : colorInactive,
+ tag.state & TagState::Urgent);
+- renderComponent(tag.component);
++ // Reder active tag if it's the only one active
++ if (!allActive && tag.state & TagState::Active)
++ renderThis = true;
+ auto indicators = std::min(tag.numClients, static_cast<int>(_bufs->height/2));
+ for (auto ind = 0; ind < indicators; ind++) {
++ // render tags having indicators
++ if (tag.focusedClient == -1)
++ renderThis = true;
++ // render tags having the focused client
++ if (tag.focusedClient == 0){
++ renderThis = true;
++ }
+ auto w = ind == tag.focusedClient ? 7 : 1;
+ cairo_move_to(_painter, tag.component.x, ind*2+0.5);
+ cairo_rel_line_to(_painter, w, 0);
+@@ -254,6 +277,8 @@ void Bar::renderTags()
+ cairo_set_line_width(_painter, 1);
+ cairo_stroke(_painter);
+ }
++ if (renderThis)
++ renderComponent(tag.component);
+ }
+ }
+