Как написать приложение для системного трея в Linux - PullRequest
24 голосов
/ 30 июля 2009

Как мне написать приложение, чтобы оно работало в системном трее в Linux? На самом деле, так же, как CheckGmail .

Как и в случае с CheckGmail, мне бы также хотелось, чтобы при всплывающем значке в трее появлялось какое-то всплывающее окно.

Есть ли API, класс или что-то для этого? Все, что я могу найти, похоже, для Windows.

Если я должен быть ориентирован на конкретный язык, то предпочтительно на C / C ++, но, скорее всего, подойдет и решение на Python.

Спасибо.

Ответы [ 4 ]

27 голосов
/ 30 июля 2009

Каркас Qt содержит класс QSystemTrayIcon . Это означает, что вы можете написать приложение на C ++ или Python (или любом другом языке с привязками Qt , включая C #, Ada, Pascal, Perl, PHP и Ruby) и запускать ваше приложение на Windows, Linux, Mac или любая другая поддерживаемая операционная система Qt. Я должен добавить, что приложения Qt, как правило, неплохо выглядят как родные в любой операционной системе, которую вы используете, без особых усилий (даже между Gnome / KDE в Linux). Qt также имеет отличную документацию, много примеров кода, щедрую лицензию и в хорошем состоянии.

9 голосов
/ 30 июля 2009

питон-eggtrayicon

вот пример, который поставляется с пакетом debian python-eggtrayicon в 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()

Это просто показывает метку в области уведомлений. (Ищите это, и вы, вероятно, получите намного лучших хитов ...)

6 голосов
/ 30 июля 2009

Qt является кроссплатформенным и имеет поддержку системного трея. Его привязки Python также довольно хороши. Подробнее см. пример приложения .

1 голос
/ 05 мая 2015

Из командной строки Python попробуйте это.

import gtk

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

gtk.main()

Вы должны увидеть значок в системном трее.

См. Этот фрагмент для большего примера.

...