]> git.sur5r.net Git - i3/i3/blobdiff - docs/ipc
Merge pull request #2496 from Airblader/feature-917
[i3/i3] / docs / ipc
index 3cf66368ece51361d09d7a010478e28f1dc8a45e..2e223801fd12f3ec19686f861e4b508b1fe9c51e 100644 (file)
--- a/docs/ipc
+++ b/docs/ipc
@@ -80,6 +80,8 @@ GET_BAR_CONFIG (6)::
 GET_VERSION (7)::
        Gets the version of i3. The reply will be a JSON-encoded dictionary
        with the major, minor, patch and human-readable version.
+GET_BINDING_MODES (8)::
+        Gets a list of currently configured binding modes.
 
 So, a typical message could look like this:
 --------------------------------------------------
@@ -137,6 +139,8 @@ BAR_CONFIG (6)::
        Reply to the GET_BAR_CONFIG message.
 VERSION (7)::
        Reply to the GET_VERSION message.
+BINDING_MODES (8)::
+        Reply to the GET_BINDING_MODES message.
 
 === COMMAND reply
 
@@ -228,6 +232,8 @@ name (string)::
        The name of this output (as seen in +xrandr(1)+). Encoded in UTF-8.
 active (boolean)::
        Whether this output is currently active (has a valid mode).
+primary (boolean)::
+       Whether this output is currently the primary output.
 current_workspace (string)::
        The name of the current workspace that is visible on this output. +null+ if
        the output is not active.
@@ -258,7 +264,7 @@ rect (map)::
    "y": 0,
    "width": 1280,
    "height": 1024
-  },
+  }
  }
 ]
 -------------------
@@ -285,7 +291,7 @@ type (string)::
        Type of this container. Can be one of "root", "output", "con",
        "floating_con", "workspace" or "dockarea".
 border (string)::
-       Can be either "normal", "none" or "1pixel", dependending on the
+       Can be either "normal", "none" or "pixel", depending on the
        container’s border style.
 current_border_width (integer)::
        Number of pixels of the border width.
@@ -316,6 +322,10 @@ window_rect (map)::
        So, when using the +default+ layout, you will have a 2 pixel border on
        each side, making the window_rect +{ "x": 2, "y": 0, "width": 632,
        "height": 366 }+ (for example).
+deco_rect (map)::
+       The coordinates of the *window decoration* inside its container. These
+       coordinates are relative to the container and do not include the actual
+       client window.
 geometry (map)::
        The original geometry the window specified when i3 mapped it. Used when
        switching a window to floating mode, for example.
@@ -382,7 +392,7 @@ JSON dump:
         "y": 0,
         "width": 1280,
         "height": 0
