Кіріспе

Компьютерлік жүйелерде X терезе жүйесі (әдетте: X11 немесе X) — бит картасы дисплейлері үшін желілік түрде қолданылатын терезе жүйесі. Бұл мақалада X11 протоколдары мен техникалық құрылымына толыққанды шолу жасалған.

Клиент-сервер моделі және желілік ашықтық

X клиент-серверлік модельді қолданады. X сервер бағдарламасы графикалық дисплейі бар компьютерде іске қосылады және әртүрлі клиент бағдарламаларымен байланысады. X сервер пайдаланушы мен клиент бағдарламалары арасында делдалдық қызмет атқарады, клиент бағдарламаларынан TCP 6000 порты арқылы келетін сұрауларды және графикалық шығу (терезелер) үшін дисплей нөмірін қабылдап, оларды пайдаланушыға (дисплейге) көрсетеді, сондай-ақ пайдаланушының енгізген мәліметтерін (пернетақта, тышқан) қабылдап, клиент бағдарламаларына жібереді. X жүйесінде сервер пайдаланушының компьютерінде іске қосылады, ал клиенттер қашықтан орналасқан машиналарда жұмыс істей алады. Бұл терминология клиент-серверлік жүйелер туралы қалыпты түсінікті кері қайтарады, онда клиент әдетте пайдаланушының жергілікті компьютерінде, ал сервер қашықтағы компьютерде іске қосылады. X Window терминологиясы X Window бағдарламасын барлық әрекеттің орталығы деп қарастырады, яғни X Window бағдарламасы қолданбалардан және пайдаланушының тышқан мен пернетақтасынан келетін сұрауларды қабылдап, оларға жауап береді. Сондықтан, қолданбалар (қашықтағы компьютерлерде) X Window сервер бағдарламасының клиенттері ретінде қарастырылады. Сервер мен клиент арасындағы байланыс протоколы желіде толығымен ашық түрде жұмыс істейді: клиент пен сервер бір машинада немесе әртүрлі машиналарда, тіпті әртүрлі архитектуралар мен операциялық жүйелерде де жұмыс істей алады. Клиент пен сервер Интернет арқылы шифрланған байланыс арқылы туннельдеуді пайдаланып, қауіпсіз байланыс орната алады.

Терезелер

Басқа графикалық пайдаланушы интерфейстері әдетте терезе деп атайтын нәрсе X терезесі жүйесінде жоғарғы деңгейдегі терезе болып табылады. «Терезе» термині басқа терезелердің ішінде орналасқан терезелерді, яғни бас терезелердің ішкі терезелерін сипаттау үшін де қолданылады. Батырмалар, мәзірлер, белгішелер сияқты графикалық элементтердің бәрі терезелер арқылы іске асырылады. Терезе тек бас терезенің ішкі терезесі ретінде ғана құрыла алады. Бұл терезелердің ағаш тәрізді иерархиялық құрылымда орналасуына себеп болады. X сервері автоматты түрде ағаштың түбірін жасайды, ол түбір терезесі деп аталады. Жоғарғы деңгейдегі терезелер – түбір терезенің тікелей ішкі терезелері. Көрінетін болса, түбір терезесі экрандай үлкен және барлық басқа терезелердің артында орналасқан.

Анықтамалары

X сервері терезелер, қаріптер және т.б. туралы барлық деректерді сақтайды. Клиент осы нысандардың идентификаторларын біледі – сервермен өзара әрекеттескенде оларды атау ретінде пайдалана алатын бүтін сандар. Мысалы, егер клиент терезе құруды қаласа, ол серверден оны құруды сұрайды және (сәтті болған жағдайда) сервер жаңадан құрылған терезеге байланысты идентификаторды қайтарады. Клиент осы идентификаторды кейіннен пайдаланып, мысалы, терезеге жол сызуды сұрауы мүмкін. Идентификаторлар серверге ғана емес, клиентке де бірегей болады; мысалы, екі түрлі клиент жасаған болса да, екі терезенің идентификаторлары бірдей болмайды. Клиент кез келген нысанға, оның идентификаторы белгілі болса, тіпті басқа клиент оны жасаған болса да, қол жеткізе алады.

Атрибуттар мен қасиеттер

