#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)
};
TAILQ_HEAD(swm_region_list, swm_region);
-
struct ws_win {
TAILQ_ENTRY(ws_win) entry;
Window id;
if (!strncmp(var, "bar_enabled", strlen("bar_enabled")))
bar_enabled = atoi(val);
else if (!varmatch(var, "bar_border", &i))
- setscreencolor(var, i, SWM_S_COLOR_BAR_BORDER);
+ setscreencolor(val, i, SWM_S_COLOR_BAR_BORDER);
else if (!varmatch(var, "bar_color", &i))
- setscreencolor(var, i, SWM_S_COLOR_BAR);
+ setscreencolor(val, i, SWM_S_COLOR_BAR);
else if (!varmatch(var, "bar_font_color", &i))
- setscreencolor(var, i, SWM_S_COLOR_BAR_FONT);
+ setscreencolor(val, i, SWM_S_COLOR_BAR_FONT);
else if (!strncmp(var, "bar_font", strlen("bar_font")))
asprintf(&bar_fonts[0], "%s", val);
else if (!strncmp(var, "bar_action", strlen("bar_action")))
case 'c':
if (!varmatch(var, "color_focus", &i))
- setscreencolor(var, i, SWM_S_COLOR_FOCUS);
+ setscreencolor(val, i, SWM_S_COLOR_FOCUS);
else if (!varmatch(var, "color_unfocus", &i))
- setscreencolor(var, i, SWM_S_COLOR_UNFOCUS);
+ setscreencolor(val, i, SWM_S_COLOR_UNFOCUS);
else if (!strncmp(var, "cycle_empty", strlen("cycle_empty")))
cycle_visible = atoi(val);
else if (!strncmp(var, "cycle_visible", strlen("cycle_visible")))
wait(0);
}
-
void
spawnmenu(struct swm_region *r, union arg *args)
{
XConfigureWindow(display, win->id, mask, &wc);
}
-
void
vertical_config(struct workspace *ws, int id)
{
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);
focus_win(winfocus); /* has to be done outside of the loop */
}
-
void
horizontal_config(struct workspace *ws, int id)
{
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;
{ 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
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)) {
{
XConfigureRequestEvent *ev = &e->xconfigurerequest;
struct ws_win *win;
- int new = 1;
+ int new = 0;
XWindowChanges wc;
if ((win = find_window(ev->window)) == NULL)
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;
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) {
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;
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,