Monitor dengan resolusi 4K tidak lagi dianggap sebagai borjuis dan secara bertahap memasuki kehidupan orang biasa. Serta monitor resolusi tinggi lainnya. Beberapa tahun yang lalu, saya mengatakan tentang dukungan monitor semacam itu di Linux, mengatakan bahwa "daripada tidak ya." Tampaknya ada dukungan, tetapi jumlah gangguan dengan itu membuat seluruh proses menjadi sia-sia, dan saya benar-benar ingin mengganti monitor ke resolusi yang lebih rendah. Apa yang tidak diizinkan oleh beberapa monitor 4K di Linux sejauh ini. Faktanya adalah bahwa driver NVidia, ketika terhubung melalui DisplayPort, secara naif percaya EDID monitor, dan jika hanya satu resolusi maksimum yang tertulis di sana, mereka tidak mengizinkan untuk mengatur yang lain. Anda harus memutar kembali ke Nouveau atau mengkonfigurasi HiDPI. Kami akan menyesuaikan! (Artikel ini ditujukan untuk orang yang mengetahui dasar-dasar Linux dan apa itu X server).
Tentang DPI secara umum dan HiDPI pada khususnya
DPI (titik per inci) adalah nilai yang mengatakan berapa banyak piksel layar adalah sentimeter fisik wilayahnya. Jika monitor bekerja dalam resolusi non-asli, maka kita berbicara tentang piksel resolusi virtual. Dari zaman kuno hingga baru-baru ini, 96 DPI adalah standar - yaitu, monitor biasa, jika mereka berbeda dari itu, sangat banyak sehingga ini dapat diabaikan. 120 DPI adalah nilai maksimum yang biasanya diuji.
Tidak mengherankan, selama bertahun-tahun, pengembang perangkat lunak telah mengambil nilai ini sebagai konstanta yang tak tergoyahkan. Tiba-tiba datang monitor dengan 160-192 DPI dan itu dimulai. Semua program yang setidaknya memiliki ukuran tertentu dalam antarmuka ditetapkan dalam piksel yang diterima panel yang saling tumpang tindih, tanda tangan dipangkas menjadi huruf pertama, dan tombol, di mana Anda harus memberikan hadiah uang tunai untuk keberhasilan menekan.
Kata HiDPI mengacu pada situasi pada monitor dengan DPI> 160. DPI sistem operasi tidak harus sama dengan DPI layar. Sebaliknya, sistem DPI dapat diputar untuk membuat antarmuka lebih besar dan lebih kecil. Selain itu, sistem membedakan antara DPI segalanya, DPI font dan DPI yang diberikan untuk aplikasi layar penuh.
Bagaimana dengan orang lain?
Makos membantu pemerintahannya yang otoriter. Karena hampir semua program membuat antarmuka mereka melalui API yang sama, itu hanya diperbaiki, dan langsung berhasil. Pisahkan tiang tembok yang tidak bisa dihancurkan hanya menekankan seberapa baik semuanya secara keseluruhan.
Android dilahirkan pada sistem dengan penyebaran DPI yang besar, sehingga ia dapat melakukan segalanya mulai dari popok, dan buku teks untuk para programmer memperhitungkannya.
Windows selalu mengizinkan font DPI untuk diputar. Berikut ini hanya grafis DPI dari ini belum berubah. Elemen individual mengubah ukurannya karena terikat pada ukuran font atau layar. Tetapi ukuran yang ditentukan dalam piksel tidak berubah dari ini. Di Win 10, akhirnya, ada dukungan HiDPI normal, tetapi hanya untuk program yang ditulis untuk Win 10. Untuk sisanya, kruk ditulis yang hanya membuat peningkatan grafis di jendela program dengan terjemahan posisi klik. Zooming membuat jendela buram, dan siaran bekerja dengan bengkok. Bagian terburuknya adalah peningkatan ini mencoba memulai untuk aplikasi layar penuh juga, jadi untuk bermain, Anda harus mematikannya, dan untuk bekerja, menyalakannya.
Bagaimana dengan Linux?
Dan di Linux, seperti biasa, bacchanalia. Kami memiliki dua set utama untuk GUI (Qt dan GTK), yang masing-masing memiliki penulisan ulang yang relatif baru dari awal, sehingga versi lama dan baru masih digunakan. Ditambah beberapa set yang lebih kecil (EFL, wxWidgets). Ditambah beberapa bahasa yang menggunakan alat mereka untuk ini, misalnya Java. Ditambah beberapa perpustakaan kuno yang tidak ada yang menulis, tetapi perangkat lunak yang diperlukan masih ada di sana. (GTK 1, Motif) Bahkan jika X server dan window manager dengan benar menangani DPI, bukan fakta bahwa semua kebun binatang ini akan menerima informasi ini dan akan berfungsi dengan baik.
Ada banyak hal yang mungkin tidak Anda sukai tentang Ubuntu dengan Unity, tetapi satu hal yang harus saya katakan. Saya tidak tahu cara mengonfigurasi HiDPI di Unity karena semuanya selalu berjalan di luar kotak. Semua DE lainnya: Cinnamon, KDE, XFCE, juga memiliki flag yang sesuai. Bendera ini menetapkan DE sendiri, aplikasi yang ditulis di perpustakaan utamanya (hanya versi baru) dan beberapa bendera untuk Qt / GTK. Dan sisanya adalah ke samping. Hasilnya, misalnya, pada pemain, tombol Play tetap kecil. Dan ikon nampan kecil, tetapi tidak semua. Setahun setelah sistem seperti itu - dan orang di Overwatch hanya bermain untuk McCrack, karena orang tersebut memiliki akurasi pixel-by-pixel pada mouse dan dia membenci semua orang.
Saya akan berbicara tentang cara mengkonfigurasi KDE. Bukan seperti yang diinstruksikan, tetapi agar semuanya bekerja. Deadbeef, Yakuake, Blender. Saya memeriksanya terutama di Arch. Dalam distribusi lain, mungkin sebagian dari apa yang saya uraikan sudah dilakukan atau dilakukan secara berbeda. Pikirkan dengan kepala Anda atau tulis di komentar - kami akan mencari tahu.
Pengaturan X
Hal pertama yang perlu diperiksa adalah apakah X tahu bahwa kami memiliki HiDPI? Untuk melakukan ini, kita perlu
xdpyinfo
xdpyinfo - ada di lobak. Atur, jika tidak dipasang, resolusi asli monitor, (dan nyalakan kembali X.) Jalankan di konsol di dalam X (yaitu, bukan dengan Ctrl-Alt-F *).
xdpyinfo | grep -B 2 resolution screen
Kami melihat tiga pasang nilai - resolusi layar, ukuran layar aktual, dan DPI (secara terpisah vertikal dan horizontal) Jika ketiga pasangan serupa dengan kebenaran, maka berpalinglah dari monitor dan berikan pujian kepada entitas tertinggi pilihan Anda; karena jika xdpyinfo mengembalikan omong kosong dan DPI = 96, maka yang lebih tinggi Anda mengirimkan kesengsaraan.
Penyebab paling umum dari DPI yang salah adalah kurva EDID dan kayu bakar bermerek pada kartu video. Saya tidak akan mengatakan apa pun tentang kartu video ATi, karena saya menghindarinya. Bukan berarti mereka buruk, tetapi ATi + Linux = masalah yang tidak perlu. Dengan Intel, semuanya harus berfungsi. NVidia hingga saat ini membandel DPI. Pertama, matikan G-sync dalam
nvidia-settings
, lagipula, tidak ada manajer komposit yang menyukainya. Jika itu tidak membantu, aktifkan KMS. Pengaturan Mode Kernel adalah metode yang digunakan kernel Linux, bukan X, untuk mengatur resolusi layar. Selain penggunaan langsung, ini memungkinkan Anda untuk berkeliling banyak kode kereta 20 tahun yang lalu di X. Sayangnya, prosedur untuk mengaktifkan KMS pada driver Nvidia yang dipatenkan tergantung pada distribusi, jadi saya akan menjelaskannya hanya secara umum. Anda perlu menambahkan modul
nvidia, nvidia_modeset, nvidia_uvm, nvidia_drm
di initramfs,
nvidia, nvidia_modeset, nvidia_uvm, nvidia_drm
kembali, dan kemudian tambahkan parameter
nvidia-drm.modeset=1
ke kernel. Google.
Jika dalam paragraf sebelumnya Anda tidak mengerti apa-apa, maka Anda dapat dengan mudah meninggalkan kayu bakar bermerek NVidia dan menggunakan Nouveau untuk saat ini - ada KMS di luar kotak. Di Kubunt, ini dilakukan melalui program yang mengelola driver.
Jika semua hal di atas tidak membantu dan xdpyinfo masih menulis sampah, maka mungkin driver video tidak bisa disalahkan, tetapi kurva EDID monitor. Pertama, jalankan
xrandr --dpi 192
di konsol yang sama. Dan jalankan beberapa program. Jika telah menjadi lebih besar, maka metode ini berfungsi. Rekatkan perintah ini di
.xprofile
dan mulai ulang
.xprofile
Di masa depan saya akan berbicara banyak tentang
.xprofile
. Ini adalah file di folder home masing-masing pengguna yang mengkonfigurasi operasi aplikasi grafis. Jika tidak, buat saja:
touch ~/.xprofile
. Jika semuanya berhasil - Hore! Jika tidak, periksa terlebih dahulu bahwa distribusi Anda tidak memiliki dukungan
.xprofile
terpotong dari KDE. Mengapa menambahkan sesuatu seperti
touch ~/net_ne_vyrezali
dan reboot lagi.
Masih tidak berfungsi? Mari mendaftarkan DPI di X secara manual. Buat, jika belum, file
/etc/X11/xorg.conf.d/90-monitor.conf dan tulis di dalamnya:
Section "Monitor" Identifier "Prikolny monitor" DisplaySize 286 179
Dan untuk kayu bakar bermerek Nvidia
Section "Monitor" Identifier "Prikolny monitor" Option "DPI" "192 x 192" EndSection
Harap perhatikan bahwa di mana pun saya menetapkan nilai DPI paksa ke 192, atau lebih tepatnya ke nilai apa pun yang merupakan kelipatan dari 96. Ini berfungsi lebih akurat daripada DPI nyata, karena itu adalah gladiol. Di sini paradoks desainer berfungsi:
- Jika DPI adalah kelipatan dari 96, font lebih baik ditampilkan dalam aplikasi yang berfungsi dengan teks. Terutama di aplikasi Kairo.
- Jika DPI sama dengan DPI aktual dari monitor, maka skala 1: 1 pada layar akan sama dengan ukuran di atas kertas.
Saya menulis nama bodoh monitor sehingga dalam semua utilitas grafis dapat dilihat bahwa pengaturan kami sedang dibaca dan mencoba untuk diterapkan.
Simpan, mulai ulang X dan bersukacitalah. Atau minum pahit dan tunggu Wayland menyelesaikannya.
Konfigurasi dalam KDE
Jadi, akhirnya, kami mengkonfigurasi HiDPI di KDE dengan benar. Dalam
menu → Pengaturan Sistem → Tampilan dan Monitor di bagian paling bawah ada tombol
Tampilan Skala besar. Dengan menekannya, sebuah jendela dengan slider
Skala tunggal akan muncul. Sekarang perhatian! Jika Anda masih tidak dapat mengkonfigurasi DPI di Xs, tutup artikel ini, atur nilai slider sesuai selera, dan nikmati apa yang berhasil. Dan apa yang tidak berhasil - rekonsiliasi (Ini biasanya Chrome, Skype, QtCreator, Yakuake, GTK).
Jika DPI dalam Xs benar, maka jangan sentuh slider ini! Idealnya, jangan memutar-balikkannya, karena, sepertinya, dia menulis sesuatu di suatu tempat. Tutup jendela ini nafig. Menurut
posting blog dari pencipta slider ini (garam di komentar), ia menimpa sistem DPI dan menetapkan beberapa variabel lagi. Masalahnya adalah bahwa tidak semua program melihat definisi ulang ini, dan ternyata menjadi berantakan. Karena itu, kami tidak akan menyentuh bilah geser, tetapi kami akan mengonfigurasi semuanya secara manual.
Secara umum, pada tahap ini, jika DPI benar, maka semuanya harus sudah cukup besar. Buka
Pengaturan Sistem → Font . Secara default, ada ukuran font 11. Jika 10-14 cukup bagi Anda untuk mencapai harmoni - letakkan, aplikasi akan mengejar ketinggalan. Jika lebih atau kurang - masuk akal untuk mencoba sub-sistem DPI seperti yang dijelaskan di atas. Di bawah ini adalah bidang Force Font DPI. Anda dapat memutarnya jika diinginkan, tetapi perlu diingat bahwa tidak semua aplikasi membaca nilai ini. Bahkan tidak. Beberapa aplikasi tidak membaca nilai ini di semua bagiannya. Jadi jika Anda mencoba memperbaiki sistem DPI di 96 di sini, akan ada kekacauan. Tapi Anda bisa menaikkan DPI 167 monitor ke 192 yang ideal.
Tutup jendela Font. Secara umum, sekarang adalah waktu untuk me-restart X dan melihat apa yang terjadi. Mereka harus bekerja dan memiliki ukuran KDE yang nyaman, semua pengaturan dan aplikasi. Omong-omong, panel plasma tidak akan tumbuh dengan sendirinya. Tapi ini vektorial, dan Anda selalu dapat merentangkannya - klik pada sandwich di sebelah kiri dan tombol akan muncul. Juga, ukuran dalam Dolphin harus diatur secara manual. Jika, di tempat lain di aplikasi KDE, tombol dan panel terlalu kecil, Anda perlu mengukur ukuran ikon di Pengaturan Sistem → Ikon.
Kami mengkonfigurasi aplikasi lain
Chrome, Atom dan lainnya
Aplikasi ini membaca DPI langsung dari tempat asalnya dan mengikutinya seperti kode ksatria. Jika mereka membaca sesuatu yang salah, maka entah bagaimana mereka akan keliru. Biasanya mereka mengabaikan pengaturan dalam Pengaturan Sistem dan mengikuti DPI yang dikembalikan xdpyinfo. Jika ada 96, maka untuk Chrome Anda dapat menggunakan argumen -
--force-device-scale-factor=2
, untuk Atom ada plugin kurva
hidpi
di lobak resmi, untuk program lain kruknya.
QtCreator, Yakuake, dan aplikasi Qt5 lainnya
Secara umum, mereka
harus bekerja . Tapi QtCreator terkadang tidak mengatur skala toolbar, sementara Yakuake tidak memiliki tab bar. Alasannya ada di bug dan di variabel lingkungan
QT_AUTO_SCREEN_SCALE_FACTOR
. Ketika sama dengan
1
, Qt5 mencoba untuk menemukan nilai DPI itu sendiri, dan ketika
0
- itu mengharapkan bahwa nilai ini akan diberikan kepadanya dalam variabel lain. Bugnya adalah bahwa KDE melewati sampah.
Singkatnya, aplikasi ini perlu mengatur variabel
QT_AUTO_SCREEN_SCALE_FACTOR=1
dan semuanya akan berfungsi. Ini dapat dilakukan secara selektif atau global. Selektif di Menu Editor. Ingatlah untuk menambahkan aplikasi ke panel dan autorun nanti. Ini karena entri .desktop disalin, tidak ditautkan. Opsi kedua adalah untuk mengatur variabel ini di seluruh sistem, di
.xprofile atau bahkan
/ etc / environment , atau di mana variabel ditulis dalam distribusi Anda. Ada dua nuansa. Pertama, KDE secara otomatis me-reset variabel ini ke 0 di
skrip / usr / bin / startkde . Anda harus membukanya dan mengeditnya dengan
#export QT_AUTO_SCREEN_SCALE_FACTOR=0
baris
#export QT_AUTO_SCREEN_SCALE_FACTOR=0
. Setelah itu, ingatlah untuk mengulangi tambalan ini setiap kali KDE diperbarui. Peringatan kedua adalah bahwa pengembang KDE memperingatkan dalam komentar: pengaturan variabel ini secara global dapat menyebabkan beberapa aplikasi Qt5 menjadi dua kali lipat. Tetapi ini tidak terjadi pada saya. Selanjutnya, jika DPI sistem salah, Anda perlu mengatur variabel
QT_SCALE_FACTOR=2
dalam
.xprofile .
Ingat bahwa variabel
QT_DEVICE_PIXEL_RATIO
usang. Jika Anda meletakkannya di suatu tempat, maka Anda harus menghapusnya.
Aplikasi Qt4
Aplikasi ini, secara umum, tidak bagus di HiDPI. Tapi tidak semuanya hilang. Qt4 menciptakan antarmuka yang sangat fleksibel. Jalankan
qtconfig-qt4
. Pertama, lihat font dan atur ukuran yang nyaman. Kemudian, pada tab Antarmuka, cari kruk yang disebut "
Global strut " (dalam terjemahan - kruk global.) Pengaturan ini berarti bahwa instance QWidget dan turunannya tidak boleh lebih kecil dari ukuran ini dalam piksel, apa pun yang mereka lakukan. Menggunakan
Lebar Minimum Anda dapat mengatur lebar scrollbar, dan menggunakan
Tinggi Minimum - tinggi toolbar.
Aplikasi GTK3
Semuanya sederhana di sini. Anda perlu mengatur dua variabel di
.xprofile :
GDK_SCALE=2
Perintah GTK untuk meningkatkan semuanya sebanyak 2 kali. Nilai harus berupa bilangan bulat.
GDK_DPI_SCALE
menyesuaikan pembesaran font. Jika setelah
GDK_SCALE
font-nya sangat besar, Anda perlu mengatur
GDK_DPI_SCALE=0.5
Aplikasi GTK2
Semuanya rumit di sini. GTK2 tidak tahu bagaimana cara HiDPI. Tapi ada retasan. Softina bernama Oomox adalah generator tema (kulit) untuk GTK. Termasuk, dengan bantuannya, Anda dapat mengumpulkan tema semacam itu di bawah GTK2, yang akan
meniru HiDPI. Atau cari topik yang
siap .
Aplikasi pada Qt3, Gtk1, Motif
Semuanya sangat rumit di sini. Ada dua kemungkinan peretasan. Pertama, Anda bisa memanfaatkan kemampuan Kwin untuk memperbesar seluruh layar.
Pengaturan Sistem → Efek Desktop → Efek Desktop → Zoom . Tombol tengah di sebelah kiri adalah pengaturan, termasuk tombol untuk menghidupkan dan mematikan. Cara kedua adalah menjalankan aplikasi pada server desktop jarak jauh dan menghubungkannya secara lokal. Saya hanya akan menyisipkan
tautan ke skrip , karena pengaturannya adalah masalah artikel terpisah.
Aplikasi Java
Program Java yang lebih keren dan komersial berperilaku seperti Chrome: mereka membaca DPI dari X dan mengikutinya. Program yang lebih
-Dsun.java2d.uiScale=2
dapat diperbaiki dengan salah satu dari dua argumen:
-Dsun.java2d.uiScale=2
meningkatkan antarmuka sebanyak 2 kali, dan
-Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel
menyuruhnya menggunakan dimensi dari GTK untuk menggambar . Biarkan saya mengingatkan Anda bahwa di
.xprofile Anda dapat membuat variabel
export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel'
. Contoh ini termasuk anti-aliasing dalam font dan GTK.
Yah, entah bagaimana.