#!/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) и это хорошо работает.
Полный сценарий здесь.
Отбросьте весь os.system
и subprocess
материал. Просто используйте API Gio/gsettings, как это:
from gi.repository import Gio
settings = Gio.Settings.new("org.gnome.desktop.background")
settings.set_string("picture-uri", "file:///path/to/image.png")
Это работает:
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 существующий в ~ / Изображения.