Dwm न्यूनतम सॉफ्टवेयर का एक शानदार नमूना है। कोड की केवल 2000 पंक्तियों के माध्यम से, इसके डेवलपर्स एक तेज़ और हल्का विंडो प्रबंधक प्रदान करने में सफल रहे। हालाँकि, सॉफ्टवेयर विकास पर यह संयमी दृष्टिकोण एक कीमत के साथ आया था। कार्यक्रम का आकार कम रखने के लिए कुछ सुविधाओं को हटा दिया गया था।
इसके बावजूद, dwm के स्रोत कोड को पैच करके नई सुविधाओं को पेश करना संभव है, क्योंकि dwm स्रोत-आधारित है। बस बुनियादी कॉन्फ़िगरेशन करने के लिए, हमें config.h को संशोधित करना होगा, जो dwm के स्रोत कोड का एक हिस्सा है।
हालांकि यह पहली बार में जटिल लग सकता है, प्रक्रिया के बारे में कुछ चीजें समझने के बाद dwm को पैच करना सरल है। इस लेख का उद्देश्य आपके स्वयं के dwm इंस्टॉलेशन को सफलतापूर्वक पैच करने और पांच उपयोगी पैच प्रदान करने के लिए आवश्यक कौशल सेट को सिखाना है।
पैच क्या होते हैं?
पैच कोड के छोटे टुकड़े होते हैं जिन्हें काम के बड़े हिस्से में डाला जा सकता है। किसी बड़े सॉफ़्टवेयर प्रोजेक्ट पर सहयोग करते समय यह उपयोगी होता है, क्योंकि यह प्रोग्रामर को दूसरों द्वारा किए गए परिवर्तनों को शीघ्रता से देखने की अनुमति देता है।
पैच बग को ठीक करने के लिए एक छोटे से एक-लाइनर परिवर्तन या एक नई सुविधा पेश करने वाले बड़े पैमाने पर बहु-फ़ाइल परिवर्तन के रूप में सरल हो सकते हैं।
dwm के लिए स्रोत कोड कैसे पैच करें
पैच को स्रोत कोड में पेश करने के कई तरीके हैं। इसे करने का सबसे आम तरीका git कमांड है। उदाहरण के लिए, git रिपॉजिटरी में पैच लगाने के लिए, निम्नलिखित टाइप करें:
git apply -3 path/to/the/patch.diff
apply
फ़ंक्शन संकेतित स्रोत फ़ाइलों में पैच फ़ाइलों की सामग्री को सम्मिलित करने का प्रयास करेगा।- द
-3
विकल्प किसी भी विसंगति को ठीक करने का प्रयास करेगा और उपयोगकर्ता को पैचिंग प्रक्रिया में किसी भी गलती को ठीक करने की अनुमति देगा।
दूसरी ओर, यदि हम बिना किसी संस्करण नियंत्रण के स्रोत कोड को संपादित कर रहे हैं, तो हम GNU पैच प्रोग्राम का उपयोग कर सकते हैं। इसका उपयोग करके पैच डालने के लिए, निम्न टाइप करें:
patch -p1 < path/to/the/patch.diff
- द
-p1
विकल्प सुनिश्चित करता है कि पैच प्रोग्राम को सम्मिलित करने के लिए पैच फ़ाइल को सही ढंग से लेबल किया जाएगा।
हालाँकि, dwm को पैच करते समय, कई बार ये प्रोग्राम विफल हो जाते हैं, क्योंकि वे मानते हैं कि जिस सोर्स कोड को हम पैच कर रहे हैं वह मूल dwm इंस्टॉलेशन के समान है।
इसका मतलब यह है कि जैसे-जैसे हम पैच स्थापित करते हैं, पैचिंग प्रोग्राम के लिए उन पैच को सम्मिलित करना उतना ही कठिन होगा। इस वजह से, यह समझना महत्वपूर्ण है कि पैच फ़ाइल कैसे काम करती है ताकि हम स्वयं पैच को मैन्युअल रूप से स्थापित कर सकें।
पैच फ़ाइल कैसे पढ़ें
पैच फ़ाइल में तीन चीज़ें होती हैं:
- हैडर जो दिखाता है कि कोड किस फाइल में डाला जाना चाहिए
- उपशीर्षक जो दर्शाता है कि कौन सी पंक्ति संख्या या कार्य सम्मिलित करना है
- कोड ही
जैसा कि हमने ऊपर चर्चा की है, एक एकल पैच फ़ाइल में कई फाइलों में जाने के लिए कोड के कई स्निपेट हो सकते हैं। यह प्रारूप हमें प्रत्येक स्रोत फ़ाइल के लिए एकल पैच फ़ाइल रखने के बजाय एकल फ़ाइल वितरित करने की अनुमति देता है।
इसके साथ, पैच फ़ाइल को पढ़ने के लिए केवल हमें इसके हेडर के सिंटैक्स को समझने की आवश्यकता होती है। एक बार जब हम यह जान लेते हैं, तो वास्तविक पैचिंग केवल कोड को कॉपी और पेस्ट करने की बात है।
पैच हैडर सिंटैक्स
पैच के हेडर में महत्वपूर्ण जानकारी होती है कि स्रोत फ़ाइल कहाँ स्थित है। उदाहरण के लिए, यह dwm ऑटोरेसाइज़ पैच के लिए हेडर है।
diff --git a/dwm.c b/dwm.c index 0362114..e4e8514 100644 --- a/dwm.c +++ b/dwm.c
पहली, तीसरी और चौथी पंक्तियाँ इंगित करती हैं कि यह dwm.c फ़ाइल के दो संस्करणों के बीच का अंतर है। यह हमें बताता है कि जिस फ़ाइल को हम संशोधित करने जा रहे हैं वह "dwm.c" फ़ाइल है।
हालाँकि, केवल यह जानने से कि क्या संपादित करना है, स्रोत फ़ाइल को पैच करने में हमारी सहायता नहीं करेगा। हमें अभी भी यह जानने की जरूरत है कि फाइल में हमें कोड कहां डालना है। यह वह जगह है जहां हम पैच फ़ाइल के उपशीर्षक का उपयोग कर सकते हैं।
उदाहरण के लिए, यह ऊपर वर्णित उसी ऑटोरेसाइज़ पैच का एक खंड है:
@@ -92,7 +92,7 @@ struct Client { int basew, baseh, incw, inch, maxw, maxh, minw, minh; int bw, oldbw; unsigned int tags; - int isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen; + int isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen, needresize; Client *next; Client *snext; Monitor *mon;
यह कोड के एक कठिन टुकड़े की तरह लग सकता है, लेकिन हमें यहां केवल तीन चीजों को देखने की जरूरत है:
- पहली पंक्ति उस पंक्ति संख्या को इंगित करती है जहां हमें कोड का एक टुकड़ा डालने की आवश्यकता होती है। इस उदाहरण में, हमें इसे लाइन 92 पर सम्मिलित करना होगा।
- पहली पंक्ति पर दूसरा तर्क -
struct Client {
- उस विशिष्ट फ़ंक्शन को बताता है जिसे हमें संपादित करना है। यह तब उपयोगी होता है जब स्रोत फ़ाइल पहले से ही भारी रूप से पैच की गई हो और बाईं ओर की रेखा संख्याएँ अब पंक्तिबद्ध नहीं होती हैं। - देखने के लिए आखिरी चीज है
+
और-
कोड ब्लॉक में संकेत। ऋण चिह्न इंगित करता है कि यह एक रेखा है जिसे हटाया जाना है, और धन चिह्न इंगित करता है कि यह एक जोड़ी जाने वाली रेखा है।
इसके साथ, अब हमें एक बुनियादी समझ है कि स्रोत फ़ाइलों को कैसे पैच किया जाए। अब हम dwm के लिए पांच उपयोगी पैच पर चर्चा करने के लिए आगे बढ़ सकते हैं।
1. सिस्ट्रे
अधिकांश डेस्कटॉप वातावरणों के विपरीत, dwm डिफ़ॉल्ट रूप से सिस्टम ट्रे के साथ नहीं आता है। सिस्टम ट्रे डेस्कटॉप का एक खंड है जहां कुछ एप्लिकेशन पृष्ठभूमि में चल रहे प्रोग्राम के साथ त्वरित रूप से इंटरैक्ट करने के लिए ऐप के कार्यों के साथ एक आइकन छोड़ सकते हैं।
यह पैच उस सुविधा को dwm से परिचित कराता है। एक बार इंस्टाल हो जाने पर, सिस्ट्रे पैच वर्तमान सिस्टम ट्रे प्रोग्राम को dwm बार के सबसे दाहिने कोने को आवंटित करेगा। यह मल्टी-मॉनिटर सेटअप का भी समर्थन करता है जहां ट्रे हमेशा उस मॉनीटर पर दिखाई देती है जिसमें वर्तमान में माउस पॉइंटर होता है।
2. एक्ससंसाधन
Xresources पैच xrdb प्रोग्राम को dwm के लिए ग्राफिकल सेटिंग्स सेट करने में सक्षम बनाता है। यह हमें प्रोग्राम को फिर से संकलित किए बिना रंग और फोंट बदलने के लिए .Xresources फ़ाइल का उपयोग करने की अनुमति देता है। यह उन उपयोगकर्ताओं के लिए विशेष रूप से उपयोगी है जो पहले से ही अपनी टर्मिनल रंग योजना के लिए उसी फ़ाइल का उपयोग करते हैं।
इसके अलावा, xrdb होने से dwm की उपस्थिति भी हमें कई विषयों का उपयोग करने की अनुमति देती है। हम अपनी इच्छित रंग योजना के लिए .Xresources फ़ाइल को संशोधित करके और dwm को पुनः लोड करके इसे सक्षम करके ऐसा कर सकते हैं।
3. टाटामी
टाटामी dwm के लिए एक वैकल्पिक विंडो लेआउट है। यह स्क्रीन में खिड़कियों को एक पारंपरिक जापानी फर्श में व्यवस्थित टाइल के रूप में दर्शाता है। यह दृष्टिकोण पारंपरिक मास्टर और स्टैक लेआउट से अलग है, जहां मास्टर के अलावा प्रत्येक विंडो लंबवत पतली हो जाती है, इसलिए स्टैक में प्रत्येक विंडो को पढ़ने योग्य नहीं बनाता है।
टैटामी लेआउट विशेष रूप से तब उपयोगी होता है जब चार से पांच विंडो एक साथ काम करते हैं, क्योंकि यह प्रत्येक विंडो को पढ़ने के लिए उपयोगकर्ता के लिए पर्याप्त स्क्रीन स्पेस देता है।
4. फोकस मास्टर
जिस तरह से dwm विंडो को व्यवस्थित करता है वह ब्लॉक को स्टैक में रखने के समान है। प्रत्येक नई बनाई गई विंडो को पिछली विंडो के शीर्ष पर रखा गया है। यह खिड़कियों के बीच एक रैखिक क्रम बनाता है और हमें यह जानने की अनुमति देता है कि कौन सी खिड़की पहले आई थी।
हालाँकि, इस डिज़ाइन की एक सीमा यह है कि यह हमें स्टैक से मास्टर विंडो को स्वतंत्र रूप से चुनने की अनुमति नहीं देता है। मास्टर का चयन करने के लिए, हमें उच्चतम ब्लॉक तक पहुंचने तक प्रत्येक विंडो का चयन करना होगा। यह पैच इस व्यवहार को बदल देता है और हमें स्टैक में कहीं से भी वर्तमान मास्टर विंडो का चयन करने की अनुमति देता है।
यह कई विंडो के साथ काम करते समय विशेष रूप से उपयोगी होता है, क्योंकि यह हमें प्रत्येक विंडो में साइकिल चलाने के बजाय विंडो स्टैक में स्वचालित रूप से मास्टर का चयन करने की अनुमति देता है।
5. dwmc
dwm के किसी भी पहलू को संशोधित करने के लिए जब भी हम अपने परिवर्तनों को लागू करना चाहते हैं तो हमें प्रोग्राम को फिर से संकलित करना होगा। इसमें अन्य बातों के अलावा, रंग योजना और डिफ़ॉल्ट व्यवहार शामिल हैं।
dwmc एक साधारण पैच है जो हमें क्लाइंट प्रोग्राम के माध्यम से dwm के व्यवहार को बदलने की अनुमति देता है। यह तरीका उसी तरह है जैसे bspwm bspwm की सेटिंग्स को संशोधित करने के लिए bspc का उपयोग करता है। जबकि dwmc bspc की तुलना में कहीं अधिक सरल है, इसमें अभी भी कई उपयोगी सेटिंग्स हैं जिनका हम उपयोग और संशोधन कर सकते हैं।
उदाहरण के लिए, एक फ़ंक्शन जिसे हम dwmc में उपयोग कर सकते हैं, वह है टॉगलबार। dwmc टॉगलबार चलाने से हम dwm बार को गतिशील रूप से सक्षम और अक्षम कर सकते हैं। कस्टम विंडो व्यवहार करने वाली स्क्रिप्ट बनाते समय यह dwmc को उपयोगी बनाता है।
बधाई हो! अब आपको एक बुनियादी समझ है कि कोड पैचिंग कैसे काम करता है और साथ ही पांच उपयोगी पैच जो आप अपने dwm इंस्टॉलेशन में लागू करते हैं। यदि आप किसी ब्राउज़र में समान न्यूनतम अनुभव की तलाश में हैं, तो इस ट्यूटोरियल को देखें।
अक्सर पूछे जाने वाले प्रश्न
1. क्या dwm पैच उपयोग करने के लिए सुरक्षित हैं?
हां! कई अनुरक्षक उन पैच की जांच करते हैं जो बेकार वेबसाइट में मौजूद हैं। यह सुनिश्चित करता है कि वेबसाइट के सभी पैच dwm के उस संस्करण के लिए काम करते हैं जिसके लिए इसे लिखा गया है।
2. मैं गिट लागू का उपयोग कर रहा हूं, लेकिन मेरा पैच विफल रहा, और dwm संकलन नहीं कर रहा है। मुझे क्या करना चाहिए?
ऐसा कई चीजों के कारण हो सकता है। सबसे आम कारण यह है कि स्रोत फ़ाइल में गिट हेडर को हटाया नहीं गया था। इसे ठीक करना अपेक्षाकृत आसान है। हमें हेडर को हटाने और पैच को स्वयं मैन्युअल रूप से लागू करने की आवश्यकता है।
जब आप स्रोत फ़ाइल खोलते हैं, तो आपको HEAD
. लेबल वाली एक पंक्ति दिखाई देगी . यह संशोधन की शुरुआत को इंगित करता है। इसके बाद उस फ़ंक्शन का अनुसरण किया जाता है जिसे संशोधित करने की आवश्यकता होती है। आपको उस लाइन को हटाना होगा और मैन्युअल रूप से पैचिंग करनी होगी। यहाँ पर +
भी होगा और -
क्या बदलना है, इस पर आपका मार्गदर्शन करने के लिए कोड के बाईं ओर संकेत।
3. जब मैं एक पैच सफलतापूर्वक लागू करता हूं, लेकिन dwm संकलित नहीं करना चाहता है और लापता चर या घोषणाओं के लिए पूछ रहा है, तो मैं क्या करूँ?
पैचिंग प्रोग्राम ने config.h फ़ाइल को पैच नहीं किया। डिफ़ॉल्ट रूप से, पैच config.def.h फ़ाइल को वर्तमान कॉन्फ़िगरेशन के साथ किसी भी विरोध से बचने के लिए संपादित करेंगे।
हालांकि, इसका मतलब है कि config.h फ़ाइल उस विशेष पैच के लिए सही कॉन्फ़िगरेशन मानों के साथ लोड नहीं होगी। इसे ठीक करने के लिए, आपको config.def.h फ़ाइल में परिवर्तनों को अपनी config.h फ़ाइल में प्रस्तुत करना होगा।