Popper ist ein Ersatz für kdialog, gdialog, osd_cat und knotify und ist eine nette Hilfe für die Erweiterung eines WMs, wenn wichtige Nachrichten von einem Shellscript oder ähnlichem an die grafische Schnittstelle gesendet werden müssen. Normalerweise nutze ich osd_cat unter ion3, nur muss ich zugeben, ich übersehe bei einer heftigen Administrationsarbeit schon einmal den netten Aufruf, dass ich an einer anderen Stelle gebraucht werde.
Leider ist Popper nicht in den Debian-Repositories vorhanden, kann aber einfach selber kompiliert und dann in das ~/bin/-Verzeichnis gesetzt werden, um es Lokal aufrufen zu können.
Abhängigkeiten für das Kompilieren sind:
- Gtk2-devel
- Glib2-devel
- libnotify-devel
für das Ausführen:
- Gtk2
- Glib2
- libnotify
Nachdem die Abhängigkeiten installiert sind reicht ein einfaches sh buildme.sh und schon hat man die die Datei popper in dem Verzeichnis.
Wer nun das Bild betrachtet bekommt einen kleinen Aha-Effekt, denn den meisten sollte das Programm bekannt sein:
Also habe ich mich gleich mal an die Arbeit gesetzt und eine Benachrichtigung für irssi geschrieben, welche nur den eigenen Nicknamen für öffentliche Nachrichten beachtet und bei privaten Nachrichten eine Meldung ausgibt.
[bash lang=perl ln=y]#!/usr/bin/perl -w
#
# Seraphyn
# This file is released under the GPLv2.
#
use strict;
use vars qw($VERSION %IRSSI);
use Irssi;
$VERSION = ‚1.00‘;
%IRSSI = (
authors => ‚Seraphyn‘,
contact => ‚http://got-tty.org‘,
name => ‚popper‘,
description => ‚For the friends of ion3 and irssi ‚ .
‚Pops up at specific messages which includes your Namewith the popper-app‘,
license => ‚GPL‘,
);
sub popper {
my $msg = shift;
$msg =~ s/“/\“/g;
my $pop_on = Irssi::settings_get_bool(„pop_on“);
if ( ! $pop_on ) {
return;
}
my $cmd = Irssi::settings_get_str( „pop_command“ );
system( „$cmd „$msg“ &“);
}
sub msg_public_handler {
my ( $server, $msg, $nick, $address, $channel) = @_;
my $onick= quotemeta „$server->{nick}“;
my $pat ='(:|,|s)‘; # option…
my @pop_channels = split(/ /, Irssi::settings_get_str(„pop_channels“) );
foreach my $c (@pop_channels) {
if ( $channel eq $c )
{
if( $msg =~ /^$onick/i )
{
popper( „$channel $nick: $msg“ );
last;
}
}
}
}
sub msg_private_handler {
my ( $server, $msg, $nick, $address ) = @_;
popper( „$nick: $msg“ );
}
sub usage {
print „Usage:
/set pop_command
set command to execute on events, examples: popper -l -3 for 3 seconds, -5 for five seconds, see for more Info
/set pop_channels
set whitespace seperated list with channels on which pop_command is executed
(e.g. ‚#irssi #ion‘)
/set pop_on
set whether to pop or not
/popper help
display this help“;
}
sub main {
Irssi::signal_add(„message public“, „msg_public_handler“);
Irssi::signal_add(„message private“, „msg_private_handler“);
Irssi::settings_add_str(„popper“, „pop_channels“, „#EXAMPLE1 #EXAMPLE2“);
Irssi::settings_add_str(„popper“, „pop_command“,
“ popper -l -3″);
Irssi::settings_add_bool(„popper“, „pop_on“, 1);
Irssi::command_bind( „popper“, „usage“, „popper“)
}
main();
Einfach den Sourcetext in das ~/.irssi/scripts/-Verzeichnis als popper.pl abspeichern, ausführbar machen, und mit /script load popper.pl in irssi laden, auch kann scriptassist dazu genutzt werden, um jenes auf autorun zu setzen. Mit /set pop_channels können die Channels getrennt mit einem Leerzeichen angegeben werden ( am besten in Zeile 83 die EXAMPLE-Channels in die eigenen ändern). Für Zeile 86 gelten die typischen popper-Aufrufe.
Weitere Infos wie man Popper behandelt ( Ich als Kind der 70er muss permanent Grinsen, Mann, bin ich Froh, dass ich das Wort nun nicht mehr schreiben muss :D ) findet man auf der verlinkten Webseite.
Achtung bei dem RSS-Feed stimmt nicht, durch bash, der Code, somit bitte von der Seite kopieren.
Ein X-System ist für mich für ion3 da. Zum surfen, für gimp ( auch SVG-Programme), nxclient, worker und damit hat es sich eigentlich. Nein, ich kann viele Webseiten nicht per w3m und Konsorten nutzen. Nehmen wir als Bsp. Susestudio. Nun sitze ich nicht