Әрбір терезеде X серверінде сақталатын және клиенттерге тиісті сұраулар арқылы қолжетімді атрибуттар мен қасиеттер жиынтығы болады. Атрибуттар – терезе туралы мәліметтер, мысалы, оның өлшемі, орны, фондық түсі және т.б. Қасиеттер – терезеге тіркелген деректер. Атрибуттардан өзгеше, қасиеттер X терезесінің негізгі протоколы деңгейінде мағынаға ие болмайды. Клиент терезенің қасиетінде кез келген деректерді сақтай алады. Қасиет атау, тип және мәнмен сипатталады. Қасиеттер императивті бағдарламалау тілдеріндегі айнымалыларға ұқсас, себебі қосымша белгілі бір атаумен және типпен жаңа қасиетті жасап, оған мән сақтай алады. Қасиеттер терезелермен байланысты: екі түрлі терезеде бірдей атаумен екі қасиет болуы мүмкін, бірақ олардың типтері мен мәндері әртүрлі болуы мүмкін. Қасиеттер көбінесе клиенттер арасындағы байланыс үшін қолданылады. Мысалы, WM_NAME деп аталатын қасиет терезенің атын сақтайды; терезе менеджерлері әдетте осы қасиетті оқып, терезенің атын оның үстінде көрсетеді. xprop бағдарламасы терезенің қасиеттерін көрсетуге мүмкіндік береді. Атап айтқанда, xprop root түбірлік терезенің қасиеттерін көрсетеді, оған X ресурстары (бағдарламалардың параметрлері) кіреді.

Оқиғалар

Оқиғалар – сервердің клиентке қандай да бір оқиға болғанын, оған клиенттің қызығушылық танытуы мүмкін екенін хабарлау үшін жіберілген пакеттер. Клиент серверден басқа клиентке оқиға жіберуді сұрай алады; бұл клиенттер арасындағы байланыс үшін қолданылады. Мысалы, клиент қазіргі таңдалған мәтінді сұрағанда, сол мәтінді ұстап тұрған терезені басқарып отырған клиентке оқиға жіберіледі. Терезенің мазмұны кейбір жағдайларда "жойылуы" мүмкін (мысалы, егер терезе басқа тереземен жабылып қалса). Егер жойылған мазмұнның бөлігі көрінетін болса, сервер клиентке терезенің сол бөлігін қайта салу қажеттігін хабарлаған Expose оқиғасын жасайды. Басқа оқиғалар клиенттерді пернетақта немесе тышқанның әрекеттері, жаңа терезелердің ашылуы және т.б. туралы хабардар ете алады. Кейбір оқиғалар әрқашан клиентке жіберіледі, бірақ көптеген оқиғалар клиент оларға қызығушылық танытқан жағдай ғана жіберіледі, себебі клиенттер тек белгілі бір оқиғаларға ғана қызығушылық танытуы мүмкін. Мысалы, клиент пернетақтамен байланысты оқиғаларға қызығушылық танытуы мүмкін, бірақ тышқанмен байланысты оқиғаларға қызығушылық танытпауы мүмкін.

Түс режімдері

X терезесі жүйесінің түстерді өңдеу тәсілі кейде пайдаланушыларды шатастырады, және тарихи түрде бірнеше түрлі режимдер қолдауға ие болған. Көптеген қазіргі заманғы қолданбалар толық түс режимін (24 биттік түс, қызыл, жасыл және көк түстер үшін 8 бит) пайдаланады, бірақ ескі немесе арнайы қолданбалар басқа түс режимін қажет етуі мүмкін. Көптеген коммерциялық арнайы қолданбалар PseudoColor қолданады. X11 протоколы графикалық операциялардың көпшілігінде бір түсті бейнелеу үшін пиксельдік мән деп аталатын 32 биттік белгісіз бүтін санды қолданады. Негізгі түстердің қарқындылығын беру кезінде, әр түс компоненті үшін 16 биттік бүтін сан қолданылады. Түстердің келесідей бейнелеу түрлері бар; олардың барлығы нақты құрылымда қолдау таппауы мүмкін. DirectColor: Пиксельдік мән жеке қызыл, жасыл және көк түсті қосалқы өрістерге бөлінеді. Әр қосалқы өріс жеке түс картасын индекстейді. Барлық түс карталарындағы жазбаларды өзгертуге болады. TrueColor: DirectColor сияқты, бірақ түс картасы жазбалары аппараттық құралдармен алдын ала анықталады және өзгертілмейді. Әдетте, қызыл, жасыл және көк түс карталарының әрқайсысы (шамамен) сызықтық қарқындылық диапазонын қамтамасыз етеді. GrayScale: Пиксельдік мән монохромды қарқындылықтары бар бір түс картасын индекстейді. Түс картасы жазбаларын өзгертуге болады. StaticGray: GrayScale сияқты, бірақ түс картасы жазбалары аппараттық құралдармен алдын ала анықталады және өзгертілмейді. PseudoColor (Chunky): Пиксельдік мән түс қарқындылықтарын қамтитын бір түс картасын индекстейді. Түс картасы жазбаларын өзгертуге болады. StaticColor: PseudoColor сияқты, бірақ түс картасы жазбалары аппараттық құралдармен алдын ала анықталады және өзгертілмейді.

Xlib және басқа клиент кітапханалары

