Можно ли добавлять или редактировать пункты меню «Индикатор сеанса»?
Есть ли простой способ сделать это или потребуется перекомпиляция пользовательской сборки?
Я не могу найти много связанных с этим в Интернете.
некоторые судьи:
- 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
.