Sistem X Window menggunakan arsitektur client-server. Server X berjalan pada mesin yang memiliki tampilan (monitor + perangkat input), sedangkan klien X dapat berjalan di mesin lain, dan terhubung ke server X menggunakan protokol X (tidak secara langsung, melainkan dengan menggunakan perpustakaan, seperti Xlib, atau XCB yang digerakkan oleh non-blocking yang lebih modern). Protokol X dirancang agar dapat diperluas, dan memiliki banyak ekstensi (lihat xdpyinfo(1)
).
Server X hanya melakukan operasi tingkat rendah, seperti membuat dan menghancurkan jendela, melakukan operasi menggambar (saat ini sebagian besar gambar dilakukan pada klien dan dikirim sebagai gambar ke server), mengirimkan peristiwa ke windows, ... Anda dapat melihat betapa sedikitnya server X melakukan dengan menjalankan X :1 &
(menggunakan nomor apa pun yang belum digunakan oleh server X lain) atau Xephyr :1 &
(Xephyr menjalankan server X yang tertanam di server X Anda saat ini) dan kemudian menjalankan xterm -display :1 &
dan beralih ke server X baru (Anda mungkin perlu mengatur otorisasi X menggunakan xauth(1)
).
Seperti yang Anda lihat, server X tidak banyak melakukan hal itu, ia tidak menggambar judul bar, tidak melakukan minimalisasi / ikonisasi jendela, tidak mengelola penempatan jendela ... Tentu saja, Anda dapat mengontrol penempatan jendela secara manual menjalankan perintah suka xterm -geometry -0-0
, tetapi Anda biasanya akan memiliki klien X khusus melakukan hal-hal di atas. Klien ini disebut manajer jendela . Hanya ada satu window manager yang aktif pada suatu waktu. Jika Anda masih memiliki terbuka telanjang X server dari perintah sebelumnya, Anda dapat mencoba untuk menjalankan sebuah window manager di atasnya, seperti twm
, metacity
, kwin
, compiz
, larswm
, pawm
, ...
Seperti yang kami katakan, X hanya melakukan operasi tingkat rendah, dan tidak menyediakan konsep tingkat tinggi seperti tombol, menu, bilah alat, ... Ini disediakan oleh perpustakaan yang disebut toolkit , misalnya: Xaw, GTK, Qt, FLTK, ...
Lingkungan desktop adalah kumpulan program yang dirancang untuk memberikan pengalaman pengguna yang terpadu. Jadi lingkungan desktop biasanya menyediakan panel, peluncur aplikasi, baki sistem, panel kontrol, infrastruktur konfigurasi (tempat menyimpan pengaturan). Beberapa lingkungan desktop yang terkenal adalah KDE (dibangun menggunakan Qt toolkit), Gnome (menggunakan GTK), Pencerahan (menggunakan perpustakaan toolkit sendiri), ...
Beberapa efek desktop modern sebaiknya dilakukan menggunakan perangkat keras 3d. Jadi komponen baru muncul, manajer komposit . Ekstensi X, ekstensi XComposite, mengirimkan konten jendela ke manajer komposit. Manajer komposit mengubah konten tersebut menjadi tekstur dan menggunakan perangkat keras 3d melalui OpenGL untuk menyusunnya dalam banyak cara (alpha blending, proyeksi 3d, ...).
Belum lama ini, server X berbicara langsung dengan perangkat keras. Sebagian besar penanganan perangkat ini telah pindah ke kernel OS: DRI (mengizinkan akses ke perangkat keras 3d oleh X dan klien rendering langsung), evdev (antarmuka terpadu untuk penanganan perangkat input), KMS (memindahkan pengaturan mode grafis ke kernel) , GEM / TTM (manajemen memori tekstur).
Jadi, dengan kerumitan penanganan perangkat sekarang sebagian besar di luar X, menjadi lebih mudah untuk bereksperimen dengan sistem jendela yang disederhanakan. Wayland adalah sistem jendela berdasarkan konsep manajer komposit, yaitu sistem jendela adalah manajer komposit. Wayland memanfaatkan penanganan perangkat yang telah keluar dari X dan menjadikannya menggunakan OpenGL.
Sedangkan untuk Unity, ini adalah lingkungan desktop yang dirancang untuk memiliki antarmuka pengguna yang cocok untuk netbook.