Как правильно определить экран, на котором работает плазмоид?
В настоящее время я разрабатываю плагин 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: извините за мой плохой английский - это не мой родной язык.