diff options
| author | moetunes <moetunes111@gmail.com> | 2011-09-14 11:12:46 +1000 |
|---|---|---|
| committer | moetunes <moetunes111@gmail.com> | 2011-09-14 11:12:46 +1000 |
| commit | 125486c0ad73f5f4c58d4900f6b469a5cf6006a7 (patch) | |
| tree | dc03d9d1281d9bf64d429b07331dd75ecf6efda3 /src | |
| parent | c83737abc9d3202b25b9d1d80f848c9356e9c448 (diff) | |
Added grid tiling mode back
Diffstat (limited to 'src')
| -rw-r--r-- | src/README | 5 | ||||
| -rwxr-xr-x | src/config.h | 27 | ||||
| -rwxr-xr-x | src/dminiwm.c | 69 |
3 files changed, 86 insertions, 15 deletions
@@ -72,7 +72,7 @@ There are more options in the config file than the original catwm. * Fixed the keyboard shortcuts not working if numlock was on. * Added some functions. * Added an option to focus the window the mouse just moved to. - * Fixed ghost windows being created. + * Fixed a window being destroyed on another desktop creating ghost windows. * Added ability to resize the window on the top of the stack @@ -95,7 +95,8 @@ Need Xlib, then: ###Todo ---- - * Add grid tiling mode back (without any useless gaps if possible) + * Sort out grid tiling mode without any useless gaps * Fix mplayer full screen window sizing * Have no window borders in fullscreen mode + * Add option to have a panel at the top diff --git a/src/config.h b/src/config.h index 847664f..111da44 100755 --- a/src/config.h +++ b/src/config.h @@ -1,4 +1,4 @@ - /* config.h for dminiwm.c [ 0..0.2 ] + /* config.h for dminiwm.c [ 0..0.3 ] * * Started from catwm 31/12/10 * Bad window error checking and numlock checking used from @@ -60,22 +60,23 @@ const char* shutdowncmd[] = {"sudo","shutdown","-h","now",NULL}; // Shortcuts static key keys[] = { - // MOD KEY FUNCTION ARGS - { MOD1, XK_h, increase, {NULL}}, - { MOD1, XK_l, decrease, {NULL}}, - { MOD1, XK_c, kill_client, {NULL}}, - { MOD1, XK_j, next_win, {NULL}}, - { MOD1, XK_k, prev_win, {NULL}}, - { MOD1, XK_v, spawn, {.com = dmenucmd}}, - { MOD1, XK_p, grow_window, {NULL}}, - { MOD1, XK_o, shrink_window, {NULL}}, - { MOD1, XK_Return, spawn, {.com = urxvtcmd}}, - { MOD1, XK_Up, spawn, {.com = volupcmd}}, - { MOD1, XK_Down, spawn, {.com = voldowncmd}}, + // MOD KEY FUNCTION ARGS + { MOD1, XK_h, increase, {NULL}}, + { MOD1, XK_l, decrease, {NULL}}, + { MOD1, XK_c, kill_client, {NULL}}, + { MOD1, XK_j, next_win, {NULL}}, + { MOD1, XK_k, prev_win, {NULL}}, + { MOD1, XK_v, spawn, {.com = dmenucmd}}, + { MOD1, XK_p, grow_window, {NULL}}, + { MOD1, XK_o, shrink_window, {NULL}}, + { MOD1, XK_Return, spawn, {.com = urxvtcmd}}, + { MOD1, XK_Up, spawn, {.com = volupcmd}}, + { MOD1, XK_Down, spawn, {.com = voldowncmd}}, // alt + shift + shortcut { MOD1|ShiftMask, XK_j, move_up, {NULL}}, { MOD1|ShiftMask, XK_k, move_down, {NULL}}, { MOD1|ShiftMask, XK_Return, swap_master, {NULL}}, + { MOD1|ShiftMask, XK_g, switch_grid, {NULL}}, { MOD1|ShiftMask, XK_h, switch_horizontal, {NULL}}, { MOD1|ShiftMask, XK_m, switch_fullscreen, {NULL}}, { MOD1|ShiftMask, XK_v, switch_vertical, {NULL}}, diff --git a/src/dminiwm.c b/src/dminiwm.c index 80ea1a2..ab2cc70 100755 --- a/src/dminiwm.c +++ b/src/dminiwm.c @@ -96,6 +96,7 @@ static void start(); static void swap_master(); static void tile(); static void switch_fullscreen(); +static void switch_grid(); static void switch_horizontal(); static void switch_vertical(); static void update_current(); @@ -458,6 +459,65 @@ void tile() { x += (sw/n)-(growth/(n-1)); } break; + case 3: { // Grid + int xpos = 0; + int y = 0; + int wdt = 0; + int ht = 0; + + for(c=head;c;c=c->next) { + ++n; + if((n == 1) || (n == 3) || (n == 5) || (n == 7)) + x += 1; + } + n = 0; + for(c=head;c;c=c->next) { + ++n; + if(x == 4) { + wdt = (sw/3) - BORDER_WIDTH; + ht = (sh/3) - BORDER_WIDTH; + if((n == 1) || (n == 4) || (n == 7)) + xpos = 0; + if((n == 2) || (n == 5) || (n == 8)) + xpos = (sw/3) + BORDER_WIDTH; + if((n == 3) || (n == 6) || (n == 9)) + xpos = (2*(sw/3)) + BORDER_WIDTH; + if((n == 4) || (n == 7)) + y += (sh/3) + BORDER_WIDTH; + } else + if(x == 3) { + wdt = (sw/3) - BORDER_WIDTH; + ht = (sh/2) - BORDER_WIDTH; + if((n == 1) || (n == 4)) + xpos = 0; + if((n == 2) || (n == 5)) + xpos = (sw/3) + BORDER_WIDTH; + if((n == 3) || (n == 6)) + xpos = (2*(sw/3)) + BORDER_WIDTH; + if(n == 4) + y = (sh/2) + BORDER_WIDTH; + } else { + if(n > 2) + ht = (sh/x) - 2*BORDER_WIDTH; + else + ht = sh/x; + if((n == 1) || (n == 3)) { + xpos = 0; + wdt = master_size - BORDER_WIDTH; + } + if((n == 2) || (n == 4)) { + xpos = master_size+BORDER_WIDTH; + wdt = (sw - master_size) - BORDER_WIDTH; + } + if(n == 3) + y += (sh/x)+2*BORDER_WIDTH; + } + XMoveResizeWindow(dis,c->win,xpos,y,wdt,ht); + } + } + break; + default: + break; } } } @@ -505,6 +565,15 @@ void switch_horizontal() { } } +void switch_grid() { + if(mode != 3) { + mode = 3; + master_size = sw * MASTER_SIZE; + tile(); + update_current(); + } +} + void grow_window() { growth += 10; tile(); |
