বাইনারি স্পেস পার্টিশনিং উইন্ডো ম্যানেজার (bspwm) লিনাক্সের জন্য একটি শক্তিশালী মিনিমালিস্ট উইন্ডো ম্যানেজার। এটি অত্যন্ত কনফিগারযোগ্য এবং এটি উইন্ডো পরিচালনার জন্য একটি উদ্ভাবনী পদ্ধতির প্রস্তাব করে। Bspwm C তে লেখা এবং এটি যেকোনো ভাষা ব্যবহার করে কনফিগার করা যায়। বিএসপিডব্লিউএম হল উইন্ডো ম্যানেজারগুলিতে ব্যবহারকারীর কাস্টমাইজেশনের এপিটোম। এটি শক্তি ব্যবহারকারী এবং টিঙ্কারদের কাছে আকর্ষণীয় করে তোলে যারা তাদের নিজস্ব অনন্য ওয়ার্কফ্লো তৈরি করতে শিখতে আগ্রহী।
বাইনারী স্পেস পার্টিশন, ব্যাখ্যা করা হয়েছে
বাইনারি স্পেস পার্টিশনিং হল এই ধারণা যে ডেস্কটপের উইন্ডোগুলিকে একটি সম্পূর্ণ বাইনারি গাছের পাতা হিসাবে উপস্থাপন করা যেতে পারে। একটি পূর্ণ বাইনারি ট্রি হল হায়ারার্কিক্যাল নোড ব্যবহার করে তথ্য অর্ডার করার একটি কাঠামো। সেই গাছের মধ্যে যে কোনো তথ্য দুই ভাগে বাছাই করা হয় একটি রুট নোডের সাথে সবসময় দুটি নোড থাকে।
Bspwm নোডের সাথে কাজ করে। বাস্তবে, আপনি যখন একটি খালি ডেস্কটপে একটি উইন্ডো তৈরি করবেন, তখন bspwm সেই উইন্ডোটির জন্য একটি একক নোড তৈরি করবে। আপনি সেই নোডটিকে একটি লিফ নোড হিসেবে ভাবতে পারেন। কিন্তু যখন আপনি সেই ডেস্কটপে একটি অতিরিক্ত উইন্ডো তৈরি করবেন, তখন সেই লিফ নোডটি রুট নোডে পরিণত হবে এবং bspwm এর সাথে সংযুক্ত দুটি নতুন লিফ নোড তৈরি করবে। তারপরে এটি বর্তমান উইন্ডো এবং নতুন তৈরি একটিকে সেই লিফ নোডগুলিতে রাখে৷
এর পরে যে কোনও নতুন উইন্ডো তৈরি করা হবে এখন সেই লিফ নোডগুলির যে কোনও একটির সাথে যুক্ত হবে, সেগুলিকে তাদের নিজ নিজ রুট নোডে পরিণত করবে৷
এইভাবে উইন্ডোগুলি সাজানো ডেস্কটপের মধ্যে একটি স্পষ্ট শ্রেণিবিন্যাস তৈরি করে। এটা পরিষ্কার যে কোন লিফ নোডগুলি প্রথমে জন্মেছিল এবং কোনটি রুট নোডগুলির একটি নির্দিষ্ট গ্রুপ থেকে। নির্দিষ্ট উইন্ডো এবং উইন্ডো লেআউটের জন্য কাস্টম আচরণের নিয়ম তৈরি করার সময় এটি কার্যকর।
কীবাইন্ডিং এবং স্ট্যাটাস বার
এটা মনে রাখা গুরুত্বপূর্ণ যে bspwm শুধুমাত্র উইন্ডোগুলি পরিচালনা করে। এর মানে হল যে অন্য কোন ফাংশন যা উইন্ডোজ পরিচালনার সাথে সম্পর্কিত নয় তা bspwm প্যাকেজে অন্তর্ভুক্ত করা হয় না। এর মধ্যে ফাংশনগুলির সাথে কীগুলি আবদ্ধ করার ক্ষমতা এবং একটি স্ট্যাটাস বার প্রদর্শন করার ক্ষমতা অন্তর্ভুক্ত৷
bspwm-এ কী-বাইন্ডিং ব্যবহার করার জন্য, বিকাশকারীরা Simple X Hotkey Daemon (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
আমার ক্ষেত্রে, আমি এটি আমার ভয়েড লিনাক্স সিস্টেমে ইনস্টল করব তাই আমি 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
প্রথম লাইনে শেবাং দ্বারা নির্দেশিত হিসাবে, এই কনফিগারেশনটি বাশে লেখা হয়েছে। প্রথম কয়েকটি কমান্ড হল প্রোগ্রাম যা আমি bspwm-এর জন্য কনফিগারেশন সেট করার আগে চালাতে চেয়েছিলাম।
প্রথমটি, xsetroot, ডিফল্ট X কার্সারটিকে আরও পরিচিত বাম পয়েন্টারে পরিবর্তন করে। দ্বিতীয়টি ব্যাকগ্রাউন্ডে আমাদের হটকি ডেমনকে শুরু করে।
bspc কনফিগারেশন এবং bspc নিয়ম
কনফিগারেশনের নিম্নলিখিত কমান্ডগুলি bspc-এর জন্য নির্দিষ্ট। bspc config
উইন্ডো ম্যানেজারের সাধারণ কনফিগারেশন নিয়ে কাজ করে। এটি নান্দনিক এবং কার্যকরী উভয় সেটিংস অন্তর্ভুক্ত করে।
- বর্ডার_প্রস্থ জানালার সীমানা প্রস্থের পিক্সেলে বেধ নির্ধারণ করে।
- window_gap উইন্ডোজের চারপাশে, পিক্সেলে, ফাঁকের পরিমাণ নিয়ে কাজ করে।
- বিভক্ত_অনুপাত বিভক্ত হওয়ার সময় দুটি লিফ নোডের মধ্যে অনুপাত নির্ধারণ করে।
- focus_follows_pointer কোন উইন্ডোতে ফোকাস হবে তা মাউস পয়েন্টার নিয়ন্ত্রণ করতে পারে কিনা তা সেট করে।
- পয়েন্টার_মোডিফায়ার মাউস ব্যবহার করে উইন্ডোর আকার পরিবর্তন করতে কীবোর্ড কী নির্ধারণ করে।
- স্বয়ংক্রিয়_স্কিম স্বয়ংক্রিয় মোডে বিভক্ত হলে উইন্ডোর বিন্যাস নির্ধারণ করে।
অন্যদিকে, 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 চাপি + Shift + Q কীবোর্ডে কমান্ডটি:bspc quit
মৃত্যুদন্ড কার্যকর করা হয়। যাইহোক, Alt টিপে + Shift + R bspc wm -r
চালাবে .
আমরা শাখা করার সময় অতিরিক্ত কী প্রদানের প্রয়োজনকে বাইপাস করতে পারি। এই উদাহরণটি বিবেচনা করুন:
alt + {_,shift + }Return {st, bspc node -s biggest.local}
এই কমান্ড টার্মিনালের স্পনিং নিয়ে কাজ করে। এটি ডেস্কটপে উইন্ডোজ অদলবদল করে। আমি Alt টিপে প্রথম কমান্ডটি করতে পারি + এন্টার করুন এবং আমি Alt টিপে দ্বিতীয় কমান্ডটি করতে পারি + Shift + এন্টার করুন .
কারণ আন্ডারস্কোর অক্ষর কী-বাইন্ডিংয়ের জন্য পাস-থ্রু হিসাবে কাজ করে। এটি আমাদের একটি কমান্ডের জন্য একটি ডিফল্ট কীবাইন্ডিং থাকতে দেয় তবে অন্যান্য কমান্ডের জন্য একটি "পরিবর্তিত" কীবাইন্ডিংও থাকতে পারে৷
অবশেষে, 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 ফাইলে যুক্ত করা। আপনি যদি একটি ন্যূনতম লিনাক্স ডিস্ট্রিবিউশন ব্যবহার করেন তবে সম্ভবত এটি সেই পদ্ধতি যা আপনি ইতিমধ্যেই একটি উইন্ডো ম্যানেজার লোড করার জন্য ব্যবহার করছেন৷
এটি করার জন্য, আপনাকে শুধুমাত্র আপনার .xinitrc:
এর শেষ লাইনে নিম্নলিখিতটি যুক্ত করতে হবেexec bspwm
একটি ডিসপ্লে ম্যানেজার ব্যবহার করে bspwm চালানো
যাইহোক, আপনি যদি লিনাক্স মিন্ট বা উবুন্টুর মতো একটি পূর্ণ বৈশিষ্ট্যযুক্ত ডেস্কটপ ব্যবহার করেন তবে আপনাকে আপনার লগইন স্ক্রিনে bspwm নির্বাচন করতে হতে পারে।
উদাহরণস্বরূপ, আমার উবুন্টু ইনস্টলেশনে আমাকে লগইন স্ক্রিনে গিয়ার আইকনে ক্লিক করতে হবে এবং এটি লোড করার জন্য প্রসঙ্গ মেনু থেকে bspwm নির্বাচন করতে হবে।
অভিনন্দন! আপনার এখন bspwm এর একটি কার্যকরী ইনস্টলেশন আছে। আপনি এখন আপনার কনফিগারেশন ফাইলগুলিকে টুইক করে এবং তৃতীয় পক্ষের ডক ইনস্টল করে আপনার ডেস্কটপকে আরও কাস্টমাইজ করতে পারেন। আপনাকে অনুপ্রাণিত করার জন্য এখানে কিছু কাস্টমাইজড ডেস্কটপ রয়েছে৷
প্রায়শই জিজ্ঞাসিত প্রশ্ন
1. প্রথমবার লগ ইন করার সময় আমার স্ক্রীন কালো কেন?
এটি সম্ভবত কারণ আপনি এখনও একটি ডেস্কটপ ব্যাকগ্রাউন্ড সেট করেননি৷ আপনি যদি একটি ন্যূনতম ইনস্টলেশন চালাচ্ছেন তবে এটি প্রায়শই হয়। আপনি feh এর মত একটি ইমেজ ভিউয়ার প্রোগ্রাম ব্যবহার করে আপনার ব্যাকগ্রাউন্ড থিম পরিবর্তন করতে পারেন।
2. কেন আমার কী-বাইন্ডিং কাজ করছে না?
এটি সম্ভবত দুটি জিনিসের কারণে:
- কিবাইন্ডিং লোড হয়নি কারণ sxhkd চলছে না।
- sxhkdrc-এর সাথে একটি সিনট্যাক্স ত্রুটি ছিল। sxhkd কনফিগার করার সাথে সবচেয়ে সাধারণ ভুলটি হল ইন্ডেন্টগুলির সাথে। কমান্ডগুলি সঠিকভাবে শুরু করতে, আপনাকে অবশ্যই ইনডেন্ট করা লাইনগুলিতে ট্যাব-স্পেসগুলি সন্নিবেশ করতে হবে৷
3. যখন আমি আমার সিস্টেমে লগ ইন করি তখন এটি আমাকে সিস্টেম প্রম্পটে ফিরিয়ে দেয়৷
এটা অনেক কিছুর কারণে হতে পারে। যাইহোক, সবচেয়ে সাধারণ কারণ হল .xinitrc ফাইলের সমস্যা। আপনাকে নিশ্চিত করতে হবে যে bspwm হল শেষ প্রোগ্রাম যা Xorg লোড করে এবং এটি ব্যাকগ্রাউন্ড প্রক্রিয়া হিসাবে চলছে না।