sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

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