Skip to content

emka.web.id

menulis pengetahuan – merekam peradaban

Menu
  • Home
  • Tutorial
  • Search
Menu

Modul Kompositor “COMO” Untuk Membangun Kompositor Wayland Telah Tiba

Posted on March 4, 2024

Pengembang sumber terbuka Roman Gilg yang terkenal dengan karyanya di KWinFT sebelum melakukan rebranding menjadi Kapal Theseus memiliki beberapa berita penting untuk dibagikan hari ini melalui Phoronix. Inilah postingan tamunya yang mengumumkan The Compositor Modules.

Minggu lalu Phoronix melaporkan bahwa KWinFT diganti namanya menjadi Theseus` Ship, namun juga akan ada “sesuatu yang lebih besar” untuk segera dibicarakan.

Waktunya telah tiba sekarang. Saya dengan senang hati mengumumkan secara eksklusif di Phoronix rilis pertama The Compositor Modules – atau singkatnya COMO, koleksi perpustakaan C++ untuk menulis kompositor Wayland dan X11 dengan mudah.

Rilisan pertama sekarang tersedia di GitHub. Izinkan saya memberi Anda tur tentang apa yang dapat Anda harapkan dari perpustakaan ini. Sebuah perpustakaan yang saya yakini akan mengisi celah besar dalam ekosistem Wayland.

Tulis Kompositor Wayland Anda seperti X11 One

Hadapi saja: membuat kompositor Wayland itu sulit!
Terutama jika Anda hanya ingin menerapkan logika windowing khusus.
Anda masih memerlukan antara lain:

render tumpukan melalui beberapa API grafis dan tumpukan DRMinput melalui libinputmanajemen tampilan melalui DRMdrag-and-drop yang memediasi antara logika klien untuk operasi yang lebih tinggi seperti tangkapan layar dan kemungkinan besar seluruh window manager X11 secara internal untuk Xwayland.

Menulis window manager X11 sebagai perbandingan jauh lebih mudah!
Anda tidak perlu melakukan semua itu karena XServer sudah melakukannya untuk Anda.
Namun di sisi lain yang tentunya tidak kita inginkan lagi sekarang adalah Wayland adalah monster monolitik seperti XServer dulu. Solusi yang jelas adalah membangun perpustakaan dukungan untuk menghubungkan dan menyederhanakan pembuatan kompositor.

Sudah ada beberapa opsi untuk itu:

wlrootslibwestonMirQt Wayland CompositorLouvre (baru)
Saya yakin Modul Compositor jauh lebih cocok untuk dengan mudah mengembangkan kompositor Wayland yang kaya fitur daripada modul yang sudah ada karena dua alasan sederhana. Yang pertama adalah untuk menulis kompositor Wayland Anda sendiri, yang Anda perlukan hanyalah tiga baris kode CMake dan fungsi utama ini:

int utama(int argc, char* argv[])
{
menggunakan namespace como;

base::wayland::app_singleton aplikasi(argc, argv);

menggunakan base_t = base::wayland::platform;
base_t base({.config = base::config(KConfig::OpenFlag::FullConfig, “kwinft-minimalrc”)});

base.mod.render = std::make_unique(base);
base.mod.input = std::make_unique(base, input::config(KConfig::NoGlobals));
base.mod.space = std::make_unique(*base.mod.render, *base.mod.input);

kembali base::wayland::exec(base, app);
}

Seperti yang ditunjukkan oleh MVP Minico kami.

Alasan kedua adalah Modul Compositor dimaksudkan untuk berguna sama dalam sesi desktop yang kaya fitur serta kasus penggunaan minimal yang tertanam. Biarkan saya memperluas ini lebih jauh.

Dari Desktop Besar

Meskipun Modul Kompositor menggunakan wlroots di backend, sisi protokol Wayland mereka tidak didasarkan pada wlroots tetapi Wrapland. Hal ini disebabkan oleh fakta bahwa Modul Compositor seharusnya mendukung pembuatan compositor yang berfungsi penuh untuk desktop KDE Plasma, seperti yang ditunjukkan oleh Theseus` Ship.

