tmade bar togglalble - dwm - [fork] customized build of dwm, the dynamic window… | |
git clone git://src.adamsgaard.dk/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 2aef8b9b4ce0900d241c60cb3a07e111c825d13a | |
parent d96307cbe4f8beee03811754f6304a810a7860e5 | |
Author: Anselm R. Garbe <[email protected]> | |
Date: Tue, 15 May 2007 12:09:18 +0200 | |
made bar togglalble | |
Diffstat: | |
M config.arg.h | 3 ++- | |
M config.default.h | 3 ++- | |
M dwm.h | 21 ++++++++++++--------- | |
M layout.c | 6 ++++++ | |
M main.c | 32 ++++++++++++++++++++++++-----… | |
5 files changed, 47 insertions(+), 18 deletions(-) | |
--- | |
diff --git a/config.arg.h b/config.arg.h | |
t@@ -3,6 +3,7 @@ | |
* See LICENSE file for license details. */ | |
/* appearance */ | |
+#define BARPOS BarTop /* BarBot, BarOff */ | |
#define BORDERPX 1 | |
#define FONT "-*-pixelcarnage monospace-*-r-*-*-14-*-*-… | |
#define NORMBORDERCOLOR "#333" | |
t@@ -11,7 +12,6 @@ | |
#define SELBORDERCOLOR "#8c8" | |
#define SELBGCOLOR "#555" | |
#define SELFGCOLOR "#fff" | |
-#define TOPBAR True /* False */ | |
/* tagging */ | |
#define TAGS \ | |
t@@ -47,6 +47,7 @@ static Key key[] = { \ | |
{ MODKEY|ShiftMask, XK_Return, spawn, \ | |
"exec urxvtcd -tr -bg '#222' -fg '#eee' -cr '#eee' +sb -fn '"F… | |
{ MODKEY, XK_space, setlayout, NU… | |
+ { MODKEY, XK_b, togglebar, … | |
{ MODKEY, XK_h, incmasterw, … | |
{ MODKEY, XK_l, incmasterw, … | |
{ MODKEY|ShiftMask, XK_j, incnmaster, … | |
diff --git a/config.default.h b/config.default.h | |
t@@ -3,6 +3,7 @@ | |
* See LICENSE file for license details. */ | |
/* appearance */ | |
+#define BARPOS BarTop /* BarBot, BarOff */ | |
#define BORDERPX 1 | |
#define FONT "-*-fixed-medium-r-normal-*-13-*-*-*-*-*-*… | |
#define NORMBORDERCOLOR "#dddddd" | |
t@@ -11,7 +12,6 @@ | |
#define SELBORDERCOLOR "#ff0000" | |
#define SELBGCOLOR "#006699" | |
#define SELFGCOLOR "#ffffff" | |
-#define TOPBAR True /* False */ | |
/* tagging */ | |
#define TAGS \ | |
t@@ -45,6 +45,7 @@ static Key key[] = { \ | |
{ MODKEY|ShiftMask, XK_Return, spawn, … | |
{ MODKEY, XK_p, spawn, … | |
{ MODKEY, XK_space, setlayout, NU… | |
+ { MODKEY, XK_b, togglebar, … | |
{ MODKEY, XK_h, incmasterw, … | |
{ MODKEY, XK_l, incmasterw, … | |
{ MODKEY|ShiftMask, XK_j, incnmaster, … | |
diff --git a/dwm.h b/dwm.h | |
t@@ -37,10 +37,11 @@ | |
/* mask shorthands, used in event.c and client.c */ | |
#define BUTTONMASK (ButtonPressMask | ButtonReleaseMask) | |
-enum { NetSupported, NetWMName, NetLast }; /* EWMH atoms */ | |
-enum { WMProtocols, WMDelete, WMState, WMLast }; /* default atoms */ | |
+enum { BarTop, BarBot, BarOff }; /* bar position */ | |
enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */ | |
enum { ColBorder, ColFG, ColBG, ColLast }; /* color */ | |
+enum { NetSupported, NetWMName, NetLast }; /* EWMH atoms */ | |
+enum { WMProtocols, WMDelete, WMState, WMLast }; /* default atoms */ | |
typedef struct Client Client; | |
struct Client { | |
t@@ -83,7 +84,7 @@ extern const char *tags[]; /* all tags */ | |
char stext[256]; /* status text */ | |
int screen, sx, sy, sw, sh; /* screen geometry */ | |
int wax, way, wah, waw; /* windowarea geometry */ | |
-unsigned int bh, blw; /* bar height, bar layout label w… | |
+unsigned int bh, blw, bpos; /* bar height, bar layout label wid… | |
unsigned int ntags, numlockmask; /* number of tags, dynamic lock mask */ | |
void (*handler[LASTEvent])(XEvent *); /* event handler */ | |
Atom wmatom[WMLast], netatom[NetLast]; | |
t@@ -100,13 +101,13 @@ void attach(Client *c); /* attach… | |
void configure(Client *c); /* send synthetic configure event */ | |
void detach(Client *c); /* detaches c from global clien… | |
void focus(Client *c); /* focus c, c may be NULL */ | |
-void focustopvisible(void); /* focus top visible window on stack */ | |
-void killclient(const char *arg); /* kill sel nicely */ | |
+void focustopvisible(void); /* focus top visible window on stac… | |
+void killclient(const char *arg); /* kill sel nicely */ | |
void manage(Window w, XWindowAttributes *wa); /* manage new client */ | |
void resize(Client *c, int x, int y, | |
int w, int h, Bool sizehints); /* resize with given coo… | |
void togglefloating(const char *arg); /* toggles sel between floating/t… | |
-void updatesizehints(Client *c); /* update the size hint variab… | |
+void updatesizehints(Client *c); /* update the size hint variables of c… | |
void updatetitle(Client *c); /* update the name of c */ | |
void unmanage(Client *c); /* destroy c */ | |
t@@ -126,11 +127,13 @@ void incnmaster(const char *arg); /* increments n… | |
void initlayouts(void); /* initialize layout array */ | |
Client *nexttiled(Client *c); /* returns tiled successor of c */ | |
void restack(void); /* restores z layers of all clients… | |
-void setlayout(const char *arg); /* sets layout, -1 toggles */ | |
-void togglemax(const char *arg); /* toggles maximization of flo… | |
+void setlayout(const char *arg); /* sets layout, -1 toggles */ | |
+void togglebar(const char *arg); /* shows/hides the bar */ | |
+void togglemax(const char *arg); /* toggles maximization of floating cl… | |
void zoom(const char *arg); /* zooms the focused client to mast… | |
/* main.c */ | |
+void updatebarpos(void); /* updates the bar position */ | |
void quit(const char *arg); /* quit dwm nicely */ | |
int xerror(Display *dsply, XErrorEvent *ee); /* dwm's X error handler */ | |
t@@ -139,7 +142,7 @@ void compileregs(void); /* initiali… | |
Bool isvisible(Client *c); /* returns True if client is visible… | |
void settags(Client *c, Client *trans); /* sets tags of c */ | |
void tag(const char *arg); /* tags sel with arg's index */ | |
-void toggletag(const char *arg); /* toggles sel tags with arg's… | |
+void toggletag(const char *arg); /* toggles sel tags with arg's index */ | |
void toggleview(const char *arg); /* toggles the tag with arg's index (… | |
void view(const char *arg); /* views the tag with arg's index */ | |
diff --git a/layout.c b/layout.c | |
t@@ -217,6 +217,12 @@ setlayout(const char *arg) { | |
} | |
void | |
+togglebar(const char *arg) { | |
+ bpos = (bpos == BarOff) ? BARPOS : BarOff; | |
+ updatebarpos(); | |
+} | |
+ | |
+void | |
togglemax(const char *arg) { | |
XEvent ev; | |
diff --git a/main.c b/main.c | |
t@@ -18,7 +18,7 @@ | |
char stext[256]; | |
int screen, sx, sy, sw, sh, wax, way, waw, wah; | |
-unsigned int bh, ntags, numlockmask; | |
+unsigned int bh, bpos, ntags, numlockmask; | |
Atom wmatom[WMLast], netatom[NetLast]; | |
Bool *seltag; | |
Bool selscreen = True; | |
t@@ -190,17 +190,13 @@ setup(void) { | |
wa.override_redirect = 1; | |
wa.background_pixmap = ParentRelative; | |
wa.event_mask = ButtonPressMask | ExposureMask; | |
- barwin = XCreateWindow(dpy, root, sx, sy + (TOPBAR ? 0 : sh - bh), sw,… | |
+ barwin = XCreateWindow(dpy, root, sx, sy - bh, sw, bh, 0, | |
DefaultDepth(dpy, screen), CopyFromParent, DefaultVisu… | |
CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa); | |
XDefineCursor(dpy, barwin, cursor[CurNormal]); | |
+ updatebarpos(); | |
XMapRaised(dpy, barwin); | |
strcpy(stext, "dwm-"VERSION); | |
- /* windowarea */ | |
- wax = sx; | |
- way = sy + (TOPBAR ? bh : 0); | |
- wah = sh - bh; | |
- waw = sw; | |
/* pixmap for everything */ | |
dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, scree… | |
dc.gc = XCreateGC(dpy, root, 0, 0); | |
t@@ -228,6 +224,28 @@ quit(const char *arg) { | |
readin = running = False; | |
} | |
+void | |
+updatebarpos(void) { | |
+ wax = sx; | |
+ way = sy; | |
+ wah = sh; | |
+ waw = sw; | |
+ switch(bpos) { | |
+ case BarTop: | |
+ wah -= bh; | |
+ way += bh; | |
+ XMoveWindow(dpy, barwin, sx, sy); | |
+ break; | |
+ case BarBot: | |
+ wah -= bh; | |
+ XMoveWindow(dpy, barwin, sx, sy + wah); | |
+ break; | |
+ case BarOff: | |
+ XMoveWindow(dpy, barwin, sx, sy - bh); | |
+ } | |
+ lt->arrange(); | |
+} | |
+ | |
/* There's no way to check accesses to destroyed windows, thus those cases are | |
* ignored (especially on UnmapNotify's). Other types of errors call Xlibs | |
* default error handler, which may call exit. |