Здравствуйте. Мне потребовалось использование D-Bus в проекте для того, чтобы перезапустить панель из control center'а, использовать StatusNotifierItem и пр. Когда пытался реализовать SNI, обнаружил, что LxQt, например, создает сервис org.kde.StatusNotifierWatcher, используя интерфейс, который прописан в org.kde.statusnotifierwatcher.xml. Там он преобразован с помощью qdbusxml2cpp. Сейчас пытаюсь реализовать не SNI, а просто возможность передать сигнал панели, что ее нужно перезапустить (точнее, снова прочитать конфиги после сохранения настроек в control center). Прочитал множество доков по QtDBus. Пытался создавать сервис в session bus (QDBusConnection.registerService). Посмотрел по qdbusviewer, он там появился. Но я не понимаю, как указать, что нужно использовать конкретный xml в качестве интерфейса и где писать реализацию методов (как использовать QDBusInterface)?
org.plainDE.plainPanel.xml
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node>
<interface name="org.plainDE.plainPanel">
<method name="UpdateConfig"></method>
</interface>
</node>
Читал также пример Ping-Pong на QtDBus. Насколько я понимаю, в серверной части нужно создать QDBusConnection::sessionBus(), зарегистрировать сервис, затем зарегистрировать объект и ожидать вызовов функций, но вопрос с интерфейсами и реализацией.