all repos — openbox @ 3cd4db67aa430c85af8ac88dc40e9cfa63cc246a

openbox fork - make it a bit more like ryudo

Add "prev" and "next" as possible targets for moveto/resizeto actions.

One of the Debian users asked if it's possible to send a window to other
monitor when using xinerama, especially useful of you have 2 monitors and want
to toggle a window to the other one. I wrote a patch that implements next and
prev to also make that work for 3 or more workspaces.
Nico Golde nion@debian.org
commit

3cd4db67aa430c85af8ac88dc40e9cfa63cc246a

parent

795e9ebbacf1f70aa1861073f1e600ee25d57879

1 files changed, 10 insertions(+), 1 deletions(-)

jump to
M openbox/actions/moveresizeto.copenbox/actions/moveresizeto.c

@@ -6,7 +6,9 @@ #include <stdlib.h> /* for atoi */

enum { CURRENT_MONITOR = -1, - ALL_MONITORS = -2 + ALL_MONITORS = -2, + NEXT_MONITOR = -3, + PREV_MONITOR = -4 }; typedef struct {

@@ -89,6 +91,10 @@ gchar *s = parse_string(doc, n);

if (g_ascii_strcasecmp(s, "current") != 0) { if (!g_ascii_strcasecmp(s, "all")) o->monitor = ALL_MONITORS; + else if(!g_ascii_strcasecmp(s, "next")) + o->monitor = NEXT_MONITOR; + else if(!g_ascii_strcasecmp(s, "prev")) + o->monitor = PREV_MONITOR; else o->monitor = parse_int(doc, n) - 1; }

@@ -121,6 +127,9 @@ mon = o->monitor;

cmon = client_monitor(c); if (mon == CURRENT_MONITOR) mon = cmon; else if (mon == ALL_MONITORS) mon = SCREEN_AREA_ALL_MONITORS; + else if (mon == NEXT_MONITOR) mon = (cmon + 1 > screen_num_monitors - 1) ? 0 : (cmon + 1); + else if (mon == PREV_MONITOR) mon = (cmon == 0) ? (screen_num_monitors - 1) : (cmon - 1); + area = screen_area(c->desktop, mon, NULL); carea = screen_area(c->desktop, cmon, NULL);