Клиенттік бағдарламалардың көпшілігі Xlib клиенттік кітапханасы арқылы сервермен байланысады. Xlib-тен өзге, XCB кітапханасы X протоколымен тікелей жұмыс істейді. Көптеген клиенттер Xaw, Motif, GTK+ немесе Qt сияқты кітапханаларды пайдаланады, олар өз кезегінде сервермен өзара әрекеттесу үшін Xlib-ті қолданады. Qt 5.0 нұсқасымен Xlib-ден XCB-ге көшті, бірақ бұл өзгеріс клиенттік бағдарламаларға дерлік ешқандай әсер етпеді.

Клиенттер арасындағы байланыс

X Window негізгі протоколы клиенттер арасындағы байланыс механизмдерін қамтамасыз етеді: терезе қасиеттері мен оқиғалар, әсіресе клиенттен клиентке хабарлама оқиғалары. Алайда, ол мұндай өзара әрекеттесулер үшін ешқандай протоколды нақтыламайды. Оның орнына, клиенттер арасындағы байланыс конвенцияларының жеке жиынтығы осы протоколдарды реттейді. Клиенттер арасындағы байланыс конвенциялары туралы нұсқаулық таңдау арқылы дерек алмасу және терезе менеджерімен қолданбалардың өзара әрекеттесуі үшін протоколды көрсетеді. Кейбіреулер бұл сипаттаманы қиын және шатастыратын деп санайды; қолданбалардың сыртқы түрі мен байланысының біркелкілігін әдетте нақты үстел ортасына бағдарламалау арқылы қамтамасыз етеді. Клиенттер арасындағы алмасу протоколы (ICE) клиенттер арасындағы өзара әрекеттесу үшін протоколдар құруға арналған базаны анықтайды, соның арқасында бағдарламашылар оның үстіне арнайы протоколдарды құра алады. Атап айтқанда, X сессияны басқару протоколы (XSMP) – бұл ICE негізінде құрылған протокол, ол сессия менеджерімен қолданбалардың өзара әрекеттесуін реттейді, ол интерактивті сессияның соңында жұмыс үстелінің күйін сақтап, оны сол пайдаланушымен жаңа сессия басталғанда қалпына келтіретін бағдарлама. Freedesktop спецификацияларына жаңа конвенциялар кіреді, соның ішінде Xdnd сүйреп тастау конвенциясы (деректерді таңдап, басқа терезеге сүйреу арқылы беру үшін қолданылады) және Xembed енгізілген қолданба конвенциясы (бір қолданбаның ішкі терезесінде қалай жұмыс істеуге болатынын түсіндіреді).

Таңдаулар, кесу буферлері және сүйреп тастау

X терезесі жүйесіндегі таңдау, кесу буферлері және сүйреп тастау механизмдері пайдаланушыға деректерді бір терезеден екіншісіне беруге мүмкіндік береді. Таңдаулар мен кесу буферлері (әдетте) пайдаланушы терезеде мәтін немесе басқа деректерді таңдап, басқа терезеге қойғанда қолданылады. Сүйреп тастау, пайдаланушы терезеде бір нәрсені таңдап, содан кейін таңдалған нәрсені басып, басқа терезеге сүйрегенде қолданылады. Екі түрлі қолданба екі терезені басқара алатындықтан, деректерді беру үшін бір X серверіне қосылған әртүрлі клиенттердің өзара әрекеттесуі қажет. X терезесінің негізгі протоколы таңдау алмасуына қатысты сұраулар мен оқиғалардың кейбір түрлерін қамтиды, бірақ деректерді беру негізінен таңдау беруге арналмаған, жалпы клиенттен клиентке оқиға жіберу және терезе қасиеттерін пайдалану арқылы жүзеге асырылады. Пайдаланушылар клиенттер арасында әртүрлі типтегі деректерді беруге болады: әдетте бұл мәтін, бірақ пиксель картасы, сан, нысандар тізімі және т.б. да болуы мүмкін. Таңдаулар мен сүйреп тастау белсенді механизмдер болып табылады: пайдаланушы терезеде деректерді таңдағаннан кейін, терезені басқаратын клиент осы деректерді сұраған қолданбаға беру протоколын белсенді түрде қолдауы керек. Кесу буферлері керісінше, пассивті механизмді қамтамасыз етеді: пайдаланушы мәтін бөлігін таңдағанда, оның мазмұны кесу буферіне көшіріледі және терезені басқаратын қолданба тоқтатылған немесе терезе жойылған жағдайда да онда қалады.

Сессия менеджері

