
Есть учебникhttp://wiki.mate-desktop.org/matecorba_to_dbus#d-bus_service_fileв котором говорится, как создать файл конфигурации DBus.
Но я не понял, зачем это нужно. Служба регистрируется самим апплетом при запуске апплета. А запуск апплета описан в другом конфиге (в конфиге mate-panel).
Итак, когда DBus запускает апплет независимо от mate-panel?
решение1
Если проблема все еще актуальна: насколько мне известно, DBUS используется для создания или запуска апплета, когда пользователь щелкает правой кнопкой мыши на панели mate, выбирает «Добавить на панель...», а затем добавляет апплет на панель.
Вы можете посмотреть на https://github.com/mate-desktop/mate-university если вы хотите сделать апплет. Я попробую его обновить.
Редактировать: Хорошо, попробую быть точным. - Хотя я новичок в этом деле.
Зачем нужен файл конфигурации DBus?
Если вы устанавливаете апплет, файл конфигурации копируется в /usr/share/dbus-1/services - по крайней мере, я так думаю. Это запускает службу DBus для апплета.
Mate-panel становится владельцем службы фабрики в:
mate-panel-applet-factory.c mate_panel_applet_factory_register_service() вызывая
g_bus_own_name().
Поэтому утверждение «Служба регистрируется самим апплетом во время запуска апплета» кажется мне несколько ложным. Апплет не регистрирует службу, он просто указывает на нее.
Если я удаляю службу и перезапускаю панель, я могу добавить апплет, но ничего не происходит.
Служба выполняет апплет.
Служба, вероятно, вызывается из panel-addto.c, но я не смог найти, где именно.
Когда DBus запускает апплет независимо от mate-panel?
Вероятно, никогда. Я подозреваю, что DBus — это просто интерфейс, через который mate-panel может анализировать список всех фабрик апплетов и затем вызывать их при необходимости.
Обратите внимание, что я совсем новичок в коде Mate-Panel, поэтому не могу объяснить, почему 3+ года назад кто-то что-то написал.
Это также не имеет значения. Если кто-то хочет написать апплет, я думаю, я могу помочь, в противном случае, пожалуйста, напишите разработчикам напрямую или просмотрите код, как я делал в течение последнего часа...