2009-07-29 13 views
22

¿Cómo escribo mi aplicación para que viva en la bandeja del sistema en Linux? De hecho, al igual que CheckGmail.Cómo escribir una aplicación para la bandeja del sistema en Linux

Al igual que con CheckGmail, también me gustaría que aparezca una especie de cuadro emergente al pasar el icono de la bandeja.

¿Existe una API, clase o algo para hacer esto? Todo lo que puedo encontrar parece ser para Windows.

Si tengo que ser un idioma específico, preferiblemente en C/C++, pero una solución en Python probablemente también lo haga.

Gracias.

+6

linux no tiene una bandeja del sistema - su administrador de ventanas podría - ¿cuál está usando? –

+0

Sí, lo siento, uso Xmonad con xmobar. trayer como la bandeja de mi sistema. Pero no estoy seguro de por qué es relevante para mi pregunta? – anderstornvig

+3

(No es relevante, no desde la especificación freedesktop. (Que fue el objetivo de tenerlo)) –

Respuesta

25

El marco Qt contiene una clase QSystemTrayIcon. Esto significa que puede escribir una aplicación en C++ o Python (o cualquier otro language with Qt bindings, incluidos C#, Ada, Pascal, Perl, PHP y Ruby) y ejecutar su aplicación en Windows, Linux, Mac o cualquier otro sistema operativo Qt compatible. Debo agregar que las aplicaciones Qt generalmente hacen un buen trabajo al buscar nativas en cualquier sistema operativo que estés usando sin mucho esfuerzo (incluso entre Gnome/KDE en Linux). Qt también tiene una excelente documentación, un montón de código de muestra, una licencia generosa y está bien mantenido.

+0

Gracias. He decidido sobre Qt. Gran marco. – anderstornvig

9

pitón-eggtrayicon

aquí está el ejemplo que viene con el paquete debian python-eggtrayicon en debian/prueba ...

#!/usr/bin/python 
import pygtk 
pygtk.require("2.0") 
import gtk 
import egg.trayicon 
t = egg.trayicon.TrayIcon("MyFirstTrayIcon") 
t.add(gtk.Label("Hello")) 
t.show_all() 
gtk.main() 

sólo muestra una etiqueta en el área de notificación. (Busque en eso, y probablemente obtendrá mucho mejores visitas ...)

+0

Nota: actualmente no está en debian (https://packages.debian.org/python-eggtrayicon, http: // packages.qa.debian.org/gnome-python-extras). – pevik

1

Desde el prompt de Python intente esto.

import gtk 

icon = gtk.StatusIcon() 
icon.set_from_stock(gtk.STOCK_ABOUT) 

gtk.main() 

Debería ver un icono en la bandeja del sistema.

Consulte este snippet para obtener un ejemplo más grande.

Cuestiones relacionadas