Шамамен айтқанда, сессияның күйі – бұл белгілі бір уақыттағы жұмыс үстелінің күйі: ағымдағы мазмұнымен терезелер жиынтығы. Нақтырақ айтқанда, бұл терезелерді басқаратын қосымшалар жиынтығы және қажет болған жағдайда осы қосымшаларға басқарылатын терезелердің күйін қалпына келтіруге мүмкіндік беретін ақпарат. X сессия менеджері деп аталатын бағдарлама сессиялардың күйін сақтап, қалпына келтіреді. Ең танылатыны, сессия менеджерін пайдалану пайдаланушыға интерактивті сессиядан шығуға, бірақ қайта кіргенде дәл сол терезелерді сол күйде табуға мүмкіндік береді. Мұны іске асыру үшін сессия менеджері бағдарламасы жүйеден шыққанда жұмыс істеп жатқан қосымшалардың атауларын сақтап, жүйеге кіргенде оларды қайта іске қосады. Қосымшалардың күйін де қалпына келтіру үшін (терезелердің мазмұнын қалпына келтіру үшін қажет), қосымшалар сессия менеджерінің сұрауы бойынша орындалу күйін сақтап, қайта іске қосылғанда оны қайта жүктеуі керек. X терезе жүйесі xsm деп аталатын әдепкі сессия менеджерін қамтиды. Бағдарламашылар нақты жұмыс үстелдері үшін басқа сессия менеджерлерін жасады. KDE, Xfce және GNOME үшін маңызды мысалдарға , , және кіреді.

X дисплей менеджері

X дисплей менеджері деп аталатын бағдарлама X терезесі жүйесінде графикалық кіру экранын көрсетеді. Жалпы алғанда, дисплей менеджері жергілікті компьютерде бір немесе бірнеше X серверін іске қосады немесе қашықтағы компьютерлерде жұмыс істейтін X серверлерінен келіп түсетін қосылымдарды қабылдайды. Жергілікті серверлер дисплей менеджерімен іске қосылады, ол оларға қосылып, пайдаланушыға кіру экранын ұсынады. Ал қашықтағы серверлер дисплей менеджерінен тәуелсіз іске қосылып, оған қосылады. Мұндай жағдайда дисплей менеджері графикалық telnet сервері сияқты жұмыс істейді: X сервері дисплей менеджеріне қосылып, сессияны бастайды; осы сессияны пайдаланатын бағдарламалар дисплей менеджері орналасқан компьютерде іске қосылады, бірақ кіріс және шығыс X сервері жұмыс істейтін компьютерде (ол пайдаланушының алдындағы немесе қашықтағы компьютер болуы мүмкін) жүзеге асырылады. X Window System жүйесіне XDM негізгі дисплей менеджері ретінде енгізілген. Басқа дисплей менеджерлеріне GDM (GNOME), KDM/SDDM (KDE), WDM (Window Maker-де қолданылатын WINGs виджеттері жиынтығын пайдалана отырып) және entrance (Enlightenment v.17 архитектурасын пайдалана отырып) жатады.

Пайдаланушы интерфейсінің элементтері

X-тің алғашқы виджет құрал жиынтықтарына Xaw (Athena Widget Set, 1983), OLIT (OPEN LOOK Intrinsics Toolkit, 1988), XView (1988), Motif (1980-ші жылдар) және Tk жатты. OLIT және XView Sun компаниясының OpenWindows жұмыс ортасы үшін негізгі құралдар жиынтығы ретінде жұмыс істейді. Motif ортақ жұмыс ортасы (CDE) үшін базалық құралдар жиынтығын ұсынады, бұл Solaris, AIX және HP UX сияқты коммерциялық Unix жүйелерінде қолданылатын жұмыс ортасы. (Solaris 10 CDE және GNOME-ды қамтиды, соңғысы артықшылықты жұмыс ортасы болып табылады.) Жақында жасалған құралдар жиынтықтарына Qt (1991, KDE қолданады), GTK+ (1997, GNOME қолданады), wxWidgets (1992), FLTK (1998), FOX (1997) және fpGUI (2005, қазіргі уақытта қолданыста) кіреді.

Ескірген кеңейтулер

Кеңейту сипаттамасы және ескертулер Төмен өткізгіштік жолақты X (LBX) қауіпсіз қабықша арқылы туннельделген VNC-мен алмастырылды, бұл LBX-тен жылдам екені дәлелденді. PEX "PHIGS X-қа кеңейтуі"; PHIGS 3D көрініс графигі API-ін қолдау. Көбінесе оның орнына OpenGL-мен GLX қолданылады. XImage Extension орнына MIT SHM қолданылады. XEvIE X оқиғаларды ұстау кеңейтуі. Барлық пернетақта мен тышқан оқиғаларын ұстап алу қажеттілігі бар пайдаланушылар үшін әзірленген. X.Org 7.5 нұсқасында жойылды. XFree86 Misc кіріс қасиеттерімен алмастырылды. X.Org 7.5 нұсқасында жойылды.