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.
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
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 a infinite array (same as above)
+ 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
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
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::
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
"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,
instance::
Instance of the block, if set
x, y::
- X11 root window coordinates where the click occured
+ 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*:
------------------------------------------
"instance": "eth0",
"button": 1,
"x": 1320,
- "y": 1400
+ "y": 1400,
+ "relative_x": 12,
+ "relative_y": 8,
+ "width": 50,
+ "height": 22
}
------------------------------------------