From 2e3490141d49680e317c5a66de1ccb2d8b8634d1 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Sun, 10 Jun 2012 19:42:53 +0200 Subject: [PATCH] =?utf8?q?add=20a=20small=20perl=20example=20wrapper=20scr?= =?utf8?q?ipt=20for=20i3status=E2=80=99s=20JSON=20output?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- contrib/wrapper.pl | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100755 contrib/wrapper.pl 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"; +} -- 2.39.2