#!/usr/bin/perl # # notify_osd: perform some string manipulation on notify-osd messages # and then send to the screen message window # Copyright (C) 2010 Canonical Ltd. # # Authors: Dustin Kirkland # with help from Mathias Gug # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, version 3 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . $/ = "\n\n"; $PKG = "byobu"; $sleep = 5; while () { # Ensure that the notify_osd indicator is enabled my $skip = 0; open(F, "<$ENV{BYOBU_CONFIG_DIR}/status"); foreach my $i () { if ($i =~ /notify_osd=0/) { $skip = 1; } } close(F); if ($skip == 1) { next; } $msg = $_; $msg =~ s/\[[^,]*, //; # strip the leading "[timestamp, " $msg =~ s/\] /: /; # replace the " ] " following the indicator name, with ":" $msg =~ s/\s+/ /g; # collapse multi-whitespace into one $msg =~ s/\s+$//g; # strip trailing whitespace $msg =~ s/^\s+//g; # strip leading whitespace system("/usr/bin/screen", "-X", "-S", "$ARGV[0]", "at", "*", "msgwait", "$sleep"); system("/usr/bin/screen", "-X", "-S", "$ARGV[0]", "at", "*", "echo", "[$msg]"); sleep($sleep); system("/usr/bin/screen", "-X", "-S", "$ARGV[0]", "at", "*", "msgwait", "0"); }