]> git.sur5r.net Git - i3/i3/blob - include/i3/ipc.h
introduced i3 command for changing the hidden state and the mode of i3bar
[i3/i3] / include / i3 / ipc.h
1 /*
2  * vim:ts=4:sw=4:expandtab
3  *
4  * i3 - an improved dynamic tiling window manager
5  * © 2009-2013 Michael Stapelberg and contributors (see also: LICENSE)
6  *
7  * This public header defines the different constants and message types to use
8  * for the IPC interface to i3 (see docs/ipc for more information).
9  *
10  */
11 #ifndef I3_I3_IPC_H
12 #define I3_I3_IPC_H
13
14 #include <stdint.h>
15
16 typedef struct i3_ipc_header {
17     /* 6 = strlen(I3_IPC_MAGIC) */
18     char magic[6];
19     uint32_t size;
20     uint32_t type;
21 } __attribute__ ((packed)) i3_ipc_header_t;
22
23 /*
24  * Messages from clients to i3
25  *
26  */
27
28 /** Never change this, only on major IPC breakage (don’t do that) */
29 #define I3_IPC_MAGIC                    "i3-ipc"
30
31 /** The payload of the message will be interpreted as a command */
32 #define I3_IPC_MESSAGE_TYPE_COMMAND             0
33
34 /** Requests the current workspaces from i3 */
35 #define I3_IPC_MESSAGE_TYPE_GET_WORKSPACES      1
36
37 /** Subscribe to the specified events */
38 #define I3_IPC_MESSAGE_TYPE_SUBSCRIBE           2
39
40 /** Requests the current outputs from i3 */
41 #define I3_IPC_MESSAGE_TYPE_GET_OUTPUTS         3
42
43 /** Requests the tree layout from i3 */
44 #define I3_IPC_MESSAGE_TYPE_GET_TREE            4
45
46 /** Request the current defined marks from i3 */
47 #define I3_IPC_MESSAGE_TYPE_GET_MARKS           5
48
49 /** Request the configuration for a specific 'bar' */
50 #define I3_IPC_MESSAGE_TYPE_GET_BAR_CONFIG      6
51
52 /** Request the i3 version */
53 #define I3_IPC_MESSAGE_TYPE_GET_VERSION         7
54
55 /*
56  * Messages from i3 to clients
57  *
58  */
59
60 /** Command reply type */
61 #define I3_IPC_REPLY_TYPE_COMMAND               0
62
63 /** Workspaces reply type */
64 #define I3_IPC_REPLY_TYPE_WORKSPACES            1
65
66 /** Subscription reply type */
67 #define I3_IPC_REPLY_TYPE_SUBSCRIBE             2
68
69 /** Outputs reply type */
70 #define I3_IPC_REPLY_TYPE_OUTPUTS               3
71
72 /** Tree reply type */
73 #define I3_IPC_REPLY_TYPE_TREE                  4
74
75 /** Marks reply type */
76 #define I3_IPC_REPLY_TYPE_MARKS                 5
77
78 /** Bar config reply type */
79 #define I3_IPC_REPLY_TYPE_BAR_CONFIG            6
80
81 /** i3 version reply type */
82 #define I3_IPC_REPLY_TYPE_VERSION               7
83
84 /*
85  * Events from i3 to clients. Events have the first bit set high.
86  *
87  */
88 #define I3_IPC_EVENT_MASK                       (1 << 31)
89
90 /* The workspace event will be triggered upon changes in the workspace list */
91 #define I3_IPC_EVENT_WORKSPACE                  (I3_IPC_EVENT_MASK | 0)
92
93 /* The output event will be triggered upon changes in the output list */
94 #define I3_IPC_EVENT_OUTPUT                     (I3_IPC_EVENT_MASK | 1)
95
96 /* The output event will be triggered upon mode changes */
97 #define I3_IPC_EVENT_MODE                       (I3_IPC_EVENT_MASK | 2)
98
99 /* The window event will be triggered upon window changes */
100 #define I3_IPC_EVENT_WINDOW                     (I3_IPC_EVENT_MASK | 3)
101
102 /** Bar config update will be triggered to update the bar config */
103 #define I3_IPC_EVENT_BARCONFIG_UPDATE           (I3_IPC_EVENT_MASK | 4)
104
105 #endif