KDE uygulamaları Gnome altında nasıl çalışır?


19

Gnome GTK + ve KDE Qt kullanıyorsa, KDE uygulamaları Gnome altında nasıl çalışabilir?

Yanıtlar:


30

Hem GTK hem de Qt, grafik arayüzler oluşturmak için araç takımlarıdır . Her UI araç seti, programların pencere öğeleri (düğmeler, metin kutuları ...) oluşturması için kendi işlevlerini sağlar ve grafik programının bağlandığı kütüphaneler biçiminde gelir . GNOME için yazılmış bir program GTK ( libgdkve libgtk) kullanırken, KDE programları Qt ( libQtCoreve libQtGui) kullanırken, Aydınlanma programları EFL ve benzerlerini kullanır.

Ancak, tüm bu araç takımları aynı X pencere sistemini ve aynı X11 protokolünü kullanır . Araçların ekranda görünmesini sağlamak için çalışan X sunucusuna (genellikle XFree86 olarak adlandırılan Xorg) bağlanır, X11 komutları gönderir (pencere oluştur, pencereye bir şeyler çizer) ve X11 giriş olaylarını (fare, klavye, pencere yeniden boyutlandırması) alır & c) geri.

(GTK, Qt veya EFL gibi çoğu modern araç kiti süslü çizim gerçekleştirir ve tüm pencerenin bitmiş görüntüsünü göndermek için X11'i kullanır ve X sunucusu yalnızca ekrana koyar. LXaw veya Motif gibi eski araç kitleri X11, çizgiler, dikdörtgenler veya metin gibi temel öğeleri çizmek için ve X sunucusu tüm oluşturma işlemlerini gerçekleştirir.)

X sunucusu daha sonra her şeyi bir araya getirme, grafik kartınızla konuşma ve benzeri işleri yapar. Bu şekilde, farklı araç setlerinin çeşitli farklı sürümlerini kullanan programları çalıştırabilirsiniz, çünkü sonunda aynı işletim sistemlerini kullanırlar.

Politika değil mekanizma

Birden çok araç seti durumu X'e özgü değildir - örneğin, standart programların comctl32yanı sıra WPF, .NET WinForms, Chrome'un Aura, Firefox'un XUL ve hatta aynı GTK veya Qt kullanan Windows programlarını bulacaksınız . Çoğu oyun kendi tarz kontrollerini kullanır. Gerçekten, bu, tüm pencereye bir resim çizmenizi sağlayan herhangi bir grafik sisteminde mümkündür .

Ancak X'in ilkelerinden biri "politika değil, mekanizma" idi. Bu, X sunucusunun istemcileri (grafik programları) için çeşitli şeyler yapmalarını sağlayan mekanizmayı sağladığı, ancak gerektiği kadar az kural uyguladığı anlamına gelir . Başka bir deyişle, X bunu diğer grafik sistemlerinden daha fazla alır.

Örneğin, bir grafik sisteminin ayrılmaz parçalarından biri pencere yönetimidir - her pencerenin etrafındaki çerçevelerin çizimi (diğer adıyla süslemeler), pencereleri taşıma ve yeniden boyutlandırma yeteneği vb. Windows ve OS X'in sistemde yerleşik bir pencere yöneticisi vardır, ancak X'te ayrı bir program olarak çalışır - X.Org paketi minimaldir twm, ancak neredeyse tüm masaüstü ortamları kendi pencere yöneticilerini gönderir (GNOME Sawfish, Metacity, gnome-shell; KDE, ilgili masaüstü ortamıyla entegrasyon sağlar.

(Araç setleri gibi, modern "birleştirme" pencere yöneticileri aslında Xorg'un tüm pencereleri son ekran görüntüsüne oluşturma işini üstlenerek gölgeler veya efektler gibi şeylerin eklenmesine izin verir.)

Modern masaüstü ortamlarında bu aslında sorun yarattı. En yaygın örneği kullanmak için: aynı "klavyeyi yakala" işlevi kısayol tuşları tarafından kullanılır; açılır menüler; ve ekran koruyucular ile aynı anda yalnızca bir program kullanabilir. Bu, bir açılır menü açıkken ekranı kilitleyemeyeceğiniz veya ekran kilitliyken şarkıları atlayamayacağınız anlamına gelir. Wayland'ın X11'in yerini almasının çeşitli nedenlerinden biridir.

Kenar notu

Teknik olarak, bu, X programlarını farklı bir bilgisayarda çalıştırabileceğiniz ve makinenizdeki X sunucusuyla ağ üzerinden konuşabileceğiniz anlamına gelir. Aslında, bu ilk günlerde birincil kullanım durumuydu ve ilk etapta "X sunucusu " isminin geldiği yer. Mac'te X sunucusu çalıştırmak ve Linux, FreeBSD ve hatta OpenVMS üzerinde çalışan programlar tarafından oluşturulan pencereleri görüntülemesini sağlamak mümkündür.

Bununla birlikte, yukarıda belirtildiği gibi, modern araç takımları tüm çizim istemci tarafını gerçekleştirir (süslü grafikler ve güzel yazı tipleri X11 ilkelleriyle yapmak oldukça zordur) ve yalnızca son görüntüleri yerel olarak çok hızlı olan ancak ağ bit genişliği.

(RFB (diğer adıyla VNC) veya Microsoft'un "Uzak Masaüstü" gibi diğer protokoller bunun için tasarlanmıştır ve pencere görüntülerini sıkıştırmanın çok etkili yollarına sahiptirler.)


1
Qt'nin olay döngüsü GTK'ları sarar, böylece Qt ve GTK kodunu aynı uygulamada birleştirebilirsiniz (genellikle bu sadece eklentilerle birlikte gelir).
Alex P

@Alex: Qt'un olay döngüsünün GTK'ya olay gönderebileceğini "silebilir" mi demek istediniz?
Grawity

1
Qt kendi saf olay döngü uygulamasını da kullanabilir, ancak Glib'i varsayılan olarak sarar (en azından Qt4'te - Qt5'in bunu nasıl yaptığına bakmadım). Çalışma zamanında kontrol eden gizli bir bayrak ($ ​​QT_NO_GLIB) var.
Alex P

7

Cevabın bir parçası, önde gelen masaüstü ortamlarının (Gnome, KDE, XFCE, belki de diğerleri) bu tür birlikte çalışmayı mümkün kılmak için http://freedesktop.org altında birlikte çalışmasıdır . FD.o tarafından yayınlanan spesifikasyonlardan biri, pencere yöneticileri arasında belirli bir uyumluluk seviyesi sağlayan EWMH'dir (sadece temel pencere yönetimi değil, modern özellikler için).


4

GNOME altında çalıştırıldığında, KDE uygulamaları hala bağımlı oldukları Qt kütüphanelerini çağırır. Aynı şey herhangi bir uygulamayı diğer Masaüstü Ortamlarında çalıştıran herhangi bir uygulama için de geçerlidir. Neyin çağrılabileceği ve neyin yapılamayacağı konusunda herhangi bir kısıtlama getirmezler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.