Можно ли изменить и обновить значок состояния апплета индикатора?

8

Я пытаюсь создать простой индикатор приложения, имитирующий апплет загрузки процессора для панели gnome.

В настоящее время я делаю это, обновляя (перезаписывая) значок состояния индикатора новой информацией о загрузке ЦП и переустанавливая значок состояния на один и тот же значок при каждом обновлении (я знаю, что это глупо, но я не знаю, если это В настоящее время можно решить иначе).

К сожалению, это не работает, и я всегда вижу «первое» состояние значка, например.

Значок индикатора не обновляется, в то время как содержимое значка обновляется.

Я также попытался временно установить значок состояния на что-то другое, например.

...
update_icon()
indicator.set_icon("indicator-messages")
indicator.set_icon("indicator-cpu-load")
...

но это тоже не сработало.

Любые идеи?


ОБНОВИТЬ:

Действительно возможно сделать то, что я хотел, используя хак, чтобы индикатор перекрасил свой значок (спасибо Хорхе Кастро и Теду Гулду):

...
update_icon()
indicator.set_status(appindicator.STATUS_ATTENTION)
indicator.set_status(appindicator.STATUS_ACTIVE)
...

Значок состояния внимания должен совпадать со значком активного состояния, в противном случае может возникнуть мерцание.

htorque
источник

Ответы:

4

Это на самом деле не предназначенное поведение индикаторов приложения: они должны иметь один или два значка, а не то, что вы могли бы почти вставить в виджет.

Кажется, что-то не так в кэшировании иконки, так как она должна обновить измененную иконку.

В любом случае, вы, вероятно, захотите использовать что-то вроде « libindicator » для создания своего собственного пользовательского индикатора. Коллекция индикаторов приложения на вашей панели нарисована одним индикатором. При написании пользовательского индикатора в вашем распоряжении гораздо больше функций, чем при использовании ограниченного API индикаторов приложения, который был преднамеренно ограничен, чтобы не допустить беспорядка.

Также обязательно посмотрите на пакет «libindicator-tools», который содержит несколько удобных утилит для тестирования индикаторов.

Смысл Хофстеде
источник
Несмотря на то , что это можно делать то , что я хочу (см обновление в вопросе), я согласен , что писать пользовательский индикатор , вероятно , является лучшей идеей.
htorque
Тем не менее, я не понимаю, почему здесь не рекомендуется использовать установленную и хорошо функционирующую процедуру, такую ​​как GTkStatusIcon. Чтобы еще раз пояснить: в настоящее время GtkStatusIcon полностью поддерживает все основные менеджеры настольных систем. Поэтому GtkStatusIcon необходимо продолжить в будущих версиях Ubuntu, и это будет - по крайней мере, как запасной вариант. Кто бы ни проголосовал за GtKStatusIcon, вы могли бы объяснить, почему вы думаете иначе. Есть ли какие-либо причины, по которым я мог бы не знать, чтобы не писать программы, которые зависят от GtkStatusIcon?
Таккат
Следующая версия Ubuntu, которая будет использовать Unity в качестве оболочки по умолчанию, не будет поддерживать GtkStatusIcons, за исключением особых случаев Java и Wine. Это сделано для того, чтобы рабочий стол мог двигаться вперед, используя новые технологии и уменьшая помехи в области уведомлений.
Смысл Хофстеде
спасибо за указание на это. Означает ли это, что все приложения, которым нужен настраиваемый значок или которые используют устаревший NA, не будут работать в будущих версиях Ubuntu, если их разработчики не будут портировать его?
Таккат
Они будут работать в Ubuntu, но их GtkStatusIcon не будет показан.
Смысл Хофстеде
1

Я не думаю, что это возможно, и похоже, что это сделано из отчета об ошибке .

Вместо этого мы хотели бы побудить людей начать думать как темы значков. Причина этого заключается в том, что она допускает несколько размеров и тематику панели отдельно от приложений. Так, например, приложение может быть тематическим на светлом фоне (поэтому нужны темные значки), а на панели может быть темный фон (нужны светлые значки). Приложение не должно знать об этом. И с помощью именования иконок эта проблема разрешима на стороне панели вещей.

Для цикла Natty мы также хотим предоставить удобный API для создания пользовательской темы значков для людей, которые хотят создавать значки. Это не решает всех проблем с темами, но позволяет решить несколько размеров.

Обновление: чтобы ответить на ваш комментарий, Тед считает, что это ошибка, и рекомендует подать сообщение об ошибке в индикатор-приложении , что-то вроде «обновления темы не реализованы индикаторами».

Хорхе Кастро
источник
Я почти уверен, что я делаю против дизайна, но боюсь, что комментарий не отвечает, почему я не могу редактировать / изменять значок (в рамках темы), и заставлять индикатор обновлять его содержание. Я могу сделать что-то вроде индикатор.set_icon ("а") индикатор.set_icon ("б") индикатор.set_icon ("с") ... но у меня нет бесконечного пространства для бесконечных новых иконок. : P
htorque