removed the stack position stuff
10885d34
8 file(s) · +26 −96
| 8 | 8 | ||
| 9 | 9 | #define DEFMODE dotile /* dofloat */ |
|
| 10 | 10 | #define FLOATSYMBOL "><>" |
|
| 11 | - | #define STACKPOS StackRight /* StackLeft */ |
|
| 12 | - | #define BSTACKSYMBOL "===" |
|
| 13 | - | #define VSTACKSYMBOL "[]=" |
|
| 11 | + | #define TILESYMBOL "[]=" |
|
| 14 | 12 | ||
| 15 | 13 | #define FONT "-*-terminus-medium-*-*-*-12-*-*-*-*-*-iso10646-*" |
|
| 16 | 14 | #define NORMBGCOLOR "#333333" |
|
| 20 | 18 | #define STATUSBGCOLOR "#222222" |
|
| 21 | 19 | #define STATUSFGCOLOR "#9999cc" |
|
| 22 | 20 | ||
| 23 | - | #define MASTER 600 /* per mill */ |
|
| 21 | + | #define MASTER 600 /* per thousand */ |
|
| 24 | 22 | #define MODKEY Mod1Mask |
|
| 25 | 23 | ||
| 26 | 24 | #define KEYS \ |
|
| 36 | 34 | { MODKEY, XK_j, focusnext, { 0 } }, \ |
|
| 37 | 35 | { MODKEY, XK_k, focusprev, { 0 } }, \ |
|
| 38 | 36 | { MODKEY, XK_Return, zoom, { 0 } }, \ |
|
| 39 | - | { MODKEY, XK_b, togglestackpos, { 0 } }, \ |
|
| 40 | - | { MODKEY, XK_g, resizecol, { .i = 10 } }, \ |
|
| 41 | - | { MODKEY, XK_s, resizecol, { .i = -10 } }, \ |
|
| 37 | + | { MODKEY, XK_g, resizecol, { .i = 15 } }, \ |
|
| 38 | + | { MODKEY, XK_s, resizecol, { .i = -15 } }, \ |
|
| 42 | 39 | { MODKEY|ShiftMask, XK_1, tag, { .i = 0 } }, \ |
|
| 43 | 40 | { MODKEY|ShiftMask, XK_2, tag, { .i = 1 } }, \ |
|
| 44 | 41 | { MODKEY|ShiftMask, XK_3, tag, { .i = 2 } }, \ |
|
| 8 | 8 | ||
| 9 | 9 | #define DEFMODE dotile /* dofloat */ |
|
| 10 | 10 | #define FLOATSYMBOL "><>" |
|
| 11 | - | #define STACKPOS StackRight /* StackLeft */ |
|
| 12 | - | #define BSTACKSYMBOL "===" |
|
| 13 | - | #define VSTACKSYMBOL "[]=" |
|
| 11 | + | #define TILESYMBOL "[]=" |
|
| 14 | 12 | ||
| 15 | 13 | #define FONT "fixed" |
|
| 16 | 14 | #define NORMBGCOLOR "#333366" |
|
| 20 | 18 | #define STATUSBGCOLOR "#dddddd" |
|
| 21 | 19 | #define STATUSFGCOLOR "#222222" |
|
| 22 | 20 | ||
| 23 | - | #define MASTER 600 /* per mill */ |
|
| 21 | + | #define MASTER 600 /* per thousand */ |
|
| 24 | 22 | #define MODKEY Mod1Mask |
|
| 25 | 23 | ||
| 26 | 24 | #define KEYS \ |
|
| 30 | 28 | { MODKEY, XK_Tab, focusnext, { 0 } }, \ |
|
| 31 | 29 | { MODKEY|ShiftMask, XK_Tab, focusprev, { 0 } }, \ |
|
| 32 | 30 | { MODKEY, XK_Return, zoom, { 0 } }, \ |
|
| 33 | - | { MODKEY, XK_b, togglestackpos, { 0 } }, \ |
|
| 34 | - | { MODKEY, XK_g, resizecol, { .i = 10 } }, \ |
|
| 35 | - | { MODKEY, XK_s, resizecol, { .i = -10 } }, \ |
|
| 31 | + | { MODKEY, XK_g, resizecol, { .i = 15 } }, \ |
|
| 32 | + | { MODKEY, XK_s, resizecol, { .i = -15 } }, \ |
|
| 36 | 33 | { MODKEY|ShiftMask, XK_1, tag, { .i = 0 } }, \ |
|
| 37 | 34 | { MODKEY|ShiftMask, XK_2, tag, { .i = 1 } }, \ |
|
| 38 | 35 | { MODKEY|ShiftMask, XK_3, tag, { .i = 2 } }, \ |
|
| 104 | 104 | } |
|
| 105 | 105 | ||
| 106 | 106 | dc.w = bmw; |
|
| 107 | - | drawtext(arrange == dofloat ? |
|
| 108 | - | FLOATSYMBOL : stackpos == StackBottom ? |
|
| 109 | - | BSTACKSYMBOL : VSTACKSYMBOL, dc.status, False); |
|
| 107 | + | drawtext(arrange == dofloat ? FLOATSYMBOL : TILESYMBOL, dc.status, False); |
|
| 110 | 108 | ||
| 111 | 109 | x = dc.x + dc.w; |
|
| 112 | 110 | dc.w = textw(stext); |
| 40 | 40 | label toggles between tiling and floating mode. |
|
| 41 | 41 | .TP |
|
| 42 | 42 | .B Button3 |
|
| 43 | - | click on a tag label adds/removes all windows with that tag to/from the view, |
|
| 44 | - | click on the mode label toggles the stack position (tiling mode). |
|
| 43 | + | click on a tag label adds/removes all windows with that tag to/from the view. |
|
| 45 | 44 | .TP |
|
| 46 | 45 | .B Mod1-Button1 |
|
| 47 | 46 | click on a tag label applies that tag to the focused window. |
|
| 62 | 61 | .TP |
|
| 63 | 62 | .B Mod1-Return |
|
| 64 | 63 | Zooms/cycles current window to/from master area (tiling mode), toggles maximization current window (floating mode). |
|
| 65 | - | .TP |
|
| 66 | - | .B Mod1-b |
|
| 67 | - | Toggle stack position (tiling mode only). |
|
| 68 | 64 | .TP |
|
| 69 | 65 | .B Mod1-g |
|
| 70 | 66 | Grow current area (tiling mode only). |
|
| 48 | 48 | enum { ColFG, ColBG, ColLast }; /* color */ |
|
| 49 | 49 | ||
| 50 | 50 | typedef enum { |
|
| 51 | - | StackLeft, StackBottom, StackRight |
|
| 52 | - | } StackPos; /* stack position*/ |
|
| 53 | - | ||
| 54 | - | typedef enum { |
|
| 55 | 51 | TopLeft, TopRight, BotLeft, BotRight |
|
| 56 | 52 | } Corner; /* window corners */ |
|
| 57 | 53 | ||
| 111 | 107 | extern Cursor cursor[CurLast]; |
|
| 112 | 108 | extern DC dc; /* global draw context */ |
|
| 113 | 109 | extern Display *dpy; |
|
| 114 | - | extern StackPos stackpos; |
|
| 115 | 110 | extern Window root, barwin; |
|
| 116 | 111 | ||
| 117 | 112 | /* client.c */ |
|
| 170 | 165 | extern Bool isvisible(Client *c); /* returns True if client is visible */ |
|
| 171 | 166 | extern void resizecol(Arg *arg); /* resizes the master percent with arg's index value */ |
|
| 172 | 167 | extern void restack(void); /* restores z layers of all clients */ |
|
| 173 | - | extern void togglestackpos(Arg *arg); /* toggles stack position */ |
|
| 174 | 168 | extern void togglemode(Arg *arg); /* toggles global arrange function (dotile/dofloat) */ |
|
| 175 | 169 | extern void toggleview(Arg *arg); /* toggles the tag with arg's index (in)visible */ |
|
| 176 | 170 | extern void view(Arg *arg); /* views the tag with arg's index */ |
|
| 123 | 123 | return; |
|
| 124 | 124 | } |
|
| 125 | 125 | } |
|
| 126 | - | if(ev->x < x + bmw) { |
|
| 127 | - | if(ev->button == Button1) |
|
| 128 | - | togglemode(NULL); |
|
| 129 | - | else if(ev->button == Button3) |
|
| 130 | - | togglestackpos(NULL); |
|
| 131 | - | } |
|
| 126 | + | if((ev->x < x + bmw) && (ev->button == Button1)) |
|
| 127 | + | togglemode(NULL); |
|
| 132 | 128 | } |
|
| 133 | 129 | else if((c = getclient(ev->window))) { |
|
| 134 | 130 | focus(c); |
| 129 | 129 | dc.status[ColFG] = getcolor(STATUSFGCOLOR); |
|
| 130 | 130 | setfont(FONT); |
|
| 131 | 131 | ||
| 132 | - | bmw = textw(VSTACKSYMBOL) > textw(BSTACKSYMBOL) ? |
|
| 133 | - | textw(VSTACKSYMBOL) : textw(BSTACKSYMBOL); |
|
| 134 | - | bmw = bmw > textw(FLOATSYMBOL) ? |
|
| 135 | - | bmw : textw(FLOATSYMBOL); |
|
| 132 | + | bmw = textw(TILESYMBOL) > textw(FLOATSYMBOL) ? textw(TILESYMBOL) : textw(FLOATSYMBOL); |
|
| 136 | 133 | sx = sy = 0; |
|
| 137 | 134 | sw = DisplayWidth(dpy, screen); |
|
| 138 | 135 | sh = DisplayHeight(dpy, screen); |
| 65 | 65 | /* extern */ |
|
| 66 | 66 | ||
| 67 | 67 | void (*arrange)(Arg *) = DEFMODE; |
|
| 68 | - | StackPos stackpos = STACKPOS; |
|
| 69 | 68 | ||
| 70 | 69 | void |
|
| 71 | 70 | detach(Client *c) { |
|
| 103 | 102 | */ |
|
| 104 | 103 | void |
|
| 105 | 104 | dotile(Arg *arg) { |
|
| 106 | - | unsigned int i, n, md, stackw, stackh, tw, th; |
|
| 105 | + | unsigned int i, n, md, stackw, stackh, th; |
|
| 107 | 106 | Client *c; |
|
| 108 | 107 | ||
| 109 | 108 | for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next)) |
|
| 110 | 109 | n++; |
|
| 111 | 110 | ||
| 112 | - | if(stackpos == StackBottom) { |
|
| 113 | - | md = ((sh - bh) * master) / 1000; |
|
| 114 | - | stackw = sw; |
|
| 115 | - | stackh = sh - bh - md; |
|
| 116 | - | } |
|
| 117 | - | else { |
|
| 118 | - | md = (sw * master) / 1000; |
|
| 119 | - | stackw = sw - md; |
|
| 120 | - | stackh = sh - bh; |
|
| 121 | - | } |
|
| 111 | + | md = (sw * master) / 1000; |
|
| 112 | + | stackw = sw - md; |
|
| 113 | + | stackh = sh - bh; |
|
| 122 | 114 | ||
| 123 | - | tw = stackw; |
|
| 115 | + | th = stackh; |
|
| 124 | 116 | if(n > 1) |
|
| 125 | - | th = stackh / (n - 1); |
|
| 126 | - | else |
|
| 127 | - | th = stackh; |
|
| 117 | + | th /= (n - 1); |
|
| 128 | 118 | ||
| 129 | 119 | for(i = 0, c = clients; c; c = c->next) { |
|
| 130 | 120 | if(isvisible(c)) { |
|
| 140 | 130 | c->h = sh - 2 * BORDERPX - bh; |
|
| 141 | 131 | } |
|
| 142 | 132 | else if(i == 0) { /* master window */ |
|
| 143 | - | if(stackpos == StackLeft) |
|
| 144 | - | c->x += stackw; |
|
| 145 | - | switch(stackpos) { |
|
| 146 | - | case StackLeft: |
|
| 147 | - | case StackRight: |
|
| 148 | - | c->w = md - 2 * BORDERPX; |
|
| 149 | - | c->h = sh - bh - 2 * BORDERPX; |
|
| 150 | - | break; |
|
| 151 | - | case StackBottom: |
|
| 152 | - | c->w = sw - 2 * BORDERPX; |
|
| 153 | - | c->h = md - 2 * BORDERPX; |
|
| 154 | - | break; |
|
| 155 | - | } |
|
| 133 | + | c->w = md - 2 * BORDERPX; |
|
| 134 | + | c->h = sh - bh - 2 * BORDERPX; |
|
| 156 | 135 | } |
|
| 157 | 136 | else { /* tile window */ |
|
| 158 | - | if(stackpos == StackRight) |
|
| 159 | - | c->x += md; |
|
| 137 | + | c->x += md; |
|
| 160 | 138 | if(th > bh) { |
|
| 161 | - | switch(stackpos) { |
|
| 162 | - | case StackLeft: |
|
| 163 | - | case StackRight: |
|
| 164 | - | c->y = sy + (i - 1) * th + bh; |
|
| 165 | - | if(i + 1 == n) |
|
| 166 | - | c->h = sh - c->y - 2 * BORDERPX; |
|
| 167 | - | break; |
|
| 168 | - | case StackBottom: |
|
| 169 | - | c->y = sy + md + (i - 1) * th + bh; |
|
| 170 | - | if(i + 1 == n) |
|
| 171 | - | c->h = sh - c->y - 2 * BORDERPX; |
|
| 172 | - | break; |
|
| 173 | - | } |
|
| 174 | - | c->w = tw - 2 * BORDERPX; |
|
| 139 | + | c->y = sy + (i - 1) * th + bh; |
|
| 140 | + | if(i + 1 == n) |
|
| 141 | + | c->h = sh - c->y - 2 * BORDERPX; |
|
| 142 | + | c->w = stackw - 2 * BORDERPX; |
|
| 175 | 143 | c->h = th - 2 * BORDERPX; |
|
| 176 | 144 | } |
|
| 177 | 145 | else { /* fallback if th < bh */ |
|
| 178 | - | if(stackpos == StackBottom) |
|
| 179 | - | c->y += md; |
|
| 180 | 146 | c->w = stackw - 2 * BORDERPX; |
|
| 181 | 147 | c->h = stackh - 2 * BORDERPX; |
|
| 182 | 148 | } |
|
| 308 | 274 | if(i == ntags) |
|
| 309 | 275 | seltag[arg->i] = True; /* cannot toggle last view */ |
|
| 310 | 276 | reorder(); |
|
| 311 | - | arrange(NULL); |
|
| 312 | - | } |
|
| 313 | - | ||
| 314 | - | void |
|
| 315 | - | togglestackpos(Arg *arg) { |
|
| 316 | - | if(arrange == dofloat) |
|
| 317 | - | return; |
|
| 318 | - | if(stackpos == StackBottom) |
|
| 319 | - | stackpos = STACKPOS; |
|
| 320 | - | else |
|
| 321 | - | stackpos = StackBottom; |
|
| 322 | 277 | arrange(NULL); |
|
| 323 | 278 | } |
|
| 324 | 279 | ||