Tampilan Linux
Sistem tampilan Linux, menggunakan beberapa teknologi, protokol, ekstensi, aplikasi, server (daemon), driver dan konsep untuk mencapai sistem windowing misalnya:Xorg, Wayland, X11, OpenGL, RandR, XrandR, Resolusi Layar, DPI, Server tampilan , dll. Ini bisa sangat sulit untuk dipahami sepenuhnya, tetapi setiap sisi dimaksudkan untuk tujuan tertentu dan tidak digunakan secara bersamaan pada saat yang bersamaan.
Protokol X
Sistem X Window, X11 (X versi 11) adalah sistem windowing untuk tampilan bitmap, umum pada sistem operasi mirip Unix, X menyediakan kerangka kerja dasar untuk lingkungan GUI:menggambar dan memindahkan jendela pada perangkat tampilan dan berinteraksi dengan mouse dan keyboard. X tidak mengamanatkan antarmuka pengguna, ini ditangani oleh program individual. Dengan demikian, gaya visual lingkungan berbasis X sangat bervariasi; program yang berbeda dapat menghadirkan antarmuka yang sangat berbeda. X berasal dari Project Athena di Massachusetts Institute of Technology (MIT) pada tahun 1984. Protokol X telah berada di versi 11 (sehingga disebut "X11") sejak September 1987. X.Org Foundation memimpin proyek X, dengan implementasi referensi saat ini , Server X.Org, tersedia sebagai perangkat lunak bebas dan sumber terbuka di bawah Lisensi MIT dan lisensi permisif serupa.
implementasi X
Sebagian besar distribusi Linux menggunakan Server X.Org yang merupakan implementasi gratis dan sumber terbuka dari server tampilan untuk Sistem X Window (X11) yang dikelola oleh X.Org Foundation. Xorg/X saja tidak mendukung banyak fitur yang disediakan seperti penskalaan atau rendering, untuk itu Xorg menggunakan ekstensi seperti XFixes, RandR (RandR dikelola oleh xrandr
misalnya pengaturan panning, resolusi atau penskalaan), GLX (ekstensi OpenGL), Render atau Komposit yang menyebabkan seluruh sub-pohon dari hierarki jendela dirender ke buffer di luar layar, aplikasi kemudian dapat mengambil konten dari itu buffer dan melakukan apa pun yang mereka suka, buffer di luar layar dapat digabungkan secara otomatis ke dalam jendela induk atau digabungkan dengan program eksternal, yang disebut pengelola pengomposisian untuk melakukan pengomposisian sendiri seperti beberapa pengelola jendela melakukan; Misalnya. Compiz, Pencerahan, KWin, Marco, Metacity, Muffin, Mutter dan Xfwm. Untuk "non-pengomposisian lainnya " pengelola jendela, pengelola komposit mandiri dapat digunakan, contoh:Picom, Xcompmgr, atau Unagi. Ekstensi yang didukung Xorg dapat dicantumkan dengan:xdpyinfo -display :0 -queryExtensions | awk '/^number of extensions:/,/^default screen number/'
.
Di sisi lain Wayland dimaksudkan sebagai pengganti yang lebih sederhana untuk Xorg/X11, lebih mudah untuk dikembangkan dan dipelihara tetapi pada tahun 2020 dukungan desktop untuk Wayland belum sepenuhnya siap selain Gnome (misalnya dukungan KDE Kwin dan Wayland); di sisi distribusi, Fedora menggunakan Wayland secara default. Perhatikan bahwa Wayland dan Xorg dapat bekerja secara bersamaan, tergantung pada konfigurasi yang digunakan. XWayland adalah serangkaian tambalan di atas basis kode server X.Org yang mengimplementasikan server X yang berjalan di atas protokol Wayland. Tambalan tersebut dikembangkan dan dikelola oleh pengembang Wayland untuk kompatibilitas dengan aplikasi X11 selama transisi ke Wayland, dan disebarluaskan dalam versi 1.16 Server X.Org pada tahun 2014. Saat pengguna menjalankan aplikasi X dari dalam Weston, aplikasi tersebut memerlukan XWayland untuk melayani permintaan.
Seluruh ruang lingkup
Sebuah server tampilan atau window server adalah program (seperti Xorg atau Wayland) yang tugas utamanya adalah mengoordinasikan input dan output kliennya ke dan dari seluruh sistem operasi, perangkat keras, dan satu sama lain. Server tampilan berkomunikasi dengan kliennya melalui protokol server tampilan, protokol komunikasi, yang dapat transparan jaringan atau hanya mampu jaringan. Misalnya X11 dan Wayland adalah protokol komunikasi server tampilan.
Seperti yang ditunjukkan pada diagram window manager adalah elemen penting lainnya dari lingkungan desktop yang merupakan perangkat lunak sistem yang mengontrol penempatan dan tampilan jendela dalam sistem windowing dalam antarmuka pengguna grafis. Sebagian besar pengelola jendela dirancang untuk membantu menyediakan lingkungan desktop. Mereka bekerja bersama dengan sistem grafis dasar yang menyediakan dukungan fungsionalitas yang diperlukan untuk perangkat keras grafis, perangkat penunjuk, dan keyboard, dan seringkali ditulis dan dibuat menggunakan perangkat widget. KDE menggunakan KWin sebagai pengelola jendela (memiliki dukungan terbatas untuk Wayland pada tahun 2020), demikian pula Gnome 2 menggunakan Metacity dan Gnome 3 menggunakan Mutter sebagai pengelola jendela.
Aspek penting lainnya dari pengelola jendela adalah compositor atau mengomposisi window manager , yang merupakan pengelola jendela yang menyediakan aplikasi dengan buffer di luar layar untuk setiap jendela. Pengelola jendela menyusun buffer jendela menjadi gambar yang mewakili layar dan menuliskan hasilnya ke dalam memori tampilan. Pengomposisi manajer jendela dapat melakukan pemrosesan tambahan pada jendela buffer, menerapkan efek animasi 2D dan 3D seperti pencampuran, pemudaran, penskalaan, rotasi, duplikasi, pembengkokan dan liuk, pengocokan, pengaburan, pengalihan aplikasi, dan penerjemahan jendela ke salah satu dari sejumlah tampilan dan desktop virtual. Teknologi grafis komputer memungkinkan efek visual ditampilkan secara real time seperti drop shadow, pratinjau langsung, dan animasi kompleks. Karena layar buffer ganda, layar tidak berkedip selama pembaruan. Manajer jendela pengomposisian yang paling umum digunakan meliputi:Linux, BSD, Hurd dan OpenSolaris-Compiz, KWin, Xfwm, Enlightenment dan Mutter. masing-masing memiliki implementasinya sendiri, misalnya kompositor KWin KDE memiliki banyak fitur/pengaturan seperti kecepatan animasi, pencegahan robekan (vsync), thumbnail jendela, metode penskalaan, dan dapat menggunakan OpenGLv2/OpenGLv3 atau XRender sebagai rendering backend bersama dengan Xorg. (XRender/Render jangan bingung dengan XRandR/RandR).
OpenGL (Buka Pustaka Grafik) adalah antarmuka pemrograman aplikasi (API) lintas bahasa dan lintas platform untuk merender grafik vektor 2D dan 3D. API biasanya digunakan untuk berinteraksi dengan graphics processing unit (GPU), untuk mencapai perenderan yang dipercepat perangkat keras. OpenGL adalah perpustakaan rendering yang dapat digunakan dengan Xorg, Wayland, atau aplikasi apa pun yang mengimplementasikannya. Instalasi OpenGL dapat diperiksa dengan glxinfo | grep OpenGL
.
Tampilan resolusi atau mode tampilan monitor komputer atau perangkat layar adalah jumlah piksel berbeda di setiap dimensi yang dapat ditampilkan. Biasanya dikutip sebagai width × height, dengan satuan dalam piksel:misalnya, 1024 × 768 berarti lebarnya 1024 piksel dan tingginya 768 piksel. xrandr
dapat digunakan untuk menambahkan atau merender/mensimulasikan resolusi tampilan baru.
DPI berarti titik per inci dan ukuran pencetakan/tampilan spasial , khususnya jumlah titik individu yang dapat ditempatkan dalam satu garis dalam rentang 1 inci (2,54 cm). Layar komputer tidak memiliki titik, tetapi memiliki piksel, konsep yang terkait erat adalah piksel per inci atau PPI dan karenanya DPI diimplementasikan dengan konsep PPI. 96
default Pengukuran DPI berarti 96x96 secara vertikal dan horizontal. Selain itu Apakah pengaturan X DPI (titik per inci) hanya dimaksudkan untuk penskalaan teks? QA sangat informatif.
Catatan
Beberapa alat gui KDE: systemsettings5
> tampilan, kcmshell5 xserver
dan kinfocenter
.
Referensi
Tautan dan sumber: 1,2,3,4,5,6,7,8,9,10,11 dan 12.
Pertanyaannya cukup luas, dan lebih banyak lagi yang bisa ditulis tentang subjek ini daripada yang tercakup dalam jawaban ini. Saya telah mencoba memberikan perspektif historis tentang evolusi grafik Linux. Grafik, sistem windowing, dan antarmuka pengguna grafis (GUI) di Linux telah mengalami banyak perubahan sejak awal 1990-an, ketika Sistem X Window (X11) dipindahkan ke Linux.
Sistem X Window
Sistem X Window dikembangkan di MIT pada 1980-an. Nama X11 mengacu pada protokol versi 11 dari protokol X, tetapi X10 juga digunakan di luar MIT sebelum digantikan oleh versi 11 pada tahun 1987.
Sistem X Window dirancang untuk bekerja pada sistem grafis yang canggih di tahun 1980-an. Workstation tipikal memiliki buffer bingkai tunggal yang terhubung ke pengontrol CRT sederhana yang menampilkan konten buffer bingkai pada monitor tampilan. Komputasi sebelum era PC dan workstation dilakukan melalui terminal serial ("dumb") yang terhubung ke komputer pusat yang terletak di ruang mesin komputer. Konteks historis ini memengaruhi desain X11:aplikasi grafis dapat dijalankan di komputer jarak jauh dengan pengguna berinteraksi dengan program menggunakan terminal dengan kemampuan grafis. "Terminal" bisa berupa workstation atau terminal X khusus.
X11 dirancang sebagai sistem server-klien. Server X adalah satu-satunya bagian yang berkomunikasi langsung dengan perangkat keras grafis. Klien X adalah program aplikasi yang berbicara ke server menggunakan protokol X, baik menggunakan soket Unix Domain lokal atau koneksi TCP/IP. Protokol X digunakan oleh klien untuk mengirim permintaan ke server dan menerima pesan peristiwa dari server.
Permintaan mencakup pesan untuk:
- pembuatan jendela
- memetakan/membuka jendela:membuat jendela terlihat/tidak terlihat
- menggambar di jendela:menggambar piksel, garis, busur, oval, pixmaps, dll.
- menampilkan teks menggunakan font, ukuran, dan gaya tertentu
- memindahkan dan mengubah ukuran jendela, mengubah urutan penumpukan jendela, dll.
Klien menerima pesan (bukan daftar lengkap):
- membalas permintaan
- peristiwa penekanan tombol dan klik mouse
- menampilkan peristiwa (area jendela perlu digambar ulang)
- fokuskan peristiwa keuntungan/kerugian
Untuk memungkinkan pengguna menangani jendela di layar, misalnya memindahkan, mengubah ukuran, menutup, menaikkan dan menurunkan jendela, disediakan aplikasi khusus yang disebut pengelola jendela. Pengelola jendela juga dapat menampilkan dekorasi jendela seperti batas, bilah judul, dan menu global.
Bisa dibilang server X11 cukup "level tinggi", karena menangani (atau setidaknya menangani secara tradisional) semua jenis sumber daya:windows, font, pixmaps, colormaps, konteks grafik (hal-hal seperti warna latar depan/latar belakang, lebar garis, dll. ). Selain itu, server menangani hal-hal seperti hubungan orangtua-anak jendela dan urutan penumpukan jendela.
Protokol X dirancang untuk dapat diperluas. Server X dapat diajari untuk melakukan trik baru, dan opecode baru ditambahkan ke protokol agar server melakukan trik tersebut. Misalnya, ekstensi XRender memperkenalkan cara menangani transparansi ("pencampuran alfa"). Ekstensi ini diperkenalkan terutama untuk mendukung font anti-alias, tetapi juga telah digunakan untuk efek desktop seperti drop shadow di windows. Ekstensi RandR ("Resize and Rotate") memungkinkan untuk mengubah ukuran, memutar, dan mencerminkan jendela root di layar. Ini memungkinkan Anda memproyeksikan layar menggunakan proyektor terbalik, atau menggunakan monitor miring.
Ekstensi GLX (Ekstensi OpenGL ke Sistem X Window) memungkinkan untuk menggunakan OpenGL di jendela yang disediakan oleh server X. Panggilan ke OpenGL disematkan dalam permintaan protokol X.
Di beberapa titik dalam evolusi X11, penanganan font dipindahkan untuk ditangani oleh klien. Alasan di balik perubahan ini dibahas dalam Evolusi Baru di Sistem X Window.
Rendering Langsung
Pada awal tahun 2000-an, perangkat keras tampilan telah berkembang jauh dari tampilan bitmap hitam-putih sederhana yang ada saat pengembangan X dimulai pada tahun 1980-an. Overhead relatif X11 dari model komunikasi antar proses (IPC) telah tumbuh terlalu besar, bahkan saat menggunakan soket lokal. Solusi untuk ini adalah mengabaikan prinsip bahwa server X adalah satu-satunya bagian yang berbicara langsung ke perangkat keras, dan membiarkan klien berbicara langsung ke kartu grafis. Infrastruktur Rendering Langsung (DRI) lahir.
DRI memungkinkan aplikasi klien X melewati server X dan merender langsung di adaptor grafis. Karena beberapa aplikasi rendering langsung selain server X tradisional dapat aktif pada saat yang sama, komponen kernel yang disebut Direct Rendering Manager diperkenalkan untuk menengahi akses ke perangkat keras. Ada tiga versi arsitektur DRI, DRI asli (usang), DRI2, dan DRI3.
Pengelola Jendela Pengomposisian
Inovasi berikutnya untuk masuk ke kancah grafis Linux adalah pengelola jendela pengomposisian. Secara tradisional, setiap aplikasi klien X bertanggung jawab untuk mengecat ulang jendelanya (sebagian, atau seluruh jendela) sesuai permintaan. Server X mengirimkan acara Eksposur ke aplikasi saat pengecatan ulang diperlukan sebagai hasil dari jendela yang dipetakan di layar, atau jika tidak lagi dikaburkan oleh beberapa jendela lain. Saat jendela yang tumpang tindih dihapus, jendela di bawahnya terbuka. Gagal mengecat ulang area ini menyebabkan konten lama masih ditampilkan. https://en.wikipedia.org/wiki/Visual_artifact
Manajer jendela pengomposisian mengubahnya. Aplikasi merender ke buffer di luar layarnya sendiri, yang masing-masing merupakan semacam layar terpisah dengan akses eksklusif oleh aplikasi yang memiliki buffer tersebut. Ini adalah tugas pengelola jendela pengomposisian untuk menampilkan buffer ini di jendela pada layar nyata, memotong jendela apa pun yang dikaburkan oleh jendela lain atau sebagian di luar layar. Pengelola jendela menampilkan "komposisi" jendela.
Manajer pengomposisian biasanya juga dapat menampilkan efek animasi, seperti penskalaan, pelengkungan, pemudaran, rotasi, pemburaman jendela. Misalnya, memindahkan jendela dapat membuatnya bergoyang, atau desktop virtual dapat ditampilkan di sisi kubus yang berputar.
Pengaturan Mode Kernel
Server X secara tradisional juga menangani pengaturan mode adapter grafis, seperti resolusi dan kecepatan refresh. Pengaturan mode telah dipindahkan ke komponen kernel Linux yang disebut Kernel Mode Setting (KMS). Ini memecahkan banyak masalah dengan beralih di antara konsol virtual Linux.
Evdev
Server X juga memiliki pengetahuan tentang perangkat input dan, misalnya, tipe mouse harus ditentukan dalam konfigurasi X. Server X telah dibebaskan dari tugas ini dengan diperkenalkannya subsistem evdev dari kernel Linux, yang menyediakan antarmuka kejadian input generik.
Wayland
Dengan semua perkembangan ini, banyak tugas yang dilakukan oleh server X telah dipindahkan ke luar server X. Menggunakan rendering langsung, klien tidak lagi menggunakan protokol X. Berkat KMS, server X tidak perlu repot dengan pemrograman tingkat rendah dari adapter grafis. Dengan evdev, penanganan perangkat input disederhanakan di server X. Saat menggunakan pengelola jendela pengomposisian untuk mengatur ulang dan membengkokkan jendela, server X tidak lagi tahu apa yang terjadi di layar. "Pengelola jendela adalah server X baru".
Wayland muncul sebagai hasil dari kesadaran bahwa proses server X hanya memiliki sedikit hal yang harus dilakukan, dan dengan menghilangkan perantara (server X), sistem grafik desktop yang jauh lebih sederhana dapat dicapai. Kompatibilitas mundur disediakan melalui Xwayland, server Xorg yang dimodifikasi yang menampilkan jendela X tingkat atas menggunakan permukaan Wayland.
Sebenarnya, Wayland hanyalah sebuah protokol yang menentukan bagaimana klien berkomunikasi dengan server tampilan. Protokol Wayland sangat berbeda dengan protokol X:protokol Wayland tidak menentukan pesan untuk menggambar grafik atau teks, juga tidak menangani font.
Dalam arsitektur Wayland, pengelola jendela dan server tampilan digabungkan menjadi satu komponen perangkat lunak, pengelola jendela pengomposisian. Klien dapat meminta, melalui pustaka perangkat lunak menggunakan protokol Wayland, sebuah permukaan untuk digunakan. "Permukaan adalah objek yang mewakili area persegi panjang di layar, ditentukan oleh lokasi, ukuran, dan konten piksel".
Klien merender ke buffer di luar layar, yang kemudian dilampirkan ke permukaan, menghasilkan output di layar. Klien dapat menggunakan berbagai API untuk melakukan rendering:OpenGL, OpenGL ES, dll. ("Apa itu API gambar? Apa pun yang Anda inginkan") Penyangga ganda digunakan:klien memperbarui citranya menggunakan buffer kedua, dan ketika buffer itu berisi gambar yang koheren, itu dialihkan untuk ditampilkan pada interval pengosongan vertikal monitor tampilan berikutnya. Moto Wayland adalah:"Setiap bingkai sempurna", yaitu jendela tidak sobek, berkedip, atau berkedip.
Penanganan input di Wayland melewati kompositor, yang merupakan satu-satunya komponen yang mengetahui jendela mana yang berada di bawah kursor tetikus (ingat, kompositor mungkin juga telah membelokkan jendela). Kompositor mengubah koordinat layar menjadi koordinat jendela-lokal dari jendela yang sesuai dan mengirimkan peristiwa ke klien.
Jika Anda tertarik dengan cerita yang mengarah pada penciptaan Wayland, saya sarankan untuk menonton presentasi lucu Daniel Stone Kisah nyata di balik Wayland dan X.