Skip to content
This repository has been archived by the owner on Apr 18, 2023. It is now read-only.

Commit

Permalink
i3bar-protocol: add example (illustration-only!) shell script, clarif…
Browse files Browse the repository at this point in the history
…y {"version":1} header
  • Loading branch information
stapelberg committed Aug 12, 2012
1 parent e53405c commit f94edd9
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 1 deletion.
29 changes: 29 additions & 0 deletions contrib/trivial-bar-script.sh
@@ -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 i3status’s 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
9 changes: 8 additions & 1 deletion docs/i3bar-protocol
@@ -1,7 +1,7 @@
i3bar input protocol
====================
Michael Stapelberg <michael@i3wm.org>
February 2012
August 2012

This document explains the protocol in which i3bar expects its input. It
provides support for colors, urgency, shortening and easy manipulation.
Expand Down Expand Up @@ -49,6 +49,9 @@ consists of a single JSON hash:
{ "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
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
Expand Down Expand Up @@ -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
\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

full_text::
Expand Down

0 comments on commit f94edd9

Please sign in to comment.