1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
This patch is from Decklin Foster <decklin@red-bean.com>
"This implements a few more window management actions which are somewhat
obscure, but useful to me."
diff -urNad xwit-3.4~/xwit.c xwit-3.4/xwit.c
--- xwit-3.4~/xwit.c 2005-10-20 15:27:53.000000000 -0400
+++ xwit-3.4/xwit.c 2005-10-20 15:27:57.000000000 -0400
@@ -63,6 +63,7 @@
fprintf(stderr,
"usage: %s -display <display> -sync\n\
-pop -focus -iconify -unmap\n\
+ -raise -lower -opposite -[un]circulate\n\
-resize w h -rows r -columns c -[r]move x y\n\
-[r]warp x y -colormap <colormapid> -[no]save\n\
-name <name> -iconname <name>\n\
@@ -77,6 +78,7 @@
enum functions {
pop, focus, icon, unmap, colormap,
+ raise, lower, opposite, circulate, uncirculate,
move, rmove, warp, rwarp,
resize, save, nosave,
keyrepeat, nokeyrepeat,
@@ -509,6 +511,27 @@
case focus:
XSetInputFocus(dpy, window, CurrentTime, RevertToNone);
break;
+ case raise:
+ values.stack_mode = Above;
+ value_mask = CWStackMode;
+ XConfigureWindow(dpy, window, value_mask, &values);
+ break;
+ case lower:
+ values.stack_mode = Below;
+ value_mask = CWStackMode;
+ XConfigureWindow(dpy, window, value_mask, &values);
+ break;
+ case opposite:
+ values.stack_mode = Opposite;
+ value_mask = CWStackMode;
+ XConfigureWindow(dpy, window, value_mask, &values);
+ break;
+ case circulate:
+ XCirculateSubwindowsUp(dpy, window);
+ break;
+ case uncirculate:
+ XCirculateSubwindowsDown(dpy, window);
+ break;
case unmap:
XUnmapWindow(dpy, window);
break;
@@ -902,6 +925,21 @@
else if (matchopt("f*ocus", 0, pargc, argv)) {
function |= FBIT(focus);
}
+ else if (matchopt("ra*ise", 0, pargc, argv)) {
+ function |= FBIT(raise);
+ }
+ else if (matchopt("lo*wer", 0, pargc, argv)) {
+ function |= FBIT(lower);
+ }
+ else if (matchopt("op*posite", 0, pargc, argv)) {
+ function |= FBIT(opposite);
+ }
+ else if (matchopt("cir*culate", 0, pargc, argv)) {
+ function |= FBIT(circulate);
+ }
+ else if (matchopt("uncir*culate", 0, pargc, argv)) {
+ function |= FBIT(uncirculate);
+ }
else if (matchopt("ri*conmove", 2, pargc, argv)) {
function |= FBIT(riconmove);
Giconx = atoi(argv[1]);
diff -urNad xwit-3.4~/xwit.man xwit-3.4/xwit.man
--- xwit-3.4~/xwit.man 2005-10-20 15:27:53.000000000 -0400
+++ xwit-3.4/xwit.man 2005-10-20 15:29:45.000000000 -0400
@@ -14,6 +14,11 @@
.RB [ -iconify ]
.RB [ -unmap ]
.br
+.RB [ -raise ]
+.RB [ -lower ]
+.RB [ -opposite ]
+.RB [ - [ un ] circulate ]
+.br
.RB [ -resize
.IR w\ h ]
.RB [ -rows
@@ -88,6 +93,22 @@
will iconify windows by unmapping with a non ICCCM compliant window manager.
(Beware, this option is not usually what you want).
.TP
+-raise
+raise windows (but do not map them if unmapped).
+.TP
+-lower
+lower windows.
+.TP
+-opposite
+toggle the stacking of windows from top to bottom among any overlapping
+windows.
+.TP
+-circulate
+circulate a window's subwindows forward. Use this with -root.
+.TP
+-uncirculate
+circulate a window's subwindows backward. Use this with -root.
+.TP
-resize w h
resize windows to the given pixel size.
.TP
|