Как правильно определить экран, на котором работает плазмоид?

В настоящее время я разрабатываю плагин KDE Plasma/Wallpaper с интерфейсом D-Bus (небольшой учебный проект). У меня есть настройка на несколько мониторов, и я хотел бы иметь возможность обращаться к каждому экземпляру D-Bus Plasma/Wallpaper отдельно (работать на разных мониторах или даже на отдельных действиях KDE), и моя первоначальная идея была проста: зарегистрировать отдельные службы D-Bus с уникальными имя (то есть "com.example.prettydesktop.wlp-"+unique_screen_id) для каждого экземпляра плагина. Однако я не смог найти способ получить идентификатор экрана из PyKDE Wallpaper, потому что это не подкласс QWidget, и поэтому я не могу использовать метод QDesktopWidget.screenNumber.

class DbusWlp(Wallpaper):
    def __init__(self, parent, args=None):
        Wallpaper.__init__(self, parent)

    # Plasmoid init code should go here
    def init(self, config):
        # also tried QX11Info but I think it's not relevant here
        print QtGui.QX11Info().appScreen() # always returns 0
        print QtGui.QApplication.desktop().screenNumber(self) # doesn't work because self is not QWidget subclass
        print QtGui.QApplication.desktop().isVirtualDesktop() # returns True just in case

Главный вопрос заключается в следующем: как правильно определить, на каком плагинах плазмы экрана (обои или плазмоид) работает? И небольшой дополнительный вопрос: есть ли лучший способ реализовать связь между виджетами, чем D-Bus?
Я довольно новичок в PyQT и PyKDE, поэтому я мог легко пропустить что-то очевидное, и ЛЮБАЯ помощь будет принята с благодарностью. Заранее спасибо!

PS: извините за мой плохой английский - это не мой родной язык.

0 ответов

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