Introduction
Introduction Statistics Contact Development Disclaimer Help
trecent changes, introduced togglebar, changed some defines into variable decla…
git clone git://src.adamsgaard.dk/dwm
Log
Files
Refs
README
LICENSE
---
commit 549726869bd88f70727ecae8a28161700395b20b
parent 42cb2bd3be755e8fc358347e085e9609fa54eb57
Author: Anselm R Garbe <[email protected]>
Date: Mon, 19 May 2008 12:34:54 +0100
recent changes, introduced togglebar, changed some defines into variable declar…
Diffstat:
M config.def.h | 13 +++++++++----
M dwm.c | 60 +++++++++++++++++++----------…
M tile.c | 13 +++++++------
3 files changed, 53 insertions(+), 33 deletions(-)
---
diff --git a/config.def.h b/config.def.h
t@@ -1,7 +1,6 @@
/* See LICENSE file for copyright and license details. */
/* appearance */
-#define BORDERPX 1
#define FONT "-*-terminus-medium-r-normal-*-14-*-*-*-*-*-*-*"
#define NORMBORDERCOLOR "#cccccc"
#define NORMBGCOLOR "#cccccc"
t@@ -9,7 +8,10 @@
#define SELBORDERCOLOR "#0066ff"
#define SELBGCOLOR "#0066ff"
#define SELFGCOLOR "#ffffff"
-#define SNAP 32 /* snap pixel */
+unsigned int borderpx = 1; /* border pixel of windows */
+unsigned int snap = 32; /* snap pixel */
+Bool showbar = True; /* False means no bar */
+Bool topbar = True; /* False means bottom bar */
/* tagging */
const char tags[][MAXTAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
t@@ -20,9 +22,11 @@ Rule rules[] = {
};
/* layout(s) */
-#define RESIZEHINTS True /* False - respect size hints in tiled resizals */
-#define MFACT 0.55 /* master factor [0.1 .. 0.9] */
+double mfact = 0.55;
+Bool resizehints = True; /* False means respect size hints in tiled …
+
#include "tile.c"
+
Layout layouts[] = {
/* symbol arrange geom */
{ "[]=", tile, updatetilegeom }, /* first entry is default */
t@@ -35,6 +39,7 @@ Key keys[] = {
/* modifier key function argument */
{ MODKEY, XK_p, spawn, "exec dmenu…
{ MODKEY|ShiftMask, XK_Return, spawn, "exec uxter…
+ { MODKEY, XK_b, togglebar, NULL },
{ MODKEY, XK_j, focusnext, NULL },
{ MODKEY, XK_k, focusprev, NULL },
{ MODKEY, XK_h, setmfact, "-0.05" },
diff --git a/dwm.c b/dwm.c
t@@ -41,18 +41,19 @@
#include <X11/Xutil.h>
/* macros */
-#define MAX(a, b) ((a) > (b) ? (a) : (b))
-#define MIN(a, b) ((a) < (b) ? (a) : (b))
-#define BUTTONMASK (ButtonPressMask|ButtonReleaseMask)
-#define CLEANMASK(mask) (mask & ~(numlockmask|LockMask))
-#define LENGTH(x) (sizeof x / sizeof x[0])
-#define MAXTAGLEN 16
-#define MOUSEMASK (BUTTONMASK|PointerMotionMask)
+#define MAX(a, b) ((a) > (b) ? (a) : (b))
+#define MIN(a, b) ((a) < (b) ? (a) : (b))
+#define BUTTONMASK (ButtonPressMask|ButtonReleaseMask)
+#define CLEANMASK(mask) (mask & ~(numlockmask|LockMask))
+#define LENGTH(x) (sizeof x / sizeof x[0])
+#define MAXTAGLEN 16
+#define MOUSEMASK (BUTTONMASK|PointerMotionMask)
/* enums */
-enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */
-enum { ColBorder, ColFG, ColBG, ColLast }; /* color */
-enum { NetSupported, NetWMName, NetLast }; /* EWMH atoms */
+enum { BarTop, BarBot, BarOff, BarLast }; /* bar appearance */
+enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */
+enum { ColBorder, ColFG, ColBG, ColLast }; /* color */
+enum { NetSupported, NetWMName, NetLast }; /* EWMH atoms */
enum { WMProtocols, WMDelete, WMName, WMState, WMLast };/* default atoms */
/* typedefs */
t@@ -166,6 +167,7 @@ void spawn(const char *arg);
void tag(const char *arg);
unsigned int textnw(const char *text, unsigned int len);
unsigned int textw(const char *text);
+void togglebar(const char *arg);
void togglefloating(const char *arg);
void togglelayout(const char *arg);
void toggletag(const char *arg);
t@@ -179,7 +181,7 @@ void updatesizehints(Client *c);
void updatetitle(Client *c);
void updatewmhints(Client *c);
void view(const char *arg);
-void viewprevtag(const char *arg); /* views previous selected tags */
+void viewprevtag(const char *arg);
int xerror(Display *dpy, XErrorEvent *ee);
int xerrordummy(Display *dpy, XErrorEvent *ee);
int xerrorstart(Display *dpy, XErrorEvent *ee);
t@@ -188,9 +190,9 @@ void zoom(const char *arg);
/* variables */
char stext[256];
int screen, sx, sy, sw, sh;
-int (*xerrorxlib)(Display *, XErrorEvent *);
int bx, by, bw, bh, blw, wx, wy, ww, wh;
int seltags = 0;
+int (*xerrorxlib)(Display *, XErrorEvent *);
unsigned int numlockmask = 0;
void (*handler[LASTEvent]) (XEvent *) = {
[ButtonPress] = buttonpress,
t@@ -959,7 +961,7 @@ manage(Window w, XWindowAttributes *wa) {
c->y = wy + wh - c->h - 2 * c->bw;
c->x = MAX(c->x, wx);
c->y = MAX(c->y, wy);
- c->bw = BORDERPX;
+ c->bw = borderpx;
}
wc.border_width = c->bw;
t@@ -1037,15 +1039,15 @@ movemouse(Client *c) {
XSync(dpy, False);
nx = ocx + (ev.xmotion.x - x1);
ny = ocy + (ev.xmotion.y - y1);
- if(abs(wx - nx) < SNAP)
+ if(abs(wx - nx) < snap)
nx = wx;
- else if(abs((wx + ww) - (nx + c->w + 2 * c->bw)) < SNA…
+ else if(abs((wx + ww) - (nx + c->w + 2 * c->bw)) < sna…
nx = wx + ww - c->w - 2 * c->bw;
- if(abs(wy - ny) < SNAP)
+ if(abs(wy - ny) < snap)
ny = wy;
- else if(abs((wy + wh) - (ny + c->h + 2 * c->bw)) < SNA…
+ else if(abs((wy + wh) - (ny + c->h + 2 * c->bw)) < sna…
ny = wy + wh - c->h - 2 * c->bw;
- if(!c->isfloating && lt->arrange && (abs(nx - c->x) > …
+ if(!c->isfloating && lt->arrange && (abs(nx - c->x) > …
togglefloating(NULL);
if(!lt->arrange || c->isfloating)
resize(c, nx, ny, c->w, c->h, False);
t@@ -1191,7 +1193,7 @@ resizemouse(Client *c) {
XSync(dpy, False);
nw = MAX(ev.xmotion.x - ocx - 2 * c->bw + 1, 1);
nh = MAX(ev.xmotion.y - ocy - 2 * c->bw + 1, 1);
- if(!c->isfloating && lt->arrange && (abs(nw - c->w) > …
+ if(!c->isfloating && lt->arrange && (abs(nw - c->w) > …
togglefloating(NULL);
}
if(!lt->arrange || c->isfloating)
t@@ -1455,6 +1457,14 @@ textw(const char *text) {
}
void
+togglebar(const char *arg) {
+ showbar = !showbar;
+ updategeom();
+ updatebar();
+ arrange();
+}
+
+void
togglefloating(const char *arg) {
if(!sel)
return;
t@@ -1564,16 +1574,20 @@ void
updategeom(void) {
unsigned int i;
- /* bar geometry */
+#ifdef DEFGEOM /* define your own if you are Xinerama user */
+ DEFGEOM
+#else
+ /* bar geometry*/
bx = 0;
- by = 0;
+ by = showbar ? (topbar ? 0 : sh - bh) : -bh;
bw = sw;
/* window area geometry */
wx = sx;
- wy = sy + bh;
+ wy = showbar && topbar ? sy + bh : sy;
ww = sw;
- wh = sh - bh;
+ wh = showbar ? sh - bh : sh;
+#endif
/* update layout geometries */
for(i = 0; i < LENGTH(layouts); i++)
diff --git a/tile.c b/tile.c
t@@ -1,5 +1,4 @@
/* See LICENSE file for copyright and license details. */
-double mfact = MFACT;
int bx, by, bw, bh, blw, mx, my, mw, mh, tx, ty, tw, th, wx, wy, ww, wh;
void setmfact(const char *arg);
t@@ -11,10 +10,8 @@ void
setmfact(const char *arg) {
double d;
- if(lt->arrange != tile)
+ if(!arg || lt->arrange != tile)
return;
- if(!arg)
- mfact = MFACT;
else {
d = strtod(arg, NULL);
if(arg[0] == '-' || arg[0] == '+')
t@@ -66,8 +63,8 @@ tile(void) {
void
tileresize(Client *c, int x, int y, int w, int h) {
- resize(c, x, y, w, h, RESIZEHINTS);
- if((RESIZEHINTS) && ((c->h < bh) || (c->h > h) || (c->w < bh) || (c->w…
+ resize(c, x, y, w, h, resizehints);
+ if(resizehints && ((c->h < bh) || (c->h > h) || (c->w < bh) || (c->w >…
/* client doesn't accept size constraints */
resize(c, x, y, w, h, False);
}
t@@ -89,6 +86,9 @@ zoom(const char *arg) {
void
updatetilegeom(void) {
+#ifdef TILEGEOM /* define your own if you are Xinerama user */
+ TILEGEOM
+#else
/* master area geometry */
mx = wx;
my = wy;
t@@ -100,4 +100,5 @@ updatetilegeom(void) {
ty = wy;
tw = ww - mw;
th = wh;
+#endif
}
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.