all repos — openbox @ 128209b1c3dd4be15b8ddf5e6e007a335e987549

openbox fork - make it a bit more like ryudo

let you use +-+-x in the positions for per-app settings, like x geometry
Dana Jansens danakj@orodu.net
commit

128209b1c3dd4be15b8ddf5e6e007a335e987549

parent

3124112578c697899498252297cfbf499b1ff66c

3 files changed, 22 insertions(+), 2 deletions(-)

jump to
M openbox/config.copenbox/config.c

@@ -132,6 +132,8 @@ if (src->pos_given) {

dst->pos_given = TRUE; dst->center_x = src->center_x; dst->center_y = src->center_y; + dst->opposite_x = src->opposite_x; + dst->opposite_y = src->opposite_y; dst->position.x = src->position.x; dst->position.y = src->position.y; dst->monitor = src->monitor;

@@ -208,7 +210,12 @@ if (!strcmp(s, "center")) {

settings->center_x = TRUE; x_pos_given = TRUE; } else { - settings->position.x = parse_int(doc, c); + if (s[0] == '-') + settings->opposite_x = TRUE; + if (s[0] == '-' || s[0] == '+') + settings->position.x = atoi(s+1); + else + settings->position.x = atoi(s); x_pos_given = TRUE; } g_free(s);

@@ -221,7 +228,12 @@ if (!strcmp(s, "center")) {

settings->center_y = TRUE; settings->pos_given = TRUE; } else { - settings->position.y = parse_int(doc, c); + if (s[0] == '-') + settings->opposite_y = TRUE; + if (s[0] == '-' || s[0] == '+') + settings->position.y = atoi(s+1); + else + settings->position.y = atoi(s); settings->pos_given = TRUE; } g_free(s);
M openbox/config.hopenbox/config.h

@@ -41,6 +41,8 @@

Point position; gboolean center_x; gboolean center_y; + gboolean opposite_x; + gboolean opposite_y; gboolean pos_given; guint desktop;
M openbox/place.copenbox/place.c

@@ -432,11 +432,17 @@ }

if (settings->center_x) *x = screen->x + screen->width / 2 - client->area.width / 2; + else if (settings->opposite_x) + *x = screen->x + screen->width - client->frame->area.width - + settings->position.x; else *x = screen->x + settings->position.x; if (settings->center_y) *y = screen->y + screen->height / 2 - client->area.height / 2; + else if (settings->opposite_y) + *y = screen->y + screen->height - client->frame->area.height - + settings->position.y; else *y = screen->y + settings->position.y;