Cum functioneaza interfata grafica si desktop environment-ul in linux?

Stefanescu Mihai 7 months ago Linux

Un desktop environment de linux este o colectie de aplicatii ce compun o interfata grafica (GUI) pentru a interactiona cu sistemul de operare.

Desi majoritatea software-ului pe care il intalnim zi de zi este scris sub forma de monolit, mai ales in cazul unui sistem de operare sau a unui kernel, comunitatea linux a venit cu un set de aplicatii care se pot functiona impreuna ca un set de lego.

Una dintre partile foarte interesante ale acestui sistem de operare este simplicitatea complexa, sau daca vreti complexitatea simpla care ne permite sa customizam modul in care arata si functioneaza sistemul de operare dupa bunul plac.
Ce este foarte interesant la desktop environment-urile de linux este modul in care respecta libertatea utilizatorului de a isi creea propriul mediu de lucru format exact din partile pe care le doreste.

In acest articol nu am sa ma refer la un singur desktop environment, desi as putea scrie cel putin cate un articol despre fiecare (KDE, gnome, cinnamon, xfce, lxde, lxqt, etc), ci am sa vorbesc in mod general de modul de functionare a unui desktop environment.

Un desktop environment este format din mai multe parti:

  • Display manager
  • Windows system
  • Window manager
  • Desktop environment

Inainte de a vorbi despre fiecare componenta in parte hai sa ne uitam la modul in care ar arata linux-ul fara o interfata grafica (GUI).

Cand o masina cu linux este pornita poneste 8 tty-uri. Un TTY este in esenta un terminal fata interfata grafica. Poti accesa acest terminal apasand ctrl+alt+[1-8]. De exemplu ctrl+alt+1 o sa imi afiseze urmatorul lucru:

Display Manager

Un display manager (cunoscut si ca login manager) este incarcat chiar dupa procedura de boot. Acesta incarca un ecran de autentificare, exact ca telnet, care iti cere un username si o parola. Principalele lui functii sunt autentificarea si sesiunile utilizatorilor. Display manager-ul incarca windows system-ul configurat pentru masina in cauza ruland scriptul .xsession, ce este folosit pentru initializarea clientilor (o sa discutam despre X Client putin mai jos).

Un exemplu de asemenea display manager este lightdm, care ca default cu mai multe sisteme linux si este unul dintre cele mai versatile. De asemenea, mai exista si alte display manager-uri, cum ar fi gdm care vine o data cu gnome sau xdm pentru X11 (despre care o sa discutam mai jos).

Ce-a mai buna parte la un display manager este ca nu trebuie sa il pastrezi pe cel deja existent cand ti-ai instalat distributia de linux. Instalarea si pornirea unui display manager este atat de simpla:

sudo systemctl disable gdm
sudo apt install lightdm
sudo systemctl enable lightdm

Adoua parte buna la un display manager este ca este customizabil. Totul poate fi modificat, de exemplu, pentru a customiza lightdm trebuie sa intram si sa editam fisierul /etc/lightdm/lightdm.conf

Pentru a vedea configurarea curenta a display managerului putem rula comanda:

cat /etc/X11/default-display-manager

Window system

Un windows system este una dintre cele mai importante parti ale intefetei grafice din linux (GUI). Determina ce trebuie sa fie "desenat" pe ecran si cum. In acest articol, o sa vorbim despre cel mai popular windows system: X Windows System, cunoscut si ca X sau X11.

X11 este format din urmatoerele elemente:

X Server este un program ce interactioneaza cu hardware-ul si controleaza ce este afisat pe ecran. Fiecare X Server este facut specific pentru o placa video (din cauza dependintelor hardware). Ce este important de retinut este ca X11 are o arhitectura inversa de client-server, in mod normal un server ruleaza remote, dar in X11 server-ul ruleaza direct pe masina in cauza.

X Client este un program ce se foloseste de X Server pentru a afisa lucruri (de exemplu xclock, xterm, xcalc, etc) pe un anumit ecran.
Una dintre partile interesante la X11 este faptul ca a revolutionat modul in care ne gandim la o interfata grafica, mai ales la faptul ca X Server si X Client nu trebuie sa fie pe aceasi masina ca sa functioneze impreuna. Ceea ce inseamna ca pot trimite comenzi de pe masina mea pentru a afisa un anumit program pe alta masina si vice versa.

Window Manager o sa discutam mai tarziu mai in detali despre window manager, aici vreau doar sa evidentiez faptul ca atat X Client cat si X Server vorbesc aceasi limba folosind protocolul X care arata cam asa:

hostname:displaynumber:screennumber

Hostname:  numele masini fizice conectate (aici putem avea numele masinii, ip-ul sau nimic). Daca aceasta parte este lasata goala inseamna ca ne referim la masina curenta.
Display Number: O masina poate avea mai multe display-uri conectate, acest camp decide display-ul la care trebuie sa se conecteze.
Screen Number: Fiecare monitor are mai multe ferestre, acest numar reprezinta fereastra.

Acest string al conexiuni este salvat in variabila DISPLAY si poate fi vazut ruland urmatoarea comanda in terminal:

echo $DISPLAY

Pentru a porni mediul grafic intr-un tty trebuie sa rulam pur si simplu urmatoarea comanda:

startx

Aceasta comanda face parte din suita xinit ce este specializata in initializarea X11. Daca nu ai deja xinit, il poti instala folosind:

sudo apt install xinit

Window Manager

Un window manager este o aplicatie de tip client ce controleaza geometria, modul de afisare, coordonatele si proprietatile grafice pentru o fereastra determinata de X. De asemenea, este responsabil si de rearanjarea si redimensionarea ferestrelor. Unele dintre cele mai populare window manager-uri sunt: dwm, i3, awesome, openbox, etc.

Un window manager vine si cu "decoratii" pe partea de client, decoratii cum ar fi titlebar-uri, butoane, etc. De retinut ca o multime de aplicatii gtk vin deja cu aceste "decoratii" si nu mai ai nevoie de un window manager in mod expres pentru ele (de ex: firefox, gedit, etc).

Comunitatea linux a dezvoltat o multime de Windows Managers de-a lungul anilor, iar in ultima perioada (sau cel putin asa mi s-a parut mie) am vazut din ce in ce mai multi renuntand la un desktop environment full pentru un window manager din urmatoarele motive: este mai putin incarcat (vine doar cu lucruri esentiale), este mai rapid, deci poti fi mai productiv si este foarte usor de customizat.

Schimbarea window managerului este foarte simpla, de exemplu:

sudo apt install dwm
echo "exec dwm" > ~/.xsession

Dupa cum am mentionat si mai devreme, display manager-ul ruleaza scriptul .xsession, adaugand comanda exec dwm in acests cript indica display managerului sa ruleze dwm ca si window manager imediat dupa autentificare.

Desktop Environment

Un desktop environment poate fi considerat o aplicatie ce ruleaza peste un window manager si vine cu o multime de feature-uri peste acesta, cum ar fi wallpaper-uri, toolbar-uri, iconite si widget-uri. Cateva exemple de desktop environments: gnome, KDE, XFCE, Cinnamon, LXDE, LXQT, etc

Concluzia

Acest articol a fost o scurta descriere a interfetei grafice din linux si modul ei de functionare. Design, despre fiecare componenta mentionata de mine aici s-ar putea scrie mult mai mult, dar articolul asta este deja prea mare asa ca am sa ma opresc aici, dar poate pe viitor am sa mai scriu despre ele.
Pentru orice intrebari puteti posta pe forum, chat sau discord.

Programator de ~8 ani, am lucrat la proiecte din mai multe industrstrii, de la eCommerce la telecomunicatii la automatizari. In acest timp am folosi diferite tehnologii, de la PHP, MySQL, PostgreSql, RabbitMq, Redis, Memcached si altele.


Get in touch
Pentru nelamuriri, dubii, comentarii si chestii de pe suflet ne putem auzi pe Discord, Reddit sau poti deschide o discutie noua pe forum

