diff options
-rwxr-xr-x | contrib/wrapper.pl | 43 |
1 files changed, 43 insertions, 0 deletions
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 <STDIN>; + +# The second line contains the start of the infinite array. +print scalar <STDIN>; + +# Read lines forever, ignore a comma at the beginning if it exists. +while (my ($statusline) = (<STDIN> =~ /^,?(.*)/)) { + # 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"; +} |