Sari la conținut

X Window System

De la Wikipedia, enciclopedia liberă
(Redirecționat de la X11)
Display serverul sta in mijloc: X-serverul comunica prin protocolul X11, Wayland compositorul prin protocolul Wayland.
GNOME 3.32
Xfce 4.12

X Window System (de obicei numit X11 sau X) este un protocol de afișare care furnizează un sistem de ferestre pe ecrane raster. X furnizează un set de unelte standard și un protocol pentru construirea de interfețe grafice pe majoritatea sistemelor de operare Unix-like și OpenVMS, și a fost portat pe toate sistemele de operare generaliste contemporane.

X oferă o platformă de bază pentru construirea mediilor grafice: desenarea și mișcarea ferestrelor și interacțiunea cu mausul și tastatura, dar nu impune interfața cu utilizatorul, programele client o oferă fiecare în parte. Din acest motiv stilul vizual al mediilor bazate pe X variază foarte mult. X nu este o parte integrantă sistemului de operare, ci este construit ca o interfață peste nucleul sistemului de operare.

X a fost publicat prima dată de MIT în 1984. Versiunea de protocol curentă, X11, a apărut în septembrie 1987.

X folosește un model tip client-server: un server X communică cu diverse programe tip client. Serverul acceptă cereri pentru iesirea grafică (ferestre) și trimite înapoi intrări de la utilizator (de la tastatură, mouse sau touchscreen). Serverul poate funționa ca:

  • o aplicație care afișează într-o fereastră a unui alt sistem
  • un program de sistem care controlează ieșirea video a unui PC
  • o componentă hardware dedicată.

Această terminologie client-server —terminalul utilizatorului ca "server", aplicații locale sau distante drept "clients" — adeseori îi deruteaza pe noii utilizatori X, din cauză ca aceste termene apar inversate. Dar X privește din perspectiva programului și nu din a utilizatorului sau a hardware-ului: displayul local X asigură servicii de afișare programelor, deci funcționează ca un server; orice program distant folosește aceste servicii , deci se comportă ca un client.

În acest exemplu, serverul X acceptă intrare de la tastatură și mouse și o afișează pe ecran. Un web browser și un terminal emulator rulează pe stația de lucru a utilizatorului și un terminal emulator rulează pe un server distant dar este controlat de pe mașina utilizatorului. De observat că aplicația distantă rulează ca și cum ar fi locală.

Protocolul de comunicația dintre server și client operează network-transparent: clientul și serverul pot rula pe aceeași mașină sau pe mașini diferite, posibil cu diferite arhitecturi și sisteme de operare , dar funcționează la fel în ambele cazuri.Un client și un server pot comunica prin Internet printr-un tunel , conexiunea fiind criptată.

Un client X poate conține un server X avînd displayul mai multor clienți.Aceasta este cunoscută drept "X nesting". Clienții open-source precum Xnest and Xephyr suportă X nesting.

