Я написал простой индикаторный апплет для Ubuntu на python с gi.repository, который я успешно запускал на своей Ubuntu 14.04 в течение долгого времени без каких-либо проблем. После того, как я обновился до Ubuntu 16.04, я начал наблюдать странное поведение. Я снова попробовал это в Ubuntu 14.04, просто чтобы быть уверенным, и он работает нормально, но в Ubuntu 16.04 мои события меню не запускаются, и приложение иногда не отвечает, когда я пытаюсь изменить значок.
Некоторый базовый индикатор кода, который работает в Ubuntu 14.04, но не работает в Ubuntu 16.04.
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk as gtk
gi.require_version('AppIndicator3', '0.1')
from gi.repository import AppIndicator3 as appindicator
def main():
indicator = appindicator.Indicator.new(
'mytestindicator',
gtk.STOCK_INFO,
appindicator.IndicatorCategory.SYSTEM_SERVICES
)
indicator.set_status(appindicator.IndicatorStatus.ACTIVE)
indicator.set_menu(build_menu())
gtk.main()
def quit(source):
gtk.main_quit()
def build_menu():
menu = gtk.Menu()
item_quit = gtk.MenuItem('Quit')
item_quit.connect('activate', quit)
menu.append(item_quit)
menu.show_all()
return menu
if __name__ == '__main__':
main()
Итак, мой вопрос: что изменилось между Ubuntu 14.04 и 16.04 и как я могу создать надежный индикаторный апплет, который будет работать без сбоев в обеих системах?
Однако я заметил одну вещь: в Ubuntu 14 у меня есть gi.repository версии 3.12.0, а в Ubuntu 16 — 3.20.0, но не уверен, что это имеет значение.