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
1 files changed,
10 insertions(+),
1 deletions(-)
jump to
M
openbox/actions/moveresizeto.c
→
openbox/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);