बाइनरी स्पेस पार्टिशनिंग विंडो मैनेजर (bspwm) लिनक्स के लिए एक शक्तिशाली न्यूनतम विंडो मैनेजर है। यह अत्यधिक विन्यास योग्य है और यह विंडो प्रबंधन के लिए एक अभिनव दृष्टिकोण का प्रस्ताव करता है। Bspwm C में लिखा गया है और इसे किसी भी भाषा का उपयोग करके कॉन्फ़िगर किया जा सकता है। Bspwm विंडो प्रबंधकों में उपयोगकर्ता अनुकूलन का प्रतीक है। यह उन उपयोगकर्ताओं और टिंकरर्स के लिए आकर्षक बनाता है जो अपना अनूठा वर्कफ़्लो बनाना सीखने में रुचि रखते हैं।
बाइनरी स्पेस पार्टिशनिंग, समझाया गया
बाइनरी स्पेस पार्टिशनिंग यह विचार है कि डेस्कटॉप में विंडोज़ को पूर्ण बाइनरी ट्री में पत्तियों के रूप में दर्शाया जा सकता है। एक पूर्ण बाइनरी ट्री पदानुक्रमित नोड्स का उपयोग करके सूचनाओं को क्रमबद्ध करने की एक संरचना है। उस पेड़ के भीतर किसी भी जानकारी को दो में क्रमबद्ध किया जाता है जिसमें रूट नोड में हमेशा दो नोड होते हैं।
Bspwm नोड्स के साथ काम करता है। व्यवहार में, जब आप एक खाली डेस्कटॉप पर एक विंडो बनाते हैं, तो bspwm उस विंडो को रखने के लिए एक एकल नोड बनाएगा। आप उस नोड को लीफ नोड के रूप में सोच सकते हैं। लेकिन जब आप उस डेस्कटॉप में एक अतिरिक्त विंडो बनाते हैं, तो वह लीफ नोड रूट नोड बन जाएगा और bspwm इससे जुड़े दो नए लीफ नोड बनाएगा। इसके बाद यह वर्तमान विंडो और नव निर्मित विंडो को उन लीफ नोड्स में रखता है।
इसके बाद बनने वाली कोई भी नई विंडो अब उन लीफ नोड्स में से किसी एक से जुड़ी होगी, जो उन्हें अपने संबंधित रूट नोड्स में बदल देगी।
विंडोज़ को इस तरह व्यवस्थित करना डेस्कटॉप के भीतर एक स्पष्ट पदानुक्रम बनाता है। यह स्पष्ट है कि कौन से पत्ती नोड्स पहले पैदा हुए थे और कौन से हैं जो रूट नोड्स के एक विशेष समूह से हैं। विशिष्ट विंडो और विंडो लेआउट के लिए कस्टम व्यवहार नियम बनाते समय यह उपयोगी होता है।
कीबाइंडिंग और स्थिति बार
यह ध्यान रखना महत्वपूर्ण है कि bspwm केवल विंडोज़ का प्रबंधन करता है। इसका मतलब है कि कोई भी अन्य फ़ंक्शन जो विंडोज़ के प्रबंधन से संबंधित नहीं है, bspwm पैकेज में शामिल नहीं है। इसमें फ़ंक्शन के लिए कुंजियों को बाइंड करने की क्षमता और एक स्टेटस बार प्रदर्शित करने की क्षमता भी शामिल है।
bspwm में कीबाइंडिंग का उपयोग करने के लिए, डेवलपर्स ने एक अलग प्रोग्राम बनाया जिसे सिंपल एक्स हॉटकी डेमन (sxhkd) कहा जाता है जो केवल कीबाइंडिंग का प्रबंधन करता है। हालाँकि, स्टेटस बार के लिए, उपयोगकर्ता कई तरह के थर्ड-पार्टी एप्लिकेशन जैसे पॉलीबार और लेमनबार इंस्टॉल कर सकता है।
bspwm और sxhkd इंस्टॉल करना
Bspwm और sxhkd को स्थापित करना अपेक्षाकृत सरल है। दोनों प्रोग्राम अधिकांश लिनक्स रिपॉजिटरी में भी उपलब्ध हैं। उदाहरण के लिए, डेबियन और उबंटू में उन्हें स्थापित करने के लिए आप apt
. का उपयोग करके ऐसा कर सकते हैं :
sudo apt install bspwm sxhkd
आर्क लिनक्स में, आप pacman
. का उपयोग कर सकते हैं :
sudo pacman -Syu bspwm sxhkd
फेडोरा में, आप dnf
. का उपयोग कर सकते हैं :
sudo dnf install bspwm sxhkd
Void Linux के लिए, आप xbps
. का उपयोग कर सकते हैं :
sudo xbps-install bspwm sxhkd
मेरे मामले में, मैं इसे अपने Void Linux सिस्टम में स्थापित करूँगा इसलिए मैं XBPS का उपयोग करूँगा।
bspc:bspwm के लिए यूनिवर्सल कंट्रोलर
Bspwm का उपयोग करने के लिए हमें केवल एक प्रोग्राम के साथ सहभागिता करने की आवश्यकता है:bspc. यह एक शक्तिशाली उपयोगिता है जो bspwm के व्यवहार को नियंत्रित और कॉन्फ़िगर कर सकती है। वास्तव में, विंडोज़ में हेरफेर करने और उसके व्यवहार को कॉन्फ़िगर करने के लिए हम जिन सभी आदेशों का उपयोग करेंगे, वे केवल bspc कमांड हैं।
bspwm के लिए कॉन्फ़िगरेशन फ़ाइल तैयार करना
Bspwm को कॉन्फ़िगर करना शुरू करने के लिए, हमें पहले एक कॉन्फ़िगरेशन फ़ाइल बनाने की आवश्यकता है। यह वह जगह है जहाँ bspwm bspc कमांड की तलाश करेगा जिसे वह पहली बार चलने पर निष्पादित करेगा। डिफ़ॉल्ट रूप से, bspwm "/home/$USER/.config/bspwm/bspwmrc" फ़ाइल की तलाश करेगा। उस फ़ाइल को बनाने के लिए आप टाइप कर सकते हैं:
mkdir -p /home/$USER/.config/bspwm && touch /home/$USER/.config/bspwm/bspwmrc
यह कमांड "/home/$USER/.config/" में bspwm फोल्डर बनाएगी और उस फोल्डर में bspwmrc फाइल भी बनाएगी।
अब, bspwmrc फ़ाइल किसी भी भाषा में लिखी जा सकती है जिसे आप चाहते हैं जब तक कि यह निष्पादन योग्य हो। इसका मतलब है कि हमें सबसे पहले इसकी फाइल प्रॉपर्टीज को इस तरह सेट करना होगा। हम निम्नलिखित टाइप करके ऐसा कर सकते हैं:
sudo chmod 774 /home/$USER/.config/bspwm/bspwmrc
यह सुनिश्चित करेगा कि हम और हमारे उपयोगकर्ता समूह में कोई भी इस फ़ाइल को निष्पादित कर सकता है।
उसके बाद, अब हम bspwmrc फाइल को खोल सकते हैं। मेरे मामले में, मैं अपनी कॉन्फ़िगरेशन फ़ाइल को संपादित करने के लिए विम का उपयोग करूँगा। ऐसा करने के लिए मैं निम्नलिखित टाइप करूंगा:
vim /home/$USER/.config/bspwm/bspwmrc
यह एक खाली फ़ाइल खोलेगा और अब हम अपना कॉन्फ़िगरेशन लिखना शुरू कर सकते हैं।
bspwm को कॉन्फ़िगर करना
Bspwm के लिए एक बुनियादी विन्यास कुछ इस तरह दिखता है:
#!/bin/bash xsetroot -cursor_name left_ptr sxhkd & bspc config border_width 2 bspc config window_gap 0 bspc config split_ratio 0.62 bspc config focus_follows_pointer true bspc config pointer_modifier mod1 bspc config automatic_scheme spiral bspc rule -a Chromium desktop='^2' bspc rule -a Gimp desktop='^8' state=floating follow=on
जैसा कि पहली पंक्ति में शेबैंग द्वारा इंगित किया गया है, यह कॉन्फ़िगरेशन बैश में लिखा गया है। पहले कुछ कमांड वे प्रोग्राम हैं जिन्हें मैं bspwm के लिए कोई भी कॉन्फ़िगरेशन सेट करने से पहले चलाना चाहता था।
पहला, xsetroot, डिफ़ॉल्ट X कर्सर को अधिक परिचित बाएं पॉइंटर में बदल देता है। दूसरा बैकग्राउंड में हमारे हॉटकी डेमॉन को इनिशियलाइज़ करता है।
bspc config और bspc नियम
कॉन्फ़िगरेशन में निम्न आदेश bspc के लिए विशिष्ट हैं। bspc config
विंडो मैनेजर के सामान्य विन्यास से संबंधित है। इसमें सौंदर्य और कार्यात्मक दोनों सेटिंग्स शामिल हैं।
- सीमा_चौड़ाई खिड़कियों के बॉर्डर की चौड़ाई की मोटाई पिक्सेल में निर्धारित करता है।
- विंडो_गैप खिड़कियों के आसपास, पिक्सेल में, अंतराल की मात्रा से संबंधित है।
- विभाजन_अनुपात विभाजित होने पर दो पत्ती नोड्स के बीच का अनुपात निर्धारित करता है।
- focus_follows_pointer सेट करता है कि क्या माउस पॉइंटर नियंत्रित कर सकता है कि किस विंडो पर फ़ोकस हो।
- pointer_modifier माउस का उपयोग करके विंडो का आकार बदलने के लिए कीबोर्ड कुंजी निर्धारित करता है।
- स्वचालित_योजना स्वचालित मोड में विभाजित होने पर विंडोज़ का लेआउट निर्धारित करता है।
दूसरी ओर, bspc नियम, bspwm में खोले जाने पर प्रोग्राम के व्यवहार से संबंधित है।
- हमारे उदाहरण कॉन्फ़िगरेशन में पहला नियम क्रोमियम को दूसरे डेस्कटॉप पर चलने के लिए बाध्य करता है।
- हमारे उदाहरण में दूसरा नियम जिम्प को आठवें डेस्कटॉप पर चलने के लिए बाध्य करता है। यह जिम्प को डिफ़ॉल्ट टाइल के बजाय एक अस्थायी स्थिति में चलाने के लिए भी मजबूर करता है। अंत में, यह लोड होने पर विंडो को जिम्प पर फोकस करने के लिए बाध्य करता है।
इसके साथ, अब हमारे पास bspwm के लिए एक बुनियादी विन्यास है। हालांकि, यह नोट करना महत्वपूर्ण है कि bspc config
. के विकल्प और bpsc rule
विस्तृत है। यदि आप अपने bspwmrc को ठीक करने के बारे में अधिक जानना चाहते हैं, तो आप सभी संभावित सेटिंग्स की पूरी सूची के लिए Github Github प्रलेखन की जांच कर सकते हैं।
sxhkd:bspwm के लिए कीबाइंडिंग यूटिलिटी
sxhkd एक साधारण प्रोग्राम है। यह कीबोर्ड इनपुट ईवेंट को सुनता है और आपके द्वारा दबाए गए कुंजियों के आधार पर कमांड निष्पादित करता है। यह कॉर्डिंग के माध्यम से बहु-कुंजी इनपुट से निपट सकता है और इसमें एक सहज कॉन्फ़िगरेशन फ़ाइल है जो सरल और समझने में आसान है।
sxhkd के लिए कॉन्फ़िगरेशन फ़ाइल तैयार करना
sxhkd के लिए कॉन्फ़िगरेशन फ़ाइल तैयार करना bspwmrc फ़ाइल को सेट करने के समान है। सबसे पहले, हमें sxhkd के लिए कॉन्फ़िगरेशन फ़ोल्डर और फ़ाइल बनाने की आवश्यकता है। हम निम्न कमांड टाइप करके ऐसा कर सकते हैं:
mkdir -p /home/$USER/.config/sxhkd/ && touch /home/$USER/.config/sxhkd/sxhkdrc
फिर, हमें sxhkdrc फ़ाइल को निष्पादन योग्य बनाने के लिए सेट करने की आवश्यकता है:
sudo chmod 774 /home/$USER/.config/sxhkd/sxhkdrc
एक बार हो जाने के बाद, अब हमारे पास हमारी सभी कीबाइंडिंग सम्मिलित करने के लिए हमारी sxhkd कॉन्फ़िगरेशन फ़ाइल है।
sxhkd को कॉन्फ़िगर करना
sxhkd एक विशिष्ट पैटर्न में कीबाइंडिंग को पहचानता है। यह पहले एक संशोधक कुंजी मांगता है। यह या तो Alt हो सकता है , सुपर , हाइपर या नियंत्रण . उसके बाद, आपको अपनी संशोधक कुंजी को पूरक करने के लिए एक सामान्य कुंजी प्रदान करने की आवश्यकता है। फिर, उन दो चाबियों के बीच एक "+" चिह्न जोड़कर इसे कीबाइंडिंग के रूप में जोड़ा जा सकता है।
इसलिए, sxhkd कीबाइंडिंग के लिए सामान्य रूप इस तरह दिखता है:
modifier key + normal key (+ {_, additional, keys})
एक बार हो जाने के बाद, आपको Enter . दबाना होगा और टैब कीबाइंडिंग के नीचे एक इंडेंट लाइन बनाने के लिए। उसके बाद, आपको उस कमांड को निर्दिष्ट करने की आवश्यकता है जिसे आप कीबाइंडिंग दबाए जाने पर निष्पादित करना चाहते हैं।
sxhkd के लिए एक उदाहरण कॉन्फ़िगरेशन फ़ाइल कुछ इस तरह दिखती है:
# make sxhkd reload its configuration files alt + Escape pkill -USR1 -x sxhkd # quit or restart bspwm alt + shift + {q,r} bspc {quit,wm -r} # create a new terminal window or swap the current one to the biggest one in the screen alt + {_,shift + }Return {st, bspc node -s biggest.local} # close or kill a window alt + {_,shift + }c bspc node -{k,c} # change the window state alt + {t,ctrl + t,l,f} bspc node -t {tiled,pseudo_tiled,floating,fullscreen} # expand a window by moving one of its side outward super + alt + {h,j,k,l} bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0} # focus or send a window to the given desktop alt + {_,shift + }{1-9,0} bspc {desktop -f,node -d} '^{1-9,10}'
कीबाइंडिंग सिंटैक्स की व्याख्या करना
जैसा कि हमने ऊपर चर्चा की है, sxhkd के लिए कीबाइंडिंग सिंटैक्स अपेक्षाकृत सरल है। इसके अलावा, sxhkd कीबाइंडिंग को एक साथ समूहित कर सकता है और यह की-कॉर्डिंग के उपयोग के माध्यम से ब्रांचिंग कमांड निष्पादित कर सकता है।
उदाहरण के लिए, इस कॉन्फ़िगरेशन में कई कमांड घुंघराले ब्रेसिज़ का उपयोग करते हैं। यह हमें समान कीबाइंड पर कई फ़ंक्शन असाइन करने की अनुमति देता है। कॉन्फ़िगरेशन में इस आदेश पर विचार करें:
alt + shift + {q,r} bspc {quit, wm -r}
यह कमांड bspwm को बंद करने और फिर से चालू करने से संबंधित है। कीबाइंडिंग में घुंघराले ब्रेसिज़ उन घुंघराले ब्रेसिज़ से मेल खाते हैं जो हमारे पास कमांड लाइन में हैं। इसलिए, जब हम Alt . दबाते हैं + शिफ्ट + प्रश्न कीबोर्ड में कमांड:bspc quit
निष्पादित हो जाता है। हालांकि, Alt . दबाकर + शिफ्ट + आर निष्पादित करेगा bspc wm -r
।
ब्रांचिंग करते समय हम अतिरिक्त कुंजी प्रदान करने की आवश्यकता को भी दरकिनार कर सकते हैं। इस उदाहरण पर विचार करें:
alt + {_,shift + }Return {st, bspc node -s biggest.local}
यह कमांड टर्मिनल के स्पॉनिंग से संबंधित है। यह डेस्कटॉप में विंडोज़ की अदला-बदली भी करता है। मैं Alt . दबाकर पहला कमांड कर सकता हूं + दर्ज करें और मैं दूसरा कमांड Alt . दबाकर कर सकता हूं + शिफ्ट + दर्ज करें .
ऐसा इसलिए है क्योंकि अंडरस्कोर कैरेक्टर कीबाइंडिंग के लिए पास-थ्रू का काम करता है। यह हमें एक कमांड के लिए एक डिफ़ॉल्ट कीबाइंडिंग की अनुमति देता है, लेकिन अन्य कमांड के लिए एक "संशोधित" कीबाइंडिंग भी है।
अंत में, sxhkd एक शाखा तक सीमित नहीं है। इस उदाहरण पर विचार करें:
alt + {_,shift + }{1-9,0} bspc {desktop -f,node -d} '^{1-9,10}'
यह कमांड डेस्कटॉप के स्विचिंग से संबंधित है। यह उन डेस्कटॉप के भीतर खिड़कियों की आवाजाही को भी प्रबंधित करता है। जब आप Alt . दबाते हैं तो पहला कमांड निष्पादित होता है + 1 -0 जबकि दूसरा Shift . के साथ किया जाता है संशोधक कुंजी।
इसमें, हमने पास-थ्रू कुंजी और डेस्कटॉप के लिए संख्याओं को सेट करने के लिए दो घुंघराले ब्रेसिज़ का उपयोग किया। इसके बाद ये दो विकल्प इसके नीचे दिए गए कमांड में दो घुंघराले ब्रेसिज़ के अनुरूप हैं।
इंस्टॉलेशन को अंतिम रूप देना
इसके साथ, अब हमें bspwm और sxhkd को कॉन्फ़िगर करने की एक बुनियादी समझ है। आखिरी चीज जो हमें करने की ज़रूरत है वह है हमारे विंडो मैनेजर के रूप में bspwm को सक्षम करना। आप इसे सीधे Xorg या अपने प्रदर्शन प्रबंधक के माध्यम से कर सकते हैं।
xinitrc का उपयोग करके bspwm चलाना
Bspwm को इनिशियलाइज़ करने का सबसे आसान तरीका है कि इसे अपनी .xinitrc फ़ाइल में जोड़ें। यदि आप न्यूनतम Linux वितरण का उपयोग कर रहे हैं, तो संभवत:यह वह तरीका है जिसका उपयोग आप पहले से ही विंडो प्रबंधक को लोड करने के लिए कर रहे हैं।
ऐसा करने के लिए, आपको केवल अपने .xinitrc की अंतिम पंक्ति में निम्नलिखित को जोड़ना होगा:
exec bspwm
प्रदर्शन प्रबंधक का उपयोग करके bspwm चलाना
हालांकि, यदि आप लिनक्स मिंट या उबंटू जैसे पूर्ण विशेषताओं वाले डेस्कटॉप का उपयोग कर रहे हैं, तो आपको अपनी लॉगिन स्क्रीन में bspwm का चयन करने की आवश्यकता हो सकती है।
उदाहरण के लिए, मेरे उबंटू इंस्टॉलेशन में मुझे लॉगिन स्क्रीन पर गियर आइकन पर क्लिक करना होगा और इसे लोड करने के लिए संदर्भ मेनू से bspwm का चयन करना होगा।
बधाई हो! अब आपके पास bspwm की कार्यशील स्थापना है। अब आप अपनी कॉन्फ़िगरेशन फ़ाइलों में बदलाव करके और तृतीय-पक्ष डॉक स्थापित करके अपने डेस्कटॉप को और अधिक अनुकूलित कर सकते हैं। आपको प्रेरित करने के लिए यहां कुछ अनुकूलित डेस्कटॉप दिए गए हैं।
अक्सर पूछे जाने वाले प्रश्न
1. जब मैं पहली बार लॉग इन करता हूं तो मेरी स्क्रीन काली क्यों होती है?
ऐसा शायद इसलिए है क्योंकि आपने अभी तक डेस्कटॉप बैकग्राउंड सेट नहीं किया है। यदि आप न्यूनतम इंस्टॉलेशन चला रहे हैं तो अक्सर ऐसा होता है। आप feh जैसे इमेज व्यूअर प्रोग्राम का उपयोग करके अपनी पृष्ठभूमि थीम बदल सकते हैं।
2. मेरी कीबाइंडिंग क्यों काम नहीं कर रही है?
यह संभवत:दो चीजों के कारण है:
- कीबाइंडिंग लोड नहीं हुई क्योंकि sxhkd नहीं चल रहा है।
- sxhkdrc के साथ एक सिंटैक्स त्रुटि थी। Sxhkd को कॉन्फ़िगर करते समय की जाने वाली सबसे आम गलती इंडेंट के साथ है। कमांड को ठीक से इनिशियलाइज़ करने के लिए, आपको टैब-स्पेस को इंडेंटेड लाइन्स में इंसर्ट करना होगा।
3. जब मैंने अपने सिस्टम में लॉग इन किया तो इसने मुझे सिस्टम प्रॉम्प्ट पर वापस कर दिया।
यह कई चीजों के कारण हो सकता है। हालाँकि, सबसे सामान्य कारण .xinitrc फ़ाइल के साथ कोई समस्या है। आपको यह सुनिश्चित करने की आवश्यकता है कि bspwm आखिरी प्रोग्राम है जिसे Xorg लोड करता है और यह पृष्ठभूमि प्रक्रिया के रूप में नहीं चल रहा है।