]> git.lizzy.rs Git - bspwm.git/blobdiff - rule.c
Implement private windows
[bspwm.git] / rule.c
diff --git a/rule.c b/rule.c
index f0d82dc26fc206e5118da3aa4288dfc142f5faf8..1f08710962f976210a2286e79c891d2cac8df03e 100644 (file)
--- a/rule.c
+++ b/rule.c
@@ -1,3 +1,27 @@
+/* * Copyright (c) 2012-2013 Bastien Dejean
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ *  * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation and/or
+ * other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
 #include <stdio.h>
 #include <string.h>
 #include "bspwm.h"
@@ -17,6 +41,8 @@ rule_t *make_rule(void)
     r->effect.sticky = false;
     r->effect.follow = false;
     r->effect.focus = false;
+    r->effect.frame = false;
+    r->effect.private = false;
     r->effect.unmanage = false;
     r->one_shot = false;
     r->effect.desc[0] = '\0';
@@ -90,7 +116,7 @@ bool is_match(rule_t *r, xcb_window_t win)
     return false;
 }
 
-void handle_rules(xcb_window_t win, monitor_t **m, desktop_t **d, unsigned int *tags_field, bool *floating, bool *fullscreen, bool *locked, bool *sticky, bool *follow, bool *transient, bool *takes_focus, bool *manage)
+void handle_rules(xcb_window_t win, monitor_t **m, desktop_t **d, unsigned int *tags_field, bool *floating, bool *fullscreen, bool *locked, bool *sticky, bool *follow, bool *transient, bool *takes_focus, bool *frame, bool *private, bool *manage)
 {
     xcb_ewmh_get_atoms_reply_t win_type;
 
@@ -156,6 +182,10 @@ void handle_rules(xcb_window_t win, monitor_t **m, desktop_t **d, unsigned int *
                 *follow = true;
             if (efc.focus)
                 *takes_focus = true;
+            if (efc.frame)
+                *frame = true;
+            if (efc.private)
+                *private = private;
             if (efc.unmanage)
                 *manage = false;
             if (efc.desc[0] != '\0') {
@@ -214,6 +244,10 @@ void list_rules(char *pattern, char *rsp)
             strncat(rsp, " --follow", REMLEN(rsp));
         if (r->effect.focus)
             strncat(rsp, " --focus", REMLEN(rsp));
+        if (r->effect.frame)
+            strncat(rsp, " --frame", REMLEN(rsp));
+        if (r->effect.private)
+            strncat(rsp, " --private", REMLEN(rsp));
         if (r->effect.unmanage)
             strncat(rsp, " --unmanage", REMLEN(rsp));
         if (r->one_shot)