আমি পাইথন স্ক্রিপ্ট ব্যবহার করে ওয়ালপেপার কীভাবে পরিবর্তন করতে পারি?


11

আমি আমার ওয়ালপেপারটি একটি ছোট পাইথন স্ক্রিপ্টে উবুন্টু ১১.১০ (Unক্য সহ) পরিবর্তন করতে চাই। আমি সম্ভাবনা মাধ্যমে এটি পরিবর্তন করতে পাওয়া gconf-editorমধ্যে /desktop/gnome/background/picture_filename। সহ python-gconf, আমি প্রয়োজনীয় মানগুলি পরিবর্তন করতে সক্ষম।

স্পষ্টতই, gconf স্ট্রিংটি পড়ে না। যদি আমি এটি পরিবর্তন করি (হয় স্ক্রিপ্টের মাধ্যমে বা এর মাধ্যমে gconf-editor), ওয়ালপেপারটি অবশেষে থাকবে এবং "ওয়ালপেপার পরিবর্তন করুন" এর মেনুতে, পুরানো ওয়ালপেপার প্রদর্শিত হবে।

পাইথন স্ক্রিপ্টের মাধ্যমে আমি কীভাবে ইউনিটির জন্য ওয়ালপেপার পরিবর্তন করতে সক্ষম?

নিম্নলিখিত কোড কাজ করে।

#!/usr/bin/python
# -*- coding: utf-8 -*-
from gi.repository import Gio

class BackgroundChanger():
        SCHEMA = 'org.gnome.desktop.background'
        KEY = 'picture-uri'

        def change_background(self, filename):
                gsettings = Gio.Settings.new(self.SCHEMA)
                print(gsettings.get_string(self.KEY))
                print(gsettings.set_string(self.KEY, "file://" + filename))
                gsettings.apply()
                print(gsettings.get_string(self.KEY))

if __name__ == "__main__":
        BackgroundChanger().change_background("/home/user/existing.jpg")

উত্তর:


11

দুর্ভাগ্যক্রমে, gconf খুব ভাল নিজের পরে খুব ভাল পরিষ্কার করা হয় না। এটি এবং পুরানো সেটিং। ১১.১০-তে জিনোম ৩ এবং ইউনিটির সাথে ডেস্কটপ ব্যাকগ্রাউন্ড সেটিংটি এখন ডকনএফ-এ সঞ্চিত রয়েছে। আপনার সাথে dconf-editorসেটিংসটি খুঁজে পেতে পারেনorg.gnome.desktop.background.picture-uri

পাইথন, জিটিকে এবং জিওজেক্ট ইন্ট্রোস্পেকশন দিয়ে কীভাবে পটভূমি পরিবর্তন করতে হবে তা এখানে একটি দ্রুত উদাহরণ রয়েছে:

#! /usr/bin/python

from gi.repository import Gtk, Gio

class BackgroundChanger(Gtk.Window):

    SCHEMA = 'org.gnome.desktop.background'
    KEY = 'picture-uri'

    def __init__(self):
        Gtk.Window.__init__(self, title="Background Changer")

        box = Gtk.Box(spacing=6)
        self.add(box)

        button1 = Gtk.Button("Set Background Image")
        button1.connect("clicked", self.on_file_clicked)
        box.add(button1)

    def on_file_clicked(self, widget):
        gsettings = Gio.Settings.new(self.SCHEMA)

        dialog = Gtk.FileChooserDialog("Please choose a file", self,
            Gtk.FileChooserAction.OPEN,
            (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
             Gtk.STOCK_OPEN, Gtk.ResponseType.OK))

        self.add_filters(dialog)

        response = dialog.run()
        if response == Gtk.ResponseType.OK:
            background = dialog.get_filename()
            gsettings.set_string(self.KEY, "file://" + background)
        elif response == Gtk.ResponseType.CANCEL:
            pass

        dialog.destroy()

    def add_filters(self, dialog):
        filter_image = Gtk.FileFilter()
        filter_image.set_name("Image files")
        filter_image.add_mime_type("image/*")
        dialog.add_filter(filter_image)

        filter_any = Gtk.FileFilter()
        filter_any.set_name("Any files")
        filter_any.add_pattern("*")
        dialog.add_filter(filter_any)

win = BackgroundChanger()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()

জিস্টেটিং এবং পাইথনে দুটি সহায়ক ব্লগ পোস্ট এখানে দেওয়া হয়েছে:

http://www.micahcarrick.com/gsettings-python-gnome-3.html

http://www.lucidelectricdreams.com/2011/06/reading-and-writing-gsettings-from.html


ইঙ্গিত দেওয়ার জন্য আপনাকে ধন্যবাদ। এটি সঠিক বলে মনে হচ্ছে, তবে দুর্ভাগ্যক্রমে, সেটিংস আপডেট করা হয়নি। যদি আমি নতুন ইউআরআই সেট করি তবে ফাংশনটি সাফল্যের জন্য সত্য ফিরে আসে, তবে ডকনফ-সম্পাদক বা গেট-স্ট্রিং কলে, পুরানো মানটি ফিরে আসে। অতএব, ওয়ালপেপার আপডেট করা হয় না। আমি কি এই ভুল করছি?
গেরদা

হুঁ ... উপরের কোডটি অবশ্যই ওয়ালপেপার আপডেট করে। আপনি যদি কোথাও কোথাও কোনও পেস্টবিনে আপনার কোড পোস্ট করেন তবে আপনার ক্ষেত্রে কী ঘটছে তা আমি আরও ভাল ধারণা পেতে পারি।
andrewsomething

হাই অ্যান্ড্রুসোমথিং! আমার কাছে ফিরে আসার জন্য ধন্যবাদ! আমি আমার কোড উদাহরণ দিয়ে আমার প্রশ্ন আপডেট করেছি। আপনি আমাকে সাহায্য করতে পারলে দুর্দান্ত হবে।
গেরদা

আপনার কোডটি আমার পক্ষে কাজ করে ... আপনার সহায়তার জন্য আপনাকে ধন্যবাদ! আমিও একটি ন্যূনতম কাজের উদাহরণ পোস্ট করব।
গেরদা

8

আপনি এখানে যান

#! /usr/bin/python

import os

os.system("gsettings set org.gnome.desktop.background picture-uri file:///home/user/Pictures/wallpaper/Stairslwallpaper.png")

2

সম্ভবত সেরা না তবে সবচেয়ে সহজ সমাধান:

import commands
command = 'gsettings set org.gnome.desktop.background picture-uri "file:///home/user/test.png"'
status, output = commands.getstatusoutput(command)

2
এটি কেবলমাত্র টার্মিনাল কমান্ড। প্রশ্নের সম্পূর্ণরূপে উত্তর দেওয়ার জন্য কীভাবে পাইথন দিয়ে এটি চালাবেন আপনার অন্তর্ভুক্ত থাকতে হবে?
এনএন

না, এটি একটি অজগর স্ক্রিপ্ট যা ঠিক সেভাবেই কাজ করে।
dirkk0

1
স্রেফ দেখেছি যে 'কমান্ডগুলি' হ্রাস করা হয়েছে। w = "/usr/share/backgrounds/warty-final-ubuntu.png"; c = 'gsettings set org.gnome.desktop.background picture-uri "file://%s"' % w; import subprocess; subprocess.call(c.split())
dirkk0
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.