У меня есть несколько мониторов, на которых я хочу установить разные обои, и лучший способ, который я могу выяснить, это использовать dbus.
Я обнаружил несколько фрагментов в сети , которые почти выполняют то, что я хочу, однако это накладывает одинаковые обои на все мои мониторы. Когда я изменяю его, как показано ниже, строка newkdecommand обновляется {monitor_loop} соответствующим образом, и индекс находится в диапазоне (он выдает ошибку, если я установил его вне числа мониторов, которые у меня есть), но обои рабочего стола не обновляются (они остаются такими же, как и раньше).
Согласно документации десктопы () должны возвращать массив всех существующих десктопов. Я просто не могу ссылаться на них так, чтобы я мог установить разные обои для каждого из них. Ниже приведен код, который у меня сейчас есть:
kdemonitorloop = 0
for monitor in monitors:
newkdecommand = """
qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript '
var allDesktops = desktops();
d = allDesktops[{monitor_loop}];
d.wallpaperPlugin = "org.kde.image";
d.currentConfigGroup = Array("Wallpaper",
"org.kde.image",
"General");
d.writeConfig("Image", "file:///{save_location}")
'
"""
saveloc = "/home/me/Kbgswitcher/testimg_" + str(kdemonitorloop) + ".png"
os.system(newkdecommand.format(save_location=saveloc, monitor_loop=str(kdemonitorloop)))
kdemonitorloop += 1
Обновление: при дальнейшем расследовании выясняется, что рабочие столы используют непоследовательные номера. В моей системе локализации составляют 1, 11 и 12 для среднего, левого и правого экранов соответственно. Интересно, так ли это для других или просто выбирает для них случайные числа?