-       },
+       }
       },
 
       {
@@ -516,21 +526,31 @@ statusline::
        Text color to be used for the statusline.
 separator::
        Text color to be used for the separator.
-focused_workspace_text/focused_workspace_bg::
-       Text color/background color for a workspace button when the workspace
+focused_background::
+       Background color of the bar on the currently focused monitor output.
+focused_statusline::
+       Text color to be used for the statusline on the currently focused
+       monitor output.
+focused_separator::
+       Text color to be used for the separator on the currently focused
+       monitor output.
+focused_workspace_text/focused_workspace_bg/focused_workspace_border::
+       Text/background/border color for a workspace button when the workspace
        has focus.
-active_workspace_text/active_workspace_bg::
-       Text color/background color for a workspace button when the workspace
+active_workspace_text/active_workspace_bg/active_workspace_border::
+       Text/background/border color for a workspace button when the workspace
        is active (visible) on some output, but the focus is on another one.
        You can only tell this apart from the focused workspace when you are
        using multiple monitors.
-inactive_workspace_text/inactive_workspace_bg::
-       Text color/background color for a workspace button when the workspace
+inactive_workspace_text/inactive_workspace_bg/inactive_workspace_border::
+       Text/background/border color for a workspace button when the workspace
        does not have focus and is not active (visible) on any output. This
        will be the case for most workspaces.
-urgent_workspace_text/urgent_workspace_bar::
-       Text color/background color for workspaces which contain at least one
+urgent_workspace_text/urgent_workspace_bg/urgent_workspace_border::
+       Text/background/border color for workspaces which contain at least one
        window with the urgency hint set.
+binding_mode_text/binding_mode_bg/binding_mode_border::
+        Text/background/border color for the binding mode indicator.
 
 
 *Example of configured bars:*
@@ -576,17 +596,29 @@ human_readable (string)::
        build date and branch name. When you need to display the i3 version to
        your users, use the human-readable version whenever possible (since
        this is what +i3 --version+ displays, too).
+loaded_config_file_name (string)::
+       The current config path.
 
 *Example:*
 -------------------
 {
    "human_readable" : "4.2-169-gf80b877 (2012-08-05, branch \"next\")",
+   "loaded_config_file_name" : "/home/hwangcc23/.i3/config",
    "minor" : 2,
    "patch" : 0,
    "major" : 4
 }
 -------------------
 
+=== BINDING_MODES reply
+
+The reply consists of an array of all currently configured binding modes.
+
+*Example:*
+---------------------
+["default", "resize"]
+---------------------
+
 == Events
 
 [[events]]
@@ -613,7 +645,7 @@ you can register to an event.
 *Example:*
 ---------------------------------
 type: SUBSCRIBE
-payload: [ "workspace", "focus" ]
+payload: [ "workspace", "output" ]
 ---------------------------------
 
 
@@ -641,6 +673,8 @@ barconfig_update (4)::
 binding (5)::
        Sent when a configured command binding is triggered with the keyboard or
        mouse
+shutdown (6)::
+       Sent when the ipc shuts down because of a restart or exit by user command
 
 *Example:*
 --------------------------------------------------------------------
@@ -664,15 +698,16 @@ if ($is_event) {
 
 This event consists of a single serialized map containing a property
 +change (string)+ which indicates the type of the change ("focus", "init",
-"empty", "urgent").
+"empty", "urgent", "reload", "rename", "restored"). A +current (object)+
+property will be present with the affected workspace whenever the type of event
+affects a workspace (otherwise, it will be +null).
 
-Moreover, when the change is "focus", an +old (object)+ and a +current
-(object)+ properties will be present with the previous and current
-workspace respectively.  When the first switch occurs (when i3 focuses
-the workspace visible at the beginning) there is no previous
-workspace, and the +old+ property will be set to +null+.  Also note
-that if the previous is empty it will get destroyed when switching,
-but will still be present in the "old" property.
+When the change is "focus", an +old (object)+ property will be present with the
+previous workspace.  When the first switch occurs (when i3 focuses the
+workspace visible at the beginning) there is no previous workspace, and the
++old+ property will be set to +null+.  Also note that if the previous is empty
+it will get destroyed when switching, but will still be present in the "old"
+property.
 
 *Example:*
 ---------------------
@@ -707,11 +742,15 @@ This event consists of a single serialized map containing a property
 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.
+mode is simply named default. It contains a second property, +pango_markup+, which
+defines whether pango markup shall be used for displaying this mode.
 
 *Example:*
 ---------------------------
-{ "change": "default" }
+{
+  "change": "default",
+  "pango_markup": true
+}
 ---------------------------
 
 === window event
@@ -719,14 +758,15 @@ mode is simply named default.
 This event consists of a single serialized map containing a property
 +change (string)+ which indicates the type of the change
 
-* +new+ - the window has become managed by i3
-* +close+ - the window has closed
-* +focus+ - the window has received input focus
-* +title+ - the window's title has changed
-* +fullscreen_mode+ - the window has entered or exited fullscreen mode
-* +move+ - the window has changed its position in the tree
-* +floating+ - the window has transitioned to or from floating
-* +urgent+ - the window has become urgent or lost its urgent status
+* +new+ – the window has become managed by i3
+* +close+ – the window has closed
+* +focus+ – the window has received input focus
+* +title+ – the window's title has changed
+* +fullscreen_mode+ – the window has entered or exited fullscreen mode
+* +move+ – the window has changed its position in the tree
+* +floating+ – the window has transitioned to or from floating
+* +urgent+ – the window has become urgent or lost its urgent status
+* +mark+ – a mark has been added to or removed from the window
 
 Additionally a +container (object)+ field will be present, which consists
 of the window's parent container. Be aware that for the "new" event, the
@@ -763,8 +803,8 @@ The +binding (object)+ field contains details about the binding that was run:
 
 command (string)::
        The i3 command that is configured to run for this binding.
-mods (array of strings)::
-       The modifier keys that were configured with this binding.
+event_state_mask (array of strings)::
+       The group and modifier keys that were configured with this binding.
 input_code (integer)::
        If the binding was configured with +bindcode+, this will be the key code
        that was given for the binding. If the binding is a mouse binding, it will be
@@ -782,7 +822,7 @@ input_type (string)::
  "change": "run",
  "binding": {
   "command": "nop",
-  "mods": [
+  "event_state_mask": [
     "shift",
     "ctrl"
   ],
@@ -793,6 +833,20 @@ input_type (string)::
 }
 ---------------------------
 
+=== shutdown event
+
+This event is triggered when the connection to the ipc is about to shutdown
+because of a user action such as a +restart+ or +exit+ command. The +change
+(string)+ field indicates why the ipc is shutting down. It can be either
++"restart"+ or +"exit"+.
+
+*Example:*
+---------------------------
+{
+ "change": "restart"
+}
+---------------------------
+
 == See also (existing libraries)
 
 [[libraries]]
@@ -804,6 +858,8 @@ know):
 C::
        * i3 includes a headerfile +i3/ipc.h+ which provides you all constants.
        * https://github.com/acrisci/i3ipc-glib
+C++::
+       * https://github.com/drmgc/i3ipcpp
 Go::
        * https://github.com/proxypoke/i3ipc
 JavaScript::
@@ -817,4 +873,7 @@ Python::
        * https://github.com/whitelynx/i3ipc (not maintained)
        * https://github.com/ziberna/i3-py (not maintained)
 Ruby::
-       * http://github.com/badboy/i3-ipc
+       * https://github.com/veelenga/i3ipc-ruby
+       * https://github.com/badboy/i3-ipc (not maintained)
+Rust::
+       * https://github.com/tmerr/i3ipc-rs