无法使用 python (2.7.3)、bash 和 gnome3 设置背景图像

无法使用 python (2.7.3)、bash 和 gnome3 设置背景图像
#!/usr/bin/env python
import os
bashCommand = "gsettings set org.gnome.desktop.background picture-uri file:///home/malon/autowallpaperchanger/" + pic_name
print bashCommand
os.system(bashCommand)

打印结果:

gsettings set org.gnome.desktop.background picture-uri file:///home/malon/autowallpaperchanger/wallpaper-1252048.jpg

将打印结果复制并粘贴到终端中可以成功进行更改,因此命令是正确的,但os.system由于某种原因无法正确处理请求。在完整脚本(发布如下)中,我os.system出于不同的原因在之前立即使用了(wget),并且运行良好。

完整脚本这里

答案1

删除所有os.system东西subprocess。只需使用 Gio/gsettings API,如下所示:

from gi.repository import Gio

settings = Gio.Settings.new("org.gnome.desktop.background")
settings.set_string("picture-uri", "file:///path/to/image.png")

答案2

这有效:

import shlex, subprocess, os, sys

def change_wp(fname, folder_stem='Pictures'):
    home = os.environ['HOME']
    uri = os.path.join(home, folder_stem)
    uri = os.path.join(uri, fname)
    set_wp_command = "gsettings set org.gnome.desktop.background picture-uri file://" + uri
    args = shlex.split(set_wp_command)
    try:
        my_proc = subprocess.Popen(args)
        my_proc.wait()
    except:
        sys.exit(1)

if __name__ == '__main__':
    change_wp('mywallpaper.png')
    print("Wallpaper changed...")

它预计 mywallpaper.png 存在于 ~/Pictures 中。

相关内容