2009-03-11 6 views
5

Recentemente ho iniziato a usare Linux (dove lavoro è un negozio Microsoft, quindi ho solo codice in C#, lavoro con prodotti MS ecc.).X11/X - software desktop Linux, non capisco come questo si combini insieme

Sto cercando di capire a un livello elevato come alcune cose di base in Linux sono collegate. Ho letto www.linfo.org

In ogni caso non ho mai capito cosa sia X.

Dalla lettura this article mi sembra che X sia un livello che si trova sopra il sistema operativo (un server X che si trova sopra il sistema operativo ??) e le applicazioni client X effettuano richieste al server X. Penso che KDE, Xfce e Gnome siano display manager, sono quindi client X server?

Sono abbastanza confuso dove tutto si trova.

Qualsiasi spiegazione sarebbe molto apprezzata!

risposta

27

È 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.

+0

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

+0

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

+0

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. –

4

X11 è un protocollo di rete, attualmente alla release 7 (quindi X11R7). Incapsula grafica e informazioni di input e collega un client X (applicazione o gestore di finestre) in esecuzione su una macchina locale o remota al server X che attualmente sta guidando la schermata locale e i dispositivi di input.

Gnome, KDE, XFCE e LXDE sono ambienti desktop; contengono pezzi che parlano con/con il server X (metacity, kwin, ecc.), ma includono anche le specifiche che le applicazioni devono seguire e le librerie che sono disponibili in modo che un'applicazione possa "appartenere" al DE.

+0

Anche l'applicazione media dialoga con il server X, sebbene di solito indirettamente attraverso una libreria di toolkit (ad esempio GTK o Qt). – strager

2

Inoltre, vale la pena ricordare che il server X è solo un altro programma che viene eseguito sotto linux. Non c'è niente di speciale in questo, capita solo di sapere come afferrare la scheda grafica e prendere il controllo del monitor usando i driver video. È possibile (in teoria) eseguire linux molto felicemente senza mai eseguire un server X, anche se, ovviamente, si sarebbe limitati ai programmi della riga di comando.

Ecco come si organizza Linux - il kernel alla base, quindi un insieme di programmi che forniscono funzionalità ai programmi di livello superiore, che forniscono funzionalità ai programmi di livello superiore, il tutto costruendo in un completo stack di software orientato a qualsiasi il lavoro della macchina è (ad esempio, desktop generale, sviluppo software, server Web, ecc.).

Oltre al kernel e ai suoi moduli, nulla è "speciale".