Як програми KDE запускаються під Gnome?


19

Якщо Gnome використовує GTK +, а KDE використовує Qt, то звідки програми KDE можуть працювати у Gnome?

Відповіді:


30

І 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 "Віддалений робочий стіл" , і вони мають дуже ефективні способи стиснення віконних зображень.)


1
Цикл подій Qt обертає GTK, тому ви навіть можете комбінувати Qt та GTK-код у одній програмі (зазвичай це лише додатки, наприклад, плагіни).
Алекс П

@Alex: Ви мали на увазі "може завернути" цикл подій Qt, який може доставляти події в GTK, або ви казали, що Qt насправді покладається на GLib для циклу подій?
grawity

1
Qt також може використовувати свою власну реалізацію циклу подій, але вона замовчує Glib (принаймні, у Qt4 - я не дивився, як це робить Qt5). Існує прихований прапор ($ QT_NO_GLIB), який контролює його під час виконання.
Алекс П

7

Частина відповіді полягає в тому, що провідні середовища настільних ПК (Gnome, KDE, XFCE, можливо, інші) спільно працюють на веб-сайті http://freedesktop.org, щоб зробити таку взаємодію можливою. Однією з специфікацій, опублікованих FD.o, є EWMH , що забезпечує певний рівень сумісності між менеджерами вікон (для сучасних функцій, а не лише для базового керування вікнами).


4

Під час роботи під GNOME програми KDE все ще викликають спільні бібліотеки Qt, від яких вони залежать. Те саме стосується будь-якого запуску будь-якої програми в будь-якому іншому середовищі робочого столу. Вони не обмежують те, що можна назвати, а що не можна.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.