Pentru a porni un program client distant cu afișaj pe serverul local, utilizatorul va deschide în mod obișnuit un terminal window și telnet sau ssh pe clientul distant și va seta displayul . (e.g. export DISPLAY=[user's machine]:0 on a remote machine running bash). Aplicația client sau shell-ul se ca conecta la serverul local, trimițînd displayul sau sesiunea input către serverul local. În alt mod, mașina locală poate rula un mic program ajutător pentru a se conecta la mașina distantă și a porni aplicația client dorită acolo.

Exemple practice de folosire a clienților distanți:

  • administrarea unei mașini distante în mod grafic
  • rularea unei aplicații de simulare intensivă pe o mașină UNIX distantă și afișarea rezultatelor pe un desktop local Windows
  • rularea unui software grafic pe mai multe mașini la un moment dat, controlate de un singur display , tastatură și mouse.

În 1984, Bob Scheifler și Jim Gettys au stabilit principiile timpurii ale X:

  • "Nu implementa o nouă funcționalitate decât dacă un dezvoltator nu poate scrie un program real fără ea."
  • "Singurul lucru mai rău decât generalizarea dintr-un singur exemplu este generalizarea fără nici un exemplu."
  • "Dacă o problemă nu este complet înțeleasă, probabil că este mai bine să nu oferi nici o soluție."
  • "Dacă poți obține 90% din efect făcând 10% din muncă, folosește soluția mai simplă".

X a păstrat în cea mai mare dintre principii. Implementarea de referință rămâne aproape în întregime compatibilă cu protocolul din 1987.

Interfețe cu utilizatorul

[modificare | modificare sursă]

În mod intenționat,X nu specifică elemente grafice pentru aplicație tip button, menu, ferestre title bar și așa mai departe. În schimb software-ul utilizatorului – precum window manager, GUI widget toolkit and desktop environment, sau specific aplicației graphical user interfaces – definesc toate aceste detalii. Drept urmare, nu este posibilă o interfață X "tipică" deoarece sînt preferate mai multe tipuri de interfețe.

Un window manager controlează afișajul și aparența ferestrelor aplicațiilor. Aceasta poate fi o interfață asemănătoare Microsoft Windows sau Macintosh (exemplele includ Metacity în GNOME, KWin în KDE sau Xfwm în Xfce) sau prezintă controale radical diferite (precum tiling window manager). Managerul de ferestre poate fi simplist (e.g. twm, managerul de ferestre livrat standard în X, sau evilwm, un window manager minimalist) sau să ofere funcționalitate unor sisteme desktop complete (e.g. Enlightenment).

Mulți utilizatori folosesc X cu un desktop environment complet, care include un manager de ferestre,diverse aplicații și o interfată consistentă. GNOME, KDE și Xfce sînt cele mai populare medii desktop. Mediul Unix standard este Common Desktop Environment (CDE). Inițiativa freedesktop.org se ocupă de problemele de interoperabilitate dintre desktop și componentele necesare pentru a realiza un mediu X competitiv.

X fiind responsabil pentru interacțiunea intre diverse medii grafice , diverse keyboard shortcuts au devenit asociate cu X. Control-Alt-Backspace termină sesiuna X în mod obișnuit , în timp ce Control-Alt împreună cu tastele F1-F12 comuta sesiunea de lucrau catre terminalele virtuale UNIX. Aceasta este însă un detaliu de implementare lăsat la latitudinea serverului X și nu este nici de departe universal;de exemplu , implementarea serverului X pentru Windows și Macintosh nu suportă aceste combinații de taste.

Implementări

[modificare | modificare sursă]

Implementarea de referință X.Org servește drept implementare canonică. Datorită licență software licenței nerestrictive, există multe variații, atât libere cât și proprietare.

Până în 2004, XFree86 a fost cea mai folosită variantă liberă pentru sistemele Unix-like, și standardul de facto pentru dezvoltarea pe X.

A Network Computing Devices NCD-88k X terminal.

Un terminal X este un client care rulează pe un server X. Această arhitectură a devenit foarte populară în vederea autentificării simultane a mai multor utilizatori pe același server. Această tendință este conformă cu dorința originală a autorilor proiectului de la MIT.

Terminalele X explorează rețeaua locală folosind X Display Manager Control Protocol pentru a generea o listă de mașini disponibile unde să poate rula programe client.

Hardware dedicat pentru terminale X devine din ce în ce mai rar ; un PC sau un client avînd un X server ,dispun de aceeași funcționalitate la un preț mai redus.

Limitări și critici

[modificare | modificare sursă]

UNIX-HATERS Handbook (1994) a dedicat un întreg capitol[1], problemelor cu care se confruntă X. Why X Is Not Our Ideal Window System (1990) de Gajewska, Manasse și McCormack a detaliat problemele din protocol , împreuna cu recomandări pentru îmbunătățiri.

Facilități ale interfeței cu utilzatorul

[modificare | modificare sursă]

în mod intenționat X nu conține nici o specificație referitoare la interfața utilizator și nici la comunicațiile inter-aplicații.Din cauza aceasta s-au dezvoltat interfețe foarte diferite , aplicațiile nefuncționînd bine împreună in 100% din cazuri. ICCCM, o specificație pentru interoperabilitatea programelor client are un renume de a fi greu de implementat în mod corect. Alte standarde precum Motif and CDE nu au remediat problemele. Aceasta a fost o sursă permanentă de frustrare pentru atît pentru utilizatori cît și pentru programatori mult timp.[2] Pentru a evita problemele legate de programarea grafică,programatorii folosesc un mediu grafic sau un toolkit specific pentru a evita să lucreze direct cu ICCCM.

Separarea client-server

[modificare | modificare sursă]

O cerință de construcție X este ca serverul și clienții să opereze în mod separat. Această cerință împreună cu independența de platforma hardware face ca X sa nu fie atît de rapid precum sistemele ale căror parte grafică este integrată in sistemul de operare , precum Microsoft Windows sau Mac OS. Recomandarea pentru X este de 4 pînă la 8 MB de RAM pentru o performanță rezonabilă.

Versiunile curente de Windows sau Mac OS X Quartz au o separare a sistemelor interne similară cu client/server din X .Cea mai mare lantență vine de la partea de rețea round-trip delay time dintre client și server și nu de la protocolul însuși).Implementările moderne X folosesc sockets locali și shared memory , diminuînd astfel latențele.

Origini și dezvoltare timpurie

[modificare | modificare sursă]

The Open Group

[modificare | modificare sursă]

X.Org și XFree86

[modificare | modificare sursă]

Fundație X.Org

[modificare | modificare sursă]

Nomenclatură

[modificare | modificare sursă]

Legături externe

[modificare | modificare sursă]