X, Xorg e D-Bus: qual è la differenza?


35

Nel processo di apprendimento di determinate cose nella programmazione della GUI (ad esempio, riservando spazio sullo schermo per un'applicazione), devo imparare di più su Window Manager, di solito X11 su Linux (non sono sicuro che ci siano anche distro , che usano nient'altro che X11, anche se ho sentito parlare di Wayland , che non è ancora stato implementato in nessuno.)

Sono abbastanza nuovo nella programmazione e impaziente; quindi ci sto solo tuffando. Ora sto leggendo l'ICCCM, con la speranza di saperne di più. Questo documento si rivolge tuttavia a un pubblico che conosce (molto) più di me. Quindi ho trovato alcune informazioni e mi piacerebbe ricevere alcuni chiarimenti.

Sezione 2 delle citazioni ICCCM:

Si noti che tutti i dati trasferiti tra un proprietario e un richiedente devono generalmente passare tramite il server in un ambiente X versione 11. Un client non può presumere che un altro client possa aprire gli stessi file o persino comunicare direttamente. L'altro client potrebbe comunicare con il server mediante un meccanismo di rete completamente diverso (ad esempio, un client potrebbe essere DECnet e l'altro TCP / IP). Pertanto, il passaggio di riferimenti indiretti ai dati (come nomi di file, nomi host e numeri di porta e così via) è consentito solo se entrambi i client sono specificamente d'accordo.

A quanto ho capito, X Window Manager è basato su Top of X Server (grazie a Wikipedia). Nella citazione sopra: dice che il client può comunicare con il server usando DECnet o TCP / IP. Finora ho pensato che "server" fosse una figura retorica, ora ne dubito: X server è un server come in un "web server"? Come dovrei capire la sua funzione / definizione?

Quindi, ci sono spesso riferimenti a X11, Xorg, X Server e / o X Window Manager. Diventa confuso: X11 è un pacchetto che include Xorg e X Window Manager? In tal caso, c'è qualcos'altro in questo bundle X11?

X ha anche bisogno di mouse o tastiera o qualsiasi altro tipo di input: anche questa parte delle funzioni di X Server? X Window Manager si occupa solo della visualizzazione?

Infine, la citazione qui sopra menziona anche la comunicazione del cliente tra loro o meno: questo mi ha ricordato D-Bus, che ho usato un po 'per scopi di apprendimento. Con D-Bus puoi anche attivare eventi finestra. Questo mi confonde un po 'su come i programmi dovrebbero comunicare tra loro: * che differenza c'è tra i programmi che interagiscono usando X Server o usando D-Bus? *

È un peccato che questa informazione rimanga in qualche modo oscura, rende più difficile l'apprendimento, ma spero che tu possa far luce su questo :) Grazie.

Risposte:


62

Stai ponendo cinque domande qui, e potrebbe essere meglio porre cinque domande ☺ Ma salterò dentro:

  1. X è un server e può essere paragonato a un "web server" in quanto è un processo che ascolta le connessioni in entrata che parlano un determinato protocollo (il protocollo X) e che fornisce risposte. Le connessioni provengono da client X, che possono trovarsi sull'host locale o su un host remoto a cui si accede tramite una rete.

  2. X11 è una "versione principale" del protocollo X, che si è evoluto dall'inizio. X11 è il protocollo più recente e il più comune. (Xorg è un'implementazione di un server X, librerie X e una raccolta di client, tutti in X11. Esistono altre implementazioni: la XFree86 in gran parte defunta; quelle commerciali come Hummingbird Exceed; forcelle come XQuartz, che gira su Mac OS X )

  3. Un "gestore di finestre" è un client X che gestisce Windows. In genere ha la responsabilità di decorare le finestre con smussi / bordi, ombreggiature, una barra dei menu contenente pulsanti, ecc. E gestire la logica del posizionamento delle finestre; supportare finestre trascinate, ridimensionate o riorganizzate, ecc.

  4. X richiede input e ha una responsabilità condivisa per gestirlo con il kernel. Storicamente, X ha fatto molta gestione dell'hardware stesso. Nei tempi moderni, sulla piattaforma Linux, X sta gradualmente diventando "più piccolo" e delegando questa responsabilità al kernel Linux. I vantaggi di questo sono: base di codice X più piccola; meno "fili incrociati" con il kernel e X entrambi cercano di gestire le stesse cose. (un esempio di ciò è l'interfaccia degli eventi Linux, in cui gli eventi dei mouse ecc. vengono interpretati e tradotti dal kernel e dai suoi driver nell'interfaccia standard in /dev/input/event*, che viene utilizzata dal server X). Si noti che su altre piattaforme (BSD, Solaris) X è ancora abbastanza monolitico.

  5. Esistono molti, molti modi in cui i processi possono comunicare tra loro. Credo che i client X possano interagire tramite il protocollo X (ad esempio, i tradizionali gestori delle finestre X devono sapere quando altri client disegnano le finestre per decorarle; i cercapersone devono sapere quando cambiano le dimensioni o la posizione di una finestra, al fine di rifletterlo nel cercapersone). D-Bus è una moderna tecnologia di comunicazione tra processi (IPC) sviluppata per ovviare alle carenze di altri metodi. Non è X specifico.


Bene grazie! Questo è davvero utile. Informazioni sulle 5 domande: non so quale sia il protocollo in quel caso, ma se un amministratore vuole che li divida, ne sentirò parlare. Personalmente mi piace averlo in un unico documento e vedere le 5 domande come sotto-domande al titolo. Grazie ancora.
Benjamin,

Il punto nel non saltare i protocolli è che X Window System è progettato in modo tale che le applicazioni ("client") non debbano essere eseguite sullo stesso host, ovvero è possibile accedere a un altro computer, eseguire un programma lì e la finestra si apre sullo schermo come un'applicazione locale. Se un altro programma chiedesse "qual è il tuo ID di processo, così posso parlarti direttamente", non c'è modo di rispondere correttamente a questa domanda.
Simon Richter,

Potresti non voler dire che la risorsa condivisa dal server X è il display costituito da uno o più monitor e due o più dispositivi di input (tastiera, mouse)
hildred

Sicuramente utili tutte e 5 le domande insieme. Grazie.
Harvey,

@hildred Nel caso di un touchscreen in configurazione kiosk potresti avere solo un dispositivo di input.
Shadur,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.