wlroots tidak mendukung semua protokol yang diperlukan untuk itu. Dan juga tidak menyediakan semua integrasi dengan layanan desktop KDE, aturan dan API skripnya, sistem konfigurasinya, dan yang tak kalah pentingnya, rangkaian fitur pengelola jendela X11 ekstensif yang diharapkan oleh aplikasi lama saat dijalankan di dalam desktop KDE.

KDE Plasma adalah memimpin paket dalam hal fungsionalitas.

Hal serupa harus dikatakan tentang pesaing lainnya. Meskipun libweston, Mir, dan Qt Wayland Compositor selalu dikembangkan terutama untuk kasus penggunaan minimal yang tertanam dan hanya setelah dipikir-pikir beberapa di antaranya telah dibuat dapat digunakan dalam kasus penggunaan desktop yang terbatas, Louve sebagai opsi yang lebih baru tampaknya tidak terbatas. oleh bias itu. Tapi ini adalah proyek greenfield dan memperluas fungsionalitas kecil yang sekarang ditawarkannya ke sesuatu yang besar seperti lingkungan desktop KDE dengan semua keunikan dan fiturnya, secara praktis tidak mungkin.

Di sisi lain Modul Compositor dipisahkan dari KWinFT, yang selama ini merupakan garpu KWin. Dengan nenek moyang mereka, mereka mempertahankan tingkat fungsionalitas dan integrasi luar biasa yang sama dengan desktop KDE Plasma yang besar seperti kompositor KDE standar saat ini. Jika Anda mencari pengalaman desktop yang luar biasa tanpa kompromi dan mengutak-atik, saya yakin perpustakaan Wayland mungkin tidak menawarkan lebih sedikit.

To Small Embedded

“Desktop besar” adalah yang ekstrem, tetapi Modul Compositor dibuat untuk mencakup keseluruhan rentang aplikasi untuk kompositor Wayland dari desktop besar seperti KDE melalui desktop yang lebih kecil seperti LXQt hingga aplikasi tertanam. Kasus penggunaan yang tertanam adalah bidang penting bagi Wayland sebagai sebuah teknologi. Dalam hal potensi komersial, ini mungkin merupakan faktor pembeda yang paling penting dari Sistem X Window yang lama, dan jelas beberapa keputusan desain Wayland telah dipengaruhi olehnya.

Embedded adalah bidang yang luas, namun persyaratan tampilan secara umum kurang rumit dibandingkan pada desktop.

Jadi tidak mengherankan juga bahwa dari lima pesaing perpustakaan yang tercantum di atas, ketiga perpustakaan yang didukung secara komersial sangat fokus pada aplikasi yang disematkan.

Tentu saja apa yang mereka tawarkan di area khusus ini valid, tetapi saya tetap yakin Modul Kompositor akan menjadi a solusi yang lebih baik, karena mereka didasarkan pada wlroots dan berbagi intinya dengan kompositor untuk desktop. Poin kedua berarti Anda dapat menguji inti ini di desktop dan mentransfer pengalaman dan pengaturan pengembang Anda langsung ke yang tertanam. Nbsp

Bahwa ini bukan persyaratan kosong ditunjukkan oleh eksperimen seperti yang dilakukan oleh perusahaan MBition, anak perusahaan Mercedes-Benz Grup, yang mencoba menggunakan KWin di Mercedes baru.

Ini adalah eksperimen yang bagus dan ini menunjukkan bahwa ada insentif untuk menggunakan kompositor yang lebih besar dalam kasus seperti itu, tetapi mencapai hal ini secara terbatas dengan kompositor KDE standar akan sulit karena KWin tidak pernah dibuat untuk itu kasus penggunaan semacam ini dan sifat monolitiknya memaksakan kasus penggunaan desktop.

Saya berupaya keras untuk memastikan bahwa Modul Kompositor adalah kebalikannya: modular dan terbuka untuk kasus penggunaan apa pun dari besar hingga kecil.

Mari kita lihat beberapa desain teknis keputusan yang memungkinkan hal ini.

