]> git.sur5r.net Git - i3/i3/blobdiff - include/data.h
Implement scratchpad functionality (see userguide)
[i3/i3] / include / data.h
index f6052b9f81154ed98aece23cd086e1792dfb33ba..ad50e81fe96c5ac0fd9045d9f6ab8e1436cc6903 100644 (file)
@@ -7,13 +7,17 @@
  * include/data.h: This file defines all data structures used by i3
  *
  */
+#ifndef _DATA_H
+#define _DATA_H
+
+#define SN_API_NOT_YET_FROZEN 1
+#include <libsn/sn-launcher.h>
+
 #include <xcb/randr.h>
 #include <xcb/xcb_atom.h>
 #include <stdbool.h>
 #include <pcre.h>
 
-#ifndef _DATA_H
-#define _DATA_H
 #include "queue.h"
 
 /*
@@ -28,7 +32,6 @@
  */
 
 /* Forward definitions */
-typedef struct Font i3Font;
 typedef struct Binding Binding;
 typedef struct Rect Rect;
 typedef struct xoutput Output;
@@ -116,7 +119,6 @@ struct deco_render_params {
     Rect con_deco_rect;
     uint32_t background;
     bool con_is_leaf;
-    xcb_font_t font;
 };
 
 /**
@@ -138,6 +140,22 @@ struct Ignore_Event {
     SLIST_ENTRY(Ignore_Event) ignore_events;
 };
 
+/**
+ * Stores internal information about a startup sequence, like the workspace it
+ * was initiated on.
+ *
+ */
+struct Startup_Sequence {
+    /** startup ID for this sequence, generated by libstartup-notification */
+    char *id;
+    /** workspace on which this startup was initiated */
+    char *workspace;
+    /** libstartup-notification context for this launch */
+    SnLauncherContext *context;
+
+    TAILQ_ENTRY(Startup_Sequence) sequences;
+};
+
 /**
  * Regular expression wrapper. It contains the pattern itself as a string (like
  * ^foo[0-9]$) as well as a pointer to the compiled PCRE expression and the
@@ -199,24 +217,13 @@ struct Binding {
 struct Autostart {
     /** Command, like in command mode */
     char *command;
+    /** no_startup_id flag for start_application(). Determines whether a
+     * startup notification context/ID should be created. */
+    bool no_startup_id;
     TAILQ_ENTRY(Autostart) autostarts;
     TAILQ_ENTRY(Autostart) autostarts_always;
 };
 
-/**
- * Data structure for cached font information:
- * - font id in X11 (load it once)
- * - font height (multiple calls needed to get it)
- *
- */
-struct Font {
-    /** The height of the font, built from font_ascent + font_descent */
-    int height;
-    /** The xcb-id for the font */
-    xcb_font_t id;
-};
-
-
 /**
  * An Output is a physical output on your graphics driver. Outputs which
  * are currently in use have (output->active == true). Each output has a
@@ -277,7 +284,7 @@ struct Window {
     char *name_json;
 
     /** The length of the name in glyphs (not bytes) */
-    int name_len;
+    size_t name_len;
 
     /** Whether the application used _NET_WM_NAME */
     bool uses_net_wm_name;
@@ -473,6 +480,12 @@ struct Con {
 
     /** callbacks */
     void(*on_remove_child)(Con *);
+
+    enum {
+        SCRATCHPAD_NONE = 0,
+        SCRATCHPAD_FRESH = 1,
+        SCRATCHPAD_CHANGED = 2
+    } scratchpad_state;
 };
 
 #endif