From: Michael Stapelberg Date: Sun, 10 Jun 2012 17:42:53 +0000 (+0200) Subject: add a small perl example wrapper script for i3status’s JSON output X-Git-Tag: 2.6~26 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=2e3490141d49680e317c5a66de1ccb2d8b8634d1;p=i3%2Fi3status add a small perl example wrapper script for i3status’s JSON output --- diff --git a/contrib/wrapper.pl b/contrib/wrapper.pl new file mode 100755 index 0000000..7838132 --- /dev/null +++ b/contrib/wrapper.pl @@ -0,0 +1,43 @@ +#!/usr/bin/env perl +# vim:ts=4:sw=4:expandtab +# © 2012 Michael Stapelberg, Public Domain + +# This script is a simple wrapper which prefixes each i3status line with custom +# information. To use it, ensure your ~/.i3status.conf contains this line: +# output_format = "i3bar" +# in the 'general' section. +# Then, in your ~/.i3/config, use: +# status_command i3status | ~/i3status/contrib/wrapper.pl +# In the 'bar' section. + +use strict; +use warnings; +# You can install the JSON module with 'cpan JSON' or by using your +# distribution’s package management system, for example apt-get install +# libjson-perl on Debian/Ubuntu. +use JSON; + +# Don’t buffer any output. +$| = 1; + +# Skip the first line which contains the version header. +print scalar ; + +# The second line contains the start of the infinite array. +print scalar ; + +# Read lines forever, ignore a comma at the beginning if it exists. +while (my ($statusline) = ( =~ /^,?(.*)/)) { + # Decode the JSON-encoded line. + my @blocks = @{decode_json($statusline)}; + + # Prefix our own information (you could also suffix or insert in the + # middle). + @blocks = ({ + full_text => 'MPD: not running', + name => 'mpd' + }, @blocks); + + # Output the line as JSON. + print encode_json(\@blocks) . ",\n"; +}