keep master ratio on resizecol -> arrange
6fc8a630
5 file(s) · +20 −24
| 37 | 37 | { MODKEY, XK_k, focusprev, { 0 } }, \ |
|
| 38 | 38 | { MODKEY, XK_Return, zoom, { 0 } }, \ |
|
| 39 | 39 | { MODKEY, XK_b, togglestackpos, { 0 } }, \ |
|
| 40 | - | { MODKEY, XK_g, resizecol, { .i = 20 } }, \ |
|
| 41 | - | { MODKEY, XK_s, resizecol, { .i = -20 } }, \ |
|
| 40 | + | { MODKEY, XK_g, resizecol, { .i = 1 } }, \ |
|
| 41 | + | { MODKEY, XK_s, resizecol, { .i = -1 } }, \ |
|
| 42 | 42 | { MODKEY|ShiftMask, XK_1, tag, { .i = 0 } }, \ |
|
| 43 | 43 | { MODKEY|ShiftMask, XK_2, tag, { .i = 1 } }, \ |
|
| 44 | 44 | { MODKEY|ShiftMask, XK_3, tag, { .i = 2 } }, \ |
| 31 | 31 | { MODKEY|ShiftMask, XK_Tab, focusprev, { 0 } }, \ |
|
| 32 | 32 | { MODKEY, XK_Return, zoom, { 0 } }, \ |
|
| 33 | 33 | { MODKEY, XK_b, togglestackpos, { 0 } }, \ |
|
| 34 | - | { MODKEY, XK_g, resizecol, { .i = 20 } }, \ |
|
| 35 | - | { MODKEY, XK_s, resizecol, { .i = -20 } }, \ |
|
| 34 | + | { MODKEY, XK_g, resizecol, { .i = 1 } }, \ |
|
| 35 | + | { MODKEY, XK_s, resizecol, { .i = -1 } }, \ |
|
| 36 | 36 | { MODKEY|ShiftMask, XK_1, tag, { .i = 0 } }, \ |
|
| 37 | 37 | { MODKEY|ShiftMask, XK_2, tag, { .i = 1 } }, \ |
|
| 38 | 38 | { MODKEY|ShiftMask, XK_3, tag, { .i = 2 } }, \ |
| 101 | 101 | extern const char *tags[]; /* all tags */ |
|
| 102 | 102 | extern char stext[1024]; /* status text */ |
|
| 103 | 103 | extern int bx, by, bw, bh, bmw; /* bar geometry, bar mode label width */ |
|
| 104 | - | extern int master, screen, sx, sy, sw, sh; /* screen geometry, master dimension*/ |
|
| 105 | - | extern unsigned int ntags, numlockmask; /* number of tags, dynamic lock mask */ |
|
| 104 | + | extern int screen, sx, sy, sw, sh; /* screen geometry */ |
|
| 105 | + | extern unsigned int master, ntags, numlockmask; /* master percent, number of tags, dynamic lock mask */ |
|
| 106 | 106 | extern void (*handler[LASTEvent])(XEvent *); /* event handler */ |
|
| 107 | 107 | extern void (*arrange)(Arg *); /* arrange function, indicates mode */ |
|
| 108 | 108 | extern Atom wmatom[WMLast], netatom[NetLast]; |
|
| 168 | 168 | extern void focusnext(Arg *arg); /* focuses next visible client, arg is ignored */ |
|
| 169 | 169 | extern void focusprev(Arg *arg); /* focuses previous visible client, arg is ignored */ |
|
| 170 | 170 | extern Bool isvisible(Client *c); /* returns True if client is visible */ |
|
| 171 | - | extern void resizecol(Arg *arg); /* resizes the master dimension with arg's index value */ |
|
| 171 | + | extern void resizecol(Arg *arg); /* resizes the master percent with arg's index value */ |
|
| 172 | 172 | extern void restack(void); /* restores z layers of all clients */ |
|
| 173 | 173 | extern void togglestackpos(Arg *arg); /* toggles stack position */ |
|
| 174 | 174 | extern void togglemode(Arg *arg); /* toggles global arrange function (dotile/dofloat) */ |
|
| 19 | 19 | ||
| 20 | 20 | char stext[1024]; |
|
| 21 | 21 | Bool *seltag; |
|
| 22 | - | int bx, by, bw, bh, bmw, master, screen, sx, sy, sw, sh; |
|
| 23 | - | unsigned int ntags, numlockmask; |
|
| 22 | + | int bx, by, bw, bh, bmw, masterd, screen, sx, sy, sw, sh; |
|
| 23 | + | unsigned int master, ntags, numlockmask; |
|
| 24 | 24 | Atom wmatom[WMLast], netatom[NetLast]; |
|
| 25 | 25 | Bool running = True; |
|
| 26 | 26 | Bool issel = True; |
|
| 136 | 136 | sx = sy = 0; |
|
| 137 | 137 | sw = DisplayWidth(dpy, screen); |
|
| 138 | 138 | sh = DisplayHeight(dpy, screen); |
|
| 139 | - | master = ((stackpos == StackBottom ? sh - bh : sw) * MASTER) / 100; |
|
| 139 | + | master = MASTER; |
|
| 140 | 140 | ||
| 141 | 141 | bx = by = 0; |
|
| 142 | 142 | bw = sw; |
|
| 4 | 4 | */ |
|
| 5 | 5 | #include "dwm.h" |
|
| 6 | 6 | ||
| 7 | - | #define MINDIM 100 |
|
| 8 | - | ||
| 9 | 7 | /* static */ |
|
| 10 | 8 | ||
| 11 | 9 | static Client * |
|
| 106 | 104 | void |
|
| 107 | 105 | dotile(Arg *arg) { |
|
| 108 | 106 | int i, n, stackw, stackh, tw, th; |
|
| 107 | + | unsigned int md = ((stackpos == StackBottom ? sh - bh : sw) * master) / 100; |
|
| 109 | 108 | Client *c; |
|
| 110 | 109 | ||
| 111 | 110 | for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next)) |
|
| 113 | 112 | ||
| 114 | 113 | if(stackpos == StackBottom) { |
|
| 115 | 114 | stackw = sw; |
|
| 116 | - | stackh = sh - bh - master; |
|
| 115 | + | stackh = sh - bh - md; |
|
| 117 | 116 | } |
|
| 118 | 117 | else { |
|
| 119 | - | stackw = sw - master; |
|
| 118 | + | stackw = sw - md; |
|
| 120 | 119 | stackh = sh - bh; |
|
| 121 | 120 | } |
|
| 122 | 121 | ||
| 145 | 144 | switch(stackpos) { |
|
| 146 | 145 | case StackLeft: |
|
| 147 | 146 | case StackRight: |
|
| 148 | - | c->w = master - 2 * BORDERPX; |
|
| 147 | + | c->w = md - 2 * BORDERPX; |
|
| 149 | 148 | c->h = sh - bh - 2 * BORDERPX; |
|
| 150 | 149 | break; |
|
| 151 | 150 | case StackBottom: |
|
| 152 | 151 | c->w = sw - 2 * BORDERPX; |
|
| 153 | - | c->h = master - 2 * BORDERPX; |
|
| 152 | + | c->h = md - 2 * BORDERPX; |
|
| 154 | 153 | break; |
|
| 155 | 154 | } |
|
| 156 | 155 | } |
|
| 157 | 156 | else { /* tile window */ |
|
| 158 | 157 | if(stackpos == StackRight) |
|
| 159 | - | c->x += master; |
|
| 158 | + | c->x += md; |
|
| 160 | 159 | if(th > bh) { |
|
| 161 | 160 | switch(stackpos) { |
|
| 162 | 161 | case StackLeft: |
|
| 166 | 165 | c->h = sh - c->y - 2 * BORDERPX; |
|
| 167 | 166 | break; |
|
| 168 | 167 | case StackBottom: |
|
| 169 | - | c->y = sy + master + (i - 1) * th + bh; |
|
| 168 | + | c->y = sy + md + (i - 1) * th + bh; |
|
| 170 | 169 | if(i + 1 == n) |
|
| 171 | 170 | c->h = sh - c->y - 2 * BORDERPX; |
|
| 172 | 171 | break; |
|
| 176 | 175 | } |
|
| 177 | 176 | else { /* fallback if th < bh */ |
|
| 178 | 177 | if(stackpos == StackBottom) |
|
| 179 | - | c->y += master; |
|
| 178 | + | c->y += md; |
|
| 180 | 179 | c->w = stackw - 2 * BORDERPX; |
|
| 181 | 180 | c->h = stackh - 2 * BORDERPX; |
|
| 182 | 181 | } |
|
| 238 | 237 | ||
| 239 | 238 | void |
|
| 240 | 239 | resizecol(Arg *arg) { |
|
| 241 | - | int s; |
|
| 242 | 240 | unsigned int n; |
|
| 243 | 241 | Client *c; |
|
| 244 | 242 | ||
| 248 | 246 | if(!sel || sel->isfloat || n < 2 || (arrange == dofloat)) |
|
| 249 | 247 | return; |
|
| 250 | 248 | ||
| 251 | - | s = stackpos == StackBottom ? sh - bh : sw; |
|
| 252 | 249 | if(sel == getnext(clients)) { |
|
| 253 | - | if(master + arg->i > s - MINDIM || master + arg->i < MINDIM) |
|
| 250 | + | if(master + arg->i > 95 || master + arg->i < 5) |
|
| 254 | 251 | return; |
|
| 255 | 252 | master += arg->i; |
|
| 256 | 253 | } |
|
| 257 | 254 | else { |
|
| 258 | - | if(master - arg->i > s - MINDIM || master - arg->i < MINDIM) |
|
| 255 | + | if(master - arg->i > 95 || master - arg->i < 5) |
|
| 259 | 256 | return; |
|
| 260 | 257 | master -= arg->i; |
|
| 261 | 258 | } |
|
| 321 | 318 | stackpos = STACKPOS; |
|
| 322 | 319 | else |
|
| 323 | 320 | stackpos = StackBottom; |
|
| 324 | - | master = ((stackpos == StackBottom ? sh - bh : sw) * MASTER) / 100; |
|
| 325 | 321 | arrange(NULL); |
|
| 326 | 322 | } |
|
| 327 | 323 | ||