first
[dcc-suckless-config] / bdwm / dwm-steam-6.2.diff
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