new stuff
d7b074fc
4 file(s) · +177 −16
| 1 | + | /* See LICENSE file for copyright and license details. */ |
|
| 2 | + | ||
| 3 | + | /* appearance */ |
|
| 4 | + | #define BORDERPX 1 |
|
| 5 | + | #define FONT "-*-terminus-medium-r-normal-*-14-*-*-*-*-*-*-*" |
|
| 6 | + | #define NORMBORDERCOLOR "#cccccc" |
|
| 7 | + | #define NORMBGCOLOR "#cccccc" |
|
| 8 | + | #define NORMFGCOLOR "#000000" |
|
| 9 | + | #define SELBORDERCOLOR "#0066ff" |
|
| 10 | + | #define SELBGCOLOR "#0066ff" |
|
| 11 | + | #define SELFGCOLOR "#ffffff" |
|
| 12 | + | ||
| 13 | + | /* bar position */ |
|
| 14 | + | #define BX 0 |
|
| 15 | + | #define BY 0 |
|
| 16 | + | #define BW 1280 |
|
| 17 | + | ||
| 18 | + | /* window area, including floating windows */ |
|
| 19 | + | #define WX 0 |
|
| 20 | + | #define WY bh |
|
| 21 | + | #define WW sw |
|
| 22 | + | #define WH sh - bh |
|
| 23 | + | ||
| 24 | + | /* master area */ |
|
| 25 | + | #define MX WX |
|
| 26 | + | #define MY bh |
|
| 27 | + | #define MW 1280 |
|
| 28 | + | #define MH 800 - bh |
|
| 29 | + | ||
| 30 | + | /* tile area, might be on a different screen */ |
|
| 31 | + | #define TX 1280 |
|
| 32 | + | #define TY 0 |
|
| 33 | + | #define TW 1680 |
|
| 34 | + | #define TH 1050 |
|
| 35 | + | ||
| 36 | + | /* monocle area, might be restricted to a specific screen */ |
|
| 37 | + | #define MOX MX |
|
| 38 | + | #define MOY MY |
|
| 39 | + | #define MOW MW |
|
| 40 | + | #define MOH MH |
|
| 41 | + | ||
| 42 | + | /* tagging */ |
|
| 43 | + | const char tags[][MAXTAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; |
|
| 44 | + | ||
| 45 | + | Rule rules[] = { |
|
| 46 | + | /* class:instance:title substr tags ref isfloating */ |
|
| 47 | + | { "Firefox", tags[8], False }, |
|
| 48 | + | { "Gimp", NULL, True }, |
|
| 49 | + | { "MPlayer", NULL, True }, |
|
| 50 | + | { "Acroread", NULL, True }, |
|
| 51 | + | }; |
|
| 52 | + | ||
| 53 | + | /* layout(s) */ |
|
| 54 | + | #define RESIZEHINTS True /* False - respect size hints in tiled resizals */ |
|
| 55 | + | #define SNAP 32 /* snap pixel */ |
|
| 56 | + | ||
| 57 | + | Layout layouts[] = { |
|
| 58 | + | /* symbol function isfloating */ |
|
| 59 | + | { "[]|", tileh, False }, /* first entry is default */ |
|
| 60 | + | { "[]=", tilev, False }, |
|
| 61 | + | { "><>", floating, True }, |
|
| 62 | + | { "[M]", monocle, True }, |
|
| 63 | + | }; |
|
| 64 | + | ||
| 65 | + | /* key definitions */ |
|
| 66 | + | #define MODKEY Mod1Mask |
|
| 67 | + | Key keys[] = { |
|
| 68 | + | /* modifier key function argument */ |
|
| 69 | + | #if ANSELM_OFFICE |
|
| 70 | + | { MODKEY, XK_p, spawn, |
|
| 71 | + | "exec dmenu_run -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGCOLOR"' -sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"' -x 0 -y 0 -w 1280" }, |
|
| 72 | + | #else |
|
| 73 | + | { MODKEY, XK_p, spawn, |
|
| 74 | + | "exec dmenu_run -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGCOLOR"' -sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"'" }, |
|
| 75 | + | #endif |
|
| 76 | + | { MODKEY|ShiftMask, XK_Return, spawn, "exec uxterm" }, |
|
| 77 | + | { MODKEY, XK_j, focusnext, NULL }, |
|
| 78 | + | { MODKEY, XK_k, focusprev, NULL }, |
|
| 79 | + | { MODKEY, XK_r, reapply, NULL }, |
|
| 80 | + | { MODKEY, XK_Return, zoom, NULL }, |
|
| 81 | + | { MODKEY, XK_Tab, viewprevtag, NULL }, |
|
| 82 | + | { MODKEY, XK_m, setlayout, "[M]" }, |
|
| 83 | + | { MODKEY, XK_f, setlayout, "><>" }, |
|
| 84 | + | { MODKEY, XK_v, setlayout, "[]=" }, |
|
| 85 | + | { MODKEY, XK_h, setlayout, "[]|" }, |
|
| 86 | + | { MODKEY|ShiftMask, XK_space, togglefloating, NULL }, |
|
| 87 | + | { MODKEY|ShiftMask, XK_c, killclient, NULL }, |
|
| 88 | + | { MODKEY, XK_0, view, NULL }, |
|
| 89 | + | { MODKEY, XK_1, view, tags[0] }, |
|
| 90 | + | { MODKEY, XK_2, view, tags[1] }, |
|
| 91 | + | { MODKEY, XK_3, view, tags[2] }, |
|
| 92 | + | { MODKEY, XK_4, view, tags[3] }, |
|
| 93 | + | { MODKEY, XK_5, view, tags[4] }, |
|
| 94 | + | { MODKEY, XK_6, view, tags[5] }, |
|
| 95 | + | { MODKEY, XK_7, view, tags[6] }, |
|
| 96 | + | { MODKEY, XK_8, view, tags[7] }, |
|
| 97 | + | { MODKEY, XK_9, view, tags[8] }, |
|
| 98 | + | { MODKEY|ControlMask, XK_1, toggleview, tags[0] }, |
|
| 99 | + | { MODKEY|ControlMask, XK_2, toggleview, tags[1] }, |
|
| 100 | + | { MODKEY|ControlMask, XK_3, toggleview, tags[2] }, |
|
| 101 | + | { MODKEY|ControlMask, XK_4, toggleview, tags[3] }, |
|
| 102 | + | { MODKEY|ControlMask, XK_5, toggleview, tags[4] }, |
|
| 103 | + | { MODKEY|ControlMask, XK_6, toggleview, tags[5] }, |
|
| 104 | + | { MODKEY|ControlMask, XK_7, toggleview, tags[6] }, |
|
| 105 | + | { MODKEY|ControlMask, XK_8, toggleview, tags[7] }, |
|
| 106 | + | { MODKEY|ControlMask, XK_9, toggleview, tags[8] }, |
|
| 107 | + | { MODKEY|ShiftMask, XK_0, tag, NULL }, |
|
| 108 | + | { MODKEY|ShiftMask, XK_1, tag, tags[0] }, |
|
| 109 | + | { MODKEY|ShiftMask, XK_2, tag, tags[1] }, |
|
| 110 | + | { MODKEY|ShiftMask, XK_3, tag, tags[2] }, |
|
| 111 | + | { MODKEY|ShiftMask, XK_4, tag, tags[3] }, |
|
| 112 | + | { MODKEY|ShiftMask, XK_5, tag, tags[4] }, |
|
| 113 | + | { MODKEY|ShiftMask, XK_6, tag, tags[5] }, |
|
| 114 | + | { MODKEY|ShiftMask, XK_7, tag, tags[6] }, |
|
| 115 | + | { MODKEY|ShiftMask, XK_8, tag, tags[7] }, |
|
| 116 | + | { MODKEY|ShiftMask, XK_9, tag, tags[8] }, |
|
| 117 | + | { MODKEY|ControlMask|ShiftMask, XK_1, toggletag, tags[0] }, |
|
| 118 | + | { MODKEY|ControlMask|ShiftMask, XK_2, toggletag, tags[1] }, |
|
| 119 | + | { MODKEY|ControlMask|ShiftMask, XK_3, toggletag, tags[2] }, |
|
| 120 | + | { MODKEY|ControlMask|ShiftMask, XK_4, toggletag, tags[3] }, |
|
| 121 | + | { MODKEY|ControlMask|ShiftMask, XK_5, toggletag, tags[4] }, |
|
| 122 | + | { MODKEY|ControlMask|ShiftMask, XK_6, toggletag, tags[5] }, |
|
| 123 | + | { MODKEY|ControlMask|ShiftMask, XK_7, toggletag, tags[6] }, |
|
| 124 | + | { MODKEY|ControlMask|ShiftMask, XK_8, toggletag, tags[7] }, |
|
| 125 | + | { MODKEY|ControlMask|ShiftMask, XK_9, toggletag, tags[8] }, |
|
| 126 | + | { MODKEY|ShiftMask, XK_q, quit, NULL }, |
|
| 127 | + | }; |
| 56 | 56 | ||
| 57 | 57 | Layout layouts[] = { |
|
| 58 | 58 | /* symbol function isfloating */ |
|
| 59 | - | { "[]=", tile, False }, /* first entry is default */ |
|
| 60 | - | { "><>", floating True }, |
|
| 61 | - | { "[M]", monocle True }, |
|
| 59 | + | { "[]|", tileh, False }, /* first entry is default */ |
|
| 60 | + | { "[]=", tilev, False }, |
|
| 61 | + | { "><>", floating, True }, |
|
| 62 | + | { "[M]", monocle, True }, |
|
| 62 | 63 | }; |
|
| 63 | 64 | ||
| 64 | 65 | /* key definitions */ |
|
| 80 | 81 | { MODKEY, XK_Tab, viewprevtag, NULL }, |
|
| 81 | 82 | { MODKEY, XK_m, setlayout, "[M]" }, |
|
| 82 | 83 | { MODKEY, XK_f, setlayout, "><>" }, |
|
| 83 | - | { MODKEY, XK_t, setlayout, "[]=" }, |
|
| 84 | + | { MODKEY, XK_v, setlayout, "[]=" }, |
|
| 85 | + | { MODKEY, XK_h, setlayout, "[]|" }, |
|
| 84 | 86 | { MODKEY|ShiftMask, XK_space, togglefloating, NULL }, |
|
| 85 | 87 | { MODKEY|ShiftMask, XK_c, killclient, NULL }, |
|
| 86 | 88 | { MODKEY, XK_0, view, NULL }, |
|
| 69 | 69 | .B Mod1\-m |
|
| 70 | 70 | Apply monocle layout. |
|
| 71 | 71 | .TP |
|
| 72 | - | .B Mod1\-t |
|
| 73 | - | Apply tiled layout. |
|
| 72 | + | .B Mod1\-v |
|
| 73 | + | Apply vertical tiled layout. |
|
| 74 | + | .TP |
|
| 75 | + | .B Mod1\-h |
|
| 76 | + | Apply horizontal tiled layout. |
|
| 74 | 77 | .TP |
|
| 75 | 78 | .B Mod1\-j |
|
| 76 | 79 | Focus next window. |
| 1 | - | /** |
|
| 2 | - | * - allow for vstack |
|
| 3 | - | */ |
|
| 4 | 1 | /* See LICENSE file for copyright and license details. |
|
| 5 | 2 | * |
|
| 6 | 3 | * dynamic window manager is designed like any other X client as well. It is |
|
| 36 | 33 | #include <sys/select.h> |
|
| 37 | 34 | #include <sys/types.h> |
|
| 38 | 35 | #include <sys/wait.h> |
|
| 39 | - | #include <regex.h> |
|
| 40 | 36 | #include <X11/cursorfont.h> |
|
| 41 | 37 | #include <X11/keysym.h> |
|
| 42 | 38 | #include <X11/Xatom.h> |
|
| 170 | 166 | void tag(const char *arg); |
|
| 171 | 167 | unsigned int textnw(const char *text, unsigned int len); |
|
| 172 | 168 | unsigned int textw(const char *text); |
|
| 173 | - | void tile(void); |
|
| 169 | + | void tileh(void); |
|
| 170 | + | void tilehstack(unsigned int n); |
|
| 174 | 171 | unsigned int tilemaster(void); |
|
| 172 | + | void tilev(void); |
|
| 175 | 173 | void tilevstack(unsigned int n); |
|
| 176 | 174 | void togglefloating(const char *arg); |
|
| 177 | 175 | void toggletag(const char *arg); |
|
| 1547 | 1545 | resize(c, x, y, w, h, False); |
|
| 1548 | 1546 | } |
|
| 1549 | 1547 | ||
| 1548 | + | void |
|
| 1549 | + | tileh(void) { |
|
| 1550 | + | tilehstack(tilemaster()); |
|
| 1551 | + | } |
|
| 1552 | + | ||
| 1553 | + | void |
|
| 1554 | + | tilehstack(unsigned int n) { |
|
| 1555 | + | int i, x, w; |
|
| 1556 | + | Client *c; |
|
| 1557 | + | ||
| 1558 | + | if(n == 0) |
|
| 1559 | + | return; |
|
| 1560 | + | ||
| 1561 | + | x = TX; |
|
| 1562 | + | w = (TW) / n; |
|
| 1563 | + | if(w < bh) |
|
| 1564 | + | w = TW; |
|
| 1565 | + | ||
| 1566 | + | for(i = 0, c = nexttiled(clients); c; c = nexttiled(c->next), i++) |
|
| 1567 | + | if(i > 0) { |
|
| 1568 | + | if(i > 1 && i == n) /* remainder */ |
|
| 1569 | + | tileresize(c, x, TY, ((TX) + (TW)) - x - 2 * c->border, |
|
| 1570 | + | TH - 2 * c->border); |
|
| 1571 | + | else |
|
| 1572 | + | tileresize(c, x, TY, w - 2 * c->border, |
|
| 1573 | + | TH - 2 * c->border); |
|
| 1574 | + | if(w != TW) |
|
| 1575 | + | x = c->x + c->w + 2 * c->border; |
|
| 1576 | + | } |
|
| 1577 | + | } |
|
| 1578 | + | ||
| 1550 | 1579 | unsigned int |
|
| 1551 | 1580 | tilemaster(void) { |
|
| 1552 | 1581 | unsigned int n; |
|
| 1564 | 1593 | } |
|
| 1565 | 1594 | ||
| 1566 | 1595 | void |
|
| 1596 | + | tilev(void) { |
|
| 1597 | + | tilevstack(tilemaster()); |
|
| 1598 | + | } |
|
| 1599 | + | ||
| 1600 | + | void |
|
| 1567 | 1601 | tilevstack(unsigned int n) { |
|
| 1568 | 1602 | int i, y, h; |
|
| 1569 | 1603 | Client *c; |
|
| 1587 | 1621 | if(h != TH) |
|
| 1588 | 1622 | y = c->y + c->h + 2 * c->border; |
|
| 1589 | 1623 | } |
|
| 1590 | - | } |
|
| 1591 | - | ||
| 1592 | - | void |
|
| 1593 | - | tile(void) { |
|
| 1594 | - | tilevstack(tilemaster()); |
|
| 1595 | 1624 | } |
|
| 1596 | 1625 | ||
| 1597 | 1626 | void |
|