]> git.lizzy.rs Git - bspwm.git/blobdiff - types.c
New message: 'list_rules'
[bspwm.git] / types.c
diff --git a/types.c b/types.c
index 319847ba7ca1aa66d5a7a1cfb26139c189145d79..1454710f95625bc284d93b22226c8a598d9764e5 100644 (file)
--- a/types.c
+++ b/types.c
@@ -1,20 +1,73 @@
 #include <stdlib.h>
+#include <string.h>
 #include <xcb/xcb.h>
 #include <xcb/xcb_event.h>
+#include "bspwm.h"
+#include "settings.h"
 #include "types.h"
 
-Node *make_node(void)
+node_t *make_node(void)
 {
-    Node *n = malloc(sizeof(Node));
+    node_t *n = malloc(sizeof(node_t));
     n->parent = n->first_child = n->second_child = NULL;
+    n->split_ratio = SPLIT_RATIO;
+    n->split_type = TYPE_VERTICAL;
     n->client = NULL;
+    n->vacant = false;
     return n;
 }
 
-Desktop *make_desktop(void)
+monitor_t *make_monitor(xcb_rectangle_t *rect)
 {
-    Desktop *d = malloc(sizeof(Desktop));
-    d->name = NULL;
-    d->previous = d->next = NULL;
+    monitor_t *m = malloc(sizeof(monitor_t));
+    snprintf(m->name, sizeof(m->name), "%s%02d", DEFAULT_MON_NAME, ++monitor_uid);
+    m->prev = m->next = NULL;
+    m->desk = m->last_desk = NULL;
+    if (rect != NULL)
+        m->rectangle = *rect;
+    else
+        warn("no rectangle was given for monitor '%s'\n", m->name);
+    m->top_padding = m->right_padding = m->bottom_padding = m->left_padding = 0;
+    return m;
+}
+
+desktop_t *make_desktop(const char *name)
+{
+    desktop_t *d = malloc(sizeof(desktop_t));
+    if (name == NULL)
+        snprintf(d->name, sizeof(d->name), "%s%02d", DEFAULT_DESK_NAME, ++desktop_uid);
+    else
+        strncpy(d->name, name, sizeof(d->name));
+    d->layout = LAYOUT_TILED;
+    d->prev = d->next = NULL;
+    d->root = d->focus = d->last_focus = NULL;
     return d;
 }
+
+client_t *make_client(xcb_window_t win)
+{
+    client_t *c = malloc(sizeof(client_t));
+    strncpy(c->class_name, MISSING_VALUE, sizeof(c->class_name));
+    c->uid = ++client_uid;
+    c->border_width = border_width;
+    c->window = win;
+    c->floating = c->transient = c->fullscreen = c->locked = c->urgent = false;
+    return c;
+}
+
+rule_t *make_rule(void)
+{
+    rule_t *r = malloc(sizeof(rule_t));
+    r->uid = ++rule_uid;
+    r->effect.floating = false;
+    r->effect.monitor = NULL;
+    r->effect.desktop = NULL;
+    r->next = NULL;
+    return r;
+}
+
+pointer_state_t *make_pointer_state(void)
+{
+    pointer_state_t *p = malloc(sizeof(pointer_state_t));
+    return p;
+}