- Fișierul de configurare a ferestrei X
- XkbVariant definește ce variante din cele două layout-uri ar trebui să fie folosite. În cazul layout-ului us se utilizează varianta sa implicită. În cazul layout-ului sk se utilizează varianta qwerty a acestuia. Opțiunea XkbOptions indică faptul că utilizatorii pot comuta între machete folosind tasta CapsLock.
- Gestionați accesul la serverul X și afișați aplicațiile de la distanță
- Când lucrurile merg prost
- Wayland, un nou manager de ferestre de compoziție
Fișierul de configurare a ferestrei X
În primele zile ale X, configurarea unui afișaj însemna cunoașterea aprofundată a capacităților afișajului și capacitatea de a exprima informații nu numai despre rezoluție, ci și despre valorile de sincronizare orizontală și verticală, adâncimea de culoare și așa mai departe. De la apariția asociației Video Electronics Standards Association (VESA) și a protocoalelor Display Data Channel (DDC), care permit unui afișaj să comunice aceste capacități unei plăci grafice și, prin urmare, unui computer, configurarea a devenit mult mai automată. Acest lucru este un lucru norocos, deoarece acum ne așteptăm să ne putem lua notebook-ul oriunde și doar să conectăm un monitor sau un proiector extern disponibil.
Configurarea mouse-ului, a trackball-ului sau a tastaturii a devenit, de asemenea, mai automată. În general, trebuie doar să conectați dispozitivul, adesea printr-o conexiune USB și acesta funcționează.
Cu toate acestea, ca în cazul majorității lucrurilor din Linux, există un mecanism de configurare subiacent pe care îl puteți utiliza. De fapt, implementarea Xorg a X obține informații de configurare din mai multe surse. Principalul fișier de configurare este xorg.conf, împreună cu fișierele incluse din directorul xorg.conf.d. Acestea se află, de obicei, în /etc/X11. Configurația suplimentară poate proveni din opțiunile liniei de comandă, variabilele de mediu, detecția automată și valorile implicite de revenire.
Fisierul de configurare xorg.conf și fișierele din directorul xorg.conf.d sunt organizate în secțiuni care pot fi specificate în orice ordine. Formatul general al secțiunilor este prezentat în Lista 1.
Lista 1. Dispunerea secțiunilor în xorg.conf
Section "SectionName" SectionEntry ... EndSection
Show moreShow more icon
Xorg cu opțiunea -configure
. Comanda Xorg
este de fapt o legătură simbolică de la comanda X
situată de obicei în /usr/bin. Trebuie să rulați comanda Xorg
ca root și să vă asigurați că nu rulează niciun server X. O modalitate de a face acest lucru este de a edita stanza GRUB2 pentru a porni în modul multi-utilizator fără X. În mod tradițional, acesta este runlevel 3. Pur și simplu editați intrarea din meniul de pornire pe care doriți să o porniți și adăugați un 3
la sfârșitul liniei `linux boot/vmlinuz…’, așa cum este ilustrat în figura 2.
Figura 2. Pornirea în modul multiutilizator fără X
Dacă folosiți systemd, puteți utiliza systemd.unit=multi-user.target
în loc de 3
.
Xorg -configure
încarcă driverele de dispozitiv disponibile și sondează hardware-ul. Funcționează pe multe sisteme, dar are probleme pe unele sisteme, conform paginii de manual. Documentația Fedora recomandă utilizarea afișajului :1 în loc de afișajul implicit :0, așa că puteți încerca Xorg :1 -configure
dacă Xorg simplu
Xorg -configure
nu funcționează.
Un exemplu de fișier generat folosind această metodă pe sistemul meu openSUSE Tumbleweed este prezentat în Lista 2.
Lista 2. Exemplu xorg.conf
Să presupunem că afișajul dvs. suportă DDC,așa cum fac majoritatea afișajelor moderne, puteți utiliza comanda xrandr
pentru a interoga capacitățile acestuia. Lista 4 prezintă informațiile drm pentru un notebook cu un afișaj conectat și ieșirea corespunzătoare din xrandr
.
Lista 4. Utilizarea xrandr pentru a determina capacitățile de afișare
XkbVariant definește ce variante din cele două layout-uri ar trebui să fie folosite. În cazul layout-ului us se utilizează varianta sa implicită. În cazul layout-ului sk se utilizează varianta qwerty a acestuia. Opțiunea XkbOptions
indică faptul că utilizatorii pot comuta între machete folosind tasta CapsLock.
Lista 5. Actualizarea configurației tastaturii
localectl. Cu toate acestea, localectl status
arată că aceste modificări au fost preluate atunci când sistemul a fost repornit, așa cum se arată în Lista 6.
Lista 6. Afișarea stării tastaturii folosind localectl
Managerii de afișare se împart în trei categorii generale.
- Managerii de ferestre de tip tile împart ecranul în tile-uri și scriu fiecare tile separat de celelalte. Performanța este, în general, bună.
- Manageri de ferestre cu stivuire stivuiesc ferestrele individuale pe ecran într-o listă cunoscută sub numele de ordine Z. Atunci când o nouă fereastră primește focalizare, aceasta este plasată în partea de sus a ordinii Z și toate ferestrele inferioare sunt redesenate. Acest lucru poate fi lent, în special pentru modificări minore, dar au fost dezvoltate mai multe optimizări.
- Managerii de ferestre de compunere sunt, de obicei, manageri de ferestre de stivuire care păstrează un buffer pentru fiecare fereastră și apoi le combină într-un singur buffer pentru afișare fără a fi nevoie să redeseneze fiecare fereastră individuală și apoi să o suprascrie cu următoarea fereastră superioară în ordinea Z. Acest lucru permite, de asemenea, efecte cum ar fi transparența.
Figura 3 prezintă un exemplu de manager de ferestre de tip tiling I3. Se începe cu un desktop gol și apoi se creează o fereastră, cum ar fi o fereastră de terminal. Aceasta ocupă tot ecranul. Apoi puteți deschide o altă fereastră care împarte țigla originală în două. Dacă apoi deschideți o altă fereastră, ecranul este împărțit în trei plăci. Puteți alege să creați noi dale pe orizontală sau pe verticală. În acest exemplu, am ales să divizez pe verticală țigla originală din mijloc, care conține jocul sudoku, pentru a crea o altă fereastră mică de terminal. Apoi am împărțit-o pe aceasta pe orizontală pentru a adăuga o fereastră xlcock.
Figura 3. Managerul de ferestre de tip tiling I3
De obicei, puteți muta ferestrele între birourile virtuale, ceea ce ajută foarte mult dacă aveți mai multe ferestre mari deschise.
Puteți deschide lista de aplicații disponibile sub forma unui meniu în partea de sus a ecranului și puteți selecta aplicațiile prin derulare orizontală lentă sau mai rapid, tastând o parte sau întregul nume, cum ar fi „xclock”.
În contrast cu administratorii de ferestre de tip „tiling window”, administratorii de ferestre de tip „stacking window” vă permit să aveți ferestre de orice dimensiune suportată de afișajul dumneavoastră, inclusiv ferestre care se pot suprapune peste marginea afișajului. Figura 4 este un exemplu de manager de ferestre cu stivuire Openbox care prezintă patru ferestre suprapuse și meniul care vă permite să deschideți noi aplicații.
Figura 4. Managerul de ferestre cu stivuire Openbox
Managerul de ferestre cu stivuire de bază funcționează pe principiul redesenării tuturor ferestrelor de pe afișaj atunci când fereastra cu focalizare se schimbă sau este mutată, închisă sau redimensionată. Acest lucru poate duce la rescrieri multiple ale diferitelor zone ale ecranului pe măsură ce întreaga ordine Z este procesată. Se pot folosi algoritmi pentru a minimiza cantitatea de rescrieri inutile.
O îmbunătățire a ideii de bază de stivuire este un manager de ferestre de compunere. Un astfel de manager de ferestre păstrează un buffer cu conținutul fiecărei ferestre și le îmbină sau le compune într-o singură fereastră. Numai părțile actualizate trebuie apoi să fie scrise în memoria tampon a cardului de afișare. Compiz este un exemplu de manager de ferestre compositing, în timp ce mediile de desktop precum KDE și GNOME folosesc, de asemenea, manageri de ferestre compositing.
Un mediu de desktop oferă, în general, o experiență de utilizare completă, incluzând lucruri precum un întâmpinător grafic de conectare, meniuri grafice de sistem, o tavă pentru a afișa widget-uri precum ora zilei, pictograme de aplicații deschise și așa mai departe. O suită de aplicații integrate oferă, de obicei, o experiență coerentă pentru un utilizator. Majoritatea managerilor de ferestre sunt mult mai ușoare decât un mediu desktop complet.
Figura 5 ilustrează conceptul de transparență într-un manager de ferestre de compoziție sau într-un mediu desktop. Țineți apăsat butonul stâng al mouse-ului (butonul 1) pe bara de titlu a ferestrei terminalului atunci când vă pregătiți să o mutați. Afișajul se modifică pentru a arăta ce ferestre se află sub zona respectivă. Acest lucru vă poate ajuta să mutați o fereastră de deasupra alteia atunci când doriți ca ambele să fie vizibile.
Figura 5. Transparența cu desktop-ul KDE Plasma
Figura 6 ilustrează GNOME 3.28 pe Fedora. Dacă se face clic pe butonul Activities (Activități) din partea stângă-sus a acestui ecran, se deschide o listă iconizată de favorite în partea stângă a ecranului și se afișează un set de aplicații care rulează sub formă de ferestre mici. Puteți face clic pe o favorită, pe o fereastră mică sau puteți utiliza caseta de căutare din partea de sus a ecranului pentru a căuta un program. În acest exemplu particular, am făcut clic pe ziua și ora din bara de sus pentru a deschide un widget care afișează unele mesaje, cum ar fi actualizările disponibile sau ultima comandă finalizată, precum și informații suplimentare privind data și ora. Pictogramele din partea superioară dreaptă permit accesul la funcții precum volumul difuzorului, setările de rețea, opțiunile de accesibilitate și opțiunile de închidere, deconectare sau repornire.
Figura 6. Activități și widget-uri Fedora GNOME
Am menționat că mediile desktop conțin frecvent aplicații integrate pentru a vă ajuta să gestionați diverse aspecte ale desktopului sau ale sistemului. Figura 7 prezintă dialogul de setări Fedora GNOME 3.28 deschis la setările de afișare. Acest exemplu este de pe un notebook cu un monitor Viewsonic extern. Opțiunile obișnuite în acest caz sunt de a uni cele două ecrane ca un singur afișaj sau de a oglindi conținutul unui ecran pe celălalt. În acest caz, alegem să unim cele două ecrane cu ecranul încorporat în mod logic în dreapta monitorului extern.
Figura 7. Caseta de dialog Fedora GNOME Screen Settings
Așa cum puteți modifica rezoluția ecranului în fișierul xorg.conf, puteți, de asemenea, să îi spuneți compozitorului să scaleze fereastra fie la 100%, fie la 200%. Scalarea disponibilă poate depinde de dimensiunea monitorului, precum și de biroul special pe care îl utilizați. De asemenea, am un monitor UHD (4K) și ochi care nu pot citi rezoluția nativă foarte mică a textului. Așadar, pe acel monitor, folosesc frecvent un factor de scalare de 200%.
Rețineți că modificările efectuate cu ajutorul setărilor GNOME nu actualizează xorg.conf. În schimb, aceste setări sunt salvate în fișierul .config/monitors.xml din directorul dvs. personal. GNOME păstrează și alte setări de afișare și tastatură în baza de date dconf, pe care o puteți găsi, de asemenea, sub directorul dvs. personal. Având aceste setări în directorul dvs. personal, ele se aplică numai dvs. Alți utilizatori pot avea setări diferite.
Dacă aveți instalate mai multe medii de birou sau manageri de ferestre, poate vă întrebați cum puteți alege între ele. Puteți să porniți în modul multiutilizator așa cum a fost descris mai devreme în acest tutorial și apoi să executați o comandă precum startx
pentru a porni X cu managerul corespunzător. Dacă aveți un mediu de birou, cum ar fi GNOME, care oferă un greeter,veți avea probabil o alegere de setări pe ecranul de întâmpinare. Figura 8 prezintă alegerile instalate pe sistemul meu Fedora 28.
Figura 8. Fedora GNOME 3 greeter cu selecția WM
Gestionați accesul la serverul X și afișați aplicațiile de la distanță
Până acum, ați văzut exemple de X care rulează pe un computer de birou cu unul, sau poate două monitoare. Un server X tratează un singur afișaj ca pe o colecție de monitoare care împart un set comun de dispozitive de intrare.
Atunci, notebook-ul prezentat în figura 7 are un singur afișaj, chiar dacă are monitorul încorporat și un monitor extern. În acest exemplu, cele două monitoare funcționează ca și cum ar fi alăturate. Astfel, se obține un singur ecran logic care permite mutarea ferestrelor între monitoare sau chiar împărțirea lor. Sistemele multiutilizator au, de obicei, mai multe ecrane, așa că aveți nevoie de o modalitate de a le descrie.
X utilizează un nume format din trei părți pentru ecrane de forma hostname:displaynumber.screennumber unde hostname este numele gazdei computerului, displaynumber este un număr care începe de la 0 și care descrie afișajul respectiv, iar screennumber se aplică dacă două sau mai multe monitoare sunt tratate ca ecrane separate, mai degrabă decât ca un singur ecran logic. Atât hostname, cât și screennumber pot fi omise, astfel încât cea mai frecventă notație de afișare pe care o veți vedea este :0. Puteți vedea setarea curentă în variabila de mediu DISPLAY
, așa cum se arată în Lista 7.
Lista 7. Variabila de mediu DISPLAY
ian@attic5-u18:~$ echo $DISPLAY:0
Show moreShow more icon
DISPLAY ar permite oricărui utilizator să scrie ieșire pe ecran, dar X are unele limitări de control al accesului. Vă voi arăta trei moduri de a vă conecta la un server X.
- Utilizați ssh cu X forwarding
- Utilizați Xauthority și xauth
- Utilizați controlul gazdei sau al utilizatorului cu xhost
Modul cel mai sigur de a utiliza X pe un alt ecran este să folosiți X forwarding (uneori numit tunneling). Aceasta trebuie să fie activată pe serverul SSH la care vă conectați cu linia X11Forwarding yes
din fișierul de configurare, /etc/ssh/sshd_config. De asemenea, trebuie să o activați și pe client prin specificarea opțiunii -X
(este vorba de X mare) în comanda ssh
. Lista 8 compară ce se întâmplă dacă folosesc su - jane
pentru a trece la utilizatorul jane pe sistemul meu și apoi folosesc ssh -X jane@localhost
. În ambele cazuri, încerc să execut comanda xclock
pentru a afișa un mic ceas pe ecranul meu.
Lista 8. X forwarding
DISPLAY este setată la localhost:10.0. Serverul sshd creează efectiv un server X pentru dvs. pe sistemul țintă. Nu doriți ca acest lucru să interfereze cu niciun server X real de pe sistem. Așadar, fișierul de configurare, /etc/ssh/sshd_config, conține o linie X11DisplayOffset 10
pentru a specifica decalajul de pornire (de la 0) pentru serverele X prin ssh. Valoarea implicită este 10, ceea ce este de obicei suficient pentru o stație de lucru cu un singur utilizator, dar ar putea fi necesar să fie mărită într-un sistem cu mai mulți utilizatori. Unei a doua conexiuni ssh la server i s-ar atribui afișajul 11 și așa mai departe.
A doua metodă pentru a permite altor persoane să se conecteze la un server X este metoda Xauthority. Fișierul Xauthority conține informații de autorizare utilizate atunci când vă conectați la un server X. Variabila de mediu XAUTHORITY
specifică numele fișierului utilizat în prezent, fie un fișier generat de sistem, cum ar fi /run/user/1000/gdm/Xauthority pe sistemul meu Ubuntu 18, fie propriul dvs. fișier .Xauthority.
Utilizați comanda xauth
pentru a lista, extrage sau fuziona în noi autorități. utilizați opțiunea -f
pentru a specifica un alt fișier Xauthority decât cel din variabila de mediu XAUTHORITY
. Puteți specifica comenzile xauth
în linia de comandă sau îl puteți lansa și utiliza comenzile din cadrul programului. Lista 9 prezintă câteva exemple și extrage autorizația mea pentru afișajul :0 într-un fișier numit auth-ian.
Lista 9. Extragerea informațiilor de autoritate folosind xauth
XAUTHORITY. Utilizatorul jane poate apoi să afișeze aplicații pe ecranul meu.
Lista 10. Fuzionarea informațiilor de autoritate folosind xauth
xhost. Pe o stație de lucru, este foarte posibil să o folosiți pentru a vă permite să deschideți programe grafice în timp ce rulați ca un alt utilizator. Comanda xhost
fără opțiuni afișează lista curentă de control al accesului. Utilizați opțiunea +
cu un nume pentru a permite accesul la sisteme sau utilizatori suplimentari. Lista 11 arată cum să adaug utilizatorul john de pe sistemul meu local la lista de control al accesului și apoi arată cum utilizatorul john deschide programul grafic xclock
.
Lista 11. Utilizarea xhost pentru a activa un singur utilizator local
xhost +local: așa cum se arată în Listarea 12. Observați două puncte (:) la sfârșitul lui local
.
Lista 12. Utilizarea xhost pentru a activa toți utilizatorii locali care nu fac parte din rețea
– în loc de +
pentru a elimina intrările pe care le-ați activat. Consultați paginile man sau info xhost pentru opțiuni suplimentare.
Pentru securitate ar trebui să folosiți tunelarea SSH sau eventual o altă soluție, cum ar fi Virtual Network Computing (VNC), mai degrabă decât xauth
sau xhost
. VNC nu face parte din domeniul de aplicare al acestui tutorial, dar oferă performanțe mai bune decât tunelarea SSH.
Când lucrurile merg prost
Cu atât de multe surse posibile de informații despre configurația X, trebuie să știți unde să căutați informații din jurnal. Erorile legate de sesiunea X individuală pot fi localizate în fișierul .xsession-errors sau, eventual, .xsession-errors-:0 din directorul dvs. personal. Sufixul :0 este pentru erorile de afișare :0.
Jurnalul principal X este localizat în /var/log. Numele este, de obicei, /var/log/Xorg.0.log, unde 0 este numărul afișajului dumneavoastră. Numărul va fi diferit dacă nu folosiți display :0.
Wayland, un nou manager de ferestre de compoziție
Recent, a fost dezvoltat un nou server de afișare și un protocol de compoziție numit Wayland. În acest model, aplicațiile, își creează singure conținutul ferestrelor într-un buffer în afara ecranului. Compozitorul și serverul sunt integrate. Intenția lui Wayland este de a oferi o soluție mai simplă și mai eficientă decât X. Wayland reutilizează în cea mai mare parte driverele și infrastructura existentă, ceea ce face posibil acest proiect.
În contrast cu X, Wayland nu are un design transparent pentru rețea. Alte soluții, cum ar fi VNC, pot fi utilizate dacă este necesară afișarea ferestrelor la distanță.
Weston este un compozitor de referință care implementează Wayland. GNOME, KDE, Enlightenment și alți câțiva manageri de ferestre suportă acum Wayland. Toolkit-uri precum Qt 5 și GTK+ suportă, de asemenea, Wayland. La momentul scrierii acestui articol (decembrie 2018), atât Fedora, cât și Ubuntu sunt livrate cu Wayland ca server de afișare implicit.
Serverele Xorg includ acum XWayland, care permite aplicațiilor X existente să ruleze cu un compozitor Wayland.
Majoritatea implementărilor actuale au încă posibilitatea de a alege să ruleze fie X, fie Wayland pentru fiecare sesiune. A se vedea figura 7 pentru un exemplu de modul în care greeterul GMS vă permite să alegeți un tip de sesiune. Pe Fedora, valoarea implicită este de a rula GNOME pe Wayland.
De asemenea, puteți verifica în timpul execuției fără a fi nevoie să vă conectați. Dacă rulați Wayland, va fi setată variabila de mediu WAYLAND_DISPLAY
. Pe sistemele care utilizează systemd, puteți utiliza comanda loginctl
pentru a determina numărul sesiunii de conectare și apoi să o utilizați din nou pentru a determina tipul de sesiune. Lista 13 prezintă aceste instrumente, mai întâi pe un sistem Fedora 28 care utilizează Wayland și apoi pe un sistem Ubuntu 18 care utilizează Xorg.
Lista 13. Determinarea faptului dacă utilizați X sau Wayland