سؤال

لقد قمت بكتابة نص python البسيط التالي والذي كنت أنوي تعيينه كمهمة cron في Ubuntu 12.04 لتغيير خلفية الشاشة مرة واحدة كل ساعة.يتم تشغيل البرنامج النصي وتغيير خلفية الشاشة عندما أقوم بتشغيله من محطة طرفية بشكل مثالي.ومع ذلك، عندما أقوم بإعداد وظيفة cron، أستطيع أن أرى في سجل النظام أن مهمة cron قد تم تشغيلها ولكن خلفية الشاشة لا تتغير؟

#!/usr/bin/python

import os
import random

directory = os.getcwd() + '/'
files = os.listdir('.')
random.shuffle(files)
files.remove('.project')
files.remove('.pydevproject')
files.remove('background.py')
background = files[0]
setup = 'file://' + directory + background

print setup

os.system("gsettings set org.gnome.desktop.background picture-uri '%s'" % (setup))
هل كانت مفيدة؟

المحلول

يبدو مشكلة في تشغيل Gsettings تحت Cron.تغيير أمر OS.System لتشمل العرض=: 0 Gsettings_backend= DConf هل الحيلة.

نظام Os.System ("العرض=: 0 Gsettings_backend= DConf Gsettings Set Org.gnome.desktop.background الصورة-URI '٪ S'"٪ (SETUP))

نصائح أخرى

عليك تغيير دليل العمل من البرنامج النصي الخاص بك.يمكنك أن تفعل ذلك عن طريق استدعاءها من Crontab مثل هذا:

giveacodicetagpre.

أو يمكنك القيام بذلك في البرنامج النصي الخاص بك القيام بشيء مثل هذا:

giveacodicetagpre.

بالإضافة إلى توفير المسار الصحيح لملف صورة الخلفية وتعيين متغيرات البيئة الضرورية، يمكنك تغيير الخلفية من Python بدونها os.system() يتصل:

import os
import urllib
from gi.repository.Gio import Settings  # pylint: disable=F0401,E0611

def set_background(image_path, check_exist=True):
    """Change desktop background to image pointed by `image_path`.

    """
    if check_exist:  # make sure we can read it (at this time)
        with open(image_path, 'rb') as f:
            f.read(1)

    # prepare uri
    path = os.path.abspath(image_path)
    if isinstance(path, unicode):  # quote() doesn't like unicode
        path = path.encode('utf-8')
    uri = 'file://' + urllib.quote(path)

    # change background
    bg_setting = Settings.new('org.gnome.desktop.background')
    bg_setting.set_string('picture-uri', uri)
    bg_setting.apply() # might be unnecessary

من مغير الخلفية التلقائي باستخدام Python 2.7.3 لا يعمل، على الرغم من أنه ينبغي أن يعمل

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top