Skip to content

emka.web.id

writing knowledge, recording civilization

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

  • Copy Prompt: A Modern Men’s Casual Fashion Studio Shoot
  • Why I Finally Ditched Mainstream Windows Cleaners (And Why I Use ‘Kudu’ Instead)
  • AI Made Everything Faster, Including Bad Decisions
  • Raspberry Pi Desktop Available of PC and Mac, Based on Debian 13
  • Why I Stopped Yelling at My PC When Error; Getting Windows 11 Voice Isolation and Access to Actually Work
  • Berobat Kanker ke Malaysia: Berapa Biayanya dan Apa Saja yang Perlu Disiapkan?
  • Stop Sending Every Prompt to the Biggest AI Model You Can Find
  • Stop Building AI Agents from Scratch: My Pick for the Best Native Windows Setup
  • Jev Is Faster and Cheaper, But I Still Recommend Clef. Here’s Why.
  • Weird XCP-NG Bug or Feature? Enable Maintenance Mode = Host Not Enough Memory
  • Vinix OS: Another OS That Want to Beat Linux, Try it!
  • Trying NVX, An Ultra-Light Micro-VM Sandbox from Microsoft
  • Learning NocoDB from Scratch: Creating a Simple Greenhouse App
  • How RHEL 10.2 Quietly Turned Into an Absolute Security Beast
  • Grab Videos from Anywhere with ReClip (Can Running Locally)
  • Jumped onto Ubuntu 26.04 LTS? Here’s How to Add a New User Account
  • Tutorial Cara Install WPS Office di Linux (Alternatif Microsoft Office)
  • Tutorial Upgrade Server Ubuntu 24.04 LTS ke Ubuntu 26.04 LTS dengan Aman
  • Inilah Alasan kenapa akun TikTok dibatasi tidak bisa klaim koin dan masalah pembatasan lainnya?
  • Apa penyebab gagal kirim SMS ke 89888 padahal pulsa masih ada?
  • Mengenal Donghua: Kenapa Animasi dari Tiongkok Ini Lagi Naik Daun Banget
  • OpenAI Bocorin Data Gambar Pengguna? Ini Kabar Terbaru Soal Insiden AI yang Bikin Heboh
  • Kenapa Postingan Instagram Kalian Sepi Like Padahal Followers Udah Banyak? Ini Rahasianya
  • Cara Menambah View Story Instagram Gratis Biar Nggak Sia-sia
  • Kenapa View TikTok Kalian Mentok di Angka Kecil dan Cara Ngatasinnya
  • Imbas Pesatnya Laporan CVE, Ubuntu Bakal Rilis Kernel Update Tiap Dua Minggu
  • Cara Gampang Cari Kata di Google Sheets Pakai Laptop sama HP
  • Kabar Terbaru Antigravity SDK: Sekarang Bisa Pakai Model Lokal Kayak Gemma 4 26B Tanpa Perlu Internet
  • Kabar Terbaru Model K2 Horizon Dirilis: MoVA 36B EXL3 Buat Kalian yang Punya GPU Beragam
  • Ini Alasan Kenapa Kalian Harus Cek Masa Dukungan HP Android Kalian Sekarang Juga
  • Canonical: Ubuntu coming soon to Snapdragon X2 Series platforms
  • Finally, wolfSSL adds post-quantum algorithms!
  • How to Run Gemma Embedding Models Using Docker
  • Deploy Nginx Rootful Container with Podman
  • How to Sandboxing Browser on Linux Desktop with Flatpak
  • Pruna AI Release their Qwen-Image 2.1 LoRA Adapter, 6x Faster than Regular Qwen
  • The Rise and Fall of the Coding Holy Grail: Is Stack Overflow Just AI Fuel Now?
  • Zyphra is The Pioneer, Why Everyone is Suddenly Obsessed with AMD and Not Just Nvidia Anymore
  • Stop Trusting Your Prompts to Save Your Business Data
  • How to Automate Your Entire SEO Strategy Using a Swarm of 100 Free AI Agents Working in Parallel
  • Siapa Jessica Amelia? Mengenal Sosok di Balik Brand Skincare Raecca yang Lagi Banyak Dicari Warganet
  • Lagi rame dicari pemain BUSSID, ini info soal Mod Ragasa Herex sampe FAW JH6 Ade Iskandar
  • Gerakan 7 Kebiasaan Anak Indonesia Hebat, cuma tugas sekolah atau harus kompak sama orang tua di rumah?
  • Siapa sebenarnya pemilik baru SPBU Shell di Indonesia? Kenalan sama Sefas Group dan Isla Energy
  • Lagi rame soal dugaan keracunan di restoran Korea 88 SEOUL Bandung, ini info lengkapnya buat warga

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