Penskalaan Pecahan X11 Benar-Benar Berfungsi: Pembangun Membuktikan Ciri "Mustahil" dengan Kod Mudah

Pasukan Komuniti BigGo
Penskalaan Pecahan X11 Benar-Benar Berfungsi: Pembangun Membuktikan Ciri "Mustahil" dengan Kod Mudah

Seorang pembangun telah berjaya menunjukkan bahawa X11 boleh mengendalikan penskalaan pecahan dan persediaan berbilang monitor dengan DPI yang berbeza, mencabar kepercayaan meluas bahawa ciri-ciri ini adalah mustahil pada protokol pelayan paparan yang sudah tua ini. Bukti konsep ini melibatkan melukis bulatan 2 inci yang konsisten merentasi berbilang monitor dengan resolusi dan ketumpatan piksel yang berbeza.

Demonstrasi ini menggunakan tiga paparan berbeza: skrin komputer riba pada resolusi 2880x1800, monitor desktop pada 2560x1440, dan TV 4K pada 3840x2160. Dengan menanyakan sambungan RandR X11 untuk dimensi fizikal dan kiraan piksel, aplikasi ini berjaya mengekalkan saiz fizikal yang sama merentasi ketiga-tiga skrin.

Spesifikasi Paparan Persediaan Ujian:

  • Laptop: resolusi 2880x1800, saiz fizikal 302mm x 189mm
  • Monitor Desktop: resolusi 2560x1440, saiz fizikal 590mm x 334mm
  • Paparan TV: resolusi 3840x2160, saiz fizikal 1600mm x 900mm

Pelaksanaan Teknikal Menunjukkan Keupayaan Tersembunyi X11

Pembangun menggunakan OpenGL dengan sambungan XRandR X11 untuk mengumpul maklumat skrin dan mengira faktor penskalaan yang sesuai. Kod ini mendengar acara konfigurasi tetingkap dan secara automatik menyesuaikan rendering berdasarkan monitor mana tetingkap itu muncul. Apabila diseret antara monitor, bulatan mengekalkan saiz fizikal 2 inci dengan mengira semula radius piksel berdasarkan DPI setiap skrin.

Pendekatan ini berfungsi dengan menggabungkan data daripada XRROutputInfo (yang menyediakan dimensi fizikal) dan XRRCrtcInfo (yang menyediakan dimensi piksel dan kedudukan). Aplikasi kemudian mengira piksel per milimeter dan menyesuaikan rendering mengikutnya.

XRandR (X Resize and Rotate): Sambungan X11 yang menyediakan maklumat tentang paparan yang disambungkan dan sifat-sifatnya

API X11 Utama yang Digunakan untuk Penskalaan:

  • XRRGetScreenResourcesCurrent() - Mendapatkan konfigurasi paparan
  • XRRGetOutputInfo() - Mengambil dimensi fizikal paparan
  • XRRGetCrtcInfo() - Mendapatkan dimensi piksel dan kedudukan
  • Peristiwa ConfigureNotify - Mengesan pergerakan tetingkap antara monitor
Demonstrasi eksperimen untuk mengekalkan saiz yang konsisten dalam rendering grafik merentasi monitor yang berbeza, serupa dengan mencapai penskalaan pecahan dalam X11
Demonstrasi eksperimen untuk mengekalkan saiz yang konsisten dalam rendering grafik merentasi monitor yang berbeza, serupa dengan mencapai penskalaan pecahan dalam X11

Komuniti Membahaskan Cabaran Penskalaan Dunia Sebenar

Walaupun demonstrasi membuktikan penskalaan asas adalah mungkin, komuniti pembangun menunjukkan cabaran yang lebih kompleks yang menjadikan penskalaan X11 bermasalah dalam praktik. Isu utama timbul dengan aplikasi sedia ada yang tidak direka untuk kesedaran penskalaan, terutamanya apabila berurusan dengan grafik raster, ikon, dan elemen UI yang tepat.

Bahagian sukar penskalaan adalah melukis elemen UI seperti ikon raster atau garis rambut 1px supaya kelihatan tidak kabur.

Tetingkap yang merentangi berbilang monitor dengan DPI berbeza kekal bermasalah, kerana bahagian berbeza tetingkap yang sama mungkin muncul pada skala berbeza. Pelayan paparan moden seperti Wayland mengendalikan ini dengan menggunakan virtualisasi DPI, di mana kompositor menguruskan transformasi penskalaan daripada meninggalkannya kepada aplikasi individu.

Konteks Lebih Luas Evolusi Pelayan Paparan

Perbincangan mendedahkan mengapa komuniti desktop Linux beralih ke arah Wayland walaupun keupayaan teori X11. Walaupun X11 secara teknikal boleh menyokong ciri-ciri canggih melalui sambungan, pelaksanaan praktikal memerlukan usaha yang ketara daripada kedua-dua pembangun toolkit dan pengarang aplikasi. Banyak aplikasi sedia ada tidak melaksanakan sokongan penskalaan yang sesuai.

Kompositor Wayland kini menyokong penskalaan pecahan melalui protokol khusus, dengan kedua-dua Qt6 dan GTK4 melaksanakan sokongan yang sesuai. Walau bagaimanapun, penggunaan kekal tidak lengkap, dengan beberapa aplikasi masih bergantung pada kaedah penskalaan lama yang boleh menyebabkan kekaburan.

Demonstrasi ini berfungsi sebagai peringatan bahawa had teknikal selalunya lebih berkaitan dengan koordinasi ekosistem daripada kekangan protokol asas. Walaupun X11 mungkin mampu lebih daripada yang biasa dipercayai, keputusan komuniti pembangunan untuk memfokuskan usaha pada Wayland mencerminkan pertimbangan praktikal tentang membina pengalaman desktop yang padu dan moden.

Virtualisasi DPI: Teknik di mana pelayan paparan mengendalikan semua pengiraan penskalaan, mempersembahkan aplikasi dengan sistem koordinat yang konsisten tanpa mengira resolusi skrin sebenar

Rujukan: forbidden secrets of ancient X11 scaling technology revealed