Ponele un TrayIcon a tu aplicación
Es realmente muy simple hacer que nuestra aplicación use el área de notificación de Gnome utilizando Mono y C#, gracias a que Todd Bermann hace ya unas semanas escribió el módulo Egg TrayIcon enteramente en C#, liberándonos de la tortura del código en C :-) … realmente se implementa en unos pocos minútos, veamos.
- Primero bajamos el archivo TrayIcon.cs que Todd Bermann ha hecho. 2) Escribimos nuestra applicación de prueba, contará hacia adelante (hasta el overflow del int) :
// Namespaces que vamos a utilizar
using System;
using Gtk;
using Gnome;
using Egg; // Este namespace está definido en el archivo TrayIcon.cs
// Nuestra clase de ejemplo
class TrayTest {
static int count = 0;
static Label label;
public static void Main(string[] args)
{
EventBox eb;
TrayIcon trayIcon;
// Creamos un programa
Program test = new Program ("Test", "0.0.1", Modules.UI, args);
// Creamos la etiqueta
label = new Label ("Hola Mundo");
// No realmente necesario para este ejemplo, pero si deseamos agregar
// menú contextual o tooltip es necesario
eb = new EventBox ();
eb.Add (label);
// Creamos el tooltip
trayIcon = new TrayIcon ("Test");
trayIcon.Add (eb);
trayIcon.ShowAll ();
// Iniciamos el texto
Count ();
// Refresco cada 1 segundo
GLib.Timeout.Add (1000, new GLib.TimeoutHandler (Count));
// Done!, Corriendo!!!
test.Run ();
}
public static bool Count ()
{
label.Text = String.Format ("Voy contando {0} veces ...", count);
count++;
return true;
}
}
- Compilamos nuestra aplicación :
$ mcs -target:exe -out:TrayTest.exe -pkg:gtk-sharp -pkg:gnome-sharp *.cs
Compilation succeeded
- La ejecutamos :
$ mono ./TrayIcon.exe (en Debian con "./TrayIcon.exe" alcanza, no se si otras distros usan binfmt por defecto)
Si no tenemos área de notificación en nuestro panel de Gnome, lo agregamos antes para ver el resultado, y veríamos algo como :
![]()
Como se darán cuenta, muy simple y rápido … Espero que lo disfruten!