Відповіді:
І GTK, і Qt - це набори інструментів для побудови графічних інтерфейсів. Кожен набір інструментів користувальницького інтерфейсу надає власні функції програмам для створення віджетів (кнопок, текстових полів ...) та надходить у формі бібліотек , з якими посилається графічна програма. Програма, написана для GNOME, буде використовувати GTK ( libgdk
і libgtk
), тоді як програми KDE використовують Qt ( libQtCore
і libQtGui
), програми Просвітництва використовують EFL тощо.
Однак усі ці набори інструментів використовують ту саму систему вікон X та той самий протокол X11 . Щоб речі з’являлися на екрані, інструментарій підключається до запущеного X-сервера (зазвичай Xorg, який раніше називався XFree86), передає команди X11 (створити вікно, намалювати щось у вікні) та отримує події введення X11 (миша, клавіатура, розмір вікон) , & c) назад.
(Більшість сучасних наборів інструментів, таких як GTK, Qt або EFL, виконують фантазійне малювання самостійно, і просто використовують X11 для надсилання готового зображення всього вікна, а сервер X просто виводить його на екран. Замість цього використовують старі набори інструментів, такі як lXaw або Motif X11 малює примітиви на зразок ліній чи прямокутників чи тексту, а сервер X виконує всі візуалізації.)
Потім сервер X виконує завдання збору всього, розмови з вашою графічною карткою тощо. Таким чином, ви можете запускати програми, які використовують різні різні версії різних наборів інструментів, оскільки в кінцевому підсумку вони просто використовують одні і ті ж засоби ОС.
Ситуація з декількома інструментами не характерна лише для X - наприклад, ви знайдете програми Windows, використовуючи стандартний, comctl32
але також WPF, .NET WinForms, Aura Chrome, XUL Firefox і навіть ті ж GTK або Qt. Більшість ігор використовують власні стильові елементи управління. Дійсно, це можливо в будь-якій графічній системі, яка дозволяє малювати зображення через усе вікно.
Однак одним із принципів X був "механізм, а не політика". Це означає, що сервер X лише надає механізму для своїх клієнтів (графічні програми) робити різні дії, але накладає якнайменше кількість правил . Іншими словами, X сприймає це в більшій мірі, ніж будь-яка інша графічна система.
Наприклад, однією з невід’ємних частин графічної системи є управління вікнами - малювання кадрів (також прикрас) навколо кожного вікна, можливість переміщення та зміни розміру вікон тощо. У Windows та OS X вбудований віконний менеджер, але в X він працює як окрема програма - пакет X.Org поставляється з мінімальним twm
, але майже всі середовища на робочому столі передають власні вікна-менеджери (GNOME мав Sawfish, Metacity, gnome-shell; KDE має KWin), що забезпечує інтеграцію з відповідним середовищем робочого столу.
(Як і набори інструментів, сучасні менеджери вікон "Композиція" насправді беруть на себе завдання Xorg складати всі вікна на кінцеве зображення екрану, дозволяючи додавати речі, такі як тіні або ефекти.)
У сучасних робочих середовищах це також створило проблеми. Щоб скористатися найпоширенішим прикладом: гарячі клавіші використовують ту саму функціональність "захоплення клавіатури"; спливаючі меню; і заставки, і лише одна програма може використовувати його одночасно. Це означає, що ви не можете заблокувати екран, коли спливаюче меню відкрите, або пропустити пісні, коли екран заблокований. Це одна з декількох причин, що Wayland створюється як заміна для X11.
Технічно це навіть означає, що ви можете запускати програми X на іншому комп’ютері, спілкуючись із сервером X на вашій машині по мережі. Дійсно, це було випадком первинного використання в перші дні, і саме звідси походить назва "X- сервер ". На ОС Mac можна запустити X-сервер і відобразити вікна, створені програмами, що працюють на Linux, FreeBSD, навіть OpenVMS.
Однак, як було сказано вище, сучасні набори інструментів виконують усі малюнки на стороні клієнта (вигадлива графіка та гарні шрифти досить складно виконати з примітивами X11), і лише пересилають остаточні зображення на сервер X, який дуже швидко локально, але вимагає Справедливий біт пропускної здатності мережі.
( Для цього розроблені інші протоколи, такі як RFB (він же VNC) або Microsoft "Віддалений робочий стіл" , і вони мають дуже ефективні способи стиснення віконних зображень.)
Частина відповіді полягає в тому, що провідні середовища настільних ПК (Gnome, KDE, XFCE, можливо, інші) спільно працюють на веб-сайті http://freedesktop.org, щоб зробити таку взаємодію можливою. Однією з специфікацій, опублікованих FD.o, є EWMH , що забезпечує певний рівень сумісності між менеджерами вікон (для сучасних функцій, а не лише для базового керування вікнами).