]> git.sur5r.net Git - i3/i3/blobdiff - docs/i3bar-protocol
userguide: Use anchor for list of commands
[i3/i3] / docs / i3bar-protocol
index 2cf6dd0a18ebb263552e263a080e83887ee89913..62706f74359488688bafa5a83e702aa0af5040f3 100644 (file)
@@ -6,7 +6,7 @@ August 2012
 This document explains the protocol in which i3bar expects its input. It
 provides support for colors, urgency, shortening and easy manipulation.
 
-== Rationale for chosing JSON
+== Rationale for choosing JSON
 
 Before describing the protocol, let’s cover why JSON is a building block of
 this protocol.
@@ -51,7 +51,7 @@ consists of a single JSON hash:
 
 *All features example*:
 ------------------------------
-{ "version": 1, "stop_signal": 10, "cont_signal": 12 }
+{ "version": 1, "stop_signal": 10, "cont_signal": 12, "click_events": true }
 ------------------------------
 
 (Note that before i3 v4.3 the precise format had to be +{"version":1}+,
@@ -96,7 +96,7 @@ i3status and others will output single statuslines in one line, separated by
 
 You can find an example of a shell script which can be used as your
 +status_command+ in the bar configuration at
-http://code.stapelberg.de/git/i3/tree/contrib/trivial-bar-script.sh?h=next
+https://github.com/i3/i3/blob/next/contrib/trivial-bar-script.sh
 
 === Header in detail
 
@@ -107,16 +107,19 @@ stop_signal::
        processing.
        The default value (if none is specified) is SIGSTOP.
 cont_signal::
-       Specify to i3bar the signal (as an integer)to send to continue your
+       Specify to i3bar the signal (as an integer) to send to continue your
        processing.
        The default value (if none is specified) is SIGCONT.
+click_events::
+       If specified and true i3bar will write an infinite array (same as above)
+       to your stdin.
 
 === Blocks in detail
 
 full_text::
-       The most simple block you can think of is one which just includes the
-       only required key, the +full_text+ key. i3bar will display the string
-       value and that’s it.
+       The +full_text+ will be displayed by i3bar on the status line. This is the
+       only required key. If +full_text+ is an empty string, the block will be
+       skipped.
 short_text::
        Where appropriate, the +short_text+ (string) entry should also be
        provided. It will be used in case the status line needs to be shortened
@@ -134,14 +137,22 @@ color::
        when it is associated.
        Colors are specified in hex (like in HTML), starting with a leading
        hash sign. For example, +#ff0000+ means red.
+background::
+       Overrides the background color for this particular block.
+border::
+       Overrides the border color for this particular block.
 min_width::
        The minimum width (in pixels) of the block. If the content of the
        +full_text+ key take less space than the specified min_width, the block
        will be padded to the left and/or the right side, according to the +align+
        key. This is useful when you want to prevent the whole status line to shift
        when value take more or less space between each iteration.
+        The value can also be a string. In this case, the width of the text given
+        by +min_width+ determines the minimum width of the block. This is useful
+        when you want to set a sensible minimum width regardless of which font you
+        are using, and at what particular size.
 align::
-       Align text on the +center+ (default), +right+ or +left+ of the block, when
+       Align text on the +center+, +right+ or +left+ (default) of the block, when
        the minimum width of the latter, specified by the +min_width+ key, is not
        reached.
 name and instance::
@@ -154,6 +165,21 @@ urgent::
        A boolean which specifies whether the current value is urgent. Examples
        are battery charge values below 1 percent or no more available disk
        space (for non-root users). The presentation of urgency is up to i3bar.
+separator::
+       A boolean which specifies whether a separator line should be drawn
+       after this block. The default is true, meaning the separator line will
+       be drawn. Note that if you disable the separator line, there will still
+       be a gap after the block, unless you also use +separator_block_width+.
+separator_block_width::
+       The amount of pixels to leave blank after the block. In the middle of
+       this gap, a separator line will be drawn unless +separator+ is
+       disabled. Normally, you want to set this to an odd value (the default
+       is 9 pixels), since the separator line is drawn in the middle.
+markup::
+       A string that indicates how the text of the block should be parsed. Set to
+       +"pango"+ to use https://developer.gnome.org/pango/stable/PangoMarkupFormat.html[Pango markup].
+       Set to +"none"+ to not use any markup (default). Pango markup only works
+       if you use a pango font.
 
 If you want to put in your own entries into a block, prefix the key with an
 underscore (_). i3bar will ignore all keys it doesn’t understand, and prefixing
@@ -168,6 +194,17 @@ of the i3bar protocol.
 }
 ------------------------------------------
 
+In the following example, the longest (widest) possible value of the block is
+used to set the minimum width:
+
+------------------------------------------
+{
+ "full_text": "CPU 4%",
+ "min_width": "CPU 100%",
+ "align": "left"
+}
+------------------------------------------
+
 An example of a block which uses all possible entries follows:
 
 *Example*:
@@ -176,10 +213,48 @@ An example of a block which uses all possible entries follows:
  "full_text": "E: 10.0.0.1 (1000 Mbit/s)",
  "short_text": "10.0.0.1",
  "color": "#00ff00",
+ "background": "#1c1c1c",
+ "border": "#ee0000",
  "min_width": 300,
  "align": "right",
  "urgent": false,
  "name": "ethernet",
- "instance": "eth0"
+ "instance": "eth0",
+ "separator": true,
+ "separator_block_width": 9
+}
+------------------------------------------
+
+=== Click events
+
+If enabled i3bar will send you notifications if the user clicks on a block and
+looks like this:
+
+name::
+       Name of the block, if set
+instance::
+       Instance of the block, if set
+x, y::
+       X11 root window coordinates where the click occurred
+button::
+       X11 button ID (for example 1 to 3 for left/middle/right mouse button)
+relative_x, relative_y::
+    Coordinates where the click occurred, with respect to the top left corner
+    of the block
+width, height::
+    Width and height (in px) of the block
+
+*Example*:
+------------------------------------------
+{
+ "name": "ethernet",
+ "instance": "eth0",
+ "button": 1,
+ "x": 1320,
+ "y": 1400,
+ "relative_x": 12,
+ "relative_y": 8,
+ "width": 50,
+ "height": 22
 }
 ------------------------------------------