बाइनरी स्पेस पार्टीशनिंग विंडो मैनेजर (bspwm) Linux के लिए एक शक्तिशाली मिनिमलिस्ट विंडो मैनेजर है। यह अत्यधिक कॉन्फिगरेबल है और विंडो प्रबंधन के लिए एक अभिनव दृष्टिकोण प्रस्तावित करता है। Bspwm C में लिखा गया है और इसे किसी भी भाषा का उपयोग करके कॉन्फिगर किया जा सकता है। Bspwm विंडो मैनेजर में उपयोगकर्ता अनुकूलन का प्रतीक है। यह इसे पावर यूजर्स और टिंकरर्स के लिए आकर्षक बनाता है जो अपना खुद का अनूठा वर्कफ़्लो बनाना सीखने में रुचि रखते हैं।
बाइनरी स्पेस पार्टीशनिंग, समझाया गया
बाइनरी स्पेस पार्टीशनिंग यह विचार है कि डेस्कटॉप पर विंडोज को एक पूर्ण बाइनरी ट्री में पत्तियों के रूप में दर्शाया जा सकता है। एक पूर्ण बाइनरी ट्री हायरार्किकल नोड्स का उपयोग करके जानकारी को व्यवस्थित करने की एक संरचना है। उस ट्री के भीतर कोई भी जानकारी दो में क्रमबद्ध होती है जिसमें एक रूट नोड हमेशा दो नोड्स को समाहित करता है।
Bspwm नोड्स के साथ काम करता है। व्यवहार में, जब आप एक खाली डेस्कटॉप पर एक विंडो बनाते हैं, तो bspwm उस विंडो को रखने के लिए एक सिंगल नोड बनाएगा। आप उस नोड को लीफ नोड के रूप में सोच सकते हैं। लेकिन जब आप उस डेस्कटॉप में एक अतिरिक्त विंडो बनाते हैं, तो वह लीफ नोड एक रूट नोड बन जाएगा और bspwm उससे जुड़े दो नए लीफ नोड बनाएगा। यह तब वर्तमान विंडो और नव निर्मित विंडो को उन लीफ नोड्स में रखता है।
इसके बाद बनाई गई कोई भी नई विंडो अब उन लीफ नोड्स में से किसी एक से जुड़ी होगी, उन्हें अपने संबंधित रूट नोड्स में बदल देगी।
इस तरह विंडोज की व्यवस्था डेस्कटॉप के भीतर एक स्पष्ट पदानुक्रम बनाती है। यह स्पष्ट है कि कौन से लीफ नोड्स पहले उत्पन्न हुए थे और कौन से किसी विशेष रूट नोड्स के समूह से हैं। यह विशिष्ट विंडोज और विंडो लेआउट के लिए कस्टम व्यवहार नियम बनाते समय उपयोगी होता है।
कीबाइंडिंग और स्टेटस बार
यह ध्यान रखना महत्वपूर्ण है कि bspwm केवल विंडोज का प्रबंधन करता है। इसका मतलब है कि विंडोज प्रबंधन से संबंधित किसी भी अन्य फ़ंक्शन को bspwm पैकेज में शामिल नहीं किया गया है। इसमें फंक्शन के लिए कुंजियों को बांधने की क्षमता और स्टेटस बार प्रदर्शित करने की क्षमता भी शामिल है।
bspwm में कीबाइंडिंग का उपयोग करने के लिए, डेवलपर्स ने सिंपल X हॉटकी डेमॉन (sxhkd) नामक एक अलग प्रोग्राम बनाया जो केवल कीबाइंडिंग प्रबंधित करता है। स्टेटस बार के लिए, हालांकि, उपयोगकर्ता polybar और lemonbar जैसे विभिन्न थर्ड-पार्टी एप्लिकेशन इंस्टॉल कर सकते हैं।
bspwm और sxhkd इंस्टॉल करना
bspwm और sxhkd इंस्टॉल करना अपेक्षाकृत सीधा है। दोनों प्रोग्राम अधिकांश Linux रिपॉजिटरी में भी उपलब्ध हैं। उदाहरण के लिए, Debian और Ubuntu में इन्हें apt का उपयोग करके इंस्टॉल कर सकते हैं:
sudo apt install bspwm sxhkd
Arch Linux में, आप pacman का उपयोग कर सकते हैं:
sudo pacman -Syu bspwm sxhkd
Fedora में, आप 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 का उपयोग करूंगा। ऐसा करने के लिए मैं निम्न टाइप करूंगा:
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
पहली लाइन में शेबैंग द्वारा इंगित अनुसार, यह कॉन्फिगरेशन Bash में लिखा गया है। पहले कुछ कमांड वे प्रोग्राम हैं जिन्हें मैं bspwm के लिए कोई कॉन्फिगरेशन सेट करने से पहले चलाना चाहता था।
पहला, xsetroot, डिफ़ॉल्ट X कर्सर को अधिक परिचित लेफ्ट पॉइंटर में बदलता है। दूसरा हमारे हॉटकी डेमॉन को बैकग्राउंड में आरंभ करता है।
bspc config और bspc rule
कॉन्फिगरेशन में निम्नलिखित कमांड bspc के लिए विशिष्ट हैं। bspc config विंडो मैनेजर के सामान्य कॉन्फिगरेशन से संबंधित है। इसमें सौंदर्य और कार्यात्मक दोनों सेटिंग्स शामिल हैं।
- border_width विंडोज के बॉर्डर की मोटाई को पिक्सल में निर्धारित करता है।
- window_gap विंडोज के आसपास के गैप की मात्रा को पिक्सल में डील करता है।
- split_ratio विभाजन होने पर दो लीफ नोड्स के बीच अनुपात निर्धारित करता है।
- focus_follows_pointer सेट करता है कि माउस पॉइंटर नियंत्रित कर सकता है कि कौन सी विंडो फोकस प्राप्त करती है।
- pointer_modifier माउस का उपयोग करके विंडोज को रिसाइज़ करने के लिए कीबोर्ड कुंजी निर्धारित करता है।
- automatic_scheme स्वचालित मोड में विभाजित होने पर विंडोज के लेआउट को निर्धारित करता है।
दूसरी ओर, bspc rule, प्रोग्राम के व्यवहार से संबंधित है जब वे bspwm में खोले जाते हैं।
- हमारे उदाहरण कॉन्फिगरेशन में पहला नियम Chromium को दूसरे डेस्कटॉप में चलाने के लिए मजबूर करता है।
- हमारे उदाहरण में दूसरा नियम Gimp को आठवें डेस्कटॉप में चलाने के लिए मजबूर करता है। यह Gimp को डिफ़ॉल्ट टाइल्ड के बजाय फ्लोटिंग स्टेट में चलाने के लिए भी मजबूर करता है। अंत में, यह लोड होने पर Gimp पर विंडो फोकस को मजबूर करता है।
इसके साथ, अब हमारे पास bspwm के लिए एक बुनियादी कॉन्फिगरेशन है। हालांकि, यह ध्यान रखना महत्वपूर्ण है कि bspc config और bpsc rule के लिए विकल्प व्यापक हैं। यदि आप अपने bspwmrc को फाइन-ट्यून करने के बारे में अधिक जानना चाहते हैं, तो सभी संभावित सेटिंग्स की पूरी सूची के लिए 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, Super, Hyper या Control हो सकता है। उसके बाद, आपको अपने मॉडिफायर कुंजी को पूरा करने के लिए एक सामान्य कुंजी प्रदान करने की आवश्यकता है। इसे तब एक कीबाइंडिंग में जोड़ा जा सकता है उन दो कुंजियों के बीच "+" चिह्न जोड़कर।
इसलिए, sxhkd कीबाइंडिंग का सामान्य रूप इस तरह दिखता है:
modifier key + normal key (+ {_, additional, keys})
एक बार हो जाने पर, आपको कीबाइंडिंग के नीचे एक इंडेंटेड लाइन बनाने के लिए Enter और Tab दबाने की आवश्यकता है। उसके बाद, आपको वह कमांड निर्दिष्ट करने की आवश्यकता है जिसे आप कीबाइंडिंग दबाए जाने पर निष्पादित करना चाहते हैं।
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 + Shift + Q दबाते हैं तो कमांड: bspc quit निष्पादित होती है। हालांकि, Alt + Shift + R दबाने से bspc wm -r निष्पादित होगा।
हम ब्रांचिंग करते समय अतिरिक्त कुंजियां प्रदान करने की आवश्यकता को भी बायपास कर सकते हैं। इस उदाहरण पर विचार करें:
alt + {_,shift + }Return {st, bspc node -s biggest.local}
यह कमांड टर्मिनल को स्पॉन करने से संबंधित है। यह डेस्कटॉप में विंडोज को स्वैप भी करता है। मैं पहला कमांड Alt + Enter दबाकर कर सकता हूं और दूसरा कमांड Alt + Shift + Enter दबाकर कर सकता हूं।
ऐसा इसलिए है क्योंकि अंडरस्कोर कैरेक्टर कीबाइंडिंग के लिए पास-थ्रू के रूप में कार्य करता है। यह हमें एक कमांड के लिए डिफ़ॉल्ट कीबाइंडिंग रखने की अनुमति देता है लेकिन अन्य कमांड के लिए एक "संशोधित" कीबाइंडिंग भी रखने की अनुमति देता है।
अंत में, 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 चलाना
हालांकि, यदि आप Linux Mint या Ubuntu जैसे फुल-फीचर्ड डेस्कटॉप का उपयोग कर रहे हैं तो आपको अपनी लॉगिन स्क्रीन पर bspwm का चयन करना पड़ सकता है।
उदाहरण के लिए, मेरे Ubuntu इंस्टॉलेशन में मुझे लॉगिन स्क्रीन पर गियर आइकन पर क्लिक करना होगा और कॉन्टेक्स्ट मेनू से bspwm का चयन करना होगा ताकि यह लोड हो सके।
बधाई हो! अब आपके पास bspwm का एक कार्यशील इंस्टॉलेशन है। अब आप अपने कॉन्फिगरेशन फाइलों को ट्वीक करके और थर्ड-पार्टी डॉक्स इंस्टॉल करके अपने डेस्कटॉप को और कस्टमाइज़ कर सकते हैं। प्रेरणा के लिए यहां कुछ कस्टमाइज़्ड डेस्कटॉप हैं।
अक्सर पूछे जाने वाले प्रश्न
1. पहली बार लॉग इन करने पर मेरी स्क्रीन काली क्यों है?
ऐसा शायद इसलिए है क्योंकि आपने अभी तक डेस्कटॉप बैकग्राउंड सेट नहीं किया है। यह अक्सर होता है यदि आप न्यूनतम इंस्टॉलेशन चला रहे हैं। आप feh जैसे इमेज व्यूअर प्रोग्राम का उपयोग करके अपना बैकग्राउंड थीम बदल सकते हैं।
2. मेरी कीबाइंडिंग काम क्यों नहीं कर रही हैं?
यह सबसे अधिक संभावना दो चीजों के कारण है:
- कीबाइंडिंग लोड नहीं हुई क्योंकि sxhkd नहीं चल रहा है।
- sxhkdrc के साथ सिंटैक्स त्रुटि थी। sxhkd कॉन्फिगर करते समय सबसे आम गलती इंडेंट के साथ होती है। कमांड को ठीक से आरंभ करने के लिए, आपको इंडेंटेड लाइन्स में टैब-स्पेस डालने होंगे।
3. जब मैंने अपने सिस्टम में लॉग इन किया तो यह मुझे सिर्फ सिस्टम प्रॉम्प्ट पर लौटा दिया।
यह कई चीजों के कारण हो सकता है। हालांकि, सबसे आम कारण .xinitrc फाइल के साथ एक समस्या है। आपको यह सुनिश्चित करने की आवश्यकता है कि bspwm वह अंतिम प्रोग्राम है जिसे Xorg लोड करता है और यह बैकग्राउंड प्रोसेस के रूप में नहीं चल रहा है।