目前我正在使用D-Bus接口(小型学习项目)开发KDE等离子/壁纸插件。我有多显示器设置,希望能够独立地处理每个D-Bus等离子/壁纸实例(在不同的显示器上运行,甚至在不同的KDE活动上运行),我最初的想法很简单:注册单独的D-Bus服务,具有独特性每个插件实例的名称(即“com.example.prettydesktop.wlp - ”+ unique_screen_id)。但是我找不到任何方法从PyKDE Wallpaper 获取屏幕ID,因为它不是 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都很新,所以我很容易错过一些明显的东西,任何帮助都会非常感激。提前致谢!