aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormoetunes <moetunes111@gmail.com>2011-09-14 11:12:46 +1000
committermoetunes <moetunes111@gmail.com>2011-09-14 11:12:46 +1000
commit125486c0ad73f5f4c58d4900f6b469a5cf6006a7 (patch)
treedc03d9d1281d9bf64d429b07331dd75ecf6efda3 /src
parentc83737abc9d3202b25b9d1d80f848c9356e9c448 (diff)
Added grid tiling mode back
Diffstat (limited to 'src')
-rw-r--r--src/README5
-rwxr-xr-xsrc/config.h27
-rwxr-xr-xsrc/dminiwm.c69
3 files changed, 86 insertions, 15 deletions
diff --git a/src/README b/src/README
index 153fed9..c5d4510 100644
--- a/src/README
+++ b/src/README
@@ -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();