การตกแต่งฝั่งไคลเอ็นต์

การตกแต่งฝั่งไคลเอ็นต์ ( CSD ) คือแนวคิดที่อนุญาตให้ซอฟต์แวร์แอปพลิเคชันกราฟิก รับผิดชอบในการวาดการตกแต่งหน้าต่าง ของตนเอง ซึ่งในอดีตเป็นความรับผิดชอบของ ตัว จัดการหน้าต่าง[ 1 ]
บางครั้งการตกแต่งฝั่งไคลเอ็นต์ใช้เพื่ออ้างถึงแอปพลิเคชันที่ไม่มีแถบชื่อเรื่องแบบดั้งเดิม อย่างไรก็ตาม นี่เป็นการใช้คำที่ไม่ถูกต้อง เนื่องจากแม้แต่แอปพลิเคชันที่มีแถบชื่อเรื่องพื้นฐานก็สามารถตกแต่งฝั่งไคลเอ็นต์ได้[ 2 ]
การใช้การตกแต่งฝั่งไคลเอ็นต์แทนการตกแต่งฝั่งเซิร์ฟเวอร์แบบดั้งเดิม ทำให้แอปพลิเคชันสามารถวาดแถบชื่อเรื่องของตนเองได้ ซึ่งช่วยให้สามารถปรับแต่งการตกแต่งหน้าต่างและเพิ่มฟังก์ชันการทำงานเพิ่มเติม ( องค์ประกอบควบคุมกราฟิก ) ลงในสิ่งที่โดยปกติจะเป็นแถบตัวจัดการหน้าต่างทั่วไปที่มีพื้นที่ว่างมากในหน้าต่างที่ขยายใหญ่สุด[ 3 ]
ศัพท์เฉพาะ
คำว่าClient-Side Decorationมาจากระบบ X Window Systemซึ่งClientคือแอปพลิเคชันที่แสดงผลหน้าต่างและส่งไปยัง X Serverที่ควบคุมการแสดงผล ส่วนอีกทางเลือกหนึ่งเรียกว่าServer-Side Decoration (SSD) แม้ว่าในระบบ X การตกแต่งจะถูกวาดโดย Window Manager ซึ่งไม่ใช่ "เซิร์ฟเวอร์" จริงๆ คำศัพท์เหล่านี้ยังใช้ในWayland ด้วย โดย Client คือแอปพลิเคชันที่แสดงผลหน้าต่างและส่งไปยัง Wayland Server ซึ่งควบคุมการแสดงผลและทำหน้าที่เป็นCompositing Window Managerเช่น กัน
การนำไปใช้
ชุดเครื่องมือวิดเจ็ต
จีทีเค
GTKเป็นชุดเครื่องมือ GUI แรกบน Linux ที่ใช้การตกแต่งฝั่งไคลเอ็นต์โดยใช้วิดเจ็ต GtkHeaderBar [ 4 ]
GtkHeaderBar รวมแถบชื่อเรื่องแถบเมนูและแถบเครื่องมือเข้าไว้ในแถบแนวนอนเดียว เพื่อเพิ่มพื้นที่ให้กับเนื้อหาของแอปพลิเคชัน ซึ่งอาจช่วยลดพื้นที่ว่างเปล่าที่ไม่จำเป็นได้ สิ่งนี้ช่วยให้ได้ UI ที่ยืดหยุ่นและ UX ที่สม่ำเสมอในอุปกรณ์คอมพิวเตอร์ขนาด ต่างๆ ตั้งแต่ระบบเดสก์ท็อปไปจนถึง อุปกรณ์ ขนาดเล็ก โดยการลบส่วนประกอบแบบดั้งเดิมที่เน้นเดสก์ท็อปออกจากแอปพลิเคชัน ฟีเจอร์นี้ได้รับการสนับสนุนอย่างเต็มที่ในGNOME Shellและถูกใช้งานอย่างแพร่หลายใน แอปพลิเค ชันGNOME
ยูดับบลิวพี
แอปพลิเคชัน Universal Windows Platformสามารถเลือกที่จะวาดแถบชื่อเรื่องของตนเองได้[ 5 ]
ระบบปฏิบัติการ macOS
ในmacOSแอ ปพลิเค ชัน AppKitจะใช้การตกแต่งฝั่งไคลเอ็นต์เมื่อใช้ widget NSWindow [ 6 ]
อิเล็กตรอน
Electronมีตัวเลือกให้ใช้หน้าต่างแบบไร้กรอบ (ไม่มีแถบเครื่องมือ แถบเมนู แท็บ) อย่างไรก็ตาม แอปพลิเคชันต้องรับผิดชอบในการวาดเงาของตัวเอง[ 7 ]
ชุดเครื่องมือดีพิน

Deepin Tool Kit เป็นชุดเครื่องมือวิดเจ็ต ขนาดเล็กที่ได้รับการดัดแปลง โดยใช้Qt 6 ซึ่งใช้ในสภาพแวดล้อมเดสก์ท็อป Deepin
แอปพลิเคชัน
ตัวอย่างการใช้งานที่โดดเด่นซึ่งมีการตกแต่งฝั่งไคลเอ็นต์:
- Steam เคยใช้ ชุดเครื่องมือวิดเจ็ตของตัวเองที่เรียกว่า "VGUI" ก่อนที่จะเปลี่ยนไปใช้ UI ที่ใช้ HTML ซึ่งแสดงผลโดยCEF ที่ฝังอยู่ใน Steam ในปี 2023 แม้ว่ากล่องโต้ตอบบางกล่องจะยังคงแสดงผลแบบดั้งเดิมหรือใช้ VGUI อยู่ก็ตาม[ 8 ]
- Firefoxจะใช้การตกแต่งฝั่งไคลเอ็นต์เมื่อปิดใช้งานแถบชื่อเรื่อง
- Google Chromeและเบราว์เซอร์อื่นๆ ที่ใช้ Chromiumเป็นพื้นฐาน ใช้การตกแต่งฝั่งไคลเอ็นต์บน Windows และ macOS และรองรับทั้งการตกแต่งฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์บน Linux
- Discord เป็น แอปพลิเคชัน ที่พัฒนาด้วย Electronดังนั้นจึงรองรับการตกแต่งทั้งฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์บน Windows, macOS และ Linux
เซิร์ฟเวอร์แสดงผล
เวย์แลนด์
Waylandได้รับการออกแบบให้มีการตกแต่งฝั่งไคลเอ็นต์ (รวมถึงเงาของหน้าต่าง) เป็นค่าเริ่มต้น แต่มีโปรโตคอลเสริมที่เรียกว่า xdg-decoration ซึ่งอนุญาตให้แอปพลิเคชัน (ไคลเอ็นต์) สอบถามว่าตัวจัดการหน้าต่างรองรับการตกแต่งฝั่งเซิร์ฟเวอร์หรือไม่ และหากเป็นเช่นนั้น ไคลเอ็นต์สามารถร้องขอได้[ 9 ]
- Mutterซึ่งเป็นคอมโพสิเตอร์ที่ใช้โดยGNOME Shellภายใต้ Wayland รองรับเฉพาะการตกแต่งฝั่งไคลเอ็นต์เท่านั้น[ 10 ]
- KWinซึ่งเป็นคอมโพสิเตอร์ที่ใช้โดย KDE Plasma รองรับการตกแต่งทั้งฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์ โดยค่าเริ่มต้นจะใช้ฝั่งเซิร์ฟเวอร์บน Wayland [ 11 ] [ 12 ]
- cosmic-comp ซึ่งเป็นคอมโพสิเตอร์ที่ใช้โดยCOSMICรองรับการตกแต่งทั้งฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์ โดยค่าเริ่มต้นจะใช้ฝั่งไคลเอ็นต์[ 13 ] (cosmic-comp ไม่ใช่ตัวจัดการหน้าต่าง X11)
- wlroots ซึ่งเป็น Wayland compositor ที่ใช้โดยSway , labwc, Wayfire และ Wayland compositor ขนาดเล็กอื่นๆ รองรับการตกแต่งทั้งฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์[ 14 ]
ข้อจำกัด
หากแอปพลิเคชันค้าง ผู้ใช้จะไม่สามารถปิดได้โดยการคลิกปุ่มปิดในกรอบหน้าต่าง[ 12 ]
ประวัติศาสตร์
- ในปี 2008 Adobeได้ออกPhotoshop CS4 ซึ่งใช้การตกแต่งฝั่งไคลเอ็นต์
- ในปี 2012 ไมโครซอฟต์ได้นำการตกแต่งฝั่งไคลเอ็นต์มาใช้ใน ภาษาการออกแบบ Metro ใหม่ โดยการเพิ่มวัตถุแถบเครื่องมือ เช่น ปุ่มย้อนกลับ ลงในแถบชื่อเรื่องของหน้าต่าง
- ในปี 2556 GTK ได้เพิ่มการสนับสนุนการตกแต่งฝั่งไคลเอ็นต์ด้วยการเปิดตัว GTK 3.10 [ 15 ] [ 16 ]