dwm.c
changeset 1063 664b404421fe
parent 1062 767e76426fda
child 1064 5fd0dd420ebf
equal deleted inserted replaced
1062:767e76426fda 1063:664b404421fe
    51 
    51 
    52 /* enums */
    52 /* enums */
    53 enum { BarTop, BarBot, BarOff };			/* bar position */
    53 enum { BarTop, BarBot, BarOff };			/* bar position */
    54 enum { CurNormal, CurResize, CurMove, CurLast };	/* cursor */
    54 enum { CurNormal, CurResize, CurMove, CurLast };	/* cursor */
    55 enum { ColBorder, ColFG, ColBG, ColLast };		/* color */
    55 enum { ColBorder, ColFG, ColBG, ColLast };		/* color */
    56 enum { NetSupported, NetWMName, NetLast };		/* EWMH atoms */
    56 enum { NetSupported, NetWMCheck, NetWMName, NetLast };	/* EWMH atoms */
    57 enum { WMProtocols, WMDelete, WMName, WMState, WMLast };/* default atoms */
    57 enum { WMProtocols, WMDelete, WMName, WMState, WMLast };/* default atoms */
    58 
    58 
    59 /* typedefs */
    59 /* typedefs */
    60 typedef struct Client Client;
    60 typedef struct Client Client;
    61 struct Client {
    61 struct Client {
  1425 
  1425 
  1426 void
  1426 void
  1427 setup(void) {
  1427 setup(void) {
  1428 	int d;
  1428 	int d;
  1429 	unsigned int i, j, mask;
  1429 	unsigned int i, j, mask;
       
  1430 	Atom utf8string;
  1430 	Window w;
  1431 	Window w;
  1431 	XModifierKeymap *modmap;
  1432 	XModifierKeymap *modmap;
  1432 	XSetWindowAttributes wa;
  1433 	XSetWindowAttributes wa;
  1433 
  1434 
  1434 	/* init atoms */
  1435 	/* init atoms */
       
  1436 	utf8string = XInternAtom(dpy, "UTF8_STRING", False);
  1435 	wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);
  1437 	wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);
  1436 	wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False);
  1438 	wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False);
  1437 	wmatom[WMName] = XInternAtom(dpy, "WM_NAME", False);
  1439 	wmatom[WMName] = XInternAtom(dpy, "WM_NAME", False);
  1438 	wmatom[WMState] = XInternAtom(dpy, "WM_STATE", False);
  1440 	wmatom[WMState] = XInternAtom(dpy, "WM_STATE", False);
  1439 	netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False);
  1441 	netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False);
       
  1442 	netatom[NetWMCheck] = XInternAtom(dpy, "_NET_SUPPORTING_WM_CHECK", False);
  1440 	netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False);
  1443 	netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False);
  1441 	XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32,
       
  1442 			PropModeReplace, (unsigned char *) netatom, NetLast);
       
  1443 
  1444 
  1444 	/* init cursors */
  1445 	/* init cursors */
  1445 	cursor[CurNormal] = XCreateFontCursor(dpy, XC_left_ptr);
  1446 	cursor[CurNormal] = XCreateFontCursor(dpy, XC_left_ptr);
  1446 	cursor[CurResize] = XCreateFontCursor(dpy, XC_sizing);
  1447 	cursor[CurResize] = XCreateFontCursor(dpy, XC_sizing);
  1447 	cursor[CurMove] = XCreateFontCursor(dpy, XC_fleur);
  1448 	cursor[CurMove] = XCreateFontCursor(dpy, XC_fleur);
  1512 	if(!dc.font.set)
  1513 	if(!dc.font.set)
  1513 		XSetFont(dpy, dc.gc, dc.font.xfont->fid);
  1514 		XSetFont(dpy, dc.gc, dc.font.xfont->fid);
  1514 
  1515 
  1515 	/* multihead support */
  1516 	/* multihead support */
  1516 	selscreen = XQueryPointer(dpy, root, &w, &w, &d, &d, &d, &d, &mask);
  1517 	selscreen = XQueryPointer(dpy, root, &w, &w, &d, &d, &d, &d, &mask);
       
  1518 
       
  1519 	/* EWMH properties */
       
  1520 	XChangeProperty(dpy, barwin, netatom[NetWMCheck], XA_WINDOW, 32,
       
  1521 			PropModeReplace, (unsigned char *) &barwin, 1);
       
  1522 	/* HACK: dwm identifies itself as compiz to workaround the XToolkit bug of Sun JDK */
       
  1523 	XChangeProperty(dpy, barwin, netatom[NetWMName], utf8string, 8,
       
  1524 			PropModeReplace, (unsigned char *) "compiz", 7);
       
  1525 	XChangeProperty(dpy, root, netatom[NetWMCheck], XA_WINDOW, 32,
       
  1526 			PropModeReplace, (unsigned char *) &barwin, 1);
       
  1527 	XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32,
       
  1528 			PropModeReplace, (unsigned char *) netatom, NetLast);
  1517 }
  1529 }
  1518 
  1530 
  1519 void
  1531 void
  1520 spawn(const char *arg) {
  1532 spawn(const char *arg) {
  1521 	static char *shell = NULL;
  1533 	static char *shell = NULL;