i3bar-protocol: add example (illustration-only!) shell script, clarify {"version":1} header

This commit is contained in:
Michael Stapelberg 2012-08-12 18:47:24 +02:00
parent e53405c216
commit f94edd9fc3
2 changed files with 37 additions and 1 deletions

29
contrib/trivial-bar-script.sh Executable file
View File

@ -0,0 +1,29 @@
#!/bin/sh
# vim:ts=4:sw=4:expandtab
# © 2012 Michael Stapelberg, Public Domain
# This script is a trivial shell script to send your own output to i3bar while
# using the JSON protocol.
#
# It is ugly and that is inherent to using JSON with shell scripts. You
# _really_ should not do that. See i3status or i3statuss contrib/ directory
# for examples of how to handle the output in higher-level languages.
#
# This example is purely for illustration of the protocol. DO NOT USE IT IN THE
# REAL WORLD.
# Send the header so that i3bar knows we want to use JSON:
echo '{ "version": 1 }'
# Begin the endless array.
echo '['
# We send an empty first array of blocks to make the loop simpler:
echo '[]'
# Now send blocks with information forever:
while :;
do
echo ",[{\"name\":\"time\",\"full_text\":\"$(date)\"}]"
sleep 1
done

View File

@ -1,7 +1,7 @@
i3bar input protocol i3bar input protocol
==================== ====================
Michael Stapelberg <michael@i3wm.org> Michael Stapelberg <michael@i3wm.org>
February 2012 August 2012
This document explains the protocol in which i3bar expects its input. It This document explains the protocol in which i3bar expects its input. It
provides support for colors, urgency, shortening and easy manipulation. provides support for colors, urgency, shortening and easy manipulation.
@ -49,6 +49,9 @@ consists of a single JSON hash:
{ "version": 1 } { "version": 1 }
---------------- ----------------
(Note that before i3 v4.3 the precise format had to be +{"version":1}+,
byte-for-byte.)
What follows is an infinite array (so it should be parsed by a streaming JSON What follows is an infinite array (so it should be parsed by a streaming JSON
parser, but as described above you can go for a simpler solution), whose parser, but as described above you can go for a simpler solution), whose
elements are one array per status line. A status line is one unit of elements are one array per status line. A status line is one unit of
@ -86,6 +89,10 @@ Please note that this example was pretty printed for human consumption.
i3status and others will output single statuslines in one line, separated by i3status and others will output single statuslines in one line, separated by
\n. \n.
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
=== Blocks in detail === Blocks in detail
full_text:: full_text::