From 28546a6982fa1b20f4b28ff05fc294f8ecca1e3b Mon Sep 17 00:00:00 2001 From: moetunes Date: Sat, 15 Oct 2011 10:05:37 +1000 Subject: Added having applications open on a specified desktop --- src/dminiwm.c | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) (limited to 'src/dminiwm.c') diff --git a/src/dminiwm.c b/src/dminiwm.c index 321b3c7..4029cf1 100644 --- a/src/dminiwm.c +++ b/src/dminiwm.c @@ -1,4 +1,4 @@ -/* dminiwm.c [ 0.1.2 ] +/* dminiwm.c [ 0.1.3 ] * * I started this from catwm 31/12/10 * Bad window error checking and numlock checking used from @@ -20,11 +20,13 @@ #include //#include #include +#include #include #include #include #include #include +#include #define TABLENGTH(X) (sizeof(X)/sizeof(*X)) @@ -60,6 +62,12 @@ struct desktop{ client *current; }; +typedef struct { + const char *class; + int preferredd; + int followwin; +} Convenience; + // Functions static void add_window(Window w); static void change_desktop(const Arg arg); @@ -682,6 +690,35 @@ void maprequest(XEvent *e) { return; } + XClassHint ch = {0}; + static unsigned int len = sizeof convenience / sizeof convenience[0]; + int i = 0; + int tmp = current_desktop; + if(XGetClassHint(dis, ev->window, &ch)) + for(i=0;iwindow); + if(tmp == convenience[i].preferredd-1) { + XMapWindow(dis, ev->window); + tile(); + update_current(); + } else { + select_desktop(tmp); + } + if(convenience[i].followwin != 0) { + Arg a = {.i = convenience[i].preferredd-1}; + change_desktop(a); + } + if(ch.res_class) + XFree(ch.res_class); + if(ch.res_name) + XFree(ch.res_name); + return; + } + add_window(ev->window); XMapWindow(dis,ev->window); tile(); -- cgit v1.3.1