ইউনিটিতে কমান্ড লাইন থেকে ডেস্কটপ ব্যাকগ্রাউন্ড কীভাবে পরিবর্তন করবেন?


63

আমার কাছে একটি স্ক্রিপ্ট রয়েছে যা আমার ডেস্কটপ ব্যাকগ্রাউন্ডটি নাসা এপিডের সাথে প্রতিদিন আপডেট করে। ১১.১০ তে আপগ্রেড হওয়ার পরে, সেই স্ক্রিপ্টটি কাজ করা বন্ধ করে দিয়েছে সম্ভবত সম্ভবত কারণ আমি gconftool-2ডেস্কটপ ব্যাকগ্রাউন্ড আপডেট করতে ব্যবহার করছি । Ityক্যের অধীনে এটি করার কোনও নতুন উপায় আছে কি?

উত্তর:


82

ইউনিটি এবং জিনোম শেল (জিনোম 3) উভয়ই এখন জিসিফের পরিবর্তে জিএসটিং ব্যবহার করে। সুতরাং ইউনিটি এবং জিনোম শেল আপনি তার জন্য কমান্ড-লাইন সরঞ্জামটি ব্যবহার করতে পারেন gsettings। পছন্দ করুন gconftool, এটি আপনাকে পৃথক কী পেতে বা সেট করতে দেয়।

আপনি নীচের হিসাবে পটভূমি চিত্রের বর্তমান ইউআরআই পেতে পারেন:

gsettings get org.gnome.desktop.background picture-uri
'file:///home/serrano/Pictures/x.jpg'

এবং ব্যাকগ্রাউন্ডের ইউআরআই নীচে সেট করুন (যা অবিলম্বে আপনার ডেস্কটপ ব্যাকগ্রাউন্ড আপডেট করবে):

gsettings set org.gnome.desktop.background picture-uri file:///home/serrano/Pictures/y.jpg

লক্ষ্য করুন যে এটি কাজ করার জন্য আপনাকে অবশ্যই ইউআরআইকে "ফাইল: //" দিয়ে তিরস্কার করতে হবে (এর সাথে বিপরীতে নয় gconftool)।

আপনার স্ক্রিপ্টটি জিনোম 2 এবং শেল / ইউনিটি উভয়ের সাথে কাজ করার জন্য, আপনি প্রথমে এটি কোনও জিনোম সংস্করণ চেক করতে দিতে পারেন:

gnome-session --version

এটি জিনোমের সংস্করণটি ফিরিয়ে দেবে। সংস্করণ নম্বরটি যদি 3 দিয়ে শুরু হয় তবে gsettingsব্যবহার করা যেতে পারে। যদি এটি 2 দিয়ে শুরু করা কোনও সংস্করণ দেয় তবে gconftoolপরিবর্তে আপনার স্ক্রিপ্টটি ব্যবহার করতে দিন।


আমি উবুন্টু 12.04-এ এই কমান্ডটি ব্যবহার করেছি এবং সিস্টেমটি ক্র্যাশ হয়েছে
YumYumYum

2
@ ইয়ুম ইয়াম: এটি অত্যন্ত অস্বাভাবিক যে উপরের কমান্ডগুলি আপনার সিস্টেমে ক্র্যাশ হয়ে যাবে, যদি না আপনার সিস্টেমে অন্য কিছু চলছে।
সেরানানো

আপনি গেটেটিংস ব্যবহার করে ডেস্কটপ পরিবেশের তালিকায় দারচিনি যুক্ত করতে পারেন;)
মিঃ ভাইকাদজি

লক্ষ্য করুন যে এটি কাজ করার জন্য আপনাকে অবশ্যই ইউআরআইকে "ফাইল: //" দিয়ে প্রেন্ডেন্ড করতে হবে (gconftool এর বিপরীতে)। <- এটি গুরুত্বপূর্ণ! আমি এই উল্লেখ অন্য কোথাও খুঁজে পাইনি।
টম

2
বর্তমান ব্যবহারকারীর জন্য এটি লগইন করার জন্য ঠিক আছে prog আমি কীভাবে অন্য ব্যবহারকারীর ওয়ালপেপারটি অগ্রগতিতে পরিবর্তন করতে হয় তা জানতে চাই ! আমি sudo --user = <ব্যবহারকারীর নাম> গেটেটিং চেষ্টা করেছিলাম ... তবে তা ব্যর্থ হয়েছিল।
কাইওয়ান

12

এই কোডটি প্রদত্ত ডিরেক্টরি থেকে ওয়ালপেপার এলোমেলোভাবে পরিবর্তন করে।

#!/bin/bash

DIR="/home/indra/Pictures/wallpapers"
PIC=$(ls $DIR/* | shuf -n1)
gsettings set org.gnome.desktop.background picture-uri "file://$PIC"

এই স্ক্রিপ্টটি সংরক্ষণ করুন এবং "ক্রন্টব-ই" কমান্ড দিয়ে আপনার সম্পাদনা করুন (এটি ফাইলটি শেষে আপনি যেখানে এই লাইনটি রেখেছেন সেখানে একটি সম্পাদক প্রবর্তন করে):

*/1     *     *     *     *         /bin/bash /path/to/script.sh

1
ওয়ালপেপার ডিরেক্টরিতে কেবল ওয়ালপেপার ফাইল এবং কোনও ডিরেক্টরি থাকতে হবে।
লক্স্যাক্স

গ্যাসেটিংগুলি ক্রোন থেকে কাজ করবে না। গেটেটিংয়ের কাজ করার জন্য আপনাকে DBUS_SESSION_BUS_ADDRESS এনভায়রনমেন্ট ভেরিয়েবল সেট করতে হবে। আপনি গেটেটিংয়ের আগে এই দুটি লাইন যুক্ত করে (সেমিকোলন দ্বারা পৃথক রেখাগুলি :) পিআইডি = $ (পিগ্রিপ জিনোম-সেশন) যোগ করতে পারেন; DBUS_SESSION_BUS_ADDRESS = export রফতানি করুন (গ্রেপ -z DBUS_SESSION_BUS_ADDRESS / proc / $ পিআইডি / পরিবেশ | কাট-ডি = -ফ 2-);
উইলব্রেডলি

6

ভূমিকা

এই উত্তরটি মূল উত্তরের একটি সম্পাদনা। আমি আমার উবুন্টু এবং লিনাক্স স্টাডিতে যেমন অগ্রগতি করেছি, আমি বিভিন্ন পন্থা আবিষ্কার করেছি এবং উবুন্টুতে কীভাবে একটি পটভূমি নির্ধারণ করে তা সম্পর্কে আমার উপলব্ধি আরও গভীর করে তুলেছি। এই উত্তরটি এ পর্যন্ত আমি যা শিখেছি তার যথাসাধ্য নথিভুক্ত করার আমার প্রয়াস এবং এই উপাদানটি অন্যদের পক্ষে কার্যকর হতে পারে এই আশায় করা হয়েছে।

গুরুত্বপূর্ণ অংশটি হ'ল কমান্ড লাইন থেকে ইউনিটি ডেস্কটপের জন্য পটভূমি সেট করতে, আপনি ব্যবহার করতে পারেন

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বা blackboxgsettingsপদ্ধতির ইউনিটি বা অন্যান্য গনোম ভিত্তিক ডেস্কটপ ব্যবহার করা যেতে পারে।

গেটেটিং কমান্ডটি পৃথক করা হচ্ছে

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 এই স্ক্রিপ্টের উত্স কোডটি আরও অনেক স্ক্রিপ্টের সাথে আমার গিটহাবের সংগ্রহস্থলে উপলব্ধ ।


1

সেরানোোর দুর্দান্ত উত্তরের জন্য ধন্যবাদ, আমি এই স্ক্রিপ্টটি লিখতে সক্ষম হয়েছি যা আমি একটি কালো ব্যাকগ্রাউন্ড সেট করতে আমার নতুন মেশিন সেটআপ স্ক্রিপ্টগুলির অংশ হিসাবে ব্যবহার করি:

#! /bin/bash
SRC_URI="https://i.imgur.com/uomkVIL.png"
FNAME="/home/$USER/Pictures/black.png"
wget "$SRC_URI" -O "$FNAME"
gsettings set org.gnome.desktop.background picture-uri "$FNAME"

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.