diff options
| author | JozanLeClerc <bousset.rudy@gmail.com> | 2020-11-10 13:19:56 +0100 | 
|---|---|---|
| committer | JozanLeClerc <bousset.rudy@gmail.com> | 2020-11-10 13:19:56 +0100 | 
| commit | b88b8ca07441059ab91d872847b86ac1d64af25c (patch) | |
| tree | 0bf7a7619aa1425a44dc12d27600d528aa36e0f8 | |
| parent | Changed optimization level (diff) | |
| download | dwm-b88b8ca07441059ab91d872847b86ac1d64af25c.tar.gz dwm-b88b8ca07441059ab91d872847b86ac1d64af25c.tar.bz2 dwm-b88b8ca07441059ab91d872847b86ac1d64af25c.tar.xz dwm-b88b8ca07441059ab91d872847b86ac1d64af25c.tar.zst dwm-b88b8ca07441059ab91d872847b86ac1d64af25c.zip | |
Removed swallow patch
Diffstat (limited to '')
| -rw-r--r-- | README | 1 | ||||
| -rw-r--r-- | README.org | 1 | ||||
| -rw-r--r-- | config.h | 15 | ||||
| -rw-r--r-- | config.mk | 3 | ||||
| -rw-r--r-- | dwm.c | 235 | 
5 files changed, 15 insertions, 240 deletions
| @@ -62,7 +62,6 @@ List of patches in use:  - noborder  - pertag  - restartsig -- swallow  My own autostart script can be found under my dotfiles-bsd repository:  https://git.jozanleclerc.xyz/jozan/dotfiles-bsd/files.html @@ -59,7 +59,6 @@ List of patches in use:  - /noborder/  - /pertag/  - /restartsig/ -- /swallow/  My own autostart script can be found under my  [[https://git.jozanleclerc.xyz/jozan/dotfiles-bsd/files.html][dotfiles-bsd]] repository. It should @@ -3,7 +3,7 @@  /* appearance */  static const unsigned int borderpx  = 1;        /* border pixel of windows */  static const unsigned int snap      = 32;       /* snap pixel */ -static const int swallowfloating    = 1;        /* 1 means swallow floating windows by default */ +static const int swallowfloating    = 0;        /* 1 means swallow floating windows by default */  static const int showbar            = 0;        /* 0 means no bar */  static const int topbar             = 1;        /* 0 means bottom bar */  static const int focusonwheel       = 0; @@ -21,6 +21,8 @@ static const char *colors[][3]      = {  static const char *const autostart[] = {  	"/home/jozan/.config/dwm/dwmrc", NULL, +	"/usr/local/bin/notify-send", "-u", "normal", "\uf30c", "Welcome back, partner!", NULL, +	"/usr/local/bin/espeak", "Welcome back, partner!", NULL,  	NULL /* terminate */  }; @@ -32,12 +34,11 @@ static const Rule rules[] = {  	 *	WM_CLASS(STRING) = instance, class  	 *	WM_NAME(STRING) = title  	 */ -	/* class         instance  title             tags mask  isfloating  isterminal  noswallow  monitor */ -	{ "Gimp",        NULL,     NULL,             0,         1,          0,           0,        -1 }, -	{ "Firefox",     NULL,     NULL,             1 << 2,    0,          0,          -1,        -1 }, -	{ "st-256color", NULL,     NULL,             0,         0,          1,           0,        -1 }, -	{ NULL,          NULL,     "DergodsRealmII", 0,         1,          0,           1,        -1 }, -	{ NULL,          NULL,     "Event Tester",   0,         0,          0,           1,        -1 }, /* xev */ +	/* class         instance  title             tags mask  isfloating  monitor */ +	{ "Firefox",     NULL,     NULL,             1 << 2,    0,          -1 }, +	{ "st-256color", NULL,     NULL,             0,         0,          -1 }, +	{ NULL,          NULL,     "DergodsRealmII", 0,         1,          -1 }, +	{ NULL,          NULL,     "Event Tester",   0,         0,          -1 }, /* xev */  };  /* layout(s) */ @@ -19,11 +19,10 @@ FREETYPELIBS = -lfontconfig -lXft  FREETYPEINC = /usr/local/include/freetype2  # OpenBSD (uncomment)  #FREETYPEINC = ${X11INC}/freetype2 -#KVMLIB = -lkvm  # includes and libs  INCS = -I${X11INC} -I${FREETYPEINC} -LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS} ${FREETYPELIBS} -lX11-xcb -lxcb -lxcb-res ${KVMLIB} +LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS} ${FREETYPELIBS}  # flags  CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_POSIX_C_SOURCE=200809L -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS} @@ -40,12 +40,6 @@  #include <X11/extensions/Xinerama.h>  #endif /* XINERAMA */  #include <X11/Xft/Xft.h> -#include <X11/Xlib-xcb.h> -#include <xcb/res.h> -#ifdef __OpenBSD__ -#include <sys/sysctl.h> -#include <kvm.h> -#endif /* __OpenBSD */  #include "drw.h"  #include "util.h" @@ -99,11 +93,9 @@ struct Client {  	int basew, baseh, incw, inch, maxw, maxh, minw, minh;  	int bw, oldbw;  	unsigned int tags; -	int isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen, isterminal, noswallow; -	pid_t pid; +	int isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen;  	Client *next;  	Client *snext; -	Client *swallowing;  	Monitor *mon;  	Window win;  }; @@ -149,8 +141,6 @@ typedef struct {  	const char *title;  	unsigned int tags;  	int isfloating; -	int isterminal; -	int noswallow;  	int monitor;  } Rule; @@ -254,12 +244,6 @@ static int xerrorstart(Display *dpy, XErrorEvent *ee);  static void zoom(const Arg *arg);  static void autostart_exec(void); -static pid_t getparentprocess(pid_t p); -static int isdescprocess(pid_t p, pid_t c); -static Client *swallowingclient(Window w); -static Client *termforwin(const Client *c); -static pid_t winpid(Window w); -  /* variables */  static const char broken[] = "broken";  static char stext[256]; @@ -293,8 +277,6 @@ static Drw *drw;  static Monitor *mons, *selmon;  static Window root, wmcheckwin; -static xcb_connection_t *xcon; -  /* configuration, allows nested code to access above variables */  #include "config.h" @@ -360,8 +342,6 @@ applyrules(Client *c)  		&& (!r->class || strstr(class, r->class))  		&& (!r->instance || strstr(instance, r->instance)))  		{ -			c->isterminal = r->isterminal; -			c->noswallow  = r->noswallow;  			c->isfloating = r->isfloating;  			c->tags |= r->tags;  			for (m = mons; m && m->num != r->monitor; m = m->next); @@ -491,53 +471,6 @@ attachstack(Client *c)  }  void -swallow(Client *p, Client *c) -{ - -	if (c->noswallow || c->isterminal) -		return; -	if (c->noswallow && !swallowfloating && c->isfloating) -		return; - -	detach(c); -	detachstack(c); - -	setclientstate(c, WithdrawnState); -	XUnmapWindow(dpy, p->win); - -	p->swallowing = c; -	c->mon = p->mon; - -	Window w = p->win; -	p->win = c->win; -	c->win = w; -	updatetitle(p); -	XMoveResizeWindow(dpy, p->win, p->x, p->y, p->w, p->h); -	arrange(p->mon); -	configure(p); -	updateclientlist(); -} - -void -unswallow(Client *c) -{ -	c->win = c->swallowing->win; - -	free(c->swallowing); -	c->swallowing = NULL; - -	/* unfullscreen the client */ -	setfullscreen(c, 0); -	updatetitle(c); -	arrange(c->mon); -	XMapWindow(dpy, c->win); -	XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h); -	setclientstate(c, NormalState); -	focus(NULL); -	arrange(c->mon); -} - -void  buttonpress(XEvent *e)  {  	unsigned int i, x, click; @@ -793,9 +726,6 @@ destroynotify(XEvent *e)  	if ((c = wintoclient(ev->window)))  		unmanage(c, 1); - -	else if ((c = swallowingclient(ev->window))) -		unmanage(c->swallowing, 1);  }  void @@ -1142,13 +1072,12 @@ killclient(const Arg *arg)  void  manage(Window w, XWindowAttributes *wa)  { -	Client *c, *t = NULL, *term = NULL; +	Client *c, *t = NULL;  	Window trans = None;  	XWindowChanges wc;  	c = ecalloc(1, sizeof(Client));  	c->win = w; -	c->pid = winpid(w);  	/* geometry */  	c->x = c->oldx = wa->x;  	c->y = c->oldy = wa->y; @@ -1163,7 +1092,6 @@ manage(Window w, XWindowAttributes *wa)  	} else {  		c->mon = selmon;  		applyrules(c); -		term = termforwin(c);  	}  	if (c->x + WIDTH(c) > c->mon->mx + c->mon->mw) @@ -1202,8 +1130,6 @@ manage(Window w, XWindowAttributes *wa)  	c->mon->sel = c;  	arrange(c->mon);  	XMapWindow(dpy, c->win); -	if (term) -		swallow(term, c);  	focus(NULL);  } @@ -2117,20 +2043,6 @@ unmanage(Client *c, int destroyed)  	Monitor *m = c->mon;  	XWindowChanges wc; -	if (c->swallowing) { -		unswallow(c); -		return; -	} - -	Client *s = swallowingclient(c->win); -	if (s) { -		free(s->swallowing); -		s->swallowing = NULL; -		arrange(m); -		focus(NULL); -		return; -	} -  	detach(c);  	detachstack(c);  	if (!destroyed) { @@ -2145,12 +2057,9 @@ unmanage(Client *c, int destroyed)  		XUngrabServer(dpy);  	}  	free(c); - -	if (!s) { -		arrange(m); -		focus(NULL); -		updateclientlist(); -	} +	focus(NULL); +	updateclientlist(); +	arrange(m);  }  void @@ -2434,136 +2343,6 @@ view(const Arg *arg)  	arrange(selmon);  } -pid_t -winpid(Window w) -{ - -	pid_t result = 0; - -	#ifdef __linux__ -	xcb_res_client_id_spec_t spec = {0}; -	spec.client = w; -	spec.mask = XCB_RES_CLIENT_ID_MASK_LOCAL_CLIENT_PID; - -	xcb_generic_error_t *e = NULL; -	xcb_res_query_client_ids_cookie_t c = xcb_res_query_client_ids(xcon, 1, &spec); -	xcb_res_query_client_ids_reply_t *r = xcb_res_query_client_ids_reply(xcon, c, &e); - -	if (!r) -		return (pid_t)0; - -	xcb_res_client_id_value_iterator_t i = xcb_res_query_client_ids_ids_iterator(r); -	for (; i.rem; xcb_res_client_id_value_next(&i)) { -		spec = i.data->spec; -		if (spec.mask & XCB_RES_CLIENT_ID_MASK_LOCAL_CLIENT_PID) { -			uint32_t *t = xcb_res_client_id_value_value(i.data); -			result = *t; -			break; -		} -	} - -	free(r); - -	if (result == (pid_t)-1) -		result = 0; - -	#endif /* __linux__ */ - -	#ifdef __OpenBSD__ -        Atom type; -        int format; -        unsigned long len, bytes; -        unsigned char *prop; -        pid_t ret; - -        if (XGetWindowProperty(dpy, w, XInternAtom(dpy, "_NET_WM_PID", 1), 0, 1, False, AnyPropertyType, &type, &format, &len, &bytes, &prop) != Success || !prop) -               return 0; - -        ret = *(pid_t*)prop; -        XFree(prop); -        result = ret; - -	#endif /* __OpenBSD__ */ -	return result; -} - -pid_t -getparentprocess(pid_t p) -{ -	unsigned int v = 0; - -#ifdef __linux__ -	FILE *f; -	char buf[256]; -	snprintf(buf, sizeof(buf) - 1, "/proc/%u/stat", (unsigned)p); - -	if (!(f = fopen(buf, "r"))) -		return 0; - -	fscanf(f, "%*u %*s %*c %u", &v); -	fclose(f); -#endif /* __linux__*/ - -#ifdef __OpenBSD__ -	int n; -	kvm_t *kd; -	struct kinfo_proc *kp; - -	kd = kvm_openfiles(NULL, NULL, NULL, KVM_NO_FILES, NULL); -	if (!kd) -		return 0; - -	kp = kvm_getprocs(kd, KERN_PROC_PID, p, sizeof(*kp), &n); -	v = kp->p_ppid; -#endif /* __OpenBSD__ */ - -	return (pid_t)v; -} - -int -isdescprocess(pid_t p, pid_t c) -{ -	while (p != c && c != 0) -		c = getparentprocess(c); - -	return (int)c; -} - -Client * -termforwin(const Client *w) -{ -	Client *c; -	Monitor *m; - -	if (!w->pid || w->isterminal) -		return NULL; - -	for (m = mons; m; m = m->next) { -		for (c = m->clients; c; c = c->next) { -			if (c->isterminal && !c->swallowing && c->pid && isdescprocess(c->pid, w->pid)) -				return c; -		} -	} - -	return NULL; -} - -Client * -swallowingclient(Window w) -{ -	Client *c; -	Monitor *m; - -	for (m = mons; m; m = m->next) { -		for (c = m->clients; c; c = c->next) { -			if (c->swallowing && c->swallowing->win == w) -				return c; -		} -	} - -	return NULL; -} -  Client *  wintoclient(Window w)  { @@ -2655,13 +2434,11 @@ main(int argc, char *argv[])  		fputs("warning: no locale support\n", stderr);  	if (!(dpy = XOpenDisplay(NULL)))  		die("dwm: cannot open display"); -	if (!(xcon = XGetXCBConnection(dpy))) -		die("dwm: cannot get xcb connection\n");  	checkotherwm();  	autostart_exec();  	setup();  #ifdef __OpenBSD__ -	if (pledge("stdio rpath proc exec ps", NULL) == -1) +	if (pledge("stdio rpath proc exec", NULL) == -1)  		die("pledge");  #endif /* __OpenBSD__ */  	scan(); | 