Modular Through C++ Templates

Jika Anda menunjukkan kepada programmer C++ file acak kode sumber dari KWin dan satu dari The Compositor Modules, perbedaan paling mencolok yang akan dia lihat setelah beberapa detik mungkin adalah penggunaan berat pemrograman generik di Modul Compositor.

Sebenarnya saya memindahkan logika sebanyak mungkin untuk waktu kompilasi, bukan hanya karena ini membuat runtime lebih cepat dan kode lebih aman, tetapi juga karena ini memungkinkan kita untuk sepenuhnya memodulasi struktur perpustakaan dalam hal ketergantungan dan opsi untuk konsumen kustomisasi.

Teknik C++ tingkat lanjut memungkinkan integrasi yang mulus antara kode Wayland dan X11.

Mari kita lihat aspek pertama. Anda dapat membuat kompositor Wayland tanpa ketergantungan X11 apa pun hanya dengan *tidak* menautkan ke pustaka como::xwayland yang terpisah. Secara internal hal ini dimungkinkan oleh beberapa templat kelas, misalnya ruang semua jendela dibuat templat pada `std::variant` jenis jendela.

Dan jika Anda tidak memerlukan Xwayland, maka Anda cukup menggunakan spasi tanpa
varian tipe jendela X11. Ini semua dilakukan pada waktu kompilasi, memanfaatkan semua jaminan keamanan sistem tipe C++ dan tanpa penggunaan makro.

Sebagai perbandingan minggu lalu, dukungan untuk build tanpa dependensi libxcb juga telah digabungkan ke dalam KWin. Namun karena arsitektur monolitik KWin, ini memerlukan banyak penggunaan makro. Nbsp Mari kita lihat aspek kedua, opsi penyesuaian. Saat Anda membuat kompositor Wayland dengan The Compositor Modules, Anda memiliki opsi tak terbatas untuk menyesuaikan kompositor Anda dengan melakukan subtipe melalui pewarisan virtual atau bahkan dengan mengganti tipe sepenuhnya dengan tipe kustom Anda sendiri.

Seperti yang dikatakan, semuanya sudah diberi template, jadi Anda bisa memperkenalkan milik Anda sendiri ruang untuk memiliki logika berbeda untuk memposisikan jendela, atau Anda menyediakan fungsi gratis yang berbeda hanya untuk mengubah satu aspek saja.

Kode Modul Kompositor telah banyak difaktorkan ulang untuk memisahkan logika dari data. Hal ini memungkinkan penggantian fungsi pembantu khusus tipe tersebut.

Atau Anda memulai sedikit lebih kecil dengan penyesuaian Anda, dengan membatasi hal-hal yang Anda kompilasi. Misalnya kode Minico di atas menghilangkan penambahan bidang skrip ke struct base.mod. Ini adalah sesuatu yang dilakukan oleh Kapal Theseus di sisi lain. Menghilangkan penambahan bidang ini berarti menghilangkan kompilasi seluruh modul skrip. Dengan cara ini, secara deklaratif sederhana, kami menjelaskan fungsionalitas apa yang akan ditawarkan oleh kompositor kami dan apa yang tidak akan ditawarkannya.

Modular Melalui CMake Modern

Modularitas melalui templat adalah satu hal. Namun saat kami menyediakan koleksi perpustakaan, tujuan modularitas perlu didukung melalui penggunaan teknik CMake modern. Banyak pekerjaan pada tahun lalu yang dilakukan untuk memodulasi tidak hanya kode tetapi juga struktur perpustakaan di belakangnya. Saya mencapai hal ini melalui penggunaan teknik CMake modern secara konsisten dan pengungkapan ketergantungan internal dan eksternal yang cermat. Pada akhirnya untuk kompositor Wayland, hierarki relasi berikut muncul:

Mengikuti grafik ini kita dapat dengan mudah melihat modul perpustakaan mana yang bergantung satu sama lain. Kode CMake secara langsung mendokumentasikan dan memastikan bahwa.

Melalui penggunaan kode CMake berbasis target modern, bahkan satu penyertaan header yang salah akan langsung terungkap. Misalnya penggunaan jenis *render* apa pun dari dalam modul *input* tidak mungkin dilakukan, karena modul input hanya tertaut ke modul *win*.

Untuk pengembangan Modul Compositor di masa mendatang, hubungan ketergantungan ini memudahkan pelacakan bug dan cakupan fitur. Bagi konsumen The Compositor Modules, dependensi memberikan struktur yang masuk akal untuk mendasarkan asumsi mereka tentang fungsionalitas perpustakaan dan penyesuaiannya.

Kualitas dan Otomatisasi Kode Tinggi

Saat menyediakan perpustakaan seperti The Compositor Modules, penting untuk memenuhi standar modern dalam hal keamanan kode dan kebenaran.

Ini telah menjadi tujuan sejak awal dan saat ini setiap perubahan kode dikompilasi di CI dengan semua peringatan kompiler diaktifkan sebagai kesalahan. Kami melakukan ini secara paralel dengan GCC dan Clang.

Juga berdasarkan permintaan tarik, rangkaian pengujian yang saat ini terdiri dari lebih dari 100 pengujian aktif harus lulus. Dengan cara ini dipastikan cabang master selalu “hijau”, kriteria penting untuk kode bebas regresi.

GitHub Tindakan dieksekusi pada permintaan tarik untuk Modul Compositor.

Tentu saja ini tidak membuat bug menjadi tidak mungkin, tetapi dalam jangka panjang merupakan mekanisme penting untuk meningkatkan stabilitas. Bahwa terdapat perubahan besar dan mendasar dalam basis kode selama bertahun-tahun, sementara pada saat yang sama dimungkinkan untuk mempertahankan fungsionalitas keseluruhan dan terus mengikuti perubahan pada KWin serta komponen KDE lainnya untuk transisi Plasma 6 , merupakan bukti akan hal itu.

Berikutnya: Fitur Lainnya

Dengan dirilisnya Modul Compositor, bagian yang sulit telah selesai sekarang. Struktur perpustakaan keseluruhan yang mendasari dengan abstraksi yang diperlukan telah ditetapkan.

Fokusnya sekarang dapat dialihkan ke stabilisasi dan lebih banyak pekerjaan fitur. Meskipun Modul Compositor sudah menyediakan serangkaian fitur yang besar, masih ada beberapa fitur penting yang hilang seperti yang didokumentasikan dalam tabel fitur Wayland.

Beberapa fitur ini kemungkinan dapat di-porting secara langsung atau setidaknya sebagian dari KWin, yang menerima banyak pendanaan eksternal di KWin tahun terakhir untuk menambahkan fitur. Kabar baiknya adalah mengimplementasikan fitur-fitur baru relatif mudah, ketika implementasi referensi sudah tersedia.

Fitur lainnya akan memerlukan lebih banyak integrasi dengan wlroots, sesuatu yang saya nantikan karena wlroots adalah proyek yang hebat dan sangat bergantung pada dorongannya untuk penyatuan yang lebih besar dan penggunaan kembali kode di ekosistem Wayland.

Berikutnya: Lebih Banyak Konsumen

Rilis pertama The Compositor Modules tentu saja masih belum stabil. Stabilisasi akan memakan waktu. Namun saya masih percaya, karena setelah semua refactor besar selesai sekarang dan struktur umum telah ditetapkan, ini adalah saat yang tepat untuk mendasarkan proyek kompositor eksperimental pada Modul Compositor.

Modul Compositor harus sangat cocok untuk desktop seperti LXQt, XFCE atau Cinnamon, yang memerlukan solusi pengomposisian yang dibuat khusus di Wayland. Sebuah solusi yang di satu sisi cukup terbuka untuk beradaptasi dengan kebutuhan mereka dan di sisi lain menyediakan fitur yang cukup untuk tidak menghabiskan sumber daya kontributor terlalu tipis.

Saat ini saya sedang mencari cara untuk membangun solusi seperti itu dengan The Modul Kompositor untuk LXQt. LXQt adalah proyek yang menarik bagi saya karena merupakan solusi desktop lengkap seperti KDE Plasma, tetapi dengan rangkaian fitur yang kurang ekstensif. Jadi compositor untuk LXQt akan menunjukkan bagaimana seseorang dapat dengan sengaja dan selektif mengurangi fungsionalitas saat menggunakan The Compositor Modules.

Berikutnya: Lebih Banyak Pendanaan

Mari kita menjadi nyata: proyek besar seperti The Compositor Modules tidak dapat dipertahankan dalam jangka panjang secara berkelanjutan tanpa adanya perusahaan dukungan finansial.

Dalam dua tahun terakhir saya mengerjakan proyek ini di waktu luang saya, bersamaan dengan pekerjaan saya sebagai pekerja lepas. Saya mampu mempertahankan beban kerja tersebut, namun Anda tidak dapat melakukannya selamanya dan Anda tidak dapat mengharapkan hal tersebut dari setiap kontributor, yang ingin memberikan lebih dari beberapa baris kode untuk proyek tersebut. Itu berlaku untuk The Compositor Modules seperti halnya untuk proyek besar lainnya seperti KWin.

Tetapi The Compositor Modules sekarang memberikan dasar yang bagus untuk membangun kompositor Wayland untuk semua jenis aplikasi, dari berbagai varian desktop Linux hingga produk yang disematkan.

Harapan saya adalah bahwa ada perusahaan yang bersedia mendukung secara finansial pembuatan perpustakaan Wayland seperti The Compositor Modules. Pustaka yang tidak hanya dimaksudkan untuk menyelesaikan kasus penggunaan spesifik perusahaan saat ini, baik dengan solusi minimal seperti Minico, solusi dengan tipe khusus, atau solusi dengan rangkaian fitur maksimal seperti Kapal Theseus. Tapi perpustakaan, yang akan meningkatkan arus untuk semua kapal.

Tentang Pengarang: Roman Gilg adalah seorang arsitek perangkat lunak dengan kontribusi penting pada banyak proyek sumber terbuka. Dia juga telah melakukan pekerjaan industri pada sistem yang kompleks, paling sering memanfaatkan C++. Selain itu ia juga seorang insinyur platform dan manajer proyek yang berpengalaman. Saat ini dia mempelopori proyek WinFT dengan tujuan menyediakan solusi tampilan umum untuk desktop Linux dan tertanam. Dia dapat diikuti melalui Twitter atau LinkedIn.

Itulah berita seputar Modul Kompositor “COMO” Untuk Membangun Kompositor Wayland Telah Tiba, semoga bermanfaat. Disadur dari Phoronix.com.

Terbaru

  • Apa Itu Rasio Gambar Ukuran 1:1 di Canva? Ini Pengertian dan Cara Buatnya
  • Pengiriman Shopee Express Hemat itu Berapa Lama? Ini Pengertian dan Estimasi Sampainya
  • Android 2025: Aplikasi Baru dan Smartphone Impian yang Akan Datang!
  • Apa Itu Google AI Pro Ultra? Ini Pengertian dan Penjelasan Lengkapnya
  • Apa Itu Error Gagal Kirim Nilai RDM 3.1? Ini Pengertian dan Solusi Mengatasinya
  • Facebook Mulai Batasi Link Eksternal Cuma 2 Sebulan! Ini Trik Mengatasinya
  • Cara Nonton Tensura Season 4! Bakal Tayang April 2026 dengan Format 5 Cour
  • Belum Tahu? Inilah Trik Supaya Live TikTok Kalian Aman dan Banjir Cuan
  • Pixel 8 Dapatkan Mode Panorama Baru! Hasil Foto Lebih Luas & Lebih Kreatif
  • Apa Itu AppLocker? Ini Pengertian dan Cara Mengamankan Windows 11 Kalian dari Skrip Jahat
  • Cara Membuat Riwayat Copilot Kamu Tetap Bersih dan Rapi!
  • Game & Aplikasi Android Terbaik Saat Diskon Liburan Natal! Jangan Ketinggalan!
  • Apa Itu Game Prison Escape Journey? Ini Pengertian dan Cara Mainnya untuk Pemula
  • “Listrik Gratis” dari Solar Panel Cuma Mitos?! Ini Sisi Gelap PLTS
  • Samsung Galaxy Z-Fold: Uji Jatuh Bebas yang Mengguncang Keandalan Lipatannya
  • Google One 2026: Apa yang Akan Jadi Fitur Utama dan Harga yang Diharapkan?
  • Apa Itu Error 0x800704f8? Ini Pengertian dan Cara Mengatasinya
  • Android Akhirnya Dapat GPS Darurat di India! Setelah Hampir 10 Tahun
  • Apa Itu GetContact Premium? Ini Pengertian dan Cara Daftarnya
  • Android Maze Figure: Koleksi Baru Google yang Bikin Penggemar Bergairah!
  • Google Update Besar-besaran Desember 2025: Apa yang Akan Memengaruhi Pengalaman Anda?
  • Masih Pusing Hitung Gaji Manual? Waktunya Pakai Aplikasi HR
  • Apa Itu Dustruco? Ini Pengertian dan Cara Pasangnya di HP Kalian
  • Apa Itu Aplikasi Dooie Live? Ini Pengertian dan Cara Pakai Aplikasinya untuk Cari Jodoh
  • Apa Itu Battle Emote Jefri Nichol dan Om Telolet Om di MLBB? Ini Penjelasannya
  • Apa itu Game Luna Mobile dan Bagaimana Cara Menangnya?
  • Apa Itu Kompensasi Sistem Trail Mobile Legends? Ini Penjelasan dan Cara Klaim Hadiahnya
  • Apa Itu Update Google Pixel 2 Desember 2025? Ini Penjelasannya!
  • Ini Cara Reset Desil di Aplikasi Cek Bansos Biar Valid (Update Januari 2026)
  • Apa Itu EZNET Wireless dan Fiber Optic? Ini Perbedaan dan Pengertian Lengkapnya
  • Apa itu Cosmic Desktop: Pengertian dan Cara Pasangnya di Ubuntu 26.04?
  • Apa Itu Auvidea X242? Pengertian Carrier Board Jetson T5000 dengan Dual 10Gbe
  • Elementary OS 8.1 Resmi Rilis: Kini Pakai Wayland Secara Standar!
  • Apa Itu Raspberry Pi Imager? Pengertian dan Pembaruan Versi 2.0.3 yang Wajib Kalian Tahu
  • Performa Maksimal! Ini Cara Manual Update Ubuntu ke Linux Kernel 6.18 LTS
  • Inilah Cara Membuat AI Agent Cerdas dan Memantaunya Menggunakan LangGraph dan LangSmith
  • Ini Alasan China Akan Menang di Dunia AI
  • Apa Itu AI Gateway? Ini Definisi Tulang Punggung Infrastruktur AI Modern
  • Apa Itu Google AI Pro Ultra? Pengertian dan Bedah Fitur Terbarunya
  • Apa Itu FARA 7B? Ini Pengertian dan Cara Menjalankannya di Windows 11
  • Apa Itu Distribusi Malware Via YouTube? Ini Pengertian dan Bahayanya Buat Kalian
  • Apa Itu Undang-Undang NDAA? Ini Pengertian dan Dampaknya Bagi Cyber Command Amerika Serikat
  • Tagihan AWS Sekarang Bisa Dibayar Pakai BNB via BPN, Ini Caranya!
  • Video Botol Teh Pucuk 1 Menit 50 Detik yang Viral di TikTok! Hati-Hati Kejahatan Siber
  • Apa Itu Kerentanan WatchGuard CVE-2024-36193? Ini Penjelasannya
Beli Pemotong Rumput dengan Baterai IRONHOOF 588V Mesin Potong Rumput 88V disini https://s.shopee.co.id/70DBGTHtuJ
Beli Morning Star Kursi Gaming/Kantor disini: https://s.shopee.co.id/805iTUOPRV

©2025 emka.web.id | Design: Newspaperly WordPress Theme