Diabetes medications on the dark web with delivery by mail # 5 months ago Buy diabetes medication online with free shipping Where to buy cheap diabetes drugs online without a prescription? Prescription-free Prandin for sale Buy insulin without prescription online
cervical traction device # 5 months ago This is really interesting, You are a very skilled blogger. I've joined your rss feed and look forward to seeking more of your excellent post. Also, I've shared your web site in my social networks!
achat de finpecia en Espagne # 1 month ago Hey There. I discovered your weblog using msn. That is an extremely neatly written article. I'll be sure to bookmark it and return to learn more of your useful info. Thanks for the post. I'll certainly return.
Fznbcd # 1 month ago order fenofibrate 200mg without prescription <a href="https://fenoficor.com/">buy fenofibrate pills for sale</a> purchase fenofibrate for sale
compra de alpraser en Brasil # 1 month ago I have been exploring for a bit for any high quality articles or blog posts in this sort of area . Exploring in Yahoo I finally stumbled upon this site. Studying this information So i'm satisfied to express that I have a very good uncanny feeling I found out exactly what I needed. I such a lot unquestionably will make certain to do not forget this website and provides it a glance on a continuing basis.
Sung # 1 month ago Hi there! I just wanted to ask if you ever have any issues with hackers? My last blog (wordpress) was hacked and I ended up losing a few months of hard work due to no data backup. Do you have any methods to prevent hackers?
Nfqlrm # 1 month ago buy zaditor medication <a href="https://tofobose.com/">order tofranil 75mg generic</a> purchase tofranil
Actxpf # 1 month ago precose uk <a href="https://dipyxcin.com/">buy generic griseofulvin</a> order generic griseofulvin 250 mg
Wteuhm # 4 weeks ago buy aspirin for sale <a href="https://imitonin.com/">purchase zovirax generic</a> purchase imiquad online cheap
Jill # 3 weeks ago Wow, this article is fastidious, my younger sister is analyzing such things, so I am going to convey her.
Lpqpaa # 3 weeks ago buy dydrogesterone medication <a href="https://janozin.shop/">purchase dapagliflozin online cheap</a> buy empagliflozin 10mg without prescription
Zugnpu # 3 weeks ago order florinef <a href="https://acipolax.shop/">bisacodyl 5mg for sale</a> loperamide online order
Qgnngk # 3 weeks ago order etodolac for sale <a href="https://benedolac.shop/">order monograph 600mg pills</a> cilostazol 100mg canada
Augustina # 3 weeks ago Hey! This is my first visit to your blog! We are a group of volunteers and starting a new initiative in a community in the same niche. Your blog provided us beneficial information to work on. You have done a outstanding job!
Obvzcp # 3 weeks ago prasugrel 10 mg pill <a href="https://thoramine.shop/">purchase dimenhydrinate generic</a> order detrol 2mg for sale
Keqmau # 2 weeks ago ferrous sulfate order online <a href="https://detorbic.shop/">order ascorbic acid 500 mg for sale</a> pill betapace 40 mg
Vjqlkx # 2 weeks ago mestinon online buy <a href="https://mestien.com/">order pyridostigmine 60mg without prescription</a> buy generic maxalt 10mg
Fxedpw # 2 weeks ago buy enalapril 10mg pills <a href="https://casosin.shop/">buy doxazosin 2mg generic</a> duphalac price
Vtxrvx # 1 week ago order latanoprost sale <a href="https://aexeloda.shop/">rivastigmine 3mg generic</a> buy generic rivastigmine 3mg
Eepygr # 1 week ago buy betahistine generic <a href="https://haloatan.com/">haloperidol without prescription</a> order probenecid 500 mg pills
Foftde # 1 week ago order telmisartan 20mg for sale <a href="https://molnenil.shop/">buy molnunat 200mg online cheap</a> molnunat 200 mg cost
Tdcjdn # 6 days ago cenforce order online <a href="https://enapocen.shop/">order naproxen for sale</a> chloroquine pills
indication de vente de panoxyl au Québec # 5 days ago Very soon this web site will be famous among all blogging and site-building users, due to it's fastidious articles or reviews
Firinv # 3 days ago buy omnicef without a prescription <a href="https://chlodinir.shop/">buy cheap generic cefdinir</a> lansoprazole price
Uutmhd # 3 days ago modafinil generic <a href="https://pronlinenil.com/">buy modafinil online</a> deltasone 40mg pills
alzim ohne Rezept in Deutschland finden # 1 day ago Great post. I used to be checking constantly this weblog and I'm inspired! Extremely useful info specially the closing section :) I handle such info a lot. I used to be looking for this certain info for a very lengthy time. Thanks and good luck.
Club-ul este dedicat membrilor si ofera access la mai multe zone ale website-ului.
Login Register

🔖 Bookmarks
✨ Pentru a sustine aceasta comunitate am sa te rog sa te autentifici sau sa te inregistrezi!

🌪️ Discord
Back to top
Folosim cookie-uri pentru a oferi functionalitatile critice ale aplicatiei Invata-Programare. Folosim cookie-uri si pentru a analiza traficul, pentru care e nevoie de consimtamantul dvs. explicit.