#! /bin/sh /usr/share/dpatch/dpatch-run ## raise_lower.dpatch by Decklin Foster ## ## All lines beginning with `## DP:' are a description of the patch. ## DP: Add operations to raise (without mapping) or lower a window, ## DP: and toggle or circulate stacking. @DPATCH@ 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 -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 -[no]save\n\ -name -iconname \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