В 2010 Stefano Palazzo, которого задают связанный вопрос, Помещая произвольный gtk. Виджет в appindicator. Индикатор и подобный спросили относительно StackOverflow. В обоих случаях согласие состоит в том, что Индикаторы приложения Ubuntu ограничены. Как Michael Ekstrand выразился:
Поддержка меню Application Indicator основана на меню D-Bus, которые ограничены в том, что они поддерживают - они только поддерживают функциональность основного меню, не более экзотические вещи, такие как произвольные виджеты.
Однако это противоречит тому, что мы видим в индикаторе Bluetooth сегодня в 2016: это использует переключатели.
То же могло наблюдаться с Ubuntu Один индикатор от 13,04:
Так, очевидно, существует путь. Я изучил исходный код Bluetooth индикатора, но он записан в Vala. Я, однако, работаю, прежде всего, в Python и изучении, что Vala только для перезаписи всех моих уже существующих индикаторов является немного слишком много работы.
Так ядро вопроса: Как можно использовать Gtk. Виджеты, или в очень минимальном переключатель точно так же, как в индикаторе Bluetooth, с помощью Python?
Примечание: Я готов поместить щедрость на этот вопрос вознаградить ответ, который обеспечит рабочий пример в Python. Другие языки не приняты.
Эта проблема существует, потому что, в то время как AppIndicators помогают создать меню индикатора, они действительно мешают созданию того. Давайте посмотрим на различия между использованием кода Python в качестве примера AppIndicator и использующими Бойкими Меню путем, код Bluetooth делает.
Во-первых Вы проинструктированы для создания a gtk.Menu
, это старые объекты меню Gtk стиля то использование Gtk.Action
это теперь удерживается от использования. AppIndicator берет gtk.Menu
объект от Вас во время set_menu(...)
процесс и синтаксические анализы это, продвигая каждое из меню это находит на сервис индикатора созданный с помощью libdbusmenu
. Этот процесс парсинга означает, что что-либо не поддерживаемое AppIndicator отфильтровано, независимо от того, что Вы делаете.
Затем давайте посмотрим на меню Bluetooth. Это создало использование Gio.Menu
объекты, это модернизированные меню Gnome с помощью GAction
система. Это затем зарегистрировало свой собственный сервис без использования AppIndicator
или libdbusmenu
и набор это использует пользовательское x-canonical-type
свойство для создания виджета переключателя, который передается libido
для парсинга.
Это целое осуществление довольно плохо, так как это - собственное удовлетворение требованиям заказчика Единицы всего Canonical. Таким образом, как только единица идет, так или иначе нет никакого appindicators.