]> git.lizzy.rs Git - bspwm.git/commitdiff
Add rule consequence: rectangle
authorJustinien Bouron <justinien.bouron@epfl.ch>
Sun, 11 Jun 2017 19:38:06 +0000 (21:38 +0200)
committerBastien Dejean <nihilhill@gmail.com>
Mon, 12 Jun 2017 07:48:17 +0000 (09:48 +0200)
doc/bspwm.1
doc/bspwm.1.asciidoc
src/rule.c
src/types.h
src/window.c

index 1859d219e4e64be7813bb496ef90268854dfba2e..b909ecc9be0b21b4cfbcd84f783d36a2a4802671 100644 (file)
@@ -933,7 +933,7 @@ rule \fICOMMANDS\fR
 \fBCommands\fR
 .RS 4
 .PP
-\fB\-a\fR, \fB\-\-add\fR (<class_name>|*)[:(<instance_name>|*)] [\fB\-o\fR|\fB\-\-one\-shot\fR] [monitor=MONITOR_SEL|desktop=DESKTOP_SEL|node=NODE_SEL] [state=STATE] [layer=LAYER] [split_dir=DIR] [split_ratio=RATIO] [(hidden|sticky|private|locked|center|follow|manage|focus|border)=(on|off)]
+\fB\-a\fR, \fB\-\-add\fR (<class_name>|*)[:(<instance_name>|*)] [\fB\-o\fR|\fB\-\-one\-shot\fR] [monitor=MONITOR_SEL|desktop=DESKTOP_SEL|node=NODE_SEL] [state=STATE] [layer=LAYER] [split_dir=DIR] [split_ratio=RATIO] [(hidden|sticky|private|locked|center|follow|manage|focus|border)=(on|off)] [rectangle=WxH+X+Y]
 .RS 4
 Create a new rule\&.
 .RE
index 3478663421ebf8aacf46335d685a5b87f0558052..9513967809fa93b4a9a3f072c8d27b8d0facca8b 100644 (file)
@@ -551,7 +551,7 @@ rule 'COMMANDS'
 Commands
 ^^^^^^^^
 
-*-a*, *--add* (<class_name>|\*)[:(<instance_name>|\*)] [*-o*|*--one-shot*] [monitor=MONITOR_SEL|desktop=DESKTOP_SEL|node=NODE_SEL] [state=STATE] [layer=LAYER] [split_dir=DIR] [split_ratio=RATIO] [(hidden|sticky|private|locked|center|follow|manage|focus|border)=(on|off)]::
+*-a*, *--add* (<class_name>|\*)[:(<instance_name>|\*)] [*-o*|*--one-shot*] [monitor=MONITOR_SEL|desktop=DESKTOP_SEL|node=NODE_SEL] [state=STATE] [layer=LAYER] [split_dir=DIR] [split_ratio=RATIO] [(hidden|sticky|private|locked|center|follow|manage|focus|border)=(on|off)] [rectangle=WxH+X+Y]::
        Create a new rule.
 
 *-r*, *--remove* ^<n>|head|tail|(<class_name>|\*)[:(<instance_name>|*)]...::
index 5df059c4aa5e1df65b2a7dd8c5d3da1019bdfed2..cc0b27317abd7e320cab4ff893b97a34b04b137c 100644 (file)
@@ -109,6 +109,7 @@ rule_consequence_t *make_rule_conquence(void)
        rc->manage = rc->focus = rc->border = true;
        rc->layer = NULL;
        rc->state = NULL;
+       rc->rect = NULL;
        return rc;
 }
 
@@ -356,6 +357,14 @@ void parse_key_value(char *key, char *value, rule_consequence_t *csq)
                if (sscanf(value, "%lf", &rat) == 1 && rat > 0 && rat < 1) {
                        csq->split_ratio = rat;
                }
+       } else if (streq("rectangle", key)) {
+               if (csq->rect == NULL) {
+                       csq->rect = calloc(1, sizeof(xcb_rectangle_t));
+               }
+               if (!parse_rectangle(value, csq->rect)) {
+                       free(csq->rect);
+                       csq->rect = NULL;
+               }
        } else if (parse_bool(value, &v)) {
                if (streq("hidden", key)) {
                        csq->hidden = true;
index 620bf5a776c8937e5d4eae7f0f52113b0de04e6f..f017521818c3f0bf6acb870a061b9e0d95a8557a 100644 (file)
@@ -337,6 +337,7 @@ typedef struct {
        bool manage;
        bool focus;
        bool border;
+       xcb_rectangle_t *rect;
 } rule_consequence_t;
 
 typedef struct pending_rule_t pending_rule_t;
index 203f7ee64c74720498c2f8b9917a29d8e51c287e..599bac7a6456b2105e0635614cd55d28b2c008b2 100644 (file)
@@ -140,7 +140,10 @@ void manage_window(xcb_window_t win, rule_consequence_t *csq, int fd)
        initialize_client(n);
        initialize_floating_rectangle(n);
 
-       if (c->floating_rectangle.x == 0 && c->floating_rectangle.y == 0) {
+       if (csq->rect != NULL) {
+               c->floating_rectangle = *csq->rect;
+               free(csq->rect);
+       } else if (c->floating_rectangle.x == 0 && c->floating_rectangle.y == 0) {
                csq->center = true;
        }