/*
- * vim:ts=8:expandtab
+ * vim:ts=4:sw=4:expandtab
*
* i3 - an improved dynamic tiling window manager
- *
- * © 2009-2010 Michael Stapelberg and contributors
- *
- * See file LICENSE for license information.
+ * © 2009-2013 Michael Stapelberg and contributors (see also: LICENSE)
*
* This public header defines the different constants and message types to use
* for the IPC interface to i3 (see docs/ipc for more information).
*
*/
+#ifndef I3_I3_IPC_H
+#define I3_I3_IPC_H
+
+#include <stdint.h>
-#ifndef _I3_IPC_H
-#define _I3_IPC_H
+typedef struct i3_ipc_header {
+ /* 6 = strlen(I3_IPC_MAGIC) */
+ char magic[6];
+ uint32_t size;
+ uint32_t type;
+} __attribute__ ((packed)) i3_ipc_header_t;
/*
* Messages from clients to i3
/** Request the configuration for a specific 'bar' */
#define I3_IPC_MESSAGE_TYPE_GET_BAR_CONFIG 6
+/** Request the i3 version */
+#define I3_IPC_MESSAGE_TYPE_GET_VERSION 7
+
/*
* Messages from i3 to clients
*
/** Bar config reply type */
#define I3_IPC_REPLY_TYPE_BAR_CONFIG 6
+/** i3 version reply type */
+#define I3_IPC_REPLY_TYPE_VERSION 7
+
/*
* Events from i3 to clients. Events have the first bit set high.
*
/* The output event will be triggered upon changes in the output list */
#define I3_IPC_EVENT_OUTPUT (I3_IPC_EVENT_MASK | 1)
+/* The output event will be triggered upon mode changes */
+#define I3_IPC_EVENT_MODE (I3_IPC_EVENT_MASK | 2)
+
#endif