made bar togglalble
This commit is contained in:
		
							parent
							
								
									d96307cbe4
								
							
						
					
					
						commit
						2aef8b9b4c
					
				| @ -3,6 +3,7 @@ | |||||||
|  * See LICENSE file for license details. */ |  * See LICENSE file for license details. */ | ||||||
| 
 | 
 | ||||||
| /* appearance */ | /* appearance */ | ||||||
|  | #define BARPOS			BarTop /* BarBot, BarOff */ | ||||||
| #define BORDERPX		1 | #define BORDERPX		1 | ||||||
| #define FONT			"-*-pixelcarnage monospace-*-r-*-*-14-*-*-*-*-*-*-*" | #define FONT			"-*-pixelcarnage monospace-*-r-*-*-14-*-*-*-*-*-*-*" | ||||||
| #define NORMBORDERCOLOR		"#333" | #define NORMBORDERCOLOR		"#333" | ||||||
| @ -11,7 +12,6 @@ | |||||||
| #define SELBORDERCOLOR		"#8c8" | #define SELBORDERCOLOR		"#8c8" | ||||||
| #define SELBGCOLOR		"#555" | #define SELBGCOLOR		"#555" | ||||||
| #define SELFGCOLOR		"#fff" | #define SELFGCOLOR		"#fff" | ||||||
| #define TOPBAR			True		/* False */ |  | ||||||
| 
 | 
 | ||||||
| /* tagging */ | /* tagging */ | ||||||
| #define TAGS \ | #define TAGS \ | ||||||
| @ -47,6 +47,7 @@ static Key key[] = { \ | |||||||
| 	{ MODKEY|ShiftMask,		XK_Return,	spawn, \ | 	{ MODKEY|ShiftMask,		XK_Return,	spawn, \ | ||||||
| 		"exec urxvtcd -tr -bg '#222' -fg '#eee' -cr '#eee' +sb -fn '"FONT"'" }, \ | 		"exec urxvtcd -tr -bg '#222' -fg '#eee' -cr '#eee' +sb -fn '"FONT"'" }, \ | ||||||
| 	{ MODKEY,			XK_space,	setlayout,	NULL }, \ | 	{ MODKEY,			XK_space,	setlayout,	NULL }, \ | ||||||
|  | 	{ MODKEY,			XK_b,		togglebar,	NULL }, \ | ||||||
| 	{ MODKEY,			XK_h,		incmasterw,	"-32" }, \ | 	{ MODKEY,			XK_h,		incmasterw,	"-32" }, \ | ||||||
| 	{ MODKEY,			XK_l,		incmasterw,	"32" }, \ | 	{ MODKEY,			XK_l,		incmasterw,	"32" }, \ | ||||||
| 	{ MODKEY|ShiftMask,		XK_j,		incnmaster,	"1" }, \ | 	{ MODKEY|ShiftMask,		XK_j,		incnmaster,	"1" }, \ | ||||||
|  | |||||||
| @ -3,6 +3,7 @@ | |||||||
|  * See LICENSE file for license details. */ |  * See LICENSE file for license details. */ | ||||||
| 
 | 
 | ||||||
| /* appearance */ | /* appearance */ | ||||||
|  | #define BARPOS			BarTop /* BarBot, BarOff */ | ||||||
| #define BORDERPX		1 | #define BORDERPX		1 | ||||||
| #define FONT			"-*-fixed-medium-r-normal-*-13-*-*-*-*-*-*-*" | #define FONT			"-*-fixed-medium-r-normal-*-13-*-*-*-*-*-*-*" | ||||||
| #define NORMBORDERCOLOR		"#dddddd" | #define NORMBORDERCOLOR		"#dddddd" | ||||||
| @ -11,7 +12,6 @@ | |||||||
| #define SELBORDERCOLOR		"#ff0000" | #define SELBORDERCOLOR		"#ff0000" | ||||||
| #define SELBGCOLOR		"#006699" | #define SELBGCOLOR		"#006699" | ||||||
| #define SELFGCOLOR		"#ffffff" | #define SELFGCOLOR		"#ffffff" | ||||||
| #define TOPBAR			True		/* False */ |  | ||||||
| 
 | 
 | ||||||
| /* tagging */ | /* tagging */ | ||||||
| #define TAGS \ | #define TAGS \ | ||||||
| @ -45,6 +45,7 @@ static Key key[] = { \ | |||||||
| 	{ MODKEY|ShiftMask,		XK_Return,	spawn,		"exec xterm" }, \ | 	{ MODKEY|ShiftMask,		XK_Return,	spawn,		"exec xterm" }, \ | ||||||
| 	{ MODKEY,			XK_p,		spawn, 		"exe=`dmenu_path | dmenu` && exec $exe" }, \ | 	{ MODKEY,			XK_p,		spawn, 		"exe=`dmenu_path | dmenu` && exec $exe" }, \ | ||||||
| 	{ MODKEY,			XK_space,	setlayout,	NULL }, \ | 	{ MODKEY,			XK_space,	setlayout,	NULL }, \ | ||||||
|  | 	{ MODKEY,			XK_b,		togglebar,	NULL }, \ | ||||||
| 	{ MODKEY,			XK_h,		incmasterw,	"-32" }, \ | 	{ MODKEY,			XK_h,		incmasterw,	"-32" }, \ | ||||||
| 	{ MODKEY,			XK_l,		incmasterw,	"32" }, \ | 	{ MODKEY,			XK_l,		incmasterw,	"32" }, \ | ||||||
| 	{ MODKEY|ShiftMask,		XK_j,		incnmaster,	"1" }, \ | 	{ MODKEY|ShiftMask,		XK_j,		incnmaster,	"1" }, \ | ||||||
|  | |||||||
							
								
								
									
										21
									
								
								dwm.h
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								dwm.h
									
									
									
									
									
								
							| @ -37,10 +37,11 @@ | |||||||
| /* mask shorthands, used in event.c and client.c */ | /* mask shorthands, used in event.c and client.c */ | ||||||
| #define BUTTONMASK		(ButtonPressMask | ButtonReleaseMask) | #define BUTTONMASK		(ButtonPressMask | ButtonReleaseMask) | ||||||
| 
 | 
 | ||||||
| enum { NetSupported, NetWMName, NetLast };		/* EWMH atoms */ | enum { BarTop, BarBot, BarOff };			/* bar position */ | ||||||
| enum { WMProtocols, WMDelete, WMState, WMLast };	/* default atoms */ |  | ||||||
| enum { CurNormal, CurResize, CurMove, CurLast };	/* cursor */ | enum { CurNormal, CurResize, CurMove, CurLast };	/* cursor */ | ||||||
| enum { ColBorder, ColFG, ColBG, ColLast };		/* color */ | enum { ColBorder, ColFG, ColBG, ColLast };		/* color */ | ||||||
|  | enum { NetSupported, NetWMName, NetLast };		/* EWMH atoms */ | ||||||
|  | enum { WMProtocols, WMDelete, WMState, WMLast };	/* default atoms */ | ||||||
| 
 | 
 | ||||||
| typedef struct Client Client; | typedef struct Client Client; | ||||||
| struct Client { | struct Client { | ||||||
| @ -83,7 +84,7 @@ extern const char *tags[];		/* all tags */ | |||||||
| char stext[256];			/* status text */ | char stext[256];			/* status text */ | ||||||
| int screen, sx, sy, sw, sh;		/* screen geometry */ | int screen, sx, sy, sw, sh;		/* screen geometry */ | ||||||
| int wax, way, wah, waw;			/* windowarea geometry */ | int wax, way, wah, waw;			/* windowarea geometry */ | ||||||
| unsigned int bh, blw;			/* bar height, bar layout label width */ | unsigned int bh, blw, bpos;		/* bar height, bar layout label width, bar position */ | ||||||
| unsigned int ntags, numlockmask;	/* number of tags, dynamic lock mask */ | unsigned int ntags, numlockmask;	/* number of tags, dynamic lock mask */ | ||||||
| void (*handler[LASTEvent])(XEvent *);	/* event handler */ | void (*handler[LASTEvent])(XEvent *);	/* event handler */ | ||||||
| Atom wmatom[WMLast], netatom[NetLast]; | Atom wmatom[WMLast], netatom[NetLast]; | ||||||
| @ -100,13 +101,13 @@ void attach(Client *c);			/* attaches c to global client list */ | |||||||
| void configure(Client *c);		/* send synthetic configure event */ | void configure(Client *c);		/* send synthetic configure event */ | ||||||
| void detach(Client *c);			/* detaches c from global client list */ | void detach(Client *c);			/* detaches c from global client list */ | ||||||
| void focus(Client *c);			/* focus c, c may be NULL */ | void focus(Client *c);			/* focus c, c may be NULL */ | ||||||
| void focustopvisible(void);	    /* focus top visible window on stack */ | void focustopvisible(void);		/* focus top visible window on stack */ | ||||||
| void killclient(const char *arg);		/* kill sel  nicely */ | void killclient(const char *arg);	/* kill sel  nicely */ | ||||||
| void manage(Window w, XWindowAttributes *wa);	/* manage new client */ | void manage(Window w, XWindowAttributes *wa);	/* manage new client */ | ||||||
| void resize(Client *c, int x, int y, | void resize(Client *c, int x, int y, | ||||||
| 		int w, int h, Bool sizehints);	/* resize with given coordinates c*/ | 		int w, int h, Bool sizehints);	/* resize with given coordinates c*/ | ||||||
| void togglefloating(const char *arg);	/* toggles sel between floating/tiled state */ | void togglefloating(const char *arg);	/* toggles sel between floating/tiled state */ | ||||||
| void updatesizehints(Client *c);		/* update the size hint variables of c */ | void updatesizehints(Client *c);	/* update the size hint variables of c */ | ||||||
| void updatetitle(Client *c);		/* update the name of c */ | void updatetitle(Client *c);		/* update the name of c */ | ||||||
| void unmanage(Client *c);		/* destroy c */ | void unmanage(Client *c);		/* destroy c */ | ||||||
| 
 | 
 | ||||||
| @ -126,11 +127,13 @@ void incnmaster(const char *arg);	/* increments nmaster with arg's index value * | |||||||
| void initlayouts(void);			/* initialize layout array */ | void initlayouts(void);			/* initialize layout array */ | ||||||
| Client *nexttiled(Client *c);		/* returns tiled successor of c */ | Client *nexttiled(Client *c);		/* returns tiled successor of c */ | ||||||
| void restack(void);			/* restores z layers of all clients */ | void restack(void);			/* restores z layers of all clients */ | ||||||
| void setlayout(const char *arg);		/* sets layout, -1 toggles */ | void setlayout(const char *arg);	/* sets layout, -1 toggles */ | ||||||
| void togglemax(const char *arg);		/* toggles maximization of floating client */ | void togglebar(const char *arg);	/* shows/hides the bar */ | ||||||
|  | void togglemax(const char *arg);	/* toggles maximization of floating client */ | ||||||
| void zoom(const char *arg);		/* zooms the focused client to master area, arg is ignored */ | void zoom(const char *arg);		/* zooms the focused client to master area, arg is ignored */ | ||||||
| 
 | 
 | ||||||
| /* main.c */ | /* main.c */ | ||||||
|  | void updatebarpos(void);		/* updates the bar position */ | ||||||
| void quit(const char *arg);		/* quit dwm nicely */ | void quit(const char *arg);		/* quit dwm nicely */ | ||||||
| int xerror(Display *dsply, XErrorEvent *ee);	/* dwm's X error handler */ | int xerror(Display *dsply, XErrorEvent *ee);	/* dwm's X error handler */ | ||||||
| 
 | 
 | ||||||
| @ -139,7 +142,7 @@ void compileregs(void);			/* initialize regexps of rules defined in config.h */ | |||||||
| Bool isvisible(Client *c);		/* returns True if client is visible */ | Bool isvisible(Client *c);		/* returns True if client is visible */ | ||||||
| void settags(Client *c, Client *trans);	/* sets tags of c */ | void settags(Client *c, Client *trans);	/* sets tags of c */ | ||||||
| void tag(const char *arg);		/* tags sel with arg's index */ | void tag(const char *arg);		/* tags sel with arg's index */ | ||||||
| void toggletag(const char *arg);		/* toggles sel tags with arg's index */ | void toggletag(const char *arg);	/* toggles sel tags with arg's index */ | ||||||
| void toggleview(const char *arg);	/* toggles the tag with arg's index (in)visible */ | void toggleview(const char *arg);	/* toggles the tag with arg's index (in)visible */ | ||||||
| void view(const char *arg);		/* views the tag with arg's index */ | void view(const char *arg);		/* views the tag with arg's index */ | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										6
									
								
								layout.c
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								layout.c
									
									
									
									
									
								
							| @ -216,6 +216,12 @@ setlayout(const char *arg) { | |||||||
| 		drawstatus(); | 		drawstatus(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void | ||||||
|  | togglebar(const char *arg) { | ||||||
|  | 	bpos = (bpos == BarOff) ? BARPOS : BarOff; | ||||||
|  | 	updatebarpos(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void | void | ||||||
| togglemax(const char *arg) { | togglemax(const char *arg) { | ||||||
| 	XEvent ev; | 	XEvent ev; | ||||||
|  | |||||||
							
								
								
									
										32
									
								
								main.c
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								main.c
									
									
									
									
									
								
							| @ -18,7 +18,7 @@ | |||||||
| 
 | 
 | ||||||
| char stext[256]; | char stext[256]; | ||||||
| int screen, sx, sy, sw, sh, wax, way, waw, wah; | 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]; | Atom wmatom[WMLast], netatom[NetLast]; | ||||||
| Bool *seltag; | Bool *seltag; | ||||||
| Bool selscreen = True; | Bool selscreen = True; | ||||||
| @ -190,17 +190,13 @@ setup(void) { | |||||||
| 	wa.override_redirect = 1; | 	wa.override_redirect = 1; | ||||||
| 	wa.background_pixmap = ParentRelative; | 	wa.background_pixmap = ParentRelative; | ||||||
| 	wa.event_mask = ButtonPressMask | ExposureMask; | 	wa.event_mask = ButtonPressMask | ExposureMask; | ||||||
| 	barwin = XCreateWindow(dpy, root, sx, sy + (TOPBAR ? 0 : sh - bh), sw, bh, 0, | 	barwin = XCreateWindow(dpy, root, sx, sy - bh, sw, bh, 0, | ||||||
| 			DefaultDepth(dpy, screen), CopyFromParent, DefaultVisual(dpy, screen), | 			DefaultDepth(dpy, screen), CopyFromParent, DefaultVisual(dpy, screen), | ||||||
| 			CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa); | 			CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa); | ||||||
| 	XDefineCursor(dpy, barwin, cursor[CurNormal]); | 	XDefineCursor(dpy, barwin, cursor[CurNormal]); | ||||||
|  | 	updatebarpos(); | ||||||
| 	XMapRaised(dpy, barwin); | 	XMapRaised(dpy, barwin); | ||||||
| 	strcpy(stext, "dwm-"VERSION); | 	strcpy(stext, "dwm-"VERSION); | ||||||
| 	/* windowarea */ |  | ||||||
| 	wax = sx; |  | ||||||
| 	way = sy + (TOPBAR ? bh : 0); |  | ||||||
| 	wah = sh - bh; |  | ||||||
| 	waw = sw; |  | ||||||
| 	/* pixmap for everything */ | 	/* pixmap for everything */ | ||||||
| 	dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, screen)); | 	dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, screen)); | ||||||
| 	dc.gc = XCreateGC(dpy, root, 0, 0); | 	dc.gc = XCreateGC(dpy, root, 0, 0); | ||||||
| @ -228,6 +224,28 @@ quit(const char *arg) { | |||||||
| 	readin = running = False; | 	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
 | /* 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 |  * ignored (especially on UnmapNotify's).  Other types of errors call Xlibs | ||||||
|  * default error handler, which may call exit. |  * default error handler, which may call exit. | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Anselm R. Garbe
						Anselm R. Garbe