#!/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 中。