Não é possível definir a imagem de fundo usando python (2.7.3), bash e gnome3

4
#!/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)

Resultado da impressão:

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

Copiar e colar o resultado da impressão em um terminal faz a alteração com êxito, portanto, o comando está correto, mas os.system não está processando a solicitação corretamente por algum motivo. No script completo (postado abaixo), eu uso os.system por um motivo diferente imediatamente antes (wget) e isso funciona bem.

Script completo aqui .

    
por malon 27.08.2012 / 21:33

2 respostas

5

Elimine todas as coisas os.system e subprocess . Basta usar a API Gio / gsettings, desta forma:

from gi.repository import Gio

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

Isso funciona:

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...")

Antecipa mywallpaper.png existente em ~ / Pictures.

    
por RobotHumans 27.08.2012 / 21:58

Tags