Introduction
Introduction Statistics Contact Development Disclaimer Help
tuntested monocle - dwm - [fork] customized build of dwm, the dynamic window ma…
git clone git://src.adamsgaard.dk/dwm
Log
Files
Refs
README
LICENSE
---
commit 12ea925076c4f1c013502651b0be90c05e0febac
parent 79ecbeca7e4ca6d614bf233e7bc95d273df6e3b4
Author: Anselm R Garbe <[email protected]>
Date: Thu, 19 Jun 2008 11:38:53 +0100
untested monocle
Diffstat:
M config.def.h | 15 +++++++++------
M config.mk | 2 +-
M dwm.1 | 11 ++++++++++-
M dwm.c | 72 +++++++++++++++--------------…
4 files changed, 55 insertions(+), 45 deletions(-)
---
diff --git a/config.def.h b/config.def.h
t@@ -32,8 +32,9 @@ static Bool resizehints = True; /* False means respect size …
static Layout layouts[] = {
/* symbol arrange function */
- { "[]=", tile }, /* first entry is default */
- { "><>", NULL }, /* no layout function means floating behavior */
+ { "[]=", tile }, /* first entry is default */
+ { "><>", NULL }, /* no layout function means floating behavior…
+ { "[M]", monocle }, /* first entry is default */
};
/* key definitions */
t@@ -60,11 +61,13 @@ static Key keys[] = {
{ MODKEY, XK_k, focusstack, {.i = -1 } …
{ MODKEY, XK_h, setmfact, {.f = -0.05…
{ MODKEY, XK_l, setmfact, {.f = +0.05…
- { MODKEY, XK_m, togglemax, {0} },
{ MODKEY, XK_Return, zoom, {0} },
{ MODKEY, XK_Tab, view, {0} },
{ MODKEY|ShiftMask, XK_c, killclient, {0} },
- { MODKEY, XK_space, togglelayout, {0} },
+ { MODKEY, XK_t, setlayout, {.v = &layo…
+ { MODKEY, XK_f, setlayout, {.v = &layo…
+ { MODKEY, XK_m, setlayout, {.v = &layo…
+ { MODKEY, XK_space, setlayout, {0} },
{ MODKEY|ShiftMask, XK_space, togglefloating, {0} },
{ MODKEY, XK_0, view, {.ui = ~0 }…
{ MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 }…
t@@ -91,8 +94,8 @@ static Key keys[] = {
* ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
static Button buttons[] = {
/* click event mask button function …
- { ClkLtSymbol, 0, Button1, togglelayout, …
- { ClkLtSymbol, 0, Button3, togglemax, …
+ { ClkLtSymbol, 0, Button1, setlayout, …
+ { ClkLtSymbol, 0, Button3, setlayout, …
{ ClkWinTitle, 0, Button2, zoom, …
{ ClkStatusText, 0, Button2, spawn, …
{ ClkClientWin, MODKEY, Button1, movemouse, …
diff --git a/config.mk b/config.mk
t@@ -1,5 +1,5 @@
# dwm version
-VERSION = 5.0.1
+VERSION = 5.1
# Customize below to fit your system
diff --git a/dwm.1 b/dwm.1
t@@ -60,8 +60,17 @@ Start
.B Mod1\-b
Toggles bar on and off.
.TP
+.B Mod1\-t
+Sets tiled layout.
+.TP
+.B Mod1\-f
+Sets floating layout.
+.TP
+.B Mod1\-f
+Sets monocle layout.
+.TP
.B Mod1\-space
-Toggles between layouts.
+Toggles between current and previous layout.
.TP
.B Mod1\-j
Focus next window.
diff --git a/dwm.c b/dwm.c
t@@ -89,7 +89,7 @@ struct Client {
int basew, baseh, incw, inch, maxw, maxh, minw, minh;
int bw, oldbw;
uint tags;
- Bool isbanned, isfixed, isfloating, ismoved, isurgent;
+ Bool isbanned, isfixed, isfloating, isurgent;
Client *next;
Client *snext;
Window win;
t@@ -168,6 +168,7 @@ static void killclient(const Arg *arg);
static void manage(Window w, XWindowAttributes *wa);
static void mappingnotify(XEvent *e);
static void maprequest(XEvent *e);
+static void monocle(void);
static void movemouse(const Arg *arg);
static Client *nexttiled(Client *c);
static void propertynotify(XEvent *e);
t@@ -178,6 +179,7 @@ static void restack(void);
static void run(void);
static void scan(void);
static void setclientstate(Client *c, long state);
+static void setlayout(const Arg *arg);
static void setmfact(const Arg *arg);
static void setup(void);
static void spawn(const Arg *arg);
t@@ -186,8 +188,6 @@ static int textnw(const char *text, uint len);
static void tile(void);
static void togglebar(const Arg *arg);
static void togglefloating(const Arg *arg);
-static void togglelayout(const Arg *arg);
-static void togglemax(const Arg *arg);
static void toggletag(const Arg *arg);
static void toggleview(const Arg *arg);
static void unmanage(Client *c);
t@@ -225,7 +225,6 @@ static void (*handler[LASTEvent]) (XEvent *) = {
[UnmapNotify] = unmapnotify
};
static Atom wmatom[WMLast], netatom[NetLast];
-static Bool ismax = False;
static Bool otherwm, readin;
static Bool running = True;
static uint tagset[] = {1, 1}; /* after start, first tag is selected */
t@@ -275,21 +274,17 @@ arrange(void) {
for(c = clients; c; c = c->next)
if(c->tags & tagset[seltags]) { /* is visible */
- if(ismax && !c->isfixed) {
- XMoveResizeWindow(dpy, c->win, wx, wy, ww - 2 …
- c->ismoved = True;
- }
- else if(!lt->arrange || c->isfloating)
+ if(!lt->arrange || c->isfloating)
resize(c, c->x, c->y, c->w, c->h, True);
c->isbanned = False;
}
else if(!c->isbanned) {
XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
- c->isbanned = c->ismoved = True;
+ c->isbanned = True;
}
focus(NULL);
- if(lt->arrange && !ismax)
+ if(lt->arrange)
lt->arrange();
restack();
}
t@@ -418,8 +413,6 @@ configurerequest(XEvent *e) {
if((c = getclient(ev->window))) {
if(ev->value_mask & CWBorderWidth)
c->bw = ev->border_width;
- if(ismax && !c->isbanned && !c->isfixed)
- XMoveResizeWindow(dpy, c->win, wx, wy, ww - 2 * c->bw,…
else if(c->isfloating || !lt->arrange) {
if(ev->value_mask & CWX)
c->x = sx + ev->x;
t@@ -507,7 +500,7 @@ drawbar(void) {
}
if(blw > 0) {
dc.w = blw;
- drawtext(lt->symbol, dc.norm, ismax);
+ drawtext(lt->symbol, dc.norm, False);
x = dc.x + dc.w;
}
else
t@@ -967,6 +960,14 @@ maprequest(XEvent *e) {
}
void
+monocle(void) {
+ Client *c;
+
+ for(c = nexttiled(clients); c; c = nexttiled(c->next))
+ resize(c, wx, wy, ww, wh, resizehints);
+}
+
+void
movemouse(const Arg *arg) {
int x1, y1, ocx, ocy, di, nx, ny;
uint dui;
t@@ -1115,8 +1116,7 @@ resize(Client *c, int x, int y, int w, int h, Bool sizeh…
h = bh;
if(w < bh)
w = bh;
- if(c->x != x || c->y != y || c->w != w || c->h != h || c->ismoved) {
- c->ismoved = False;
+ if(c->x != x || c->y != y || c->w != w || c->h != h) {
c->x = wc.x = x;
c->y = wc.y = y;
c->w = wc.width = w;
t@@ -1186,9 +1186,9 @@ restack(void) {
drawbar();
if(!sel)
return;
- if(ismax || sel->isfloating || !lt->arrange)
+ if(sel->isfloating || !lt->arrange)
XRaiseWindow(dpy, sel->win);
- if(!ismax && lt->arrange) {
+ if(lt->arrange) {
wc.stack_mode = Below;
wc.sibling = barwin;
for(c = stack; c; c = c->snext)
t@@ -1296,6 +1296,22 @@ setclientstate(Client *c, long state) {
PropModeReplace, (unsigned char *)data, 2);
}
+void
+setlayout(const Arg *arg) {
+ static Layout *prevlt = &layouts[1 % LENGTH(layouts)];
+
+ if(!arg || !arg->v || arg->v == lt)
+ lt = prevlt;
+ else {
+ prevlt = lt;
+ lt = (Layout *)arg->v;
+ }
+ if(sel)
+ arrange();
+ else
+ drawbar();
+}
+
/* arg > 1.0 will set mfact absolutly */
void
setmfact(const Arg *arg) {
t@@ -1477,24 +1493,6 @@ togglefloating(const Arg *arg) {
}
void
-togglelayout(const Arg *arg) {
- if(arg && arg->v)
- lt = (Layout *)arg->v;
- else if(++lt == &layouts[LENGTH(layouts)])
- lt = &layouts[0];
- if(sel)
- arrange();
- else
- drawbar();
-}
-
-void
-togglemax(const Arg *arg) {
- ismax = !ismax;
- arrange();
-}
-
-void
toggletag(const Arg *arg) {
uint mask = sel->tags ^ (arg->ui & TAGMASK);
t@@ -1693,7 +1691,7 @@ void
zoom(const Arg *arg) {
Client *c = sel;
- if(ismax || !lt->arrange || (sel && sel->isfloating))
+ if(!lt->arrange || lt->arrange == monocle || (sel && sel->isfloating))
return;
if(c == nexttiled(clients))
if(!c || !(c = nexttiled(c->next)))
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.