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

  • Beli HP Bekas Flagship Oppo? Ini 3 Rekomendasi Terbaik yang Masih Gahar di 2026
  • Cuma 1 Jutaan! Ini 4 Rekomendasi HP POCO yang Performa Tetap Gila di 2026
  • Inilah Rekomendasi Laptop 5-6 Jutaan Paling Worth It di Pertengahan 2026, Spek Mewah Harga Ramah!
  • Inilah Deretan Smartphone Snapdragon 8s Gen 4 yang Bikin Kompetisi HP Menengah Atas Makin Panas!
  • Mengenal Otak di Balik AI: Apa Itu LLM dan Manfaatnya dalam Keseharian Kita Menurut Sebastian Raschka
  • Inilah Rahasia Spasi FF Salin Biar Nickname Kalian Makin Keren dan Unik Tanpa Aplikasi Tambahan
  • Rekomendasi HP Kamera Bagus 2-6 Jutaan Bulan Juli 2026
  • Cuma 2 Jutaan! Ini 6 Rekomendasi HP Paling Worth It Buat Multitasking dan Gaming Ringan
  • Rumor Galaxy Z Flip8 Jadi Seri Terakhir: Mengapa Samsung Mungkin Berhenti Bikin HP Lipat Clamshell?
  • Inilah Cara Registrasi Kartu SIM Pakai Verifikasi Biometrik Mulai 1 Juli 2026, Gak Bisa Lagi Pake Nomor Bodong!
  • Jangan Asal Lap! Inilah Cara Membersihkan Layar TV LED yang Benar Agar Tidak Rusak
  • Realme Narzo 100x 5G Segera Rilis: Baterai 8.000mAh, Layar 144Hz, dan Sertifikasi Militer
  • Waspada Penipuan Akun Mobile Legends: Kenali Pentingnya Marketplace Resmi dan Status PSE
  • Review DJI Osmo Pocket 4P: Kamera Saku Lensa Ganda yang Bikin Kamera Pro Kelihatan Ribet!
  • Samsung Bisa “AirDrop” ke iPhone? Cek Cara Pakai Fitur Quick Share Terbaru Ini!
  • Vivo X Fold 6 Bakal Masuk Indonesia? Speknya Gila, Baterai 7.000 mAh & Kamera 200 MP!
  • Bocoran iPhone Air 2: Akhirnya Apple Nggak Cuma Jual Tipis, Tapi Juga Baterai Awet dan Kamera Oke!
  • Google Search Console rilis fitur Social Media Property, bisa pantau TikTok & Instagram
  • Hati-hati! 22 Platform Digital Terancam Diblokir Pemerintah, Cek Daftar Hotel dan Maskapainya di Sini
  • Baterai 7.000mAh & Standar Militer, Inilah Moto G77 Power
  • Inilah Cara Shopee dan Meta Bikin Kalian Makin Gampang Dapat Cuan Afiliasi Instagram Tanpa Ribet
  • Gila Sih! Vivo Rilis HP Baterai 8.000 mAh di 2026, Nggak Perlu Ribet Bawa Powerbank Lagi?
  • Infinix Hot 70 vs Tecno Spark 50: Pilih Baterai Jumbo 7000 mAh atau Fast Charging 45W di Harga 2 Jutaan?
  • Gak Perlu HP Mahal buat Pake AI: Intip Fitur Canggih di Samsung Galaxy A37 dan A57 yang Bikin Hidup Lebih Gampang
  • Bocoran Galaxy Unpacked Juli 2026: Z Fold 8 & Z Flip 8 Bakal Fokus ke On-Device AI, Makin Canggih atau Cuma Gimmick?
  • Duel Tablet 2 Jutaan: ADVAN Tab Sketsa 3 vs itel VistaTab 30GT, Mana yang Lebih Worth It buat Kerja?
  • Review Asus ExpertBook PM5 G2: Laptop Bisnis Rasa AI, Ringan tapi Gak Kaleng-kaleng
  • Review Redmi Pad 2 9.7 4G: Tablet Murah yang Bisa Pakai Kartu SIM, Worth It Nggak?
  • Review JBL Quantum Series: Inilah Alasan Kenapa Audio Berkualitas Bisa Bikin Kamu Menang Main Game
  • Review Vivo Y500: HP Baterai Jumbo 8.100mAh yang Bikin Nggak Perlu Cari Colokan Lagi!
  • Deploy Nginx Rootful Container with Podman
  • How to Sandboxing Browser on Linux Desktop with Flatpak
  • How to Hardening Journald on Linux Server (Fedora/AlmaLinux)
  • Block Bad USB on Linux Server with USBGuard
  • How to Secure NetworkManager on Fedora/AlmaLinux
  • How to Automate Your Entire SEO Strategy Using a Swarm of 100 Free AI Agents Working in Parallel
  • How to create professional presentations easily using NotebookLM’s AI power for school projects and beyond
  • How to Master SEO Automation with Google Gemini 3.1 Flash-Lite in Google AI Studio
  • How to create viral AI video ads and complete brand assets using the Claude and Higgsfield MCP integration
  • How to Transform Your Mac Into a Supercharged AI Assistant with Perplexity Personal Computer
  • Review 4 Parfum Rumah Atsiri Terlaris di Shopee: Aroma Lokal yang Elegan dan Nggak Pasaran
  • Panduan Merawat Sepeda Lipat: Tips Penyimpanan Agar Awet, Bebas Karat, dan Tetap Nyaman Dikendarai
  • Jangan Tunggu Tua! Mengupas Tuntas Penyebab Flek Hitam di Usia Muda dan Cara Ampuh Menghilangkannya
  • Membedah Tema Hari Anak Nasional 2026: Strategi Kemen PPPA Membangun Masa Depan Lewat Gerakan #RANA
  • Mengatasi Kuku Rapuh dan Mudah Patah: Panduan Lengkap Perawatan dari Luar dan Dalam

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