È tutto molto modulare e flessibile; tuttavia questo porta alla complessità.
"X Server" guida il dispositivo di visualizzazione. Fornisce servizi di grafica per i clienti, e quei servizi sono abbastanza semplici - come ad esempio:
"Give me a window frame to draw in"
"Put this bitmap here"
"Draw a horizontal black line 100px wide"
"Render the text 'hello' at (100,100)"
"Tell me if any mouse clicks or key presses have been aimed at my window frame"
C'è una libreria chiamata Xlib, fornito da X, che ha un'interfaccia standard per tutti questi semplici servizi. Qualsiasi programma che voglia utilizzare il display del server X utilizza questa libreria client e viene chiamato X Client. Xlib sa come connettersi a un server X arbitrario - sulla macchina locale, o via TCP/IP attraverso la LAN, o in tutto il mondo - per chiamare questi servizi.
Il Window Manager, che è solo un altro programma X client, è responsabile del "look and feel" del desktop - come si spostano e si organizzano finestre, ecc. Perché il window manager disegna tutte le decorazioni delle finestre, può far sembrare il desktop WindowsXP, Mac o NeXTSTEP.
Parte della filosofia di X era quella di definire "meccanismo e non politica" - nel senso che ti danno gli strumenti per farlo, ma non ti dicono come usare quegli strumenti. Uno di questi strumenti è il window manager, che può essere sostituito a piacimento.
Molte applicazioni X moderne vengono scritte per utilizzare un ambiente desktop come Gnome o KDE. Questo offre a questi programmi un insieme consistente di pulsanti e controlli per disegnare e un'interfaccia coerente per alcune cose non incluse tradizionalmente in X, ma spesso considerate parte di un desktop - come ad esempio come rispondere al trascinamento della selezione o come presentare una finestra di dialogo selettore file standard.
L'ambiente desktop di solito fornisce un modello di oggetto o un'interfaccia programmatica che si occupa di rendere tutte le richieste dei client X semplici e consente al programma di gestire le cose più importanti. La rimozione di queste chiamate di basso livello offre un altro importante vantaggio: l'indipendenza dalla piattaforma.
Molti ambienti desktop includono un gestore di finestre, in modo che l'aspetto di comandi e pulsanti di una finestra sia coerente e funzioni con la metafora del desktop fornita dall'ambiente. Tuttavia, di solito può essere ancora spento.
La separazione della X Server (in esecuzione sul display) e il X client (volendo utilizzare il display) ha alcuni risvolti:
Il sistema grafico è separato dai programmi con interfaccia grafica, e loro sono completamente separati come un browser web e un server web.
Quindi il programma GUI potrebbe non essere visualizzato sul computer locale, proprio come un browser Web non deve puntare a un server Web sul computer locale.
Una macchina può eseguire SOLO il client, con il server X altrove.
La macchina con il display non deve eseguire il client - può eseguire JUST il server X, e tutti i client possono girare su un computer dedicato. Questo è il thin client originale: grandi programmi in esecuzione su un server centrale di grandi dimensioni - con interazione grafica utente gestita da hardware dedicato sulla scrivania di fronte all'utente.
È necessario sapere qual è l'indirizzo di rete del server X in modo da poter dire ai programmi della GUI dove visualizzare la propria GUI. (in genere viene eseguita impostando la variabile di ambiente DISPLAY)
È possibile visualizzare molti programmi, da molte macchine diverse, tutti sullo stesso desktop allo stesso tempo. Tutto è gestito senza problemi, incluso il copia-incolla.
GNOME e KDE non sono framework GUI. Sono ambienti desktop. GTK + e kdelibs sono le strutture dietro di loro. Inoltre, si noti che i Window Managers sono essi stessi client X, nonché tutte le applicazioni GUI nel DE. – strager
Il modo in cui funzionano i window manager è piuttosto interessante ... hanno un hook che viene chiamato quando un nuovo client si connette e afferrano la finestra del client e la inseriscono all'interno di una finestra figlia. è questa finestra secondaria che disegna il bordo e chiude/massimizza i pulsanti, ecc.(Penso) – rmeador
Stavo per scrivere una risposta, ma questa è più estesa di quello che ho scritto. Solo una cosa: aggiungerei che il window manager è solo un altro client X. E quella X è solitamente chiamata "X", "X11" o "X Window System"). Preferisco "X11" perché è breve e piuttosto non ambiguo. –