मैं सूक्ति-ट्विन-टूल द्वारा बनाई गई सेटिंग्स को कैसे स्क्रिप्ट कर सकता हूं?


15

मुझे कमांड लाइन से चीजों को कॉन्फ़िगर करने में सक्षम होना पसंद है, ताकि जब मैं ओएस को पुनर्स्थापित करूं तो मैं बस एक स्क्रिप्ट चला सकता हूं और अपना पसंदीदा कॉन्फ़िगरेशन वापस पा सकता हूं।

उबंटू 17.10 में "अपग्रेड" करने के बाद से, मैंने पाया कि मुझे कुछ सेटिंग्स प्राप्त करने के लिए गनोम-ट्वीक-टूल का उपयोग करना था जिस तरह से मैं उन्हें चाहता हूं।

एक बार जब मैं गनोम-ट्वीक-टूल जीयूआई में सेटिंग ढूंढता हूं, तो मैं इसका स्क्रिप्ट अनुवाद कैसे कर सकता हूं?

उदाहरण के लिए निम्नलिखित gsettings लाइनें नीचे gnome-tweak-tool स्क्रीन में प्रासंगिक प्रविष्टियों से मेल खाती हैं ...

gsettings set org.gnome.desktop.wm.preferences titlebar-font "Tahoma Bold 8"
gsettings set org.gnome.desktop.interface font-name "Tahoma 8"
gsettings set org.gnome.desktop.interface document-font-name "Tahoma 8"
gsettings set org.gnome.desktop.interface monospace-font-name "FixedSC 10"

gnome-tweak-tool से स्क्रीन शॉट ... लेकिन कोई कैसे अनुमान लगा सकता है? और मैं, उदाहरण के लिए, यह पता लगाऊंगा कि संकेत और एंटीअलियासिंग के लिए संगत सेटिंग्स कहां से प्राप्त करें?


1
टीबीएच मैंने हमेशा gsettings list-recursively | grep -e alias -e hint
कीस्पेस को ग्रिप

स्रोत कोड या dconf- संपादक (या सीधे gstettings, जैसे @steeldriver) को ब्राउज़ करने के अलावा, कोई भी ऐसा नहीं कर सकता है।
मुरु

जवाबों:


23

आसानी से पता करें कि क्या सेट किया जा रहा है

विकल्पों की एक पूरी निर्देशिका के माध्यम से खोजने के बजाय:

  1. एक टर्मिनल विंडो खोलें
  2. कमांड चलाएँ:

    dconf watch /
  3. अपने परिवर्तन करें और देखें कि टर्मिनल क्या दिखाता है:

    यहाँ छवि विवरण दर्ज करें

    ... और तुम वहीं हो।

डॉन्कफ और gsettings

उदाहरण में, आप आउटपुट से देखते हैं dconf। Gsettings dconf के लिए cli-frontend है। कई बार, आप dconfकमांड या कमांड दोनों का उपयोग कर सकते हैं gsettings। इस मामले में या तो:

dconf write /org/gnome/desktop/background/show-desktop-icons false

या:

gsettings set org.gnome.desktop.background show-desktop-icons false

यदि gsettings कुंजी मौजूद है, लेकिन अपने dconfडेटाबेस की अखंडता की रक्षा के लिए उत्तरार्द्ध को बेहतर अभ्यास माना जाता है ।

यहाँ और यहाँ भी देखें ।


यह शानदार है, धन्यवाद। छोटे प्रश्न: (1) मुझे कैसे पता चलेगा कि "अगर gsettings कुंजी मौजूद है"? (२) दो कमांड लाइन इंटरफेस का क्या मतलब है जो उपयोगकर्ता के लिए समान सभी उद्देश्यों और उद्देश्यों के लिए हैं? (३) आपके "यहाँ" के पहले और तीसरे के बीच क्या अंतर है? वे मुझे एक ही पृष्ठ की तरह दिखते हैं।
st01

@ st01 For (1) आप या तो sins gsettings कमांड चला सकते हैं, देखें कि क्या यह जॉब करता है, या dconf एडिटर में चेक करें (डिफ़ॉल्ट रूप से इंस्टॉल नहीं किया गया, लेकिन एक बढ़िया टूल) यदि gsettings कुंजी (भी) मौजूद है। (2) gsettings dconf डेटाबेस को संपादित करने के लिए cli फ्रंटएंड है। Gsettings भी डेटाबेस की अखंडता की जाँच करता है, और इसलिए सीधे dconf डेटाबेस को संपादित करना बेहतर होता है। चूँकि gsettings उच्च स्तर की है, हालाँकि यह धीमी है। (३), आह, यह मूर्खतापूर्ण है :), आप सही हैं। संपादित करेंगे
याकूब Vlijm

@JacobVlijm बहुत बहुत धन्यवाद! तुमने मेरी जान बचाई!!
मार्सलो

8

अधिकांश सेटिंग्स के लिए आप इस दृष्टिकोण का उपयोग कर सकते हैं :

  • gsettingsअस्थायी फ़ाइल में सूची निर्यात करें :

    gsettings list-recursively > /tmp/gsettings.before
  • gnome-tweak-tool(या unity-control-center) द्वारा अपने परिवर्तन करें ;

  • gsettingsएक अन्य अस्थायी फ़ाइल में सूची का निर्यात करें :

    gsettings list-recursively > /tmp/gsettings.after
  • दो फ़ाइलों ( .before और .after ) की तुलना करें और अंतर प्राप्त करें:

    diff /tmp/gsettings.before /tmp/gsettings.after | grep '[>|<]'

    या तुलना करें और केवल नए मान प्राप्त करें ( स्रोत ):

    diff /tmp/gsettings.before /tmp/gsettings.after | grep -Po '> \K.*'

    या केवल नए मूल्यों की तुलना करें और प्राप्त करें, लेकिन gsettings setआदेशों की एक सूची तैयार करने के लिए लाइनों की शुरुआत की जगह , उस ठंड को सीधे आपकी स्क्रिप्ट फ़ाइल ( स्रोत ) में संग्रहीत किया जाना चाहिए :

    diff /tmp/gsettings.before /tmp/gsettings.after | sed 's/>/gsettings set/;tx;d;:x'

आप इन सभी आदेशों को एक पंक्ति से चला सकते हैं (या आप प्रक्रिया को स्वचालित करने के लिए एक स्क्रिप्ट बना सकते हैं):

gsettings list-recursively > /tmp/gsettings.before; gnome-tweak-tool; gsettings list-recursively > /tmp/gsettings.after; diff /tmp/gsettings.before /tmp/gsettings.after | grep '[>|<]'

अगला डेमो उबंटू 16.04 के भीतर बनाया गया है। मुझे लगता है कि दृष्टिकोण 17.10 के भीतर भी काम करेगा:

यहाँ छवि विवरण दर्ज करें


अद्यतन: मुझे सिर्फ १ I.१० के भीतर एक आसान तरीका मिला है:

यहाँ छवि विवरण दर्ज करें


1
बहुत उपयोगी है, धन्यवाद, मुझे नहीं पता था कि आप इस तरह से सभी सेटिंग्स को डंप कर सकते हैं।
st01

1
यह शानदार है, बहुत बहुत धन्यवाद! जब मैं gsettings में गड़बड़ी करता हूं तो मैं अपने पुराने कॉन्फ़िगरेशन को पुनर्स्थापित कर सकता हूं।
निकोलस स्टोमेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.