Windows ช่วยให้คุณสามารถติดตั้งเดสก์ท็อปเดี่ยวได้เพียงครั้งเดียวโดยใช้ API / เฟรมเวิร์กเดียวทั้งหมดดำเนินการโดย Microsoft
บนระบบ Unix คุณจะได้รับ API / framework (X11 / X Window System) ซึ่งมีการใช้งานหลายอย่าง (Xorg, Xfree86) ซึ่งคุณจะได้รับ API / framework ระดับสูงขึ้น (GTK +, Qt, ... ) เนื่องจาก raw X11 นั้นดั้งเดิมมากคุณจะได้รับเดสก์ท็อปที่หลากหลาย (Gnome, KDE, ... ) ซึ่งทำโดยคนอื่น
ยิ่งไปกว่านั้นระบบ X11 ได้รับการออกแบบตั้งแต่แรกเริ่มโดยคำนึงถึง GUI ระยะไกล - นั่นคือเครื่อง lokal แสดง GUI ของแอปพลิเคชั่นที่รันจากระยะไกล - ซึ่งแนะนำแนวคิดของ "X Server" และ "X Client"
จากนั้นมีศัพท์เฉพาะที่ "รู้สึก" ในทางที่ผิดสำหรับผู้มาใหม่: เครื่องท้องถิ่นของคุณกำลังเรียกใช้ "X Server" ที่ให้บริการ "display a GUI" ในขณะที่เครื่องระยะไกลคือ "X Client" ที่ใช้บริการ บนเครื่องของคุณเพื่อแสดง GUI
นั่นคือภาพรวมอย่างรวดเร็ว เมื่อคุณได้รับการแยกออกทำความเข้าใจกับบทความ / โพสต์ฟอรั่มในเรื่องควรจะง่ายขึ้นมาก
แก้ไข:เพื่อตอบความคิดเห็นแรกที่สองของ OP
ใช่ "X11" เป็นเพียงโปรโตคอลและ Xorg / XFree86 เป็นการนำไปใช้งานสองแบบ ในระดับพื้นฐาน X11 เป็นเพียงการวาดเส้นและจุดซึ่งไม่เป็นประโยชน์อย่างมากหากคุณต้องการทำ GUI
ด้านบนของโพรโทคอล X11 ผู้คนใช้งานหลายสิ่งหลายอย่างและมันค่อนข้างยากที่จะทำการเปรียบเทียบ 1: 1 กับ Windows เพราะ Microsoft ไม่เคยใส่ใจที่จะแยกสิ่งต่าง ๆ ออกจากกันจริงๆ นอกจากนี้ฉันไม่ใช่นักพัฒนาประเภท GUI นั่นคือประสบการณ์จริงของฉันกับทั้งสองระบบนั้นมีเพียงเล็กน้อย
ที่ด้านล่าง "ตัวจัดการหน้าต่าง" จัดเตรียมหน้าต่าง (จัดการเส้นขอบปุ่มปิด / ย่อ / ขยายขนาดขยายใหญ่สุด ฯลฯ ) และเสนอ "อสังหาริมทรัพย์" ภายในหน้าต่างไปยังชุดเครื่องมือวิดเจ็ต มีตัวจัดการหน้าต่างหลายตัวบางตัวเลียนแบบระบบอื่น ๆ (Windows, MacOS, AmigaOS, อะไรก็ตาม) และพวกมันส่วนใหญ่สามารถใช้แทนกันได้โปร่งใสกับระบบที่เหลืออยู่
"ชุดเครื่องมือวิดเจ็ต" นำเสนอปุ่มตัวเลื่อนฟิลด์ข้อความและอื่น ๆ เพื่อสร้าง GUI ของคุณ นี่คือสิ่งที่คุณ (ในฐานะนักพัฒนาแอปพลิเคชัน) ได้รับ "เห็น", ฉลาด API และสิ่งที่ตัดสินใจว่าส่วนใหญ่ "รูปลักษณ์และความรู้สึก" ของแอปพลิเคชันของคุณ
"เดสก์ท็อป" สร้างแอปพลิเคชั่นจำนวนมากด้านบนของชุดเครื่องมือ / ตัวจัดการหน้าต่างวิดเจ็ตบางชุดเพื่อให้รูปลักษณ์และความรู้สึกสอดคล้องกัน คุณไม่ต้องกังวลกับสิ่งเหล่านี้เว้นแต่ว่าคุณต้องการพัฒนาเดสก์ท็อปเอง
เดสก์ท็อป "Gnome" ใช้ชุดเครื่องมือวิดเจ็ต "GTK +" ที่ด้านบนของตัวจัดการหน้าต่าง "Metacity"
เดสก์ท็อป "KDE" ใช้ชุดเครื่องมือวิดเจ็ต "Qt" ที่ด้านบนของตัวจัดการหน้าต่าง "KWin"
โปรดทราบว่าโดยเฉพาะอย่างยิ่งทั้งสอง GTK + และ Qt ได้พัฒนาเกินกว่า "เครื่องมือชุดเครื่องมือ" ที่เรียบง่ายเป็น "กรอบการพัฒนาโปรแกรมประยุกต์" หากคุณต้องการพัฒนาแอพ GUI สำหรับ Linux อย่างมีประสิทธิภาพคุณต้องเลือกว่าจะใช้หนึ่งในสองอย่างนี้ มีทางเลือกมากขึ้นถ้าคุณต้องการแอพ "จริงจัง" มากขึ้น (ไม่ต้องการการพึ่งพาไลบรารีขนาดใหญ่) แต่วันนี้ระบบส่วนใหญ่มี GTK + และ Qt libs ติดตั้งอยู่แล้ว
เป็นไปได้อย่างสมบูรณ์ที่จะใช้แอป Qt บนเดสก์ท็อป Gnome หรือแอพ GTK + บนเดสก์ท็อป KDE (มันไม่ได้เป็นเช่นนั้นเสมอไป) ดังนั้นคุณต้องกังวลเกี่ยวกับความเข้ากันได้เล็กน้อย ด้วยตัวเลือกระหว่างแอพที่มีฟังก์ชั่นการเปรียบเทียบสองแอพผู้คนมักจะชอบแอพที่ใช้วิดเจ็ต "ดั้งเดิม" ของเดสก์ท็อปที่เลือก แต่ฉันไม่ต้องกังวลเกี่ยวกับเรื่องนั้น
หัวข้อย่อยที่สำคัญกว่าอื่น ๆ ในการเลือก "ชุดเครื่องมือวิดเจ็ต": เงื่อนไขการออกใบอนุญาตสนับสนุนภาษาที่คุณเลือกความเข้ากันได้ข้ามแพลตฟอร์ม
โพสต์ Scriptum : กลับมาอีกหลายปีต่อมาผมได้เลือกขึ้นประสบการณ์การเขียนโปรแกรม GUI ของตัวเองและตระหนักถึงสิ่งหนึ่งที่ขาดหายไปในการอธิบายข้างต้นหากคุณกำลังมองหา "วิธีที่จะไป" คำแนะนำ: wxWidgets นี่คือกรอบที่สร้างอยู่ด้านบนของสิ่งที่คุณกำลังใช้กำเนิดและช่วยให้พกพาโปร่งใสพัฒนา GUI โดยไม่ต้องเสียสละประสิทธิภาพหรือมีสาย licensind ใด ๆ ที่แนบ C ++ API เป็นเส้นทางที่ฉันเลือกสำหรับความต้องการ GUI ของฉันและฉันรู้สึกว่าควรได้รับการกล่าวถึงอย่างครบถ้วน