परिचय
यह उत्तर मूल उत्तर का संपादन है। जैसा कि मैंने अपने उबंटू और लिनक्स अध्ययनों में प्रगति की है, मैंने विभिन्न प्रकार के दृष्टिकोणों की खोज की है और उबंटू में पृष्ठभूमि की स्थापना कैसे की जाती है, इस बारे में मेरी समझ को गहरा किया है। यह उत्तर मेरी कोशिश है कि मैंने यथासंभव इस प्रकार से दस्तावेज़ बनाने का प्रयास किया है, और इस उम्मीद में किया जाता है कि यह सामग्री दूसरों के लिए उपयोगी हो सकती है।
महत्वपूर्ण हिस्सा यह है कि कमांड लाइन से एकता डेस्कटॉप के लिए पृष्ठभूमि सेट करने के लिए, आप उपयोग कर सकते हैं
gsettings set org.gnome.desktop.background picture-uri 'file:///home/JohnDoe/Pictures/cool_wallpaper.jpg'
यूनिटी बनाम नंगे एक्स डेस्कटॉप में पृष्ठभूमि की स्थापना
जिस तरह से यूनिटी काम करता है वह नीचे की तरह नंगे एक्स डेस्कटॉप है, और ऊपर एकता की डेस्कटॉप विंडो है (जो वास्तव में नौटिलस की खिड़की का एक विशेष उदाहरण है, उबंटू का डिफ़ॉल्ट फ़ाइल प्रबंधक)। इस प्रकार, जब आप कॉल करते हैं
gsettings set org.gnome.desktop.background picture-uri 'file:///home/JohnDoe/Pictures/cool_wallpaper.jpg'
उस विशेष Nautilus विंडो के लिए पृष्ठभूमि सेट करता है। जब आप डेस्कटॉप आइकन को निष्क्रिय कर देते हैं
gsettings set org.gnome.desktop.background show-desktop-icons false
जो Nautilus डेस्कटॉप को मार देगा और आपको नंगे हड्डियों वाला X डेस्कटॉप दिखाएगा। नंगे-हड्डी एक्स डेस्कटॉप के लिए आप fehप्रोग्राम का उपयोग कर सकते हैं । विशेष रूप से, यह आदेश:
feh --bg-scale /home/JohnDoe/Pictures/cool_wallpaper.jpg
वहाँ भी है कि जीयूआई विकल्प nitrogen,। fehऔर nitrogenदृष्टिकोण जैसे एकता के अलावा अन्य डेस्कटॉप, साथ इस्तेमाल किया जा सकता openboxया blackbox। gsettingsदृष्टिकोण एकता या अन्य सूक्ति-आधारित डेस्कटॉप के साथ प्रयोग किया जा सकता है।
Gsettings कमांड को निष्क्रिय करना
वास्तव में gsettingsकमांड क्या करता है? ठीक है, सबसे पहले, प्रत्येक उपयोगकर्ता के लिए सेटिंग्स का dconf डेटाबेस मौजूद है , जिसका उद्देश्य वंचित GConf के प्रतिस्थापन के रूप में है , और यह dconfकमांड या के माध्यम से सुलभ है gsettings। विशेष रूप से, हम साथ यहाँ काम कर रहे
org.gnome.desktop.background, स्कीमा और उसके कुंजियों में से एक picture-uri।
URI, जो file:///home/JohnDoe/Pictures/cool_wallpaper.pngवास्तव में यूनिफ़ॉर्म रिसोर्स आइडेंटिफ़ायर के लिए खड़ा है , जो मूल रूप से इंटरनेट उपयोग के लिए बनाया गया था, लेकिन फ़ाइल URI स्कीम है, जिसे हम यहाँ देखते हैं। यूआरआई के बारे में क्या अच्छा है कि यह बाइट-एन्कोडेड पथ देता है यदि आप एक गैर-अंग्रेजी लोकेल का उपयोग करते हैं, उदाहरण के लिए मेरे चीनी डेस्कटॉप के साथ, मैं अपने बैकग्राउंड के लिए यूआरआई का पालन कर रहा हूं:'file:///home/xieerqi/%E5%9B%BE%E7%89%87/Wallpapers/moon_moon.jpg'
स्क्रिप्टिंग gsettings के साथ
बेशक, हर बार कमांड लिखना थकाऊ होता है और कोई थोड़ा सा स्क्रिप्टिंग जादू का उपयोग कर सकता है। उदाहरण के लिए, यहां मैंने जो कुछ भी सेट किया है, ~/.bashrcताकि मैं पृष्ठभूमि को बदल सकूं:
change_background() {
FILE="'file://$(readlink -e "$1" )'"
if [ "$FILE" != "'file://'" ]
then
gsettings set org.gnome.desktop.background picture-uri "$FILE"
else
echo "File doesn't exist"
fi
}
इस फ़ंक्शन को पूर्ण पथ के साथ बुलाया जा सकता है जैसे
change_background /home/JohnDoe/Pictures/cool_wallpaper.jpg
या वर्तमान कार्य निर्देशिका से संबंधित पथ के साथ
change_background Pictures/cool_wallpaper.jpg
यह भी जाँच करता है कि क्या फ़ाइल मौजूद है और सिमिलिंक को हल करता है। इसका उपयोग शेल स्क्रिप्ट में या दैनिक उपयोग के लिए स्टैंडअलोन फ़ंक्शन के रूप में किया जा सकता है।
बेशक, यह एकमात्र तरीका नहीं है। पायथन में Gio के लिए एक एपीआई है (जो पीछे मुख्य पुस्तकालय है gsettings)। मैंने एक फ़ंक्शन gsettings_getऔर gsettings_setफ़ंक्शन लिखा है , जो लॉन्चर लिस्ट इंडिकेटर जैसी अन्य परियोजनाओं के लिए काफी उपयोगी था । पृष्ठभूमि सेट करने के मामले में, इसका उपयोग भी किया जा सकता है और मैंने इस प्रश्न के लिए हाल ही में इसका उपयोग किया है । यहाँ उसी दृष्टिकोण का एक सरलीकृत संस्करण है:
#!/usr/bin/env python3
"""
Author: Serg Kolo , <1047481448@qq.com>
Date: December, 21,2016
Purpose: script for setting wallpaper, the pythonic way
Written for: https://askubuntu.com/q/66914/295286
"""
from gi.repository import Gio
import os,sys,random
def gsettings_set(schema, path, key, value):
"""Set value of gsettings schema"""
if path is None:
gsettings = Gio.Settings.new(schema)
else:
gsettings = Gio.Settings.new_with_path(schema, path)
if isinstance(value, list):
return gsettings.set_strv(key, value)
if isinstance(value, int):
return gsettings.set_int(key, value)
if isinstance(value,str):
return gsettings.set_string(key,value)
def error_and_exit(message):
sys.stderr.write(message + "\n")
sys.exit(1)
def main():
gschema='org.gnome.desktop.background'
key='picture-uri'
if len(sys.argv) != 2:
error_and_exit('>>> Path to a file is required')
if not os.path.isfile(sys.argv[1]):
error_and_exit('>>> Path "' + sys.argv[1] + \
'" isn\'t a file or file doesn\'t exit')
full_path = os.path.abspath(sys.argv[1])
uri = Gio.File.new_for_path(full_path).get_uri()
gsettings_set(gschema,None,key,uri)
if __name__ == '__main__': main()
बेशक, स्क्रिप्ट के लिए समान नियम यहां भी लागू होते हैं: यह सुनिश्चित करें कि इसे chmod +x set_wallpaper.py(अधिमानतः) ~/binफ़ोल्डर में स्टोर किया जाए । उपयोग सरल है: ./set_wallpaper.py Picture/cool_image.py इस स्क्रिप्ट का स्रोत कोड मेरे GitHub रिपॉजिटरी पर कई अन्य लिपियों के साथ भी उपलब्ध है।