]> git.sur5r.net Git - i3/i3/commitdiff
Add new subscribe event 'mode' for binding mode changes
authorPavel Löbl <lobl.pavel@gmail.com>
Fri, 21 Sep 2012 22:21:39 +0000 (00:21 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Sat, 22 Sep 2012 10:52:49 +0000 (12:52 +0200)
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.

docs/ipc
include/i3/ipc.h
src/config.c

index f8dfa78e4ca0fdb117f0dd4b79365cd98bdba850..2716f180dc4fd4bdd3a1cc8b1fe61bcb4543fc0d 100644 (file)
--- a/docs/ipc
+++ b/docs/ipc
@@ -610,6 +610,8 @@ workspace (0)::
 output (1)::
        Sent when RandR issues a change notification (of either screens,
        outputs, CRTCs or output properties).
+mode (2)::
+       Sent whenever i3 changes its binding mode.
 
 *Example:*
 --------------------------------------------------------------------
@@ -651,6 +653,18 @@ This event consists of a single serialized map containing a property
 { "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
 
 For some languages, libraries are available (so you don’t have to implement
index 86fa1b4bb80389c2c9b3b54dc3ffeba76826c559..93b2ae87392e43a43b000ae5cd9d0beeed83c6c6 100644 (file)
@@ -84,4 +84,7 @@
 /* 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
index fcf3841ed3be21387a334deef437e974d4c82171..0bd6811a7c2944316c4ac34a28597779fbb8cc3d 100644 (file)
@@ -194,6 +194,13 @@ void switch_mode(const char *new_mode) {
         bindings = mode->bindings;
         translate_keysyms();
         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;
     }