Befehl / Programm um eigenes System Tray Icon zu erstellen?

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
zephyr02
Beiträge: 84
Registriert: 03.02.2009 21:21:55
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: München

Befehl / Programm um eigenes System Tray Icon zu erstellen?

Beitrag von zephyr02 » 21.03.2009 21:20:02

Hi,

ich suche eine Möglichkeit um von der Kommandozeile aus ein Icon im System Tray anzuzeigen und mit einem Befehl zu verknüpfen. Kennt jemand eine Möglichkeit dies zu tun?

Alltray kenne ich. Aber ich habe es nur geschafft, mit diesem bestimmte X-Applications in den System-Tray zu schicken. Was ich will, ist einfach nur ein Icon im Tray anzeigen, welches dann nach Klick einen bestimmten Befehl ausführt.

Viele Grüße

zr.

PS. Falls jemand eine Möglichkeit kennt, wäre ich auch noch an dem gegenteiligen Befehl interessiert, mit dem ich das Icon wieder aus dem Tray entfernen kann...

Benutzeravatar
SubOptimal
Beiträge: 1709
Registriert: 10.01.2005 23:25:46
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: bei Frankfurt

Re: Befehl / Programm um eigenes System Tray Icon zu erstellen?

Beitrag von SubOptimal » 29.03.2009 11:46:38

Hi,

warum muss das Icon unbedingt im Benachrichtigungsfeld erscheinen? Was spricht gegen einen Programmstarter im Panel?

SubOptimal

zephyr02
Beiträge: 84
Registriert: 03.02.2009 21:21:55
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: München

Re: Befehl / Programm um eigenes System Tray Icon zu erstellen?

Beitrag von zephyr02 » 30.03.2009 21:54:37

SubOptimal hat geschrieben:Hi,

warum muss das Icon unbedingt im Benachrichtigungsfeld erscheinen? Was spricht gegen einen Programmstarter im Panel?

SubOptimal
Ich verwende eine tiling-version von fvwm in der ich das Mailprogramm alpine im Hintergrund laufen habe. Mit fvwm kann ich alpine auf neue Mails abfragen. Bislang habe ich aber noch keine elegante Möglichkeit gefunden, eine Benachichtigung bei neuen Mails zu erzeugen. Wenn ich ein Icon in meinem Panel anzeigen lasse, dann muss ich bei fvwm dafür immer etwas Platz reservieren. Dies wollte ich umgehen, in dem ich das Icon (im Falle neuer Mails) in einem in das Panel integrierten system tray (stalonetray) anzeigen lasse. Ein Klick auf das Icon würde dann mein Mailprogramm sichtbar machen. Leider weiß ich aber nicht wie man so ein System Tray Icon erzeugt. Da relativ viele Programme von dieser Möglichkeit Gebrauch machen, dachte ich, dass das eigentlich nicht so schwer sein kann...

Viele Grüße

zr.

Benutzeravatar
DerFux
Beiträge: 17
Registriert: 18.04.2006 13:44:37
Kontaktdaten:

Re: Befehl / Programm um eigenes System Tray Icon zu erstellen?

Beitrag von DerFux » 30.03.2009 23:22:29

Hi,
du kannst es, wenn du ein bischen Perl kannst mit folgendem Modul versuchen:
http://search.cpan.org/~borup/Gtk2-Tray ... rayIcon.pm

Damit kann man GTK Trayicons erstellen. Mehr Infos zu GTK-Perl

Habe gerade leider keine Zeit, es dir zu programmieren.

Viel Erfolg,
Manuel

zephyr02
Beiträge: 84
Registriert: 03.02.2009 21:21:55
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: München

Re: Befehl / Programm um eigenes System Tray Icon zu erstellen?

Beitrag von zephyr02 » 31.03.2009 00:41:24

Hi Manuel,

Vielen Dank für den heißen Tipp! Ich habe es mit TrayIcon versucht, bin dann aber über google noch auf StatusIcon gestoßen, was bei sogar out-of-the-box (ohne installation zusätzlicher Module) funktionierte.

Aus dem Netz habe ich mir folgenden Code gefischt und für meine Zwecke angepasst. (Ich kann zwar kein perl, aber es funktioniert :) )

Code: Alles auswählen

#!/usr/bin/perl
use strict;
use warnings;

use Gtk2 -init;

sub quit_cb {
   my ($widget, $status_icon) = @_;
 
   $status_icon->set_visible(0) if $status_icon;
   Gtk2->main_quit();
}

sub popup_menu_cb {
   my ($widget, $button, $time, $menu) = @_;

   if ($button == 3) {
   my ($x, $y, $push_in)
       = Gtk2::StatusIcon::position_menu($menu, $widget);

   $menu->show_all();
   $menu->popup( undef, undef,
             sub{return ($x,$y,0)} ,
             undef, 0, $time );
   }
}

sub activate_icon_cb {
  exec 'FvwmCommand Alpine_Show'
}

my $file = '/home/rob/.fvwm/icons/mail.png';
my $status_icon = Gtk2::StatusIcon->new();

my $menu = Gtk2::Menu->new();
my $menuItem = Gtk2::ImageMenuItem->new_from_stock('gtk-quit');
$menuItem->signal_connect('activate', \&quit_cb, $status_icon);
$menu->append($menuItem);

$status_icon->set_from_file($file);
$status_icon->set_tooltip("New Mail");
$status_icon->signal_connect('activate', \&activate_icon_cb);
$status_icon->signal_connect('popup-menu', \&popup_menu_cb, $menu);
$status_icon->set_visible(1);

Gtk2->main();
Vermutlich ist die Funktion activate_icon_cb etwas unsauber. Ich habe einfach mal geraten, wie man einen Befehl ausführt ... :D Es klappt jedenfalls.

Viele Grüße

zr.

Antworten