X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=scrotwm.c;h=ca2a281be70c36cbb6c22db27e5fdcf51c2d86f6;hb=238662f0274ef1a90c168bedd4eb24281f278eaa;hp=c4a6ae87f4bf2efc1ea4d45c3ee741648531cbcd;hpb=ea47115e91b94c61a8e480d4cddd49233026e11a;p=spectrwm.git diff --git a/scrotwm.c b/scrotwm.c index c4a6ae8..ca2a281 100644 --- a/scrotwm.c +++ b/scrotwm.c @@ -91,6 +91,7 @@ #endif /* #define SWM_DEBUG */ +/* #define SWM_DEBUG */ #ifdef SWM_DEBUG #define DPRINTF(x...) do { if (swm_debug) fprintf(stderr, x); } while(0) #define DNPRINTF(n,x...) do { if (swm_debug & n) fprintf(stderr, x); } while(0) @@ -194,7 +195,6 @@ struct swm_region { }; TAILQ_HEAD(swm_region_list, swm_region); - struct ws_win { TAILQ_ENTRY(ws_win) entry; Window id; @@ -786,7 +786,6 @@ spawn(struct swm_region *r, union arg *args) wait(0); } - void spawnmenu(struct swm_region *r, union arg *args) { @@ -1107,7 +1106,6 @@ stack_floater(struct ws_win *win, struct swm_region *r) XConfigureWindow(display, win->id, mask, &wc); } - void vertical_config(struct workspace *ws, int id) { @@ -1200,6 +1198,9 @@ vertical_stack(struct workspace *ws, struct swm_geometry *g) { win->g.h = wc.height = gg.h; mask = CWX | CWY | CWWidth | CWHeight | CWBorderWidth; XConfigureWindow(display, win->id, mask, &wc); + /* + fprintf(stderr, "vertical_stack: win %d x %d y %d w %d h %d bw %d\n", win->id, win->g.x, win->g.y, win->g.w , win->g.h, wc.border_width); + */ } XMapRaised(display, win->id); @@ -1211,7 +1212,6 @@ vertical_stack(struct workspace *ws, struct swm_geometry *g) { focus_win(winfocus); /* has to be done outside of the loop */ } - void horizontal_config(struct workspace *ws, int id) { @@ -1394,6 +1394,14 @@ send_to_ws(struct swm_region *r, union arg *args) stack(); } +void +wkill(struct swm_region *r, union arg *args) +{ + DNPRINTF(SWM_D_MISC, "wkill\n"); + if(r->ws->focus != NULL) + XKillClient(display, r->ws->focus->id); +} + /* key definitions */ struct key { unsigned int mod; @@ -1443,6 +1451,7 @@ struct key { { MODKEY, XK_b, bar_toggle, {0} }, { MODKEY, XK_Tab, focus, {.id = SWM_ARG_ID_FOCUSNEXT} }, { MODKEY | ShiftMask, XK_Tab, focus, {.id = SWM_ARG_ID_FOCUSPREV} }, + { MODKEY | ShiftMask, XK_x, wkill, {0} }, }; void @@ -1637,7 +1646,9 @@ manage_window(Window id, struct workspace *ws) win->g.h = win->wa.height; win->g.x = win->wa.x; win->g.y = win->wa.y; - + /* + fprintf(stderr, "manage window: %d x %d y %d w %d h %d\n", win->id, win->g.x, win->g.y, win->g.w, win->g.h); + */ /* XXX make this a table */ bzero(&ch, sizeof ch); if (XGetClassHint(display, win->id, &ch)) { @@ -1664,7 +1675,7 @@ configurerequest(XEvent *e) { XConfigureRequestEvent *ev = &e->xconfigurerequest; struct ws_win *win; - int new = 1; + int new = 0; XWindowChanges wc; if ((win = find_window(ev->window)) == NULL) @@ -1673,6 +1684,10 @@ configurerequest(XEvent *e) if (new) { DNPRINTF(SWM_D_EVENT, "configurerequest: new window: %lu\n", ev->window); + /* + fprintf(stderr, "configurerequest: new window: %lu x %d y %d w %d h %d bw %d s %d sm %d\n", + ev->window, ev->x, ev->y, ev->width, ev->height, ev->border_width, ev->above, ev->detail); + */ bzero(&wc, sizeof wc); wc.x = ev->x; wc.y = ev->y; @@ -1683,6 +1698,10 @@ configurerequest(XEvent *e) wc.stack_mode = ev->detail; XConfigureWindow(display, ev->window, ev->value_mask, &wc); } else { + /* + fprintf(stderr, "configurerequest: change window: %lu\n", + ev->window); + */ DNPRINTF(SWM_D_EVENT, "configurerequest: change window: %lu\n", ev->window); if (win->floating) { @@ -2005,7 +2024,7 @@ setup_screens(void) else ncrtc = sr->ncrtc; - for (c = 0; c < ncrtc; c++) { + for (c = 0, ci = NULL; c < ncrtc; c++) { ci = XRRGetCrtcInfo(display, sr, sr->crtcs[c]); if (ci->noutput == 0) continue; @@ -2019,7 +2038,8 @@ setup_screens(void) ci->x, ci->y, ci->width, ci->height); w++; } - XRRFreeCrtcInfo(ci); + if (ci) + XRRFreeCrtcInfo(ci); XRRFreeScreenResources(sr); #else new_region(&screens[i], &screens[i].ws[w], 0, 0,