X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=include%2Fi3%2Fipc.h;h=0c57f7fdf40c51541af0ca735b1e54ad63e7df4b;hb=eca8fae2de2a2f7d6a8953d5ce6e0a76c6dc1264;hp=6a50ccc8701fffe7fb68084de093929bed9f5553;hpb=6582da993948c392daeaf4be018546e9186effb0;p=i3%2Fi3 diff --git a/include/i3/ipc.h b/include/i3/ipc.h index 6a50ccc8..0c57f7fd 100644 --- a/include/i3/ipc.h +++ b/include/i3/ipc.h @@ -2,14 +2,13 @@ * vim:ts=4:sw=4:expandtab * * i3 - an improved dynamic tiling window manager - * © 2009-2013 Michael Stapelberg and contributors (see also: LICENSE) + * © 2009 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 +#pragma once #include @@ -18,7 +17,7 @@ typedef struct i3_ipc_header { char magic[6]; uint32_t size; uint32_t type; -} __attribute__ ((packed)) i3_ipc_header_t; +} __attribute__((packed)) i3_ipc_header_t; /* * Messages from clients to i3 @@ -26,80 +25,90 @@ typedef struct i3_ipc_header { */ /** Never change this, only on major IPC breakage (don’t do that) */ -#define I3_IPC_MAGIC "i3-ipc" +#define I3_IPC_MAGIC "i3-ipc" + +/** Deprecated: use I3_IPC_MESSAGE_TYPE_RUN_COMMAND */ +#define I3_IPC_MESSAGE_TYPE_COMMAND 0 /** The payload of the message will be interpreted as a command */ -#define I3_IPC_MESSAGE_TYPE_COMMAND 0 +#define I3_IPC_MESSAGE_TYPE_RUN_COMMAND 0 /** Requests the current workspaces from i3 */ -#define I3_IPC_MESSAGE_TYPE_GET_WORKSPACES 1 +#define I3_IPC_MESSAGE_TYPE_GET_WORKSPACES 1 /** Subscribe to the specified events */ -#define I3_IPC_MESSAGE_TYPE_SUBSCRIBE 2 +#define I3_IPC_MESSAGE_TYPE_SUBSCRIBE 2 /** Requests the current outputs from i3 */ -#define I3_IPC_MESSAGE_TYPE_GET_OUTPUTS 3 +#define I3_IPC_MESSAGE_TYPE_GET_OUTPUTS 3 /** Requests the tree layout from i3 */ -#define I3_IPC_MESSAGE_TYPE_GET_TREE 4 +#define I3_IPC_MESSAGE_TYPE_GET_TREE 4 /** Request the current defined marks from i3 */ -#define I3_IPC_MESSAGE_TYPE_GET_MARKS 5 +#define I3_IPC_MESSAGE_TYPE_GET_MARKS 5 /** Request the configuration for a specific 'bar' */ -#define I3_IPC_MESSAGE_TYPE_GET_BAR_CONFIG 6 +#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 - * - */ - -/** Command reply type */ -#define I3_IPC_REPLY_TYPE_COMMAND 0 - -/** Workspaces reply type */ -#define I3_IPC_REPLY_TYPE_WORKSPACES 1 +#define I3_IPC_MESSAGE_TYPE_GET_VERSION 7 -/** Subscription reply type */ -#define I3_IPC_REPLY_TYPE_SUBSCRIBE 2 +/** Request a list of configured binding modes. */ +#define I3_IPC_MESSAGE_TYPE_GET_BINDING_MODES 8 -/** Outputs reply type */ -#define I3_IPC_REPLY_TYPE_OUTPUTS 3 +/** Request the raw last loaded i3 config. */ +#define I3_IPC_MESSAGE_TYPE_GET_CONFIG 9 -/** Tree reply type */ -#define I3_IPC_REPLY_TYPE_TREE 4 +/** Send a tick event to all subscribers. */ +#define I3_IPC_MESSAGE_TYPE_SEND_TICK 10 -/** Marks reply type */ -#define I3_IPC_REPLY_TYPE_MARKS 5 +/** Trigger an i3 sync protocol message via IPC. */ +#define I3_IPC_MESSAGE_TYPE_SYNC 11 -/** Bar config reply type */ -#define I3_IPC_REPLY_TYPE_BAR_CONFIG 6 - -/** i3 version reply type */ -#define I3_IPC_REPLY_TYPE_VERSION 7 +/* + * Messages from i3 to clients + * + */ +#define I3_IPC_REPLY_TYPE_COMMAND 0 +#define I3_IPC_REPLY_TYPE_WORKSPACES 1 +#define I3_IPC_REPLY_TYPE_SUBSCRIBE 2 +#define I3_IPC_REPLY_TYPE_OUTPUTS 3 +#define I3_IPC_REPLY_TYPE_TREE 4 +#define I3_IPC_REPLY_TYPE_MARKS 5 +#define I3_IPC_REPLY_TYPE_BAR_CONFIG 6 +#define I3_IPC_REPLY_TYPE_VERSION 7 +#define I3_IPC_REPLY_TYPE_BINDING_MODES 8 +#define I3_IPC_REPLY_TYPE_CONFIG 9 +#define I3_IPC_REPLY_TYPE_TICK 10 +#define I3_IPC_REPLY_TYPE_SYNC 11 /* * Events from i3 to clients. Events have the first bit set high. * */ -#define I3_IPC_EVENT_MASK (1 << 31) +#define I3_IPC_EVENT_MASK (1 << 31) /* The workspace event will be triggered upon changes in the workspace list */ -#define I3_IPC_EVENT_WORKSPACE (I3_IPC_EVENT_MASK | 0) +#define I3_IPC_EVENT_WORKSPACE (I3_IPC_EVENT_MASK | 0) /* The output event will be triggered upon changes in the output list */ -#define I3_IPC_EVENT_OUTPUT (I3_IPC_EVENT_MASK | 1) +#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) +#define I3_IPC_EVENT_MODE (I3_IPC_EVENT_MASK | 2) /* The window event will be triggered upon window changes */ -#define I3_IPC_EVENT_WINDOW (I3_IPC_EVENT_MASK | 3) +#define I3_IPC_EVENT_WINDOW (I3_IPC_EVENT_MASK | 3) /** Bar config update will be triggered to update the bar config */ -#define I3_IPC_EVENT_BARCONFIG_UPDATE (I3_IPC_EVENT_MASK | 4) +#define I3_IPC_EVENT_BARCONFIG_UPDATE (I3_IPC_EVENT_MASK | 4) + +/** The binding event will be triggered when bindings run */ +#define I3_IPC_EVENT_BINDING (I3_IPC_EVENT_MASK | 5) + +/** The shutdown event will be triggered when the ipc shuts down */ +#define I3_IPC_EVENT_SHUTDOWN (I3_IPC_EVENT_MASK | 6) -#endif +/** The tick event will be sent upon a tick IPC message */ +#define I3_IPC_EVENT_TICK (I3_IPC_EVENT_MASK | 7)