Как я могу добавить элементы в меню индикатора-сессии?

Можно ли добавлять или редактировать пункты меню «Индикатор сеанса»?

Есть ли простой способ сделать это или потребуется перекомпиляция пользовательской сборки?

Я не могу найти много связанных с этим в Интернете.

1
задан 6 October 2012 в 05:19

1 ответ

некоторые судьи:
- jimi312 / Меню Строки заголовка / источник — Битоприемник:
- Программирование с DBus использование PyQt
- Unity/QA/StateIntrospection - Ubuntu Wiki: особенно пример кода

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

Я также исследую ответ на этот вопрос, поскольку он касается DBus, для использования максимально высокого интерфейса уровня для предотвращения низкоуровневого программирования. Конечная цель состоит в том, чтобы создать утилиту, которая минимально определяет хост-приложения индикаторов и подприложения их меню компонента. Максимально это позволило бы модификации меню такой как session-indicator меню включая меню верхнего уровня, т.е. индикатор значка самой панели единицы.

Было бы хорошо знать который, (если таковые имеются!) методы модификатора существуют в среде DBus для изменения DBus, таким образом, indicator panel и это - компоненты, такой как Session Indicator, мог быть изменен, как Вы требуете.

Следующие команды показывают методы интерфейса управлять session indicator информация о шине, но к сожалению параметры, используемые в этих методах, не описана здесь - ссылка выше ссылок предоставлений на документы, описывающие общее взаимодействие через интерфейс индикатора - но специфические особенности для session indicator все еще необходимы.

Вывод от

qdbus --session  com.canonical.indicator.session

вовлекает существование интерфейсов меню как объекты ниже:

/
/org
/org/ayatana
/org/ayatana/indicator
/org/ayatana/indicator/service
/com
/com/canonical
/com/canonical/indicator
/com/canonical/indicator/users
/com/canonical/indicator/users/menu
/com/canonical/indicator/session
/com/canonical/indicator/session/service
/com/canonical/indicator/session/menu

Интерфейсы могут быть исследованы с:

gdbus introspect --session --dest com.canonical.indicator.session \
                 --object-path /com/canonical/indicator/users/menu --recurse

и

gdbus introspect --session --dest com.canonical.indicator.session \
                 --object-path /com/canonical/indicator/session/menu --recurse

Отметьте внутреннюю ссылку к interface com.canonical.dbusmenu.

Для реального всестороннего использования дампа:

gdbus introspect --session --dest com.canonical.indicator.session --object-path / --recurse

Несколько подприложений связываются с session indicator выпадающее меню, но что не ясно, - передают ли эти методы интерфейса просто данные связанным приложениям подменю или ли на самом деле существует канал передачи к самому приложению индикатора сессии, таким образом, его меню может быть "приведено в систему".

Кроме того,

qdbus --literal --session  com.canonical.AppMenu.Registrar           \
                          /com/canonical/AppMenu/Registrar           \
                           com.canonical.AppMenu.Registrar.GetMenus  \
| sed -e 's/], \[/],\n[/g' | sort -k 4 -V

предоставляет список интерфейсных ассоциаций меню (существует menusдля окон и также для индикаторов как session indicator, который является, который в списке ниже все еще нуждается в определении),

[Argument: (uso) 25167301, ":1.22", [ObjectPath: /com/canonical/menu/18005C5]],
[Argument: (uso) 25165828, ":1.22", [ObjectPath: /com/canonical/menu/1800004]],
[Argument: (uso) 48234500, ":1.81", [ObjectPath: /com/canonical/menu/2E00004]],
[Argument: (uso) 55244411, ":1.114", [ObjectPath: /com/canonical/menu/34AF67B]],
[Argument: (uso) 55370996, ":1.114", [ObjectPath: /com/canonical/menu/34CE4F4]],
         ...
[Argument: (uso) 65083174, ":1.275", [ObjectPath: /com/canonical/menu/3E11726]],
[Argument: (uso) 65085474, ":1.275", [ObjectPath: /com/canonical/menu/3E12022]],

Исследование

qdbus --session  com.canonical.AppMenu.Registrar /com/canonical/AppMenu/Registrar 

это могут быть эти методы, полезны:

method void org.freedesktop.DBus.Properties.Set(QString interface_name, QString property_name, QDBusVariant value
method void com.canonical.AppMenu.Registrar.RegisterWindow(uint windowId, QDBusObjectPath menuObjectPath)
method void com.canonical.AppMenu.Registrar.UnregisterWindow(uint windowId)

Отметьте параметр, определенный как menuObjectPath. Эти имена методов квалифицированы с {un}RegisterWindow, таким образом, методы, возможно, не важны индикатору menues.

После того как корректные методы с их параметрами определяются, легче использовать qdbus (не может использовать параметры QVariant однако), или D-Feet чем gdbus вызвать методы.

В основном qdbus и gdbus функционально то же и использует идентичные параметры кроме:

  • qdbus не отождествляет отдельные компоненты с --dest, --object-path, --method, ... но вместо этого требует, чтобы соответствующие атрибуты были даны в точном порядке
  • gdbus вызовы метода обрабатывают больше типов параметра
  • qdbus не является столь же исчерпывающим какgdbus особенно w/ --recurse
  • qdbus может целесообразно извлечь его последовательность параметра команды через двойной или тройной щелчок от его вывода w/щелчок средней кнопкой для конкатенации его в конец команды

Ответ
Как каждый узнает, какое приложение связано со значком индикатора?
в упомянутом выше сообщении описывает, как использовать qdbus как целесообразная техника для создания сценариев.

Страница справочника man gdbus (или gdbus:) имеет лучшую выставку, чем man qdbus но рассмотрите D-Feet.

2
ответ дан 6 October 2012 в 05:19

Другие вопросы по тегам:

Похожие вопросы: