Aplikacja, o której mowa, wykonuje pewne działania (w tym przypadku podłącza audio do strumieni sieciowych) i działa zminimalizowana, jeśli działania te zakończyły się powodzeniem. Dlatego ikona stanu jest potrzebna do wyświetlenia stanu połączenia (np. POŁĄCZONY / ROZŁĄCZONY). Tylko po kliknięciu ikony otworzy się okno aplikacji, aby uzyskać dostęp do dalszych opcji.
Za pomocą Pythona 2.6 i pyGtk dogodnie to zrealizowałem, używając gtk_status_icon . Celowo napisałem aplikację, aby działała na jak największej liczbie dystrybucji, w tym różnych wersjach Ubuntu. Zadbałem o wykorzystanie możliwych zależności dopiero po ich zainstalowaniu przez użytkownika.
Jednak teraz słyszę, że gtk_status_icon nie będzie już obsługiwany w przyszłych wersjach Ubuntu. Programiści są proszeni o stosowanie zamiast tego wskaźników aplikacji. Jaka jest zatem najlepsza praktyka, aby upewnić się, że:
- Lokalne ikony aplikacji są wyświetlane poprawnie
- Aplikacja będzie nadal działać i wyświetlać jej ikony w przyszłych wydaniach Ubuntu.
- Aplikacja będzie również działać i wyświetlać swoje ikony w innych środowiskach, w których aplet wskaźnikowy , libappindicator i python-appindicator nie są dostarczane.
Mechanizmy awaryjne wskaźnika aplikacji do gtk_status_icon nie będą działać, jeśli aplet wskaźnika nie jest uruchomiony. Interpretatory języka Python nie będą działać, jeśli nie będzie modułu do importowania z appindicator . Czy muszę opracowywać różne wersje dla różnych dystrybucji, czy jest lepszy sposób na obejście tego?
Gdzie znajdę dokumentację na temat używania ApplicationIndicator inną niż w przykładzie podanym w Ubuntu Wiki ? Jakie komendy służą do sprawdzania, czy aplet wskaźnika działa, aby uniknąć programowania różnych kodów źródłowych dla dystrybucji Ubuntu w porównaniu do dystrybucji innych niż Ubuntu?
Mam doskonałe rozwiązanie, które sprawdziło się w StackApplet - stworzyłem funkcjonalnie równoważną wersję
appindicator
modułu, która używagtk.StatusIcon
wewnętrznie do zapewnienia identycznej funkcjonalności, gdy prawdziwy moduł nie istnieje.Korzystanie z niego jest tak proste, jak:
appindicator_replacement.py
Dodanie do aplikacji następujących elementów:
To jest to! Teraz Twoja aplikacja będzie działała idealnie z obsługą AppIndicators lub bez niej. Działa nawet w systemie Windows, zakładając, że nie masz żadnego kodu specyficznego dla platformy.
Uwaga: plik jest wydany na licencji MIT - więc możesz go używać praktycznie do wszystkiego.
źródło
Będziesz musiał napisać kod dla obu. Możesz wykryć obecność appindicatora w kodzie Pythona, używając czegoś podobnego do:
Następnie użyj have_appindicator, aby zdecydować, czy powinieneś użyć kodu appindicator czy kodu gtk_status_icon.
Niestety oznacza to również, że będziesz musiał mieć zarówno Ubuntu, jak i inne środowisko do testowania.
źródło
W ten sposób możesz wykryć, czy aplet wskaźnika jest uruchomiony. Nie musisz się martwić o Ubuntu 11.04, ponieważ tak nie będzie. Nie ma scenariusza awaryjnego, ponieważ aplet wskaźnika jest obowiązkowym składnikiem, domyślnie działającym.
źródło
/usr/lib/x86_64-linux-gnu/indicator-messages/indicator-messages-service
Zamiast tego jest wiele zadań.