Add new subscribe event 'mode' for binding mode changes
Introducing a new event to subscribe called mode. It's fired up when i3 changes binding mode (like switching from default to resize). IPC guide adjusted also.
This commit is contained in:
parent
8c8fce82e5
commit
7cffd79140
14
docs/ipc
14
docs/ipc
|
@ -610,6 +610,8 @@ workspace (0)::
|
||||||
output (1)::
|
output (1)::
|
||||||
Sent when RandR issues a change notification (of either screens,
|
Sent when RandR issues a change notification (of either screens,
|
||||||
outputs, CRTCs or output properties).
|
outputs, CRTCs or output properties).
|
||||||
|
mode (2)::
|
||||||
|
Sent whenever i3 changes its binding mode.
|
||||||
|
|
||||||
*Example:*
|
*Example:*
|
||||||
--------------------------------------------------------------------
|
--------------------------------------------------------------------
|
||||||
|
@ -651,6 +653,18 @@ This event consists of a single serialized map containing a property
|
||||||
{ "change": "unspecified" }
|
{ "change": "unspecified" }
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
|
=== mode event
|
||||||
|
|
||||||
|
This event consists of a single serialized map containing a property
|
||||||
|
+change (string)+ which holds the name of current mode in use. The name
|
||||||
|
is the same as specified in config when creating a mode. The default
|
||||||
|
mode is simply named default.
|
||||||
|
|
||||||
|
*Example:*
|
||||||
|
---------------------------
|
||||||
|
{ "change": "default" }
|
||||||
|
---------------------------
|
||||||
|
|
||||||
== See also
|
== See also
|
||||||
|
|
||||||
For some languages, libraries are available (so you don’t have to implement
|
For some languages, libraries are available (so you don’t have to implement
|
||||||
|
|
|
@ -84,4 +84,7 @@
|
||||||
/* The output event will be triggered upon changes in the output list */
|
/* 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)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -194,6 +194,13 @@ void switch_mode(const char *new_mode) {
|
||||||
bindings = mode->bindings;
|
bindings = mode->bindings;
|
||||||
translate_keysyms();
|
translate_keysyms();
|
||||||
grab_all_keys(conn, false);
|
grab_all_keys(conn, false);
|
||||||
|
|
||||||
|
char *event_msg;
|
||||||
|
sasprintf(&event_msg, "{\"change\":\"%s\"}", mode->name);
|
||||||
|
|
||||||
|
ipc_send_event("mode", I3_IPC_EVENT_MODE, event_msg);
|
||||||
|
FREE(event_msg);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue