X, Xorg dan D-Bus: apa bedanya?

35

Dalam proses belajar melakukan hal-hal tertentu dalam pemrograman GUI (misalnya, memesan ruang pada layar untuk aplikasi), saya harus belajar lebih banyak tentang Window Manager, biasanya X11 di Linux (saya tidak yakin apakah ada distro bahkan , yang menggunakan apa pun selain X11, meskipun saya mendengar tentang Wayland , yang belum diimplementasikan.)

Saya cukup baru dalam pemrograman, dan tidak sabar; jadi saya hanya menyelam ke dalamnya. Sekarang saya membaca ICCCM, dengan harapan untuk belajar lebih banyak. Namun dokumen ini bertujuan untuk publik yang tahu (cara) lebih dari saya. Jadi saya menemukan beberapa informasi, dan saya ingin mendapatkan beberapa klarifikasi.

Bagian 2 dari kutipan ICCCM:

Perhatikan bahwa semua data yang ditransfer antara pemilik dan pemohon biasanya harus melalui server di lingkungan X Versi 11. Seorang klien tidak dapat berasumsi bahwa klien lain dapat membuka file yang sama atau bahkan berkomunikasi secara langsung. Klien lain mungkin berbicara ke server melalui mekanisme jaringan yang sama sekali berbeda (misalnya, satu klien mungkin DECnet dan TCP / IP lainnya). Dengan demikian, meneruskan referensi tidak langsung ke data (seperti nama file, nama host dan nomor port, dan sebagainya) diizinkan hanya jika kedua klien secara khusus setuju.

Sejauh yang saya mengerti, X Window Manager dibangun di atas Server X (terima kasih Wikipedia). Dalam kutipan di atas: dikatakan klien dapat berkomunikasi dengan server menggunakan DECnet atau TCP / IP. Sejauh ini saya berpikir bahwa "server" adalah kiasan, sekarang saya ragu: apakah server X server seperti di "server web"? Bagaimana saya harus memahami fungsinya / definisinya?

Kemudian, sering ada referensi ke X11, Xorg, X Server dan / atau X Window Manager. Itu membingungkan: apakah X11 bundel termasuk Xorg dan X Window Manager? Jika demikian, apakah ada hal lain dalam bundel X11 ini?

X juga memerlukan mouse atau keyboard atau input jenis lain: apakah ini juga bagian dari fungsi X Server? Apakah X Window Manager hanya menjaga tampilan saja?

Akhirnya, kutipan di sini juga menyebutkan klien berkomunikasi atau tidak dengan satu sama lain: ini mengingatkan saya pada D-Bus, yang saya gunakan sedikit untuk tujuan pembelajaran. Dengan D-Bus Anda juga dapat memicu peristiwa jendela. Itu membuat saya sedikit bingung bagaimana program harus berkomunikasi satu sama lain: * apa perbedaan antara program yang berinteraksi menggunakan X Server atau menggunakan D-Bus? *

Sayang sekali informasi ini entah bagaimana tetap tidak jelas, itu membuatnya lebih sulit untuk dipelajari, tetapi mudah-mudahan Anda dapat memahami ini :) Terima kasih.

Benjamin
sumber

Jawaban:

61

Anda mengajukan lima pertanyaan di sini, dan mungkin lebih baik mengajukan lima pertanyaan ☺ Tetapi saya akan menjawab:

  1. X adalah server dan dapat dibandingkan dengan "server web" karena X adalah proses yang mendengarkan koneksi masuk yang berbicara protokol tertentu (protokol X) dan mengeluarkan jawaban. Koneksi berasal dari klien X, yang mungkin pada host lokal atau pada host jarak jauh yang diakses melalui jaringan.

  2. X11 adalah "versi utama" dari protokol X, yang telah berkembang sejak awal. X11 adalah protokol terbaru dan paling umum. (Xorg adalah implementasi dari server X, perpustakaan X dan sekumpulan klien, semuanya berbicara X11. Ada implementasi lain: sebagian besar XFree86 yang tidak berfungsi; yang komersial seperti Hummingbird Exceed; garpu seperti XQuartz, yang berjalan pada Mac OS X )

  3. "Window manager" adalah klien X yang mengelola windows. Biasanya memiliki tanggung jawab untuk menghias jendela dengan bevels / borders, drop shadow, bilah menu yang berisi tombol, dll. - dan menangani logika penempatan jendela; jendela dukungan diseret, diubah ukurannya atau disusun ulang, dll.

  4. X membutuhkan input dan memiliki tanggung jawab bersama untuk mengelolanya dengan Kernel. Secara historis, X melakukan banyak manajemen perangkat keras itu sendiri. Di zaman modern, pada platform Linux, X secara bertahap menjadi "lebih kecil" dan mendelegasikan tanggung jawab ini ke kernel Linux. Keuntungan dari ini adalah: basis kode X yang lebih kecil; lebih sedikit "crossed-wires" dengan kernel dan X yang mencoba mengelola hal yang sama. (contoh dari ini adalah antarmuka acara Linux, di mana acara dari mouse dll ditafsirkan dan diterjemahkan oleh kernel dan driver-nya ke antarmuka standar di /dev/input/event*, yang dikonsumsi oleh server X). Perhatikan bahwa pada platform lain (BSD, Solaris) X masih cukup monolitik.

  5. Ada banyak, banyak cara untuk proses berkomunikasi satu sama lain. Saya percaya klien X dapat berinteraksi melalui protokol X (misalnya, manajer jendela X tradisional perlu tahu kapan klien lain menggambar windows, untuk menghiasnya; pager perlu tahu kapan ukuran atau posisi jendela berubah, untuk mencerminkan bahwa dalam pager). D-Bus adalah teknologi komunikasi antar proses (IPC) modern yang dikembangkan untuk mengatasi kekurangan metode lain. Ini bukan spesifik X.

jmtd
sumber
Terima kasih banyak! Itu sangat membantu. Tentang 5 pertanyaan: saya tidak tahu apa protokol dalam kasus itu, tetapi jika seorang administrator ingin saya membaginya, saya akan mendengarnya. Saya pribadi suka memilikinya dalam satu dokumen, dan melihat 5 pertanyaan sebagai sub-pertanyaan untuk judul. Terima kasih lagi.
Benjamin
Maksud dari tidak melompat protokol adalah bahwa Sistem X Window dirancang sehingga aplikasi ("klien") tidak perlu berjalan pada host yang sama, yaitu Anda dapat masuk ke mesin lain, menjalankan program di sana, dan jendela terbuka di layar Anda seperti aplikasi lokal. Jika program lain bertanya "apa ID proses Anda, jadi saya bisa berbicara langsung dengan Anda", tidak ada cara untuk menjawab pertanyaan ini dengan benar.
Simon Richter
Anda mungkin ingin tidak mengetahui bahwa sumber daya yang dibagikan oleh server X adalah tampilan yang terdiri dari satu atau lebih monitor dan dua atau lebih perangkat input (keyboard, mouse)
hildred
Sangat membantu semua 5 pertanyaan bersama. Terima kasih.
Harvey
@hildred Dalam kasus layar sentuh dalam konfigurasi kios Anda dapat memiliki sedikitnya satu perangkat input.
Shadur