Bagaimana aplikasi KDE berjalan di bawah Gnome?


19

Jika Gnome menggunakan GTK + dan KDE menggunakan Qt, bagaimana bisa aplikasi KDE dapat berjalan di bawah Gnome?

Jawaban:


30

Baik GTK dan Qt adalah toolkit untuk membangun antarmuka grafis. Setiap toolkit UI menyediakan fungsinya sendiri untuk program untuk membuat widget (tombol, kotak teks ...) dan datang dalam bentuk pustaka yang ditautkan oleh program grafis tersebut. Program yang ditulis untuk GNOME akan menggunakan GTK ( libgdkdan libgtk), sedangkan program KDE menggunakan Qt ( libQtCoredan libQtGui), program Pencerahan menggunakan EFL, dan sebagainya.

Namun, semua toolkit ini menggunakan sistem X window yang sama & protokol X11 yang sama . Untuk membuat hal-hal muncul di layar, toolkit terhubung ke server X yang berjalan (biasanya Xorg, sebelumnya disebut XFree86), mengirimkan perintah X11 (membuat jendela, menggambar sesuatu di jendela), dan menerima peristiwa input X11 (mouse, keyboard, ukuran jendela) , & c) kembali.

(Kebanyakan toolkit modern, seperti GTK, Qt, atau EFL, melakukan menggambar sendiri, dan hanya menggunakan X11 untuk mengirim gambar selesai dari seluruh jendela, dan server X hanya meletakkannya di layar. Toolkit yang lebih tua seperti lXaw atau Motif sebagai gantinya menggunakan X11 untuk menggambar primitif seperti garis atau persegi panjang atau teks, dan X server melakukan semua rendering.)

Server X kemudian melakukan pekerjaan menyatukan semuanya, berbicara dengan kartu grafis Anda, dan sebagainya. Dengan cara ini, Anda dapat menjalankan program yang menggunakan berbagai versi toolkit yang berbeda, karena pada akhirnya mereka hanya menggunakan fasilitas OS yang sama.

Mekanisme, bukan kebijakan

Situasi multi-toolkit tidak unik untuk X - misalnya, Anda akan menemukan program Windows menggunakan standar comctl32tetapi juga WPF, .NET WinForms, Aura Chrome, XUL Firefox, dan bahkan GTK atau Qt yang sama. Sebagian besar game menggunakan kontrol gaya mereka sendiri. Sungguh, ini dimungkinkan pada sistem grafis apa pun yang memungkinkan Anda menggambar gambar di seluruh jendela.

Namun, salah satu prinsip X adalah "mekanisme, bukan kebijakan". Ini berarti bahwa server X hanya menyediakan mekanisme bagi kliennya (program grafis) untuk melakukan berbagai hal, tetapi memaksakan aturan sesedikit yang diperlukan . Dengan kata lain, X mengambil tingkat ini lebih besar daripada sistem grafis lainnya.

Sebagai contoh, salah satu bagian integral dari sistem grafis adalah manajemen jendela - gambar bingkai (alias dekorasi) di sekitar setiap jendela, kemampuan untuk memindahkan & mengubah ukuran jendela, dan sebagainya. Windows dan OS X memiliki window manager yang dibangun ke dalam sistem, tetapi di X itu berjalan sebagai program yang terpisah - suite X.Org hadir dengan minimal twm, tetapi hampir semua lingkungan desktop mengirimkan window manager mereka sendiri (GNOME memiliki Sawfish, Metacity, gnome-shell; KDE memiliki KWin) menyediakan integrasi dengan lingkungan desktop masing-masing.

(Seperti toolkit, manajer jendela "compositing" modern sebenarnya mengambil alih tugas Xorg menyusun semua jendela ke gambar layar akhir, memungkinkan hal-hal seperti bayangan atau efek ditambahkan.)

Dengan lingkungan desktop modern, ini sebenarnya juga menciptakan masalah. Untuk menggunakan contoh yang paling umum: fungsionalitas "ambil keyboard" yang sama digunakan oleh tombol cepat; menu pop-up; dan screensaver, dan hanya satu program yang dapat menggunakannya sekaligus. Ini berarti Anda tidak dapat mengunci layar saat menu pop-up terbuka, atau melewati lagu saat layar dikunci. Ini adalah salah satu dari beberapa alasan Wayland dibuat sebagai pengganti X11.

Catatan samping

Secara teknis, ini bahkan berarti Anda dapat menjalankan program X di komputer yang berbeda, berbicara dengan server X pada mesin Anda melalui jaringan. Memang, ini adalah kasus penggunaan utama pada hari-hari awal, dan di situlah nama "X server " berasal dari tempat pertama. Dimungkinkan untuk menjalankan server X pada Mac dan membuatnya menampilkan windows yang dibuat oleh program yang berjalan di Linux, FreeBSD, bahkan OpenVMS.

Namun, seperti yang disebutkan di atas, toolkit modern melakukan semua menggambar sisi klien (grafik mewah dan font cantik cukup sulit dilakukan dengan primitif X11), dan hanya mendorong gambar akhir ke server X, yang sangat cepat secara lokal, tetapi membutuhkan sedikit bandwidth jaringan yang adil.

(Protokol lain, seperti RFB (alias VNC) atau "Remote Desktop" Microsoft, dirancang untuk ini, dan mereka memiliki cara yang sangat efisien untuk mengompresi gambar jendela.)


1
Event loop Qt membungkus GTK, sehingga Anda bahkan dapat menggabungkan kode Qt dan GTK dalam aplikasi yang sama (biasanya ini hanya muncul dengan, seperti, plugins).
Alex P

@Alex: Apakah maksud Anda "dapat membungkus" di loop acara Qt itu dapat mengirimkan acara ke GTK, atau apakah Anda mengatakan bahwa Qt benar-benar bergantung pada GLib untuk loop acara?
grawity

1
Qt dapat menggunakan implementasi event loop murni sendiri juga, tetapi ia membungkus Glib secara default (setidaknya, di Qt4 - saya belum melihat bagaimana Qt5 melakukannya). Ada bendera tersembunyi ($ QT_NO_GLIB) yang mengontrolnya saat runtime.
Alex P

7

Sebagian dari jawabannya adalah bahwa lingkungan desktop terkemuka (Gnome, KDE, XFCE, mungkin yang lain) bekerja bersama di bawah http://freedesktop.org untuk memungkinkan interoperasi semacam itu. Salah satu spesifikasi yang diterbitkan oleh FD.o adalah EWMH , yang memastikan tingkat kompatibilitas tertentu antara manajer jendela (untuk fitur modern, bukan hanya manajemen jendela dasar).


4

Saat dijalankan di bawah GNOME, aplikasi KDE masih memanggil pustaka Qt yang dibagikan di mana mereka bergantung. Hal yang sama berlaku untuk menjalankan aplikasi apa pun di bawah Lingkungan Desktop lainnya. Mereka tidak membatasi apa yang bisa disebut dan apa yang tidak.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.