* 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"
/*
*/
/* Forward definitions */
-typedef struct Font i3Font;
typedef struct Binding Binding;
typedef struct Rect Rect;
typedef struct xoutput Output;
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
+ * pcre_extra data returned by pcre_study().
+ *
+ * This makes it easier to have a useful logfile, including the matching or
+ * non-matching pattern.
+ *
+ */
+struct regex {
+ char *pattern;
+ pcre *regex;
+ pcre_extra *extra;
+};
+
/******************************************************************************
* Major types
*****************************************************************************/
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
/** x, y, width, height */
Rect rect;
-#if 0
- /** The bar window */
- xcb_window_t bar;
- xcb_gcontext_t bargc;
-
- /** Contains all clients with _NET_WM_WINDOW_TYPE ==
- * _NET_WM_WINDOW_TYPE_DOCK */
- SLIST_HEAD(dock_clients_head, Client) dock_clients;
-#endif
-
TAILQ_ENTRY(xoutput) outputs;
};
* application supports _NET_WM_NAME, in COMPOUND_TEXT otherwise). */
char *name_x;
+ /** The WM_WINDOW_ROLE of this window (for example, the pidgin buddy window
+ * sets "buddy list"). Useful to match specific windows in assignments or
+ * for_window. */
+ char *role;
+
/** Flag to force re-rendering the decoration upon changes */
bool name_x_changed;
};
struct Match {
- char *title;
- int title_len;
- char *application;
- char *class;
- char *instance;
- char *mark;
+ struct regex *title;
+ struct regex *application;
+ struct regex *class;
+ struct regex *instance;
+ struct regex *mark;
+ struct regex *role;
enum {
M_DONTCHECK = -1,
M_NODOCK = 0,