Wayland บน Linux คืออะไร และแตกต่างจาก X อย่างไร
เผยแพร่แล้ว: 2023-07-17X11 หรือ X Window System ช่วยให้สภาพแวดล้อมเดสก์ท็อปแบบกราฟิกของคุณแสดงและควบคุมหน้าต่างได้ Wayland เป็นสิ่งทดแทนสำหรับ X11 ได้รับการออกแบบให้รวดเร็วและปลอดภัยยิ่งขึ้น นี่คือสิ่งที่คุณต้องรู้เกี่ยวกับพวกเขา
เวย์แลนด์คืออะไร?
X มีหลายชื่อ
X11 ทำงานอย่างไร
Wayland ทำงานอย่างไร
การยอมรับอย่างช้าๆของ Wayland โดยแอปพลิเคชัน
คุณใช้ Wayland หรือ X11 หรือไม่
คุณควรใช้ Wayland หรือ X11?
เวย์แลนด์คืออะไร?
Wayland เป็นสิ่งทดแทนที่ทันสมัยสำหรับ X11 ซึ่งเป็นระบบหน้าต่างเริ่มต้นบน Linux มานานหลายทศวรรษ Wayland เป็นโปรโตคอลการสื่อสารและกำหนดข้อความระหว่างเซิร์ฟเวอร์แสดงผล X Window และแอปพลิเคชันไคลเอ็นต์ โครงการ Wayland จัดเตรียมไคลเอ็นต์และไลบรารีเซิร์ฟเวอร์ที่ช่วยให้แอปพลิเคชันสามารถใช้โปรโตคอลได้
โครงการ Wayland เริ่มต้นโดยนักพัฒนา Red Hat ในปี 2551
X มีหลายชื่อ
X Window System เป็นระบบ windowing ซึ่งเปิดตัวครั้งแรกสำหรับระบบปฏิบัติการ Unix โดย Massachusetts Institute of Technology ในปี 1984 แอพพลิเคชั่นสามารถสร้างจากฟังก์ชั่นที่นำเสนอโดยระบบ windowing เพื่อสร้างส่วนติดต่อผู้ใช้
ภายในปี 1987 X Window System มาถึงเวอร์ชัน 11 และกลายเป็นที่รู้จักในชื่อ X11 ขณะนี้ได้รับการจัดการโดย X.Org Foundation ยังคงเป็นเวอร์ชัน 11 แม้ว่าจะมีการเปิดตัวที่มีขนาดเล็กกว่าจำนวนมากตั้งแต่ปี 1987 ในขณะที่เขียน เวอร์ชันที่เสถียรในปัจจุบันคือ X11R7.7
"X" ในชื่อไม่ได้หมายถึงสิบในเลขโรมัน และไม่ได้สื่อถึง "Xtra", "Xtended" หรืออะไรทำนองนั้น ระบบหน้าต่างก่อนหน้านี้เรียกว่า "W" สำหรับ "หน้าต่าง" และพวกเขาก็ย้ายไปที่ตัวอักษรถัดไปในตัวอักษรเมื่อเริ่มโครงการใหม่
คุณจะได้ยิน X Window System เรียกว่า “X”, “X11”, “Xorg”, “X Windows” และ “X Window System”
X11 ทำงานอย่างไร
X Window System จัดการเหตุการณ์ระดับต่ำและดั้งเดิม เช่น การโต้ตอบกับเมาส์ และการวาดและการย้ายหน้าต่าง แอปพลิเคชันจัดการภาพจริงและการออกแบบส่วนต่อประสาน ลักษณะที่ปรากฏของหน้าต่าง ปุ่มที่มี และตำแหน่งที่ตั้งของปุ่มเหล่านี้ เป็นตัวเลือกที่โปรแกรมเมอร์สร้าง X Window System ดึงการออกแบบที่เป็นผลลัพธ์ไปยังหน้าจอ
X11 ให้คำจำกัดความสำหรับการสื่อสารที่ต้องผ่านระหว่างส่วนประกอบต่างๆ ของระบบ X Window ที่ใช้งานได้ จำเป็นต้องมีการสื่อสารนี้เนื่องจากรหัสที่แอปพลิเคชันที่เปิดใช้งาน X ใช้เพื่อวาดหน้าต่างและองค์ประกอบอินเทอร์เฟซไม่ได้อยู่ในแอปพลิเคชัน งานนั้นใช้ร่วมกันระหว่างเซิร์ฟเวอร์ X และ Window Manager
แอปพลิเคชันเป็นไคลเอนต์ของเซิร์ฟเวอร์ X Window Manager เป็นไคลเอนต์ประเภทพิเศษ เซิร์ฟเวอร์ X มีหน้าที่รับผิดชอบในการจัดการทรัพยากร ดำเนินการคำขอวาดภาพ และจัดการเหตุการณ์ต่างๆ เช่น การกดปุ่มและการคลิกเมาส์ไปยังแอปพลิเคชันที่เหมาะสม
นอกจากนี้ยังทำหน้าที่เป็นคนกลางในการสื่อสารระหว่าง Window Manager และแอปพลิเคชัน โดยเป็นนายหน้าส่งข้อความไปมาระหว่างกัน Window Manager จะรักษารายการของหน้าต่างที่แอปพลิเคชันเปิดไว้ ตำแหน่งที่อยู่บนหน้าจอ ขนาดหน้าต่าง หากมีการเหลื่อมกัน และอื่นๆ
ตัวจัดการหน้าต่างแบบรวมจะรักษาบัฟเฟอร์นอกหน้าจอสำหรับแต่ละหน้าต่าง โดยจะรวมบัฟเฟอร์เหล่านี้เป็นภาพเดียวที่แสดงถึงหน้าต่างบนสุด ซึ่งแสดงถึงเดสก์ท็อปทั้งหมด ซึ่งเขียนลงบนหน้าจอ
สภาพแวดล้อมเดสก์ท็อปแบบกราฟิกสมัยใหม่ทั้งหมด รวมถึง GNOME และ KDE ใช้ตัวจัดการหน้าต่างแบบรวม
Wayland ทำงานอย่างไร
Wayland มีจุดประสงค์เพื่อแก้ปัญหาของ X11 สถาปัตยกรรม X11 ต้องการข้อความจำนวนมาก เซิร์ฟเวอร์ X ตั้งอยู่ระหว่างไคลเอ็นต์และ Window Manager มันยังอยู่ระหว่างทุกสิ่งและ—ผ่านเคอร์เนล—ฮาร์ดแวร์กราฟิก ปริมาณการส่งข้อความอาจนำไปสู่ความหน่วงและประสบการณ์การมองเห็นที่ล้าหลังและตื่นตระหนก
มีฐานรหัสขนาดใหญ่ด้วย มีแอปพลิเคชันเซิร์ฟเวอร์ แอปพลิเคชัน Window Manager และไลบรารี X11 ที่ไคลเอนต์ใช้ ยิ่งรหัสฐานของคุณมีขนาดใหญ่ (และเก่ากว่า) มากเท่าไหร่ การรักษาก็ยิ่งยากขึ้นเท่านั้น และคุณก็จะยิ่งมีปัญหากับรหัสเดิมมากขึ้นเท่านั้น
ด้วยการเปลี่ยนแปลงสถาปัตยกรรม Wayland ได้ปรับปรุงโค้ดเบสให้ทันสมัยและคล่องตัว ให้ประโยชน์ด้านประสิทธิภาพและความปลอดภัยที่ดีขึ้น
พวกเขาได้รวมเซิร์ฟเวอร์และตัวจัดการหน้าต่างไว้ในแอปพลิเคชันเดียว พวกเขาลบรหัสใด ๆ ที่ทำหน้าที่ซึ่งขณะนี้ดำเนินการโดยเคอร์เนล แทนที่จะพยายามทำซ้ำ พวกเขาใช้ประโยชน์จากฟังก์ชันการทำงานของเคอร์เนล
ด้วย Wayland ผู้เรียบเรียงและแอปพลิเคชันไคลเอนต์จะสื่อสารกันโดยตรง ตัวจัดองค์ประกอบจะรักษาการแมปภายในของหน้าต่างที่อยู่ที่ตำแหน่งบนเดสก์ท็อป ขนาดและสถานะที่หน้าต่างเหล่านั้นอยู่ มันทำหน้าที่เชื่อมโยงเหตุการณ์การเปลี่ยนแปลงของแป้นพิมพ์ เมาส์ และหน้าต่าง และส่งไปยังแอปพลิเคชันที่เป็นเจ้าของหน้าต่างเหล่านั้น
แอปพลิเคชันจะอัปเดตอินเทอร์เฟซผู้ใช้ตามนั้น ข้อแตกต่างที่สำคัญคือการเรนเดอร์นั้นดำเนินการภายในแอปพลิเคชันเอง โดยใช้ไลบรารี Wayland ที่เชื่อมโยง
แอปพลิเคชันจะอัปเดตบัฟเฟอร์ที่ใช้เพื่อเก็บหน้าต่าง หรือสร้างหน้าต่างใหม่แล้วละทิ้งหน้าต่างเก่า จากนั้นแอปพลิเคชันไคลเอ็นต์จะส่งการแจ้งเตือนไปยังผู้เรียบเรียง บอกให้อัปเดตการแมปหน้าต่างและใช้บัฟเฟอร์วิดีโอใหม่หรือที่อัปเดต
สถาปัตยกรรมที่เรียบง่ายและการออกแบบโค้ดที่ทันสมัยนี้มอบการปรับปรุงประสิทธิภาพ โดยเฉพาะอย่างยิ่งการปรับขนาดหน้าต่างและการลาก ทำให้ดูราบรื่นและลื่นไหล
การยอมรับอย่างช้าๆของ Wayland โดยแอปพลิเคชัน
Wayland เป็นระบบหน้าต่างเริ่มต้นใน Debian 10 และใหม่กว่า, Fedora 34 หรือใหม่กว่า, Ubuntu 18.04 หรือใหม่กว่า และการกระจายอื่นๆ เช่น Arch Linux อย่างไรก็ตาม เรื่องนี้ Wayland รันแอปพลิเคชัน X11 บ่อยกว่านั้น
มีชั้นความเข้ากันได้ที่เรียกว่า XWayland ที่อนุญาตให้แอปพลิเคชัน X11 ทำงานภายใต้ Wayland สิ่งนี้จำเป็นเนื่องจากแอปพลิเคชัน X11 ส่วนใหญ่ไม่ได้รับการแก้ไขและย้ายไปยัง Wayland
ในสภาพแวดล้อมเดสก์ท็อปที่มีตัวประกอบ Wayland เช่น GNOME แอปพลิเคชันที่เป็นทางการ เช่น โปรแกรมแก้ไขข้อความและแผนที่ GNOME ไฟล์ และปฏิทินล้วนเป็นแอปพลิเคชันดั้งเดิมของ Wayland แต่แอปพลิเคชัน X11 ส่วนใหญ่ยังคงไม่ถูกแตะต้อง แอปพลิเคชันดั้งเดิมของ X11
มิดเดิลแวร์ XWayland มักจะทำงานได้ดี แต่อาจมีปัญหากับแอปพลิเคชัน X11 บางตัวที่ทำหน้าที่เกี่ยวกับหน้าจอในระดับต่ำ เช่น การบันทึกหน้าจอ การใช้ Wayland กับ NVIDIA อาจสร้างความเจ็บปวดได้พอๆ กับ X11 แม้ว่าฉันจะไม่มีปัญหาเกี่ยวกับไดรเวอร์รายวันเมื่อใช้กับ NVIDIA GeForce GT 1030 GPU
ผู้เขียนแอปพลิเคชัน X11 บางคนมักจะหวังว่าแอปพลิเคชันของตนจะทำงานได้ดีกับ XWayland และพวกเขาสามารถหลีกเลี่ยงที่จะต้องทำใหม่ในแอปพลิเคชัน Wayland ไม่ต้องแปลกใจหากการครอบครองและการย้ายไปยัง Wayland นั้นใช้เวลานานและช้า เนื่องจากแอปพลิเคชันใหม่ ๆ นำมาใช้ แต่แอปพลิเคชัน X11 ที่มีอยู่ส่วนใหญ่ยังคงอยู่เช่นเดิม ทำให้ความหวังของพวกเขาอยู่ที่ XWayland
ที่เกี่ยวข้อง: มีอะไรใหม่ใน Ubuntu 21.04 'Hirsute Hippo'
คุณใช้ Wayland หรือ X11 หรือไม่
หากคุณใช้ลีนุกซ์รุ่นใหญ่รุ่นใดรุ่นหนึ่ง เป็นไปได้ว่าคุณกำลังใช้ Wayland อยู่แล้ว คุณสามารถตรวจสอบได้โดยออกคำสั่งต่อไปนี้
สะท้อน $XDG_SESSION_TYPE
ในระบบที่ใช้ Wayland เอาต์พุตจะเป็น:
และบนระบบที่รัน X Window System คุณจะเห็น:
ไม่ค่อยมีการตั้งค่าตัวแปรสภาพแวดล้อม XDG_SESSION_TYPE
ในกรณีนี้ คุณสามารถใช้คำสั่งนี้แทน:
loginctl แสดงเซสชัน $(loginctl แสดงผู้ใช้ $(whoami) -p แสดง --value) -p ประเภท --value
คำสั่ง loginctl
ที่ซ้อนอยู่ภายในใช้คำสั่ง show-user
เพื่อแสดงคุณสมบัติของผู้ใช้ที่มีชื่อ คำสั่ง whoami
ให้ชื่อผู้ใช้ปัจจุบันแก่เรา ตัวเลือก -p
(คุณสมบัติ) จำกัดเอาต์พุตจาก loginctl
เป็นข้อมูลเกี่ยวกับการตั้งค่า "แสดง" และเราใช้ตัวเลือก --value
เพื่อส่งคืนค่าเท่านั้น เราไม่ต้องการให้มีสตริง “Display=” ในการตอบกลับจาก loginctl
ทั้งหมดนี้ให้ ID เซสชันแก่เรา
เราส่ง ID เซสชันไปยังภายนอก loginctl
และใช้คำสั่ง show-session
เพื่อแสดงแอตทริบิวต์ของเซสชัน เราใช้ตัวเลือก -p
(คุณสมบัติ) เพื่อจำกัดเอาต์พุตให้เป็นข้อมูลเกี่ยวกับประเภทเซสชัน และใช้ตัวเลือก --value
เพื่อแสดงค่าโดยไม่มีป้ายกำกับ "Type="
บนคอมพิวเตอร์ที่ใช้ Wayland คุณจะเห็น:
หากคุณใช้ X Window System คุณจะเห็น:
คุณควรใช้ Wayland หรือ X11?
เว้นแต่คุณจะมีปัญหา คุณสามารถใช้สิ่งที่คุณใช้อยู่แล้ว แต่ถ้าคุณสังเกตเห็นความไม่เสถียรหรือการอัปเดตหน้าจอกระตุก คุณสามารถลองเปลี่ยนไปใช้อันใดก็ได้ที่คุณไม่ได้ใช้
ใน GNOME หากคุณต้องการสลับและลองใช้ระบบอื่น ให้คลิกชื่อผู้ใช้ของคุณที่หน้าจอเข้าสู่ระบบ จากนั้นคลิกไอคอนรูปเฟืองที่มุมขวาล่างของหน้าจอ
เมนูจะเสนอ GNOME รุ่นต่างๆ ให้คุณ ตัวเลือกที่กล่าวถึง "Xorg" ใช้ระบบ X Window และตัวเลือกที่ไม่ใช้ Wayland
ที่เกี่ยวข้อง: วิธีแสดงรายการตัวแปรสภาพแวดล้อมบน Linux