ভূমিকা
এই উত্তরটি মূল উত্তরের একটি সম্পাদনা। আমি আমার উবুন্টু এবং লিনাক্স স্টাডিতে যেমন অগ্রগতি করেছি, আমি বিভিন্ন পন্থা আবিষ্কার করেছি এবং উবুন্টুতে কীভাবে একটি পটভূমি নির্ধারণ করে তা সম্পর্কে আমার উপলব্ধি আরও গভীর করে তুলেছি। এই উত্তরটি এ পর্যন্ত আমি যা শিখেছি তার যথাসাধ্য নথিভুক্ত করার আমার প্রয়াস এবং এই উপাদানটি অন্যদের পক্ষে কার্যকর হতে পারে এই আশায় করা হয়েছে।
গুরুত্বপূর্ণ অংশটি হ'ল কমান্ড লাইন থেকে ইউনিটি ডেস্কটপের জন্য পটভূমি সেট করতে, আপনি ব্যবহার করতে পারেন
gsettings set org.gnome.desktop.background picture-uri 'file:///home/JohnDoe/Pictures/cool_wallpaper.jpg'
ইউনিটি বনাম খালি এক্স ডেস্কটপে ব্যাকগ্রাউন্ড সেট করা হচ্ছে
ইউনিটি যেভাবে কাজ করে তা এমন যে নীচে একটি এক্স ডেস্কটপ রয়েছে এবং উপরে Unক্যটির ডেস্কটপ উইন্ডো রয়েছে (যা প্রকৃতপক্ষে উবুন্টুর ডিফল্ট ফাইল ম্যানেজার নটিলাসের উইন্ডোর একটি বিশেষ উদাহরণ)। এইভাবে, আপনি কল যখন
gsettings set org.gnome.desktop.background picture-uri 'file:///home/JohnDoe/Pictures/cool_wallpaper.jpg'
এটি সেই বিশেষ নটিলাস উইন্ডোটির ব্যাকগ্রাউন্ড সেট করে। আপনি যখন ডেস্কটপ আইকনগুলি অক্ষম করেন
gsettings set org.gnome.desktop.background show-desktop-icons false
এটি নটিলাস ডেস্কটপকে হত্যা করবে এবং আপনাকে খালি-হাড়ের এক্স ডেস্কটপ দেখিয়ে দেবে। খালি-হাড়ের এক্স ডেস্কটপের জন্য আপনি feh
প্রোগ্রামটি ব্যবহার করতে পারেন । বিশেষত, এই আদেশ:
feh --bg-scale /home/JohnDoe/Pictures/cool_wallpaper.jpg
জিওআই বিকল্প আছে যে nitrogen
,। feh
এবং nitrogen
পন্থা যেমন ঐক্য ছাড়া অন্য ডেস্কটপ, সঙ্গে ব্যবহার করা যেতে পারে openbox
বা blackbox
। gsettings
পদ্ধতির ইউনিটি বা অন্যান্য গনোম ভিত্তিক ডেস্কটপ ব্যবহার করা যেতে পারে।
গেটেটিং কমান্ডটি পৃথক করা হচ্ছে
gsettings
কমান্ড ঠিক কি করে? ওয়েল, সবার আগে, প্রতিটি ব্যবহারকারীর জন্য সেটিংসের dconf ডাটাবেস উপস্থিত রয়েছে , যা অবহেলিত GConf এর প্রতিস্থাপন হিসাবে লক্ষ্য করা হয়েছে , এবং এটি dconf
কমান্ড বা এর মাধ্যমে অ্যাক্সেসযোগ্য gsettings
। বিশেষত, আমরা এখানে org.gnome.desktop.background
স্কিমা এবং এর অন্যতম একটি কী নিয়ে কাজ করছি
picture-uri
।
ইউআরআই, এটি file:///home/JohnDoe/Pictures/cool_wallpaper.png
, প্রকৃতপক্ষে ইউনিফর্ম রিসোর্স আইডেন্টিফায়ারকে বোঝায় যা মূলত ইন্টারনেট ব্যবহারের জন্য তৈরি হয়েছিল, তবে ফাইল ইউআরআই স্কিম রয়েছে, যা আমরা এখানে দেখি। ইউআরআই সম্পর্কে দুর্দান্ত এটি হ'ল এটি যদি আপনি একটি ইংরাজীবিহীন লোকেল ব্যবহার করেন তবে এটি বাইট-এনকোডেড পথ দেয়, উদাহরণস্বরূপ আমার চীনা ডেস্কটপ সহ, আমি আমার ব্যাকগ্রাউনের জন্য ইউআরআই অনুসরণ করেছি:'file:///home/xieerqi/%E5%9B%BE%E7%89%87/Wallpapers/moon_moon.jpg'
গেসেটিং সহ স্ক্রিপ্টিং
অবশ্যই, প্রতিটি সময় কমান্ডটি লেখার জন্য ক্লান্তিকর এবং কেউ স্ক্রিপ্টিং যাদুতে কিছুটা ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আমি আমার মধ্যে যা সেট করেছি তা এখানে রেখেছি ~/.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
বা বর্তমান ওয়ার্কিং ডিরেক্টরি থেকে আপেক্ষিক পাথ সহ with
change_background Pictures/cool_wallpaper.jpg
ফাইল উপস্থিত রয়েছে এবং প্রতিলিঙ্কগুলি সমাধান করে কিনা তাও এটি পরীক্ষা করে। এটি শেল স্ক্রিপ্টে বা দৈনন্দিন ব্যবহারের জন্য স্বতন্ত্র ফাংশন হিসাবে ব্যবহার করা যেতে পারে।
অবশ্যই, এটি একমাত্র উপায় নয়। পাইথনের জিওর জন্য একটি এপিআই রয়েছে (এটি পিছনে মূল গ্রন্থাগার 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
এই স্ক্রিপ্টের উত্স কোডটি আরও অনেক স্ক্রিপ্টের সাথে আমার গিটহাবের সংগ্রহস্থলে উপলব্ধ ।