add a small perl example wrapper script for i3status’s JSON output
This commit is contained in:
parent
850f6720b5
commit
2e3490141d
43
contrib/wrapper.pl
Executable file
43
contrib/wrapper.pl
Executable file
@ -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";
|
||||
}
|
Loading…
Reference in New Issue
Block a user