changeset: 1445:4ad1f24d38ec
tag: tip
user: Anselm R Garbe <anselm_AT_garbe.us>
date: Thu Jul 02 20:37:26 2009 +0100
files: config.def.h dwm.1 dwm.c
description:
changed focusmon/tagmon to work on prev/next instead (-1/+1), changed shortcuts to Mod1-, Mod1-. and Mod1-Shift-, Mod1-Shift-.
diff -r 19dc2b0c61e2 -r 4ad1f24d38ec config.def.h
--- a/config.def.h Thu Jul 02 18:40:04 2009 +0100
+++ b/config.def.h Thu Jul 02 20:37:26 2009 +0100
@@ -71,10 +71,10 @@
{ MODKEY|ShiftMask, XK_space, togglefloating, {0} },
{ MODKEY, XK_0, view, {.ui = ~0 } },
{ MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } },
- { MODKEY, XK_w, focusmon, {.ui = 0 } },
- { MODKEY, XK_e, focusmon, {.ui = 1 } },
- { MODKEY|ShiftMask, XK_w, tagmon, {.ui = 0 } },
- { MODKEY|ShiftMask, XK_e, tagmon, {.ui = 1 } },
+ { MODKEY, XK_comma, focusmon, {.i = -1 } },
+ { MODKEY, XK_period, focusmon, {.i = +1 } },
+ { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } },
+ { MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } },
TAGKEYS( XK_1, 0)
TAGKEYS( XK_2, 1)
TAGKEYS( XK_3, 2)
diff -r 19dc2b0c61e2 -r 4ad1f24d38ec dwm.1
--- a/dwm.1 Thu Jul 02 18:40:04 2009 +0100
+++ b/dwm.1 Thu Jul 02 20:37:26 2009 +0100
@@ -19,14 +19,14 @@
Windows are grouped by tags. Each window can be tagged with one or multiple
tags. Selecting certain tags displays all windows with these tags.
.P
-dwm contains a small status bar which displays all available tags, the layout,
+Each screen contains a small status bar which displays all available tags, the layout,
the title of the focused window, and the text read from the root window name
-property. A floating window is indicated with an empty square and a maximised
-floating window is indicated with a filled square before the windows title.
-The selected tags are indicated with a different color. The tags of the focused
-window are indicated with a filled square in the top left corner. The tags
-which are applied to one or more windows are indicated with an empty square in
-the top left corner.
+property, if the screen is focused. A floating window is indicated with an
+empty square and a maximised floating window is indicated with a filled square
+before the windows title. The selected tags are indicated with a different
+color. The tags of the focused window are indicated with a filled square in the
+top left corner. The tags which are applied to one or more windows are
+indicated with an empty square in the top left corner.
.P
dwm draws a small border around windows to indicate the focus state.
.SH OPTIONS
@@ -56,6 +56,18 @@
.B Mod1\-Shift\-Return
Start
.BR xterm.
+.TP
+.B Mod1\-,
+Focus previous screen, if any.
+.TP
+.B Mod1\-.
+Focus next screen, if any.
+.TP
+.B Mod1\-Shift\-,
+Send focused window to previous screen, if any.
+.TP
+.B Mod1\-Shift\-,
+Send focused window to next screen, if any.
.TP
.B Mod1\-b
Toggles bar on and off.
diff -r 19dc2b0c61e2 -r 4ad1f24d38ec dwm.c
--- a/dwm.c Thu Jul 02 18:40:04 2009 +0100
+++ b/dwm.c Thu Jul 02 20:37:26 2009 +0100
@@ -11,9 +11,9 @@
* in O(1) time.
*
* Each child of the root window is called a client, except windows which have
- * set the override_redirect flag. Clients are organized in a global
- * linked client list, the focus history is remembered through a global
- * stack list. Each client contains a bit array to indicate the tags of a
+ * set the override_redirect flag. Clients are organized in a linked client
+ * list on each monitor, the focus history is remembered through a stack list
+ * on each monitor. Each client contains a bit array to indicate the tags of a
* client.
*
* Keys and tagging rules are organized as arrays and defined in config.h.
@@ -164,6 +164,7 @@
static void detach(Client *c);
static void detachstack(Client *c);
static void die(const char *errstr, ...);
+static Monitor *dirtomon(int dir);
static void drawbar(Monitor *m);
static void drawbars(void);
static void drawsquare(Bool filled, Bool empty, Bool invert, unsigned long col[ColLast]);
@@ -180,7 +181,6 @@
static Bool gettextprop(Window w, Atom atom, char *text, unsigned int size);
static void grabbuttons(Client *c, Bool focused);
static void grabkeys(void);
-static Monitor *idxtomon(unsigned int n);
static void initfont(const char *fontstr);
static Bool isprotodel(Client *c);
static void keypress(XEvent *e);
@@ -621,6 +621,22 @@
exit(EXIT_FAILURE);
}
+Monitor *
+dirtomon(int dir) {
+ Monitor *m = NULL;
+
+ if(dir > 0)
+ if(!(m = selmon->next))
+ m = mons;
+ else {
+ if(selmon == mons)
+ for(m = mons; m->next; m = m->next);
+ else
+ for(m = mons; m->next != selmon; m = m->next);
+ }
+ return m;
+}
+
void
drawbar(Monitor *m) {
int x;
@@ -797,10 +813,11 @@
void
focusmon(const Arg *arg) {
- Monitor *m;
+ Monitor *m = NULL;
- if(!(m = idxtomon(arg->ui)) || m == selmon)
+ if(!mons->next)
return;
+ m = dirtomon(arg->i);
unfocus(selmon->sel);
selmon = m;
focus(NULL);
@@ -932,15 +949,6 @@
True, GrabModeAsync, GrabModeAsync);
}
}
-}
-
-Monitor *
-idxtomon(unsigned int n) {
- unsigned int i;
- Monitor *m;
-
- for(m = mons, i = 0; m && i != n; m = m->next, i++);
- return m;
}
void
@@ -1512,11 +1520,9 @@
void
tagmon(const Arg *arg) {
- Monitor *m;
-
- if(!selmon->sel || !(m = idxtomon(arg->ui)))
- return;
- sendmon(selmon->sel, m);
+ if(!selmon->sel || !mons->next)
+ return
+ sendmon(selmon->sel, dirtomon(arg->i));
}
int
Received on Thu Jul 02 2009 - 19:37:49 UTC
This archive was generated by hypermail 2.2.0 : Thu Jul 02 2009 - 19:48:06 UTC