[repo.or.cz] wmaker-crm.git branch master updated: wmaker-0.96.0-70-g073235ada42e

1 view
Skip to first unread message

crmafra

unread,
Feb 22, 2026, 4:24:29 AM (3 days ago) Feb 22
to wmake...@googlegroups.com
This is an automated email generated because a ref change occurred in the
git repository for project wmaker-crm.git.

The branch, master has been updated
via 073235ada42e04d0eed0e70a2edd432cdef2a5eb (commit)
via 1b8eb63376da4cc0f9c97021816e9f58a981b34d (commit)
from 75a8299d18064b1601107698e7ea867885ff1a4f (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 073235ada42e04d0eed0e70a2edd432cdef2a5eb
Author: David Maciejak <david.m...@gmail.com>
Date: Sat, 21 Feb 2026 14:54:48 -0500
URL: <https://repo.or.cz/wmaker-crm.git/073235ada42e04d0>

wmaker: set proper group window class when hint is empty

This patch is setting a proper class hint internally
when the app is not setting any.
That issue can be reproduced with terminator 2.1.3,
where the window itself is setting a proper WM_CLASS

$ xprop|grep WM_CLASS
WM_CLASS(STRING) = "terminator", "Terminator

But the window id # of group leader: 0x1000001
is setting only the instance name not the class name.
$ xprop -id 0x1000001|grep CLASS
WM_CLASS(STRING) = "terminator", ""

The issue is that wmaker is using those 2 string values
for the dock apps and to identify linked launched apps.
Those strings are concatenated and used in WMWindowAttributes.
Without the patch, that entry below is created:

terminator. = {
Icon = terminator..xpm;
};

If wmaker is warm restarted, a new entry appears in WMWindowAttributes:

terminator. = {
Icon = terminator..xpm;
};

terminator = {
Icon = terminator..xpm;
};

and the opened window is not linked anymore to the dock app as the
WM_CLASS is different.
So you can launch the app as many times as you want from the dock,
the dock icon will
always have the 3 dots on the bottom left corner showing no window
apps are linked to it.

In case if the group window is not defining a CLASS but the client window
has one, the patch is setting the group window CLASS to the value of the
client window CLASS, or as a fallback, as seen in PropGetWMClass function,
setting it to "default".

With the patch, in WMWindowAttributes, we have now:
terminator.Terminator = {
Icon = terminator.Terminator.xpm;
};

and a warm restart is not creating another entry.
---
src/window.c | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/src/window.c b/src/window.c
index e56bb638a77b..978f7b88bbc1 100644
--- a/src/window.c
+++ b/src/window.c
@@ -848,6 +848,12 @@ WWindow *wManageWindow(WScreen *scr, Window window)

/* // only enter here if PropGetWMClass() succeeds */
PropGetWMClass(wwin->main_window, &class, &instance);
+ if (!class || class[0] == '\0') {
+ if (wwin->wm_class && wwin->wm_class[0] != '\0')
+ class = strdup(wwin->wm_class);
+ else
+ class = strdup("default");
+ }
buffer = StrConcatDot(instance, class);

index = WMFindInArray(scr->fakeGroupLeaders, matchIdentifier, (void *)buffer);

commit 1b8eb63376da4cc0f9c97021816e9f58a981b34d
Author: David Maciejak <david.m...@gmail.com>
Date: Sat, 21 Feb 2026 14:17:53 -0500
URL: <https://repo.or.cz/wmaker-crm.git/1b8eb63376da4cc0>

wmaker: add check in getSize function to prevent X error

This patch is checking if the passed Drawable exists before calling
XGetGeometry on it, as seen when using Steam and trying to change
the attributes of the 'Friends & Chat' popup window, wmaker is
generating such error in the logs:
warning: internal X error: BadDrawable (invalid Pixmap or Window parameter)
Request code: 14 X_GetGeometry
Request minor code: 0
Resource ID: 0x0
Error serial: 32091
---
src/icon.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/icon.c b/src/icon.c
index 14278d2c610c..790bfd29895f 100644
--- a/src/icon.c
+++ b/src/icon.c
@@ -105,6 +105,16 @@ static void tileObserver(void *self, WMNotification *notif)

static int getSize(Drawable d, unsigned int *w, unsigned int *h, unsigned int *dep)
{
+ if (d == None) {
+ if (w)
+ *w = 0;
+ if (h)
+ *h = 0;
+ if (dep)
+ *dep = 0;
+ return 0;
+ }
+
Window rjunk;
int xjunk, yjunk;
unsigned int bjunk;
@@ -195,6 +205,7 @@ static WIcon *icon_create_core(WScreen *scr, int coord_x, int coord_y)
/* Icon image */
icon->file = NULL;
icon->file_image = NULL;
+ icon->icon_win = None;

return icon;
}
@@ -752,7 +763,10 @@ static void set_dockapp_in_icon(WIcon *icon)

/* We need the application size to center it
* and show in the correct position */
- getSize(icon->icon_win, &w, &h, &d);
+ if (!getSize(icon->icon_win, &w, &h, &d)) {
+ wwarning("Drawable invalid, skip reparenting dock app to icon.");
+ return;
+ }

/* Set the background pixmap */
XSetWindowBackgroundPixmap(dpy, icon->core->window, scr->icon_tile_pixmap);

-----------------------------------------------------------------------

Summary of changes:
src/icon.c | 16 +++++++++++++++-
src/window.c | 6 ++++++
2 files changed, 21 insertions(+), 1 deletion(-)


repo.or.cz automatic notification. Contact project admin crm...@gmail.com
if you want to unsubscribe, or site admin ad...@repo.or.cz if you receive
no reply.
--
wmaker-crm.git ("The Window Maker window manager")
Reply all
Reply to author
Forward
0 new messages