2009-07-29 17 views
22

Come scrivere la mia applicazione in modo che risieda nella barra delle applicazioni su Linux? In effetti, proprio come CheckGmail.Come scrivere un'applicazione per la barra delle applicazioni in Linux

Come con CheckGmail, mi piacerebbe anche una sorta di finestra popup da visualizzare quando si passa il mouse sull'icona del vassoio.

Esiste un'API, una classe o qualcosa del genere per farlo? Tutto quello che riesco a trovare sembra essere per Windows.

Se devo essere specifico per la lingua, preferibilmente in C/C++ ma molto probabilmente lo farà anche una soluzione in Python.

Grazie.

+6

linux non ha un vassoio di sistema - il tuo gestore di finestre potrebbe - quale stai usando? –

+0

Sì, mi dispiace, io uso Xmonad con xmobar. trayer come vassoio di sistema. Ma non sono sicuro del perché sia ​​rilevante per la mia domanda? – anderstornvig

+3

(Non è rilevante, non dal momento che la specifica freedesktop. (Che era il punto di averlo.)) –

risposta

25

Il framework Qt contiene una classe QSystemTrayIcon. Ciò significa che puoi scrivere un'applicazione in C++ o Python (o qualsiasi altro language with Qt bindings, incluso C#, Ada, Pascal, Perl, PHP e Ruby) ed eseguire l'applicazione su Windows, Linux, Mac o qualsiasi altro sistema operativo Qt supportato. Dovrei aggiungere che le applicazioni Qt in genere fanno un ottimo lavoro di aspetto nativo su qualsiasi sistema operativo che si sta utilizzando senza grandi sforzi (anche tra Gnome/KDE su Linux). Qt ha anche un'ottima documentazione, un sacco di codice di esempio, una licenza generosa ed è ben mantenuto.

+0

Grazie. Ho deciso su Qt. Ottimo quadro. – anderstornvig

9

python-eggtrayicon

Ecco l'esempio che viene fornito con il pacchetto debian python-eggtrayicon in debian/testing ...

#!/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() 

mostra solo un'etichetta nell'area di notifica. (Cerca su questo, e probabilmente otterrai molto colpi migliori ...)

+0

Nota: attualmente non in Debian (https://packages.debian.org/python-eggtrayicon, http: // packages.qa.debian.org/gnome-python-extras). – pevik

1

Da un prompt python, provare questo.

import gtk 

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

gtk.main() 

Si dovrebbe vedere un'icona nella barra delle applicazioni.

Vedere questo snippet per un esempio più grande.

Problemi correlati