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

  • Inilah Daftar Kode Redeem Blox Fruits Terbaru dan Cara Pakainya Biar Cepat Level Max!
  • Ini Trik Supaya YouTube Shorts Kalian Ranking 1 di Pencarian
  • Inilah Daftar Kode Redeem Fish It Roblox Terbaru April 2026 dan Cara Klaimnya Biar Mancing Makin Gacor!
  • Inilah Cara Tarik Saldo Cool Lady, Game Penghasil Uang yang Lagi Viral dan Terbukti Membayar!
  • Inilah Kode Redeem Drag Drive Simulator April 2026, Simak Trik Rahasia Biar Menang Balapan Terus!
  • Inilah Little Finder Guy, Strategi Unik Apple yang Bikin MacBook Neo Jadi Viral di Media Sosial
  • Inilah Yang Baru di Minecraft Java Edition 26.1.1, Perubahan Mob Bayi Jadi Lebih Realistis dan Fitur Baru yang Bikin Gameplay Makin Seru!
  • Inilah Cara Bayar UKT UIN Sunan Kalijaga 2026 Lewat Kode Bayar Biar Nggak Bingung Lagi!
  • Inilah Syarat Penting Surat Keterangan Kelas 12 UTBK 2026 dan Contohnya
  • Belum Tahu? Inilah Cara Bayar UTBK SNBT 2026 Online Biar Nggak Ketinggalan Jadwal!
  • Inilah Kebenaran Kasus Bayu, Siswa yang Viral Katanya Dilengserkan dari Ketua OSIS Gegara Kritik Makan Bergizi Gratis
  • Inilah 4 Cara Jitu Jualan Produk Digital Pakai Google, Dijamin Cuan Terus!
  • Inilah Sinopsis dan Jadwal Tayang Drakor Perfect Crown, Kisah Pernikahan Kontrak IU dan Byun Woo-seok yang Menarik untuk Disimak!
  • Inilah Rekomendasi Game Tata Kota Terbaik di Linux yang Seru Banget Buat Dimainkan
  • Inilah Cara Dapat Saldo Cool Lady Tanpa Undang Teman, Ternyata Begini Trik Rahasianya!
  • Inilah Cara Main Watermelon Merge Fun Biar Dapat Saldo DANA, Apakah Benaran Membayar?
  • Inilah Kenapa Stok Penarikan Free Reels Sering Habis dan Cara Mengatasinya Agar Saldo Cair!
  • Inilah Alasan Kenapa Telat Lapor SPT 2026 Nggak Bakal Kena Denda, Cek Aturan Lengkapnya!
  • Inilah Cara Mematikan Koreksi Otomatis di WhatsApp Agar Nggak Salah Ketik Lagi
  • Apa itu Bujang Inam? Inilah Alasan Kenapa Kata Ini Jadi Makian Paling Kasar dalam Budaya Medan dan Batak!
  • Inilah Kenapa Link FF Kipas My ID Verify UID Beta Testing Sering Gagal dan Cara Menghadapinya
  • Gini Caranya Mulai Dropshipping Pake AI di Tahun 2026, Auto Cuan Tanpa Ribet!
  • Baterai Smartwatch Boros? Inilah Caranya Biar Baterai Smartwatch Kalian Bisa Awet Berhari-hari!
  • Belum Tahu? Inilah Fakta Cahaya Misterius di Lampung yang Ternyata Sampah Roket China CZ-3B!
  • Inilah Roblox Mod APK 2026, Fitur Premium Jadi Gratis dan Cara Pasangnya yang Perlu Kalian Tahu!
  • Inilah Panduan Lengkap UTUL UGM 2026, Cari Tahu Jadwal, Biaya Pendaftaran, Sampai Info Uang Pangkal IPI di Sini!
  • Inilah IGRS di Roblox dan Steam, Ternyata Ini Alasan Komdigi Kasih Aturan Ketat!
  • Inilah Makna Mendalam Regina Caeli: Kenapa Umat Katolik Wajib Doa Ratu Surga Selama Masa Paskah?
  • Inilah Kronologi Lengkap Kecelakaan Truk TNI di Kalideres: Simak Fakta dan Status Sopirnya Sekarang!
  • Inilah Rahasia Ambil Ide Youtube Lain, Tapi Konten Kalian Nggak Terlihat Membosankan
  • Is it Time to Replace Nano? Discover Fresh, the Terminal Text Editor You Actually Want to Use
  • How to Design a Services Like Google Ads
  • How to Fix 0x800ccc0b Outlook Error: Step-by-Step Guide for Beginners
  • How to Fix NVIDIA App Error on Windows 11: Simple Guide
  • How to Fix Excel Formula Errors: Quick Fixes for #NAME
  • How to Use Orbax Checkpointing with Keras and JAX for Robust Training
  • How to Automate Any PDF Form Using the Power of Manus AI
  • How to Training Your Own YOLO26 Object Detection Model!
  • How to Build a Full-Stack Mobile App in Minutes with YouWare AI
  • How to Create Consistent Characters and Cinematic AI Video Production with Seedance
  • Apa itu Spear-Phishing via npm? Ini Pengertian dan Cara Kerjanya yang Makin Licin
  • Apa Itu Predator Spyware? Ini Pengertian dan Kontroversi Penghapusan Sanksinya
  • Mengenal Apa itu TONESHELL: Backdoor Berbahaya dari Kelompok Mustang Panda
  • Siapa itu Kelompok Hacker Silver Fox?
  • Apa itu CVE-2025-52691 SmarterMail? Celah Keamanan Paling Berbahaya Tahun 2025

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