mirror of
https://codeberg.org/dwl/dwl-patches.git
synced 2025-12-16 09:53:24 +00:00
fix(bar-appicons): fixed compiler warnings
This commit is contained in:
parent
e85e01efd3
commit
955529b809
@ -1,12 +1,12 @@
|
|||||||
From f0c747be0deca64801fe01eebfa78ce5b3d803fe Mon Sep 17 00:00:00 2001
|
From f5d1206f7f467cafd5a0217a46c31928316ba2fe Mon Sep 17 00:00:00 2001
|
||||||
From: Rumen <rumenmitov@protonmail.com>
|
From: Rumen <rumenmitov@protonmail.com>
|
||||||
Date: Fri, 24 Oct 2025 17:14:02 +0200
|
Date: Mon, 1 Dec 2025 20:29:49 +0100
|
||||||
Subject: [PATCH] fix: appicons displaying on all monitors
|
Subject: [PATCH] fix(bar-appicons): fixed various compiler warnings
|
||||||
|
|
||||||
---
|
---
|
||||||
config.def.h | 14 +++--
|
config.def.h | 14 +++--
|
||||||
dwl.c | 142 +++++++++++++++++++++++++++++++++++++++++++++++++--
|
dwl.c | 143 +++++++++++++++++++++++++++++++++++++++++++++++++--
|
||||||
2 files changed, 149 insertions(+), 7 deletions(-)
|
2 files changed, 150 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
diff --git a/config.def.h b/config.def.h
|
diff --git a/config.def.h b/config.def.h
|
||||||
index 1b7472d..a48b78d 100644
|
index 1b7472d..a48b78d 100644
|
||||||
@ -37,7 +37,7 @@ index 1b7472d..a48b78d 100644
|
|||||||
|
|
||||||
/* layout(s) */
|
/* layout(s) */
|
||||||
diff --git a/dwl.c b/dwl.c
|
diff --git a/dwl.c b/dwl.c
|
||||||
index bf340d8..ba6388a 100644
|
index bf340d8..e2baf66 100644
|
||||||
--- a/dwl.c
|
--- a/dwl.c
|
||||||
+++ b/dwl.c
|
+++ b/dwl.c
|
||||||
@@ -143,6 +143,7 @@ typedef struct {
|
@@ -143,6 +143,7 @@ typedef struct {
|
||||||
@ -70,23 +70,22 @@ index bf340d8..ba6388a 100644
|
|||||||
static Monitor *dirtomon(enum wlr_direction dir);
|
static Monitor *dirtomon(enum wlr_direction dir);
|
||||||
+static void remove_outer_separators(char **str);
|
+static void remove_outer_separators(char **str);
|
||||||
+static void appiconsappend(char **str, const char *appicon, size_t new_size);
|
+static void appiconsappend(char **str, const char *appicon, size_t new_size);
|
||||||
+static void applyappicon(char *tag_icons[], int *icons_per_tag, const Client *c);
|
+static void applyappicon(char *tag_icons[], unsigned int *icons_per_tag, const Client *c);
|
||||||
static void drawbar(Monitor *m);
|
static void drawbar(Monitor *m);
|
||||||
static void drawbars(void);
|
static void drawbars(void);
|
||||||
static void focusclient(Client *c, int lift);
|
static void focusclient(Client *c, int lift);
|
||||||
@@ -520,6 +526,11 @@ applybounds(Client *c, struct wlr_box *bbox)
|
@@ -527,12 +533,19 @@ applyrules(Client *c)
|
||||||
void
|
const Rule *r;
|
||||||
applyrules(Client *c)
|
Monitor *mon = selmon, *m;
|
||||||
{
|
|
||||||
+ outer_separator_beg = outer_separator_beg ? outer_separator_beg : ' ';
|
+ outer_separator_beg = outer_separator_beg ? outer_separator_beg : ' ';
|
||||||
+ outer_separator_end = outer_separator_end ? outer_separator_end : ' ';
|
+ outer_separator_end = outer_separator_end ? outer_separator_end : ' ';
|
||||||
+ inner_separator = inner_separator ? inner_separator : ' ';
|
+ inner_separator = inner_separator ? inner_separator : ' ';
|
||||||
+ truncate_icons_after = truncate_icons_after > 0 ? truncate_icons_after : 1;
|
+ truncate_icons_after = truncate_icons_after > 0 ? truncate_icons_after : 1;
|
||||||
+
|
+
|
||||||
/* rule matching */
|
appid = client_get_appid(c);
|
||||||
const char *appid, *title;
|
title = client_get_title(c);
|
||||||
uint32_t newtags = 0;
|
|
||||||
@@ -533,6 +544,8 @@ applyrules(Client *c)
|
|
||||||
for (r = rules; r < END(rules); r++) {
|
for (r = rules; r < END(rules); r++) {
|
||||||
if ((!r->title || strstr(title, r->title))
|
if ((!r->title || strstr(title, r->title))
|
||||||
&& (!r->id || strstr(appid, r->id))) {
|
&& (!r->id || strstr(appid, r->id))) {
|
||||||
@ -108,9 +107,9 @@ index bf340d8..ba6388a 100644
|
|||||||
wlr_output_layout_remove(output_layout, m->wlr_output);
|
wlr_output_layout_remove(output_layout, m->wlr_output);
|
||||||
wlr_scene_output_destroy(m->scene_output);
|
wlr_scene_output_destroy(m->scene_output);
|
||||||
|
|
||||||
+ for (int i = 0; i < LENGTH(tags); i++) {
|
+ for (long unsigned int tag_idx = 0; tag_idx < LENGTH(tags); tag_idx++) {
|
||||||
+ if (m->tag_icons[i]) free(m->tag_icons[i]);
|
+ if (m->tag_icons[tag_idx]) free(m->tag_icons[tag_idx]);
|
||||||
+ m->tag_icons[i] = NULL;
|
+ m->tag_icons[tag_idx] = NULL;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ if (m->tag_icons) {
|
+ if (m->tag_icons) {
|
||||||
@ -128,21 +127,22 @@ index bf340d8..ba6388a 100644
|
|||||||
+
|
+
|
||||||
+ m->tag_icons = (char**) malloc(LENGTH(tags) * sizeof(char*));
|
+ m->tag_icons = (char**) malloc(LENGTH(tags) * sizeof(char*));
|
||||||
+ if (m->tag_icons == NULL) perror("dwm: malloc()");
|
+ if (m->tag_icons == NULL) perror("dwm: malloc()");
|
||||||
+ for (int i = 0; i < LENGTH(tags); i++) {
|
+ for (long unsigned int tag_idx = 0; tag_idx < LENGTH(tags); tag_idx++) {
|
||||||
+ m->tag_icons[i] = NULL;
|
+ m->tag_icons[tag_idx] = NULL;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
wlr_output_state_set_scale(&state, r->scale);
|
wlr_output_state_set_scale(&state, r->scale);
|
||||||
wlr_output_state_set_transform(&state, r->rr);
|
wlr_output_state_set_transform(&state, r->rr);
|
||||||
break;
|
break;
|
||||||
@@ -1566,6 +1596,97 @@ dirtomon(enum wlr_direction dir)
|
@@ -1566,6 +1596,98 @@ dirtomon(enum wlr_direction dir)
|
||||||
return selmon;
|
return selmon;
|
||||||
}
|
}
|
||||||
|
|
||||||
+void
|
+void
|
||||||
+remove_outer_separators(char **str)
|
+remove_outer_separators(char **str)
|
||||||
+{
|
+{
|
||||||
+ size_t clean_tag_name_len = strlen(*str) - 2;
|
+ const char *clean_tag_name_beg = *str + 1;
|
||||||
|
+ const size_t clean_tag_name_len = strlen(*str) - 2;
|
||||||
+
|
+
|
||||||
+ char *temp_tag_name = (char*)
|
+ char *temp_tag_name = (char*)
|
||||||
+ malloc(clean_tag_name_len + 1);
|
+ malloc(clean_tag_name_len + 1);
|
||||||
@ -151,7 +151,6 @@ index bf340d8..ba6388a 100644
|
|||||||
+
|
+
|
||||||
+ memset(temp_tag_name, 0, clean_tag_name_len + 1);
|
+ memset(temp_tag_name, 0, clean_tag_name_len + 1);
|
||||||
+
|
+
|
||||||
+ char *clean_tag_name_beg = *str + 1;
|
|
||||||
+ strncpy(temp_tag_name,
|
+ strncpy(temp_tag_name,
|
||||||
+ clean_tag_name_beg,
|
+ clean_tag_name_beg,
|
||||||
+ clean_tag_name_len);
|
+ clean_tag_name_len);
|
||||||
@ -185,8 +184,12 @@ index bf340d8..ba6388a 100644
|
|||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+void
|
+void
|
||||||
+applyappicon(char *tag_icons[], int *icons_per_tag, const Client *c)
|
+applyappicon(char *tag_icons[], unsigned int *icons_per_tag, const Client *c)
|
||||||
+{
|
+{
|
||||||
|
+ const size_t outer_separators_size = 2;
|
||||||
|
+ const size_t inner_separator_size = 1;
|
||||||
|
+ size_t new_size = 0;
|
||||||
|
+
|
||||||
+ for (unsigned t = 1, i = 0;
|
+ for (unsigned t = 1, i = 0;
|
||||||
+ i < LENGTH(tags);
|
+ i < LENGTH(tags);
|
||||||
+ t <<= 1, i++)
|
+ t <<= 1, i++)
|
||||||
@ -212,10 +215,7 @@ index bf340d8..ba6388a 100644
|
|||||||
+ remove_outer_separators(&tag_icons[i]);
|
+ remove_outer_separators(&tag_icons[i]);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ size_t outer_separators_size = 2;
|
+ new_size = strlen(tag_icons[i])
|
||||||
+ size_t inner_separator_size = 1;
|
|
||||||
+
|
|
||||||
+ size_t new_size = strlen(tag_icons[i])
|
|
||||||
+ + outer_separators_size
|
+ + outer_separators_size
|
||||||
+ + inner_separator_size
|
+ + inner_separator_size
|
||||||
+ + strlen(icon)
|
+ + strlen(icon)
|
||||||
@ -233,16 +233,23 @@ index bf340d8..ba6388a 100644
|
|||||||
void
|
void
|
||||||
drawbar(Monitor *m)
|
drawbar(Monitor *m)
|
||||||
{
|
{
|
||||||
@@ -1588,9 +1709,22 @@ drawbar(Monitor *m)
|
@@ -1575,6 +1697,7 @@ drawbar(Monitor *m)
|
||||||
|
uint32_t i, occ = 0, urg = 0;
|
||||||
|
Client *c;
|
||||||
|
Buffer *buf;
|
||||||
|
+ unsigned int icons_per_tag[LENGTH(tags)];
|
||||||
|
|
||||||
|
if (!m->scene_buffer->node.enabled)
|
||||||
|
return;
|
||||||
|
@@ -1588,9 +1711,21 @@ drawbar(Monitor *m)
|
||||||
drwl_text(m->drw, m->b.width - tw, 0, tw, m->b.height, 0, stext, 0);
|
drwl_text(m->drw, m->b.width - tw, 0, tw, m->b.height, 0, stext, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
+ int icons_per_tag[LENGTH(tags)];
|
|
||||||
+ memset(icons_per_tag, 0, LENGTH(tags) * sizeof(int));
|
+ memset(icons_per_tag, 0, LENGTH(tags) * sizeof(int));
|
||||||
+
|
+
|
||||||
+ for (int i = 0; i < LENGTH(tags); i++) {
|
+ for (long unsigned int tag_idx = 0; tag_idx < LENGTH(tags); tag_idx++) {
|
||||||
+ /* set each tag to default value */
|
+ /* set each tag to default value */
|
||||||
+ m->tag_icons[i] = strndup(tags[i], strlen(tags[i]));
|
+ m->tag_icons[tag_idx] = strndup(tags[tag_idx], strlen(tags[tag_idx]));
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
wl_list_for_each(c, &clients, link) {
|
wl_list_for_each(c, &clients, link) {
|
||||||
@ -256,7 +263,7 @@ index bf340d8..ba6388a 100644
|
|||||||
occ |= c->tags;
|
occ |= c->tags;
|
||||||
if (c->isurgent)
|
if (c->isurgent)
|
||||||
urg |= c->tags;
|
urg |= c->tags;
|
||||||
@@ -1598,10 +1732,10 @@ drawbar(Monitor *m)
|
@@ -1598,10 +1733,10 @@ drawbar(Monitor *m)
|
||||||
x = 0;
|
x = 0;
|
||||||
c = focustop(m);
|
c = focustop(m);
|
||||||
for (i = 0; i < LENGTH(tags); i++) {
|
for (i = 0; i < LENGTH(tags); i++) {
|
||||||
@ -271,5 +278,5 @@ index bf340d8..ba6388a 100644
|
|||||||
m == selmon && c && c->tags & 1 << i,
|
m == selmon && c && c->tags & 1 << i,
|
||||||
urg & 1 << i);
|
urg & 1 << i);
|
||||||
--
|
--
|
||||||
2.51.1
|
2.52.0
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user