Compare commits
10 Commits
Author | SHA1 | Date | |
---|---|---|---|
f679125206 | |||
58beead14d | |||
e1811c37ca | |||
a24a6701c8 | |||
d108cfa7fc | |||
92cb5ebb7c | |||
653826572d | |||
5a5851bac2 | |||
1d4a24dae0 | |||
a768ea93fd |
1
.hgtags
1
.hgtags
@ -28,3 +28,4 @@ c7f84f23ec5aef29988dcdc4ec22a7352ee8f58e 2.5.1
|
||||
5308dd22b6ee8e3218c81d9e7e4125f235bb5778 2.6
|
||||
21951c0dfbae5af68ed77821a4d87253ee91803f 2.7
|
||||
107719a9ce3bd0c79f9f1f626596eb338a276561 2.8
|
||||
3a5910fac3ccb522a98aeeba7af7008530b25092 2.9
|
||||
|
36
config.arg.h
36
config.arg.h
@ -3,19 +3,19 @@
|
||||
*/
|
||||
|
||||
#define TAGS \
|
||||
const char *tags[] = { "home", "net", "www", "mon", "fnord", NULL };
|
||||
const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", NULL };
|
||||
|
||||
#define DEFMODE dotile /* dofloat */
|
||||
#define FLOATSYMBOL "><>"
|
||||
#define TILESYMBOL "[]="
|
||||
#define TILESYMBOL "[%u]=" /* %u is replaced with nmaster */
|
||||
|
||||
#define FONT "-*-terminus-medium-r-*-*-14-*-*-*-*-*-*-*"
|
||||
#define NORMBGCOLOR "#111111"
|
||||
#define NORMFGCOLOR "#cccccc"
|
||||
#define SELBGCOLOR "#336699"
|
||||
#define SELFGCOLOR "#eeeeee"
|
||||
#define STATUSBGCOLOR "#222222"
|
||||
#define STATUSFGCOLOR "#dddddd"
|
||||
#define NORMBGCOLOR "#222"
|
||||
#define NORMFGCOLOR "#ccc"
|
||||
#define SELBGCOLOR "#444"
|
||||
#define SELFGCOLOR "#fff"
|
||||
#define STATUSBGCOLOR "#333"
|
||||
#define STATUSFGCOLOR "#9cf"
|
||||
|
||||
#define MASTER 600 /* per thousand */
|
||||
#define MODKEY Mod1Mask
|
||||
@ -26,7 +26,7 @@ const char *tags[] = { "home", "net", "www", "mon", "fnord", NULL };
|
||||
static Key key[] = { \
|
||||
/* modifier key function argument */ \
|
||||
{ MODKEY|ShiftMask, XK_Return, spawn, \
|
||||
{ .cmd = "exec uxterm -bg black -fg '#eeeeee' -cr '#eeeeee' +sb -fn '"FONT"'" } }, \
|
||||
{ .cmd = "exec uxterm -bg '#222' -fg '#eee' -cr '#eee' +sb -fn '"FONT"'" } }, \
|
||||
{ MODKEY, XK_p, spawn, \
|
||||
{ .cmd = "exe=\"$(lsx `echo $PATH | sed 's/:/ /g'` | sort -u " \
|
||||
" | dmenu -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGCOLOR"' " \
|
||||
@ -44,11 +44,19 @@ static Key key[] = { \
|
||||
{ MODKEY|ShiftMask, XK_3, tag, { .i = 2 } }, \
|
||||
{ MODKEY|ShiftMask, XK_4, tag, { .i = 3 } }, \
|
||||
{ MODKEY|ShiftMask, XK_5, tag, { .i = 4 } }, \
|
||||
{ MODKEY|ShiftMask, XK_6, tag, { .i = 5 } }, \
|
||||
{ MODKEY|ShiftMask, XK_7, tag, { .i = 6 } }, \
|
||||
{ MODKEY|ShiftMask, XK_8, tag, { .i = 7 } }, \
|
||||
{ MODKEY|ShiftMask, XK_9, tag, { .i = 8 } }, \
|
||||
{ MODKEY|ControlMask|ShiftMask, XK_1, toggletag, { .i = 0 } }, \
|
||||
{ MODKEY|ControlMask|ShiftMask, XK_2, toggletag, { .i = 1 } }, \
|
||||
{ MODKEY|ControlMask|ShiftMask, XK_3, toggletag, { .i = 2 } }, \
|
||||
{ MODKEY|ControlMask|ShiftMask, XK_4, toggletag, { .i = 3 } }, \
|
||||
{ MODKEY|ControlMask|ShiftMask, XK_5, toggletag, { .i = 4 } }, \
|
||||
{ MODKEY|ControlMask|ShiftMask, XK_6, toggletag, { .i = 5 } }, \
|
||||
{ MODKEY|ControlMask|ShiftMask, XK_7, toggletag, { .i = 6 } }, \
|
||||
{ MODKEY|ControlMask|ShiftMask, XK_8, toggletag, { .i = 7 } }, \
|
||||
{ MODKEY|ControlMask|ShiftMask, XK_9, toggletag, { .i = 8 } }, \
|
||||
{ MODKEY|ShiftMask, XK_c, killclient, { 0 } }, \
|
||||
{ MODKEY, XK_space, togglemode, { 0 } }, \
|
||||
{ MODKEY|ShiftMask, XK_space, togglefloat, { 0 } }, \
|
||||
@ -58,18 +66,26 @@ static Key key[] = { \
|
||||
{ MODKEY, XK_3, view, { .i = 2 } }, \
|
||||
{ MODKEY, XK_4, view, { .i = 3 } }, \
|
||||
{ MODKEY, XK_5, view, { .i = 4 } }, \
|
||||
{ MODKEY, XK_6, view, { .i = 5 } }, \
|
||||
{ MODKEY, XK_7, view, { .i = 6 } }, \
|
||||
{ MODKEY, XK_8, view, { .i = 7 } }, \
|
||||
{ MODKEY, XK_9, view, { .i = 8 } }, \
|
||||
{ MODKEY|ControlMask, XK_1, toggleview, { .i = 0 } }, \
|
||||
{ MODKEY|ControlMask, XK_2, toggleview, { .i = 1 } }, \
|
||||
{ MODKEY|ControlMask, XK_3, toggleview, { .i = 2 } }, \
|
||||
{ MODKEY|ControlMask, XK_4, toggleview, { .i = 3 } }, \
|
||||
{ MODKEY|ControlMask, XK_5, toggleview, { .i = 4 } }, \
|
||||
{ MODKEY|ControlMask, XK_6, toggleview, { .i = 5 } }, \
|
||||
{ MODKEY|ControlMask, XK_7, toggleview, { .i = 6 } }, \
|
||||
{ MODKEY|ControlMask, XK_8, toggleview, { .i = 7 } }, \
|
||||
{ MODKEY|ControlMask, XK_9, toggleview, { .i = 8 } }, \
|
||||
{ MODKEY|ShiftMask, XK_q, quit, { 0 } }, \
|
||||
};
|
||||
|
||||
#define RULES \
|
||||
static Rule rule[] = { \
|
||||
/* class:instance:title regex tags regex isfloat */ \
|
||||
{ "Firefox.*", "www", False }, \
|
||||
{ "Firefox.*", "3", False }, \
|
||||
{ "Gimp.*", NULL, True }, \
|
||||
{ "MPlayer.*", NULL, True }, \
|
||||
{ "Acroread.*", NULL, True }, \
|
||||
|
@ -5,9 +5,9 @@
|
||||
#define TAGS \
|
||||
const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", NULL };
|
||||
|
||||
#define DEFMODE dotile /* dofloat */
|
||||
#define DEFMODE dotile /* dofloat */
|
||||
#define FLOATSYMBOL "><>"
|
||||
#define TILESYMBOL "[]="
|
||||
#define TILESYMBOL "[%u]=" /* %u is replaced with nmaster */
|
||||
|
||||
#define FONT "-*-fixed-medium-r-normal-*-13-*-*-*-*-*-*-*"
|
||||
#define NORMBGCOLOR "#333366"
|
||||
|
@ -1,5 +1,5 @@
|
||||
# dwm version
|
||||
VERSION = 2.9
|
||||
VERSION = 3.0
|
||||
|
||||
# Customize below to fit your system
|
||||
|
||||
|
2
draw.c
2
draw.c
@ -120,7 +120,7 @@ drawstatus(void) {
|
||||
dc.x += dc.w;
|
||||
}
|
||||
dc.w = bmw;
|
||||
drawtext(arrange == dofloat ? FLOATSYMBOL : TILESYMBOL, dc.status, False, False);
|
||||
drawtext(mtext, dc.status, False, False);
|
||||
x = dc.x + dc.w;
|
||||
dc.w = textw(stext);
|
||||
dc.x = bw - dc.w;
|
||||
|
6
dwm.1
6
dwm.1
@ -44,6 +44,12 @@ label toggles between tiling and floating mode.
|
||||
.B Button3
|
||||
click on a tag label adds/removes all windows with that tag to/from the view.
|
||||
.TP
|
||||
.B Button4
|
||||
click on the mode label increases the number of windows in the master area (tiling mode only).
|
||||
.TP
|
||||
.B Button5
|
||||
click on the mode label decreases the number of windows in the master area (tiling mode only).
|
||||
.TP
|
||||
.B Mod1-Button1
|
||||
click on a tag label applies that tag to the focused window.
|
||||
.TP
|
||||
|
2
dwm.h
2
dwm.h
@ -93,6 +93,7 @@ struct Client {
|
||||
|
||||
extern const char *tags[]; /* all tags */
|
||||
extern char stext[1024]; /* status text */
|
||||
extern char mtext[32]; /* mode text */
|
||||
extern int bx, by, bw, bh, bmw; /* bar geometry, bar mode label width */
|
||||
extern int screen, sx, sy, sw, sh; /* screen geometry */
|
||||
extern int wax, way, wah, waw; /* windowarea geometry */
|
||||
@ -167,5 +168,6 @@ extern void restack(void); /* restores z layers of all clients */
|
||||
extern void togglefloat(Arg *arg); /* toggles focusesd client between floating/non-floating state */
|
||||
extern void togglemode(Arg *arg); /* toggles global arrange function (dotile/dofloat) */
|
||||
extern void toggleview(Arg *arg); /* toggles the tag with arg's index (in)visible */
|
||||
extern void updatemodetext(void); /* updates mtext */
|
||||
extern void view(Arg *arg); /* views the tag with arg's index */
|
||||
extern void zoom(Arg *arg); /* zooms the focused client to master area, arg is ignored */
|
||||
|
16
event.c
16
event.c
@ -131,8 +131,20 @@ buttonpress(XEvent *e) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if((ev->x < x + bmw) && (ev->button == Button1))
|
||||
togglemode(NULL);
|
||||
if(ev->x < x + bmw)
|
||||
switch(ev->button) {
|
||||
case Button1:
|
||||
togglemode(NULL);
|
||||
break;
|
||||
case Button4:
|
||||
a.i = 1;
|
||||
incnmaster(&a);
|
||||
break;
|
||||
case Button5:
|
||||
a.i = -1;
|
||||
incnmaster(&a);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if((c = getclient(ev->window))) {
|
||||
focus(c);
|
||||
|
5
main.c
5
main.c
@ -17,7 +17,7 @@
|
||||
|
||||
/* extern */
|
||||
|
||||
char stext[1024];
|
||||
char stext[1024], mtext[32];
|
||||
Bool *seltag;
|
||||
int bx, by, bw, bh, bmw, masterd, screen, sx, sy, sw, sh, wax, way, waw, wah;
|
||||
unsigned int master, nmaster, ntags, numlockmask;
|
||||
@ -101,6 +101,7 @@ setup(void) {
|
||||
cursor[CurResize] = XCreateFontCursor(dpy, XC_sizing);
|
||||
cursor[CurMove] = XCreateFontCursor(dpy, XC_fleur);
|
||||
/* init modifier map */
|
||||
numlockmask = 0;
|
||||
modmap = XGetModifierMapping(dpy);
|
||||
for (i = 0; i < 8; i++) {
|
||||
for (j = 0; j < modmap->max_keypermod; j++) {
|
||||
@ -128,12 +129,12 @@ setup(void) {
|
||||
dc.status[ColFG] = getcolor(STATUSFGCOLOR);
|
||||
setfont(FONT);
|
||||
/* geometry */
|
||||
bmw = textw(TILESYMBOL) > textw(FLOATSYMBOL) ? textw(TILESYMBOL) : textw(FLOATSYMBOL);
|
||||
sx = sy = 0;
|
||||
sw = DisplayWidth(dpy, screen);
|
||||
sh = DisplayHeight(dpy, screen);
|
||||
master = MASTER;
|
||||
nmaster = NMASTER;
|
||||
updatemodetext();
|
||||
/* bar */
|
||||
bx = sx;
|
||||
by = sy;
|
||||
|
20
view.c
20
view.c
@ -2,6 +2,7 @@
|
||||
* See LICENSE file for license details.
|
||||
*/
|
||||
#include "dwm.h"
|
||||
#include <stdio.h>
|
||||
|
||||
/* static */
|
||||
|
||||
@ -75,10 +76,10 @@ dotile(void) {
|
||||
for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next))
|
||||
n++;
|
||||
/* window geoms */
|
||||
mw = (n > nmaster) ? (waw * master) / 1000 : waw;
|
||||
mh = (n > nmaster) ? wah / nmaster : wah / (n > 0 ? n : 1);
|
||||
tw = waw - mw;
|
||||
mw = (n > nmaster) ? (waw * master) / 1000 : waw;
|
||||
th = (n > nmaster) ? wah / (n - nmaster) : 0;
|
||||
tw = waw - mw;
|
||||
|
||||
for(i = 0, c = clients; c; c = c->next)
|
||||
if(isvisible(c)) {
|
||||
@ -149,10 +150,14 @@ focusprev(Arg *arg) {
|
||||
|
||||
void
|
||||
incnmaster(Arg *arg) {
|
||||
if((nmaster + arg->i < 1) || (wah / (nmaster + arg->i) < bh))
|
||||
if((arrange == dofloat) || (nmaster + arg->i < 1) || (wah / (nmaster + arg->i) < bh))
|
||||
return;
|
||||
nmaster += arg->i;
|
||||
arrange();
|
||||
updatemodetext();
|
||||
if(sel)
|
||||
arrange();
|
||||
else
|
||||
drawstatus();
|
||||
}
|
||||
|
||||
Bool
|
||||
@ -218,6 +223,7 @@ togglefloat(Arg *arg) {
|
||||
void
|
||||
togglemode(Arg *arg) {
|
||||
arrange = (arrange == dofloat) ? dotile : dofloat;
|
||||
updatemodetext();
|
||||
if(sel)
|
||||
arrange();
|
||||
else
|
||||
@ -235,6 +241,12 @@ toggleview(Arg *arg) {
|
||||
arrange();
|
||||
}
|
||||
|
||||
void
|
||||
updatemodetext() {
|
||||
snprintf(mtext, sizeof mtext, arrange == dofloat ? FLOATSYMBOL : TILESYMBOL, nmaster);
|
||||
bmw = textw(mtext);
|
||||
}
|
||||
|
||||
void
|
||||
view(Arg *arg) {
|
||||
unsigned int i;
|
||||
|
Reference in New Issue
Block a user