Binary Space Partitioning Window Manager (bspwm) เป็นโปรแกรมจัดการหน้าต่างที่เรียบง่ายและทรงพลังสำหรับ Linux สามารถกำหนดค่าได้สูงและเสนอแนวทางใหม่ในการจัดการหน้าต่าง Bspwm เขียนด้วย C และสามารถกำหนดค่าโดยใช้ภาษาใดก็ได้ Bspwm เป็นตัวอย่างที่ดีของการปรับแต่งผู้ใช้ในตัวจัดการหน้าต่าง สิ่งนี้ทำให้ผู้ใช้ที่มีอำนาจและคนจรจัดที่สนใจเรียนรู้วิธีสร้างเวิร์กโฟลว์ที่เป็นเอกลักษณ์ของตนเองเป็นที่สนใจเป็นที่น่าสนใจ
การแบ่งพื้นที่ไบนารี คำอธิบาย
การแบ่งพาร์ติชันพื้นที่ไบนารีเป็นแนวคิดที่ว่าหน้าต่างในเดสก์ท็อปสามารถแสดงเป็นใบไม้ในต้นไม้ไบนารีแบบเต็มได้ ต้นไม้ไบนารีแบบเต็มคือโครงสร้างของการจัดลำดับข้อมูลโดยใช้โหนดแบบลำดับชั้น ข้อมูลใดๆ ภายในแผนผังนั้นจะถูกจัดเรียงเป็นสองส่วนโดยที่โหนดรูทจะมีสองโหนดเสมอ
Bspwm ทำงานกับโหนด ในทางปฏิบัติ เมื่อคุณสร้างหน้าต่างบนเดสก์ท็อปเปล่า bspwm จะสร้างโหนดเดียวสำหรับหน้าต่างนั้นที่จะวาง คุณสามารถคิดได้ว่าโหนดนั้นเป็นโหนดปลายสุด แต่เมื่อคุณสร้างหน้าต่างเพิ่มเติมในเดสก์ท็อปนั้น leaf node นั้นจะกลายเป็น root node และ bspwm จะสร้าง leaf nodes ใหม่สองอันที่เชื่อมต่ออยู่ จากนั้นจะวางหน้าต่างปัจจุบันและหน้าต่างที่สร้างขึ้นใหม่ไว้ในโหนดปลายสุดเหล่านั้น
หน้าต่างใหม่ใดๆ ที่จะถูกสร้างขึ้นหลังจากนี้ ตอนนี้จะเชื่อมโยงกับโหนดปลายสุดอันใดอันหนึ่ง เปลี่ยนเป็นโหนดรูทตามลำดับ
การจัดเรียงหน้าต่างในลักษณะนี้จะสร้างลำดับชั้นที่ชัดเจนภายในเดสก์ท็อป เป็นที่ชัดเจนว่าโหนดลีฟใดเกิดก่อนและโหนดใดที่มาจากโหนดรูทกลุ่มใดกลุ่มหนึ่ง สิ่งนี้มีประโยชน์เมื่อสร้างกฎการทำงานที่กำหนดเองสำหรับหน้าต่างและเค้าโครงหน้าต่างที่เฉพาะเจาะจง
การโยงคีย์และแถบสถานะ
สิ่งสำคัญคือต้องสังเกตว่า bspwm จัดการ windows เท่านั้น ซึ่งหมายความว่าฟังก์ชันอื่นๆ ที่ไม่เกี่ยวข้องกับการจัดการ windows จะไม่รวมอยู่ในแพ็คเกจ bspwm ซึ่งรวมถึงความสามารถในการผูกคีย์กับฟังก์ชันต่างๆ และความสามารถในการแสดงแถบสถานะ
เพื่อที่จะใช้การโยงคีย์ใน bspwm ผู้พัฒนาได้สร้างโปรแกรมแยกต่างหากที่เรียกว่า Simple X Hotkey Daemon (sxhkd) ซึ่งจัดการเฉพาะการโยงคีย์เท่านั้น อย่างไรก็ตาม สำหรับแถบสถานะ ผู้ใช้สามารถติดตั้งแอปพลิเคชันของบุคคลที่สามได้หลากหลาย เช่น โพลิบาร์และเลมอนบาร์
กำลังติดตั้ง 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
คำสั่งนี้จะสร้างโฟลเดอร์ bspwm ใน “/home/$USER/.config/” และสร้างไฟล์ 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
ตามที่ระบุโดย shebang ในบรรทัดแรก การกำหนดค่านี้เขียนด้วย Bash คำสั่งสองสามคำสั่งแรกคือโปรแกรมที่ฉันต้องการเรียกใช้ก่อนที่จะตั้งค่าการกำหนดค่าสำหรับ bspwm
อันแรก xsetroot เปลี่ยนเคอร์เซอร์ X เริ่มต้นเป็นตัวชี้ด้านซ้ายที่คุ้นเคยมากขึ้น อันที่สองเริ่มต้น hotkey daemon ของเราในพื้นหลัง
กฎการกำหนดค่า bspc และ bspc
คำสั่งต่อไปนี้ในการกำหนดค่ามีเฉพาะสำหรับ bspc bspc config
เกี่ยวข้องกับการกำหนดค่าทั่วไปของตัวจัดการหน้าต่าง มีทั้งการตั้งค่าความสวยงามและการใช้งาน
- border_width กำหนดความหนาเป็นพิกเซลของความกว้างขอบของหน้าต่าง
- window_gap เกี่ยวข้องกับจำนวนช่องว่าง เป็นพิกเซล รอบหน้าต่าง
- split_ratio กำหนดอัตราส่วนระหว่างโหนดปลายทั้งสองเมื่อแยกออก
- focus_follows_pointer กำหนดว่าจะให้ตัวชี้เมาส์ควบคุมว่าจะให้หน้าต่างใดได้รับการโฟกัส
- pointer_modifier กำหนดแป้นคีย์บอร์ดเพื่อปรับขนาดหน้าต่างโดยใช้เมาส์
- automatic_scheme กำหนดเค้าโครงของหน้าต่างเมื่อแยกในโหมดอัตโนมัติ
ในทางกลับกัน กฎ bspc เกี่ยวข้องกับพฤติกรรมของโปรแกรมเมื่อเปิดใน bspwm
- กฎข้อแรกในการกำหนดค่าตัวอย่างของเราบังคับให้ Chromium ทำงานในเดสก์ท็อปที่สอง
- กฎข้อที่สองในตัวอย่างของเราบังคับให้ Gimp ทำงานในเดสก์ท็อปที่แปด นอกจากนี้ยังบังคับให้ Gimp ทำงานในสถานะลอยตัวแทนที่จะเป็นไทล์เริ่มต้น สุดท้าย มันบังคับให้หน้าต่างโฟกัสไปที่ Gimp เมื่อโหลด
ด้วยเหตุนี้ เราจึงมีการกำหนดค่าพื้นฐานสำหรับ 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 + กะ + Q ในแป้นพิมพ์คำสั่ง:bspc quit
ได้รับการดำเนินการ อย่างไรก็ตาม การกด Alt + กะ + R จะดำเนินการ 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 หรือผ่านตัวจัดการการแสดงผลของคุณ
กำลังเรียกใช้ bspwm โดยใช้ xinitrc
วิธีที่ง่ายที่สุดในการเริ่มต้น bspwm คือการต่อท้ายไฟล์ในไฟล์ .xinitrc ของคุณ หากคุณใช้ลีนุกซ์รุ่นเล็ก นี่อาจเป็นวิธีที่คุณใช้โหลดตัวจัดการหน้าต่างอยู่แล้ว
ในการดำเนินการนี้ คุณจะต้องต่อท้ายข้อความต่อไปนี้ในบรรทัดสุดท้ายของ .xinitrc ของคุณ:
exec bspwm
การเรียกใช้ bspwm โดยใช้ตัวจัดการการแสดงผล
อย่างไรก็ตาม หากคุณใช้เดสก์ท็อปที่มีคุณสมบัติครบถ้วน เช่น Linux Mint หรือ Ubuntu คุณอาจต้องเลือก bspwm ในหน้าจอเข้าสู่ระบบ
ตัวอย่างเช่น ในการติดตั้ง Ubuntu ฉันต้องคลิกที่ไอคอนรูปเฟืองบนหน้าจอเข้าสู่ระบบ และเลือก bspwm จากเมนูบริบทเพื่อโหลด
ยินดีด้วย! ตอนนี้คุณมีการติดตั้ง bspwm ที่ใช้งานได้ ตอนนี้คุณสามารถปรับแต่งเดสก์ท็อปของคุณเพิ่มเติมโดยปรับแต่งไฟล์การกำหนดค่าและติดตั้งท่าเรือของบริษัทอื่น ต่อไปนี้คือเดสก์ท็อปที่ปรับแต่งมาเพื่อสร้างแรงบันดาลใจให้คุณ
คำถามที่พบบ่อย
1. ทำไมหน้าจอของฉันจึงเป็นสีดำเมื่อฉันเข้าสู่ระบบเป็นครั้งแรก
อาจเป็นเพราะคุณยังไม่ได้ตั้งค่าพื้นหลังเดสก์ท็อป กรณีนี้มักเกิดขึ้นหากคุณใช้การติดตั้งเพียงเล็กน้อย คุณสามารถเปลี่ยนธีมพื้นหลังได้โดยใช้โปรแกรมดูภาพ เช่น feh
2. ทำไมการโยงคีย์ของฉันจึงไม่ทำงาน
เป็นไปได้มากที่สุดเนื่องมาจากสองสิ่ง:
- การโยงคีย์ไม่โหลดเนื่องจาก sxhkd ไม่ทำงาน
- มีข้อผิดพลาดทางไวยากรณ์กับ sxhkdrc ข้อผิดพลาดที่พบบ่อยที่สุดที่เกิดขึ้นกับการกำหนดค่า sxhkd คือการเยื้อง ในการเริ่มต้นคำสั่งอย่างถูกต้อง คุณต้องแทรก Tab-spaces ในบรรทัดที่เยื้อง
3. เมื่อฉันเข้าสู่ระบบของฉัน มันเพิ่งกลับมาที่ข้อความแจ้งของระบบ
อาจเกิดจากหลายสาเหตุ อย่างไรก็ตาม สาเหตุที่พบบ่อยที่สุดคือปัญหาเกี่ยวกับไฟล์ .xinitrc คุณต้องตรวจสอบให้แน่ใจว่า bspwm เป็นโปรแกรมสุดท้ายที่ Xorg โหลดและไม่ได้ทำงานเป็นกระบวนการพื้นหลัง