about summary refs log tree commit diff stats
Commit message (Collapse)AuthorAgeFilesLines
* makefile now sets permissions for executables and man pagesarg@10ksloc.org2006-07-201-0/+6
|
* removed c->f{x,y,w,h} and c->t{x,y,w,h} in favor for the new rule handling ↵arg@10ksloc.org2006-07-204-114/+85
| | | | remembering two kinds of geometries is unnecessary, removed the randomized (x,y) setting on dofloat startup, was kind too random und unpredictable
* implemented regexp matching for rulesarg@10ksloc.org2006-07-194-32/+40
|
* applied Jukka's patch with s/ModKeyMask/MODKEY/garg@10ksloc.org2006-07-194-24/+25
|
* removed TODO, because dwm is nearly finishedarg@10ksloc.org2006-07-191-1/+0
|
* reapplied my default keybindingsarg@10ksloc.org2006-07-191-1/+10
|
* alternate dwm.pngarg@10ksloc.org2006-07-191-0/+0
|
* Added tag 0.3 for changeset 7e66082e5092fb0bccd18a3695a0bec52c80fdb2arg@10ksloc.org2006-07-191-0/+1
|
* some changes in the html page 0.3arg@10ksloc.org2006-07-191-2/+2
|
* prepared 0.3arg@10ksloc.org2006-07-191-10/+1
|
* fixed the bug mentioned by Sanderarg@10ksloc.org2006-07-191-3/+7
|
* refactored Sanders code somewhatarg@10ksloc.org2006-07-193-15/+8
|
* implemented fallback for too many clients in stacked modearg@10ksloc.org2006-07-192-3/+10
|
* and another fix...arg@10ksloc.org2006-07-191-1/+1
|
* yet another typo fixarg@10ksloc.org2006-07-191-2/+2
|
* fixed a typoarg@10ksloc.org2006-07-191-1/+1
|
* floating clients get random (x,y) offsets nowarg@10ksloc.org2006-07-191-0/+7
|
* applied Sanders resize patch, fixed lower bugarg@10ksloc.org2006-07-195-19/+43
|
* changed CFLAGsarg@mmvi2006-07-181-5/+5
|
* firefox instance is different nowarg@mmvi2006-07-181-1/+1
|
* changed occurrences of wmii.de into 10kloc.org in dwm.html, because ↵Anselm R. Garbe2006-07-181-8/+8
| | | | 10kloc.org is already working
* implemened distinguishing float/managed geometries of clients (works quite well)Anselm R. Garbe2006-07-185-78/+105
|
* pop on heretagAnselm R. Garbe2006-07-183-8/+16
|
* added heretag command which allows to tag a client of a foreign tag with ↵Anselm R. Garbe2006-07-186-10/+42
| | | | current tag
* using EXIT_stuff in exit() nowAnselm R. Garbe2006-07-182-8/+7
|
* simplified MakefileAnselm R. Garbe2006-07-172-3/+2
|
* added new stuffAnselm R. Garbe2006-07-171-9/+6
|
* updated htmlAnselm R. Garbe2006-07-171-9/+9
|
* patched dwmAnselm R. Garbe2006-07-173-30/+46
|
* updated READMEAnselm R. Garbe2006-07-171-2/+2
|
* Added tag 0.2 for changeset 0a6472e2203994bc5738d40a340d26f7ec9d6062Anselm R. Garbe2006-07-171-0/+1
|
* updated html 0.2Anselm R. Garbe2006-07-171-1/+1
|
* ordered variables in structs and source files alphabeticallyAnselm R. Garbe2006-07-177-77/+70
|
* slight change to dwm.1Anselm R. Garbe2006-07-171-1/+2
|
* simplified man pageAnselm R. Garbe2006-07-162-36/+29
|
* another XSyncAnselm R. Garbe2006-07-161-0/+1
|
* several additions in mouse handling ;)Anselm R. Garbe2006-07-165-65/+59
|
* fixed XSync handling and finished man pageAnselm R. Garbe2006-07-155-16/+64
|
* changing XFlush into XSyncAnselm R. Garbe2006-07-154-6/+11
|
* sanitized other stuffAnselm R. Garbe2006-07-155-142/+136
|
* proceeded with cleaning up, sorting functions, etcAnselm R. Garbe2006-07-157-543/+532
|
* rearranged several stuffAnselm R. Garbe2006-07-1510-444/+442
|
* sanitized namesAnselm R. Garbe2006-07-147-72/+72
|
* rearrangedAnselm R. Garbe2006-07-149-377/+374
|
* I prefer the tiled/floating indicator on the right sideAnselm R. Garbe2006-07-141-5/+9
|
* bar shows if currently is tiled (Mod1-space) or floating (Mod1-Shift-space) modeAnselm R. Garbe2006-07-142-1/+7
|
* draw bar on exposure ;)Anselm R. Garbe2006-07-143-7/+9
|
* Added tag 0.1 for changeset d31b5ad96b0ba7b5b0a30928fcf000428339a577Anselm R. Garbe2006-07-141-0/+1
|
* prep 0.1 0.1Anselm R. Garbe2006-07-144-9/+11
|
* fixed crash on zoom if only 1 client existsAnselm R. Garbe2006-07-141-3/+9
|
pan>/ 2) - (h / 2) + dc.font.ascent; x = dc.x + (h / 2); /* shorten text if necessary */ while(len && (w = textnw(buf, len)) > dc.w - h) buf[--len] = 0; if(w > dc.w) return; /* too long */ gcv.foreground = invert ? dc.bg : dc.fg; gcv.background = invert ? dc.fg : dc.bg; if(dc.font.set) { XChangeGC(dpy, dc.gc, GCForeground | GCBackground, &gcv); XmbDrawImageString(dpy, dc.drawable, dc.font.set, dc.gc, x, y, buf, len); } else { gcv.font = dc.font.xfont->fid; XChangeGC(dpy, dc.gc, GCForeground | GCBackground | GCFont, &gcv); XDrawImageString(dpy, dc.drawable, dc.gc, x, y, buf, len); } } /* extern */ void drawall() { Client *c; for(c = clients; c; c = getnext(c->next)) drawtitle(c); drawstatus(); } void drawstatus() { int i; Bool istile = arrange == dotile; dc.x = dc.y = 0; dc.w = bw; drawtext(NULL, !istile, False); dc.w = 0; for(i = 0; i < TLast; i++) { dc.x += dc.w; dc.w = textw(tags[i]); if(istile) drawtext(tags[i], (i == tsel), True); else drawtext(tags[i], (i != tsel), True); } if(sel) { dc.x += dc.w; dc.w = textw(sel->name); drawtext(sel->name, istile, True); } dc.w = textw(stext); dc.x = bx + bw - dc.w; drawtext(stext, !istile, False); XCopyArea(dpy, dc.drawable, barwin, dc.gc, 0, 0, bw, bh, 0, 0); XSync(dpy, False); } void drawtitle(Client *c) { int i; Bool istile = arrange == dotile; if(c == sel) { drawstatus(); XUnmapWindow(dpy, c->title); XSetWindowBorder(dpy, c->win, dc.fg); return; } XSetWindowBorder(dpy, c->win, dc.bg); XMapWindow(dpy, c->title); dc.x = dc.y = 0; dc.w = 0; for(i = 0; i < TLast; i++) { if(c->tags[i]) { dc.x += dc.w; dc.w = textw(c->tags[i]); drawtext(c->tags[i], !istile, True); } } dc.x += dc.w; dc.w = textw(c->name); drawtext(c->name, !istile, True); XCopyArea(dpy, dc.drawable, c->title, dc.gc, 0, 0, c->tw, c->th, 0, 0); XSync(dpy, False); } unsigned long getcolor(const char *colstr) { XColor color; Colormap cmap = DefaultColormap(dpy, screen); XAllocNamedColor(dpy, cmap, colstr, &color, &color); return color.pixel; } void setfont(const char *fontstr) { char **missing, *def; int i, n; missing = NULL; setlocale(LC_ALL, ""); if(dc.font.set) XFreeFontSet(dpy, dc.font.set); dc.font.set = XCreateFontSet(dpy, fontstr, &missing, &n, &def); if(missing) { while(n--) fprintf(stderr, "missing fontset: %s\n", missing[n]); XFreeStringList(missing); if(dc.font.set) { XFreeFontSet(dpy, dc.font.set); dc.font.set = NULL; } } if(dc.font.set) { XFontSetExtents *font_extents; XFontStruct **xfonts; char **font_names; dc.font.ascent = dc.font.descent = 0; font_extents = XExtentsOfFontSet(dc.font.set); n = XFontsOfFontSet(dc.font.set, &xfonts, &font_names); for(i = 0, dc.font.ascent = 0, dc.font.descent = 0; i < n; i++) { if(dc.font.ascent < (*xfonts)->ascent) dc.font.ascent = (*xfonts)->ascent; if(dc.font.descent < (*xfonts)->descent) dc.font.descent = (*xfonts)->descent; xfonts++; } } else { if(dc.font.xfont) XFreeFont(dpy, dc.font.xfont); dc.font.xfont = NULL; dc.font.xfont = XLoadQueryFont(dpy, fontstr); if (!dc.font.xfont) dc.font.xfont = XLoadQueryFont(dpy, "fixed"); if (!dc.font.xfont) eprint("error, cannot init 'fixed' font\n"); dc.font.ascent = dc.font.xfont->ascent; dc.font.descent = dc.font.xfont->descent; } dc.font.height = dc.font.ascent + dc.font.descent; } unsigned int textw(char *text) { return textnw(text, strlen(text)) + dc.font.height; }