dwm-steam-6.2.diff (1891B)
1 From 2550931c66e10e667ce56a6761cbadd12b331c52 Mon Sep 17 00:00:00 2001 2 From: bakkeby <bakkeby@gmail.com> 3 Date: Mon, 10 Aug 2020 16:45:00 +0200 4 Subject: [PATCH] Steam patch 5 6 Steam, and steam windows (games), trigger a ConfigureNotify request every time the window 7 gets focus. More so, the configure event passed along from Steam tends to have the wrong 8 x and y coordinates which can make the window, if floating, jump around the screen. 9 10 This patch works around this age-old issue by ignoring the x and y co-ordinates for 11 ConfigureNotify requests relating to Steam windows. 12 --- 13 dwm.c | 20 +++++++++++++------- 14 1 file changed, 13 insertions(+), 7 deletions(-) 15 16 diff --git a/dwm.c b/dwm.c 17 index 4465af1..598d36d 100644 18 --- a/dwm.c 19 +++ b/dwm.c 20 @@ -93,6 +93,7 @@ struct Client { 21 int bw, oldbw; 22 unsigned int tags; 23 int isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen; 24 + int issteam; 25 Client *next; 26 Client *snext; 27 Monitor *mon; 28 @@ -291,6 +292,9 @@ applyrules(Client *c) 29 class = ch.res_class ? ch.res_class : broken; 30 instance = ch.res_name ? ch.res_name : broken; 31 32 + if (strstr(class, "Steam") || strstr(class, "steam_app_")) 33 + c->issteam = 1; 34 + 35 for (i = 0; i < LENGTH(rules); i++) { 36 r = &rules[i]; 37 if ((!r->title || strstr(c->name, r->title)) 38 @@ -588,13 +592,15 @@ configurerequest(XEvent *e) 39 c->bw = ev->border_width; 40 else if (c->isfloating || !selmon->lt[selmon->sellt]->arrange) { 41 m = c->mon; 42 - if (ev->value_mask & CWX) { 43 - c->oldx = c->x; 44 - c->x = m->mx + ev->x; 45 - } 46 - if (ev->value_mask & CWY) { 47 - c->oldy = c->y; 48 - c->y = m->my + ev->y; 49 + if (!c->issteam) { 50 + if (ev->value_mask & CWX) { 51 + c->oldx = c->x; 52 + c->x = m->mx + ev->x; 53 + } 54 + if (ev->value_mask & CWY) { 55 + c->oldy = c->y; 56 + c->y = m->my + ev->y; 57 + } 58 } 59 if (ev->value_mask & CWWidth) { 60 c->oldw = c->w; 61 -- 62 2.19.1 63