Apakah mungkin untuk memiliki konfigurasi DPI yang berbeda untuk dua layar yang berbeda?

123

Saya menggunakan Ubuntu 12.04.3 dengan driver NVidia (319) untuk kartu grafis Quadro K2100M saya, dan ketika saya mengganti layar laptop 3200x1800 utama saya ke mode 1920x1080 (menggunakan nvidia-settings), layar menjadi buram ...

Saya menggunakan dua layar:

  • Layar utama saya adalah LCD dengan resolusi maksimal 1920x1200.
  • Layar laptop saya (resolusi asli 3200x1800) duduk di sebelah kanan itu.

Masalah utamanya adalah, pada Ubuntu, fontnya terlalu kecil pada layar laptop saya. Karena itu, saya ingin mengubah resolusi laptop saya menjadi 1920x1080.

Membaca jawaban Galgalesh , saya mencoba menghitung DPI saya dan ini adalah konfigurasi DPI yang harus saya miliki:

  • 94x94 untuk layar LCD utama saya 1920x1200
  • 235x236 untuk layar laptop 3200x1800 saya

Apakah ada cara untuk memiliki resolusi DPI ganda dengan desktop yang diperluas?

Anthony O.
sumber
3
Nah, menggerakkan layar LCD apa pun pada resolusi non-asli akan tampak buram. Itu karena cara piksel diletakkan dengan cara tetap dan sinyal tidak cocok dengan ini. Apa yang sebenarnya Anda harapkan terjadi? Menonaktifkan penskalaan mungkin? Tapi kemudian itu hanya ditampilkan di tengah layar dan bukan layar penuh. Untuk tampilan optimal selalu pertahankan tampilan Anda pada resolusi layar asli. Saya rasa ini tidak ada hubungannya dengan Ubuntu.
gertvdijk
2
@ gertvdijk: Jadi, apakah Anda memiliki cara untuk menjaga kedua monitor pada resolusi layar asli mereka? Saya pikir itulah yang diminta Anthony.
beldaz
2
@ Beldaz Balasan saya adalah untuk merevisi 1 pertanyaan . Itu tidak menyebutkan apa pun yang berkaitan dengan pengaturan layar ganda pada saat itu. Karena pertanyaannya telah diubah secara signifikan, ini menimbulkan alis untuk setiap tulisan yang diubah setelah tanggal tersebut. Ini pada dasarnya membatalkan kontribusi apa pun dan benar-benar menurunkan motivasi saya untuk membantu. Pengguna seharusnya mengajukan pertanyaan baru, menurut pendapat saya.
gertvdijk
@ gertvdijk Maaf, masuk akal sekarang.
beldaz
Saya ingin tahu apakah kemungkinan untuk menggunakan Wayland di Ubuntu terbaru membuat ini lebih mudah untuk diselesaikan.
mkataja

Jawaban:

120

Tampaknya orang-orang masih berjuang untuk bekerja dengan beberapa monitor dan layar HiDPI. Solusi yang baik dijelaskan dalam arch wiki https://wiki.archlinux.org/index.php/HiDPI#Multiple_displays . Jadi saya punya:

  • laptop asus ln303ux: 3200x1800,
  • monitor eksternal: 1920x1200

Sekarang saya menggunakan Ubuntu 14.10 & GNOME Shell 3.12.2 yang memiliki dukungan HiDPI yang dapat digunakan. Jadi saya hanya menggunakan dukungan out-of-the-box dari HiDPI - faktor penskalaan adalah 2 (dapat diatur melalui GUI). Itu berarti bahwa pada monitor eksternal saya mendapatkan segalanya dua kali lebih besar daripada yang dapat diterima. Jadi, saya menggunakan xrandr; tetapi alih-alih menurunkan layar laptop, saya meningkatkan layar monitor eksternal:

xrandr --output HDMI1 --scale 2x2 --mode 1920x1200 --fb 3840x4200 --pos 0x0
xrandr --output eDP1 --scale 1x1 --pos 320x2400

Jadi, satu per satu:

  1. --output HDMI1dalam kasus saya adalah layar eksternal, eDP1adalah layar laptop.
  2. --scale 2x2 - membuat semuanya di layar eksternal dua kali lebih kecil
  3. --mode XxY - secara eksplisit mengatur resolusi untuk layar (tidak perlu jika sudah diatur)
  4. --fb XxY- atur ukuran layar virtual (framebuffer) ( penting tanpa ini, Anda hanya dapat menggunakan bagian layar keempat). Dalam kasus saya satu layar berada di atas yang lain, jadi saya menambahkan ketinggian efektif 2400 + 1800 = 4200. Perhatikan juga, bahwa ukuran maksimum framebuffer mungkin ditentukan dalam xorg.conf - maka Anda tidak dapat melebihi itu (ditulis di baris pertama xrandr -qoutput).
  5. --pos XxY- dalam kasus saya, saya mengatur posisi layar absolut, sehingga layar laptop saya langsung di bagian bawah layar eksternal. Nilai Y di sini adalah dua kali lipat tinggi monitor eksternal.

Dan ini dia! Segalanya renyah.

FYI: untuk mendapatkan nama layar dan resolusi yang tersedia, seseorang dapat menjalankannya xrandr --current. Informasi lebih lanjut tentang pengaturan resolusi dapat ditemukan di sini: https://wiki.ubuntu.com/X/Config/Resolution .

UPDATE - OPTION 2: satu lagi solusi menarik untuk aplikasi yang mendukung GTK3. Jika saya biasanya hanya menggunakan satu aplikasi pada layar besar (mis. Beberapa IDE, seperti leksah), saya tidak mengubah ukuran layar, tetapi menjalankan aplikasi yang diskalakan ke ukuran aslinya.

env GDK_SCALE=0.5 GDK_DPI_SCALE=0.5 CLUTTER_SCALE=0.5 appname
Artem
sumber
7
mendapat error of failed request: BadValue (integer parameter out of range for operation):-(
Juh_
4
The --fbpilihan tampaknya tidak memungkinkan lebih dari seperempat dari 2x2layar (kursor mouse tidak bisa bergerak melewati kuadran kiri atas)
EoghanM
2
Penskalaan berhasil, tetapi jangan Anda kehilangan HiDPI? Semuanya tampak bersisik dan buram.
Andy
8
Untuk pengaturan berdampingan dengan monitor eksternal 1920x1080 yang terletak di sebelah kiri laptop hiDPI 3200x1800 saya:xrandr --output eDP1 --scale 1x1 --pos 3840x0 ; xrandr --output HDMI1 --scale 2x2 --mode 1920x1080 --fb 7680x2160 --pos 0x0
Daniel Bower
2
Parameter --fb adalah 2 * monitor eksternal + layar laptop
Brian C.
10

Kenapa buram?

Layar Anda selalu menampilkan 3200x1800 piksel. Jika Anda menurunkan resolusi layar pada komputer Anda, itu artinya layar Anda harus menskala gambar agar sesuai dengan layar Anda. Bergantung pada rasio antara resolusi asli Anda dan resolusi saat ini, penskalaan itu akan menghasilkan gambar buram.

Anda dapat menemukan informasi lebih lanjut tentang penskalaan dan resolusi asli di sini: https://en.wikipedia.org/wiki/Native_resolution

Bagaimana saya bisa membuat teks lebih besar?

Jika teks terlalu kecil, Anda memiliki dua opsi:

1. Ubah ukuran font Ubuntu

Bagaimana cara mengubah font dan menyesuaikan ukurannya?

2. Ubah DPI (akan membuat seluruh antarmuka lebih besar, bukan hanya teks)

Bagaimana menemukan dan mengubah layar DPI? (dijawab oleh @whtyger)

Galgalesh
sumber
1
Sama seperti catatan tentang peningkatan ukuran font. Sebaliknya meningkatkan DPI sehingga seluruh antarmuka pengguna skala. Ini harus dikenali dengan benar secara otomatis (membaca EDID dari tampilan Anda), tetapi jika itu gagal: Bagaimana menemukan dan mengubah DPI layar?
gertvdijk
23
Sebenarnya itu bukan jawaban untuk pertanyaan saya. Saya menggunakan dua layar berbeda dengan resolusi berbeda . Saya telah membuat perhitungan: layar LCD kiri utama saya harus memiliki resolusi DPI 94x94 sedangkan layar laptop kanan saya harus memiliki DPI 235x235 ... Dan saya tidak menemukan cara untuk mengatur dua resolusi DPI yang berbeda kecuali dengan mengkonfigurasi nvidia untuk menjalankan 2 dipisahkan X, dan kemudian saya tidak bisa melewati satu jendela dari kiri ke kanan ... Windows jauh lebih baik untuk menangani masalah itu :(
Anthony O.
9
-1 untuk sepenuhnya mengabaikan inti pertanyaan
Martin Konecny
8
@AnthonyO. Tolong jangan mengubah pertanyaan Anda setelah jawaban diposting Anda tidak suka. Pada saat jawaban ini diposting, Anda tidak menyebutkan apa pun yang terkait dengan pengaturan layar ganda (lihat revisi 1 ). Mengubah pertanyaan Anda akan membatalkan apa pun yang sudah diposting dan Anda tidak boleh melakukannya. Alih-alih, kembalikan suntingan pertanyaan dan kirimkan pertanyaan baru sebagai gantinya.
gertvdijk
5
@ MartinKonecny ​​Penanya asli telah mengedit pertanyaannya, jawaban ini menjawab pertanyaan aslinya, periksa revisinya.
Jamie Kitson
7

Saya menggunakan solusi artmem tetapi berlari ke masalah mouse yang disebutkan oleh EoghanM. Solusi yang saya temukan dalam laporan bug lama yang ia tautkan terkait dengan --panning.

Saya memotret untuk: - DP1-2 3840x2160 dalam DIP asli. - eDP1 1366x768, diskalakan agar terlihat masuk akal di sebelah kanan DP1-2.

Saya mendapatkan ini terjadi dengan memiliki buffer bingkai yang seperti DP1-2 + (2x eDP1) maka saya skala semuanya akan menjadi eDP1 oleh 1/2.

Ini seharusnya sederhana tetapi xrandr agak sulit.

Di sini - skala digunakan untuk mengurangi semua yang terjadi ke eDP1 sebesar 1/2 --panning sama dengan eDP1 di buffer bingkai asli dengan posisi (+ 3840 + 0) tepat di sebelah kanan DP1-2. + 0 + 2160 akan berada di bawahnya.

xrandr -d :0 --fb 6572x3696 --output DP1-2 --mode 3840x2160 --scale 1x1 --rate 60 --pos 0x0 --primary

# sometimes panning get applied incorrectly when switching from some other mode, running it twice is a work around
xrandr -d :0 --output eDP1 --off
xrandr -d :0 --fb 6572x3696 --output eDP1  --mode 1366x768  --scale 2x2 --panning 2732x1536+3840+0
xrandr -d :0 --fb 6572x3696 --output eDP1  --mode 1366x768  --scale 2x2 --panning 2732x1536+3840+0

Saya juga mengatur Xft.dpi ke 185

$ cat ~/.Xresources
Xft.dpi: 185

Ketika saya mencabut dari monitor eksternal saya menjalankan:

xrandr -d :0 --output DP1-2 --off
xrandr -d :0 --fb 2732x1536 --output eDP1  --mode 1366x768  --scale 2x2 --panning 2732x1536+0+0 --pos 0x0 --primary

Itu tidak terlihat bagus tetapi saya tidak jauh dari meja saya. Anda bisa menyiasatinya dengan mengubah Xft.dpi dan memulai kembali semua program desktop Anda. Saya tidak tahu cara mengubah Xft.dpi dan kemudian meminta klien untuk menggunakannya tanpa me-restart mereka.

Brian C.
sumber
Panning adalah bagian terakhir dari teka-teki - itu memecahkan kursor yang terjebak pada seperempat dari masalah layar. Terima kasih @Brian!
rtindru
2
"Menjalankannya dua kali" ???? pixel suci, ini berfungsi (saya sudah menerapkan panning, tapi itu diterapkan dengan benar hanya jika saya menjalankan perintah yang sama dua kali).
Riccardo Galli
Ya, saya perhatikan bahwa itu berfungsi setiap kali saya menjalankannya jadi saya pikir saya akan mencobanya dua kali dan, yah, ini dia.
Brian C.
Baiklah, jadi ini tidak bekerja dengan kernel 4.5.2. Saya menginstal hanya kernel itu untuk menangani masalah terkait buruh pelabuhan di 4.5.1 dan sekarang skrip di atas membuat saya dengan layar hitam. Untuk memperbaikinya pada 4.5.2 saya melakukan perintah eDP1 pertama tanpa --off dan kemudian perintah DP1-2.
Brian C.
1
Akhirnya berhasil dengan panning! Saya masih punya mouse dan layar yang glitchy (sejak saya mulai menggunakan xrandr). Ada ide?
hsandt
4

Saya dapat menyelesaikan ini (dengan masalah) menggunakan detail yang diuraikan dalam diskusi github berikut: https://github.com/linuxmint/Cinnamon/issues/3606

Monitor Eksternal QHD (2560X1440), Monitor Internal / Laptop 3200x1800

xrandr --output eDP-1 --scale 1x1 --pos 0x2880
xrandr --output DP-1 --mode 2560x1440 --scale 2x2 --fb 5120x4680

ATAU

Monitor Eksternal FHD (1920x1080), Monitor Internal / Laptop 3200x1800

xrandr --output eDP-1 --scale 1x1 --pos 0x2160
xrandr --output DP-1 --mode 1920x1080 --scale 2x2 --fb 3840x3960

Ini bekerja, tetapi ada jumlah yang signifikan untuk merobek monitor resolusi tinggi (laptop) ketika saya memindahkan windows, mengubah ukuran layar atau gulir pada browser. Ini terasa seperti solusi rending perangkat lunak (yang memiliki semua masalah sobek, dan penyegaran lambat).

Pada 2017, Linux / Gnome perlu mengatasi solusi multi-monitor, penskalaan campuran. Baik Windows 10 dan OS X menyelesaikan masalah ini tanpa harus menggunakan perbaikan jalur bantuan pita perintah yang berfungsi sebagian (masalah robek tidak dapat diterima untuk bermain game)

Jeets
sumber
1
Apakah ini jawaban baru atau Anda mencoba melaporkan bug?
user68186
Ini merupakan penjabaran dari jawaban yang ada, dengan lebih banyak opsi yang dapat dimanfaatkan. Jawaban yang diberikan oleh @artem di atas menjelaskan cara kerja pengaturan ini. Saya hanya berusaha memberikan 2 opsi yang dapat digunakan seperti untuk orang-orang yang memiliki monitor eksternal QHD atau FHD, dan monitor primer / monitor laptop 4K. Bug ada dalam sobekan yang Anda lihat dengan solusi ini. Itu melekat pada pendekatan ini.
Jeets
2
Dengan proliferasi pengaturan 4k dan multi-resolusi, saya setuju dengan paragraf terakhir ini membutuhkan resolusi. Tidak terlalu buruk sebelumnya, tapi sekarang hanya merusak pengaturan saya pada satu monitor sekarang karena saya memiliki 4k. Semoga Ubuntu 18 LTS mereka akan memperbaikinya.
neuronet
3
Ini tahun 2018 ... masih sama :)
Stefanos Kalantzis
Wayland sangat cocok untuk ini. Kecuali itu hanya untuk ini ... Mendapat pengalaman yang baik dengan wayland + kde juga, lebih baik daripada gnome + wayland. Saya kembali ke X karena kurangnya dukungan untuk beberapa perangkat lunak yang hanya berjalan pada X, dan masalah stabilitas. 2018 ...
Victor
4

Semua jawaban ini luar biasa, dan membantu saya sebelumnya, tetapi yang baru

sudo apt-get upgrade 

menghapus randr-config saya! Dalam mencoba mengembalikan pengaturan saya, saya menemukan saya tidak bisa lagi mendapatkan mouse di atas kuadran 1/4 atas layar kedua, tidak peduli input --fb. Dari https://wiki.archlinux.org/index.php/HiDPI#Side_display akhirnya saya menemukan bahwa menambahkan panning berhasil. Juga, penggunaan '--right-of' atau '--left-of' lebih mudah daripada '--pos'.

"Secara umum jika monitor HiDPI Anda (laptop) adalah piksel AxB dan monitor reguler Anda (eksternal) adalah CxD dan Anda melakukan penskalaan dengan [ExF], baris perintah untuk hak adalah:"

xrandr --output eDP-1 --auto --output HDMI-1 --auto --panning [C*E]x[D*F]+[A]+0 --scale [E]x[F] --right-of eDP-1
ONECore
sumber
Ini menarik, dan sepertinya itu bisa bermanfaat bagi seseorang, walaupun saya tidak yakin ini adalah jawaban untuk pertanyaan ini. Mungkin Anda harus membuka dan menjawab pertanyaan Anda sendiri? Tidak begitu yakin.
Hee Jin
1
@ Emily: Saya pikir jawaban ini ada di sini. Saya menggunakan jawaban artem hari ini dan memiliki masalah persis yang dinyatakan ONECore (hanya kuadran kiri atas layar yang dapat digunakan oleh mouse). Untungnya, saya melihat jawaban ini, dan panning bekerja secara instan.
BrainCore
Ya, maaf, saya ingin itu menjadi jawaban untuk jawaban @ artem, tetapi Stackexchange sangat mengagumkan dan tidak akan membiarkan saya membalas di sana sampai saya mendapatkan 50 poin brownies.
ONECore
Perhatikan juga bahwa ini sepertinya tidak persisten, jadi kecuali Anda menambahkannya ke xorg.conf, itu akan hilang pada setiap restart. Tetapi kemudian jika Anda menambahkannya di sana, pengaturan itu memaksa apa pun yang terjadi (kadang-kadang saya tidak mencolokkan monitor). Jadi saya merasa sangat mudah untuk hanya membuat sebuah shell dan menjalankannya ketika saya mau. Cukup tambahkan kode di atas ke file teks yang diakhiri dengan .sh (seperti resolution.sh), kemudian membuatnya dapat dieksekusi dengan "chmod 0700 resolution.sh" di terminal.
ONECore
Terima kasih banyak untuk berbagi pengalaman Anda juga @BrainCore!
Hee Jin
1

Saya memiliki monitor 1024x768 yang sudah usang, terhubung ke notebook (kurang usang).
Jendela yang diberikan dalam ukuran yang sangat berbeda, jauh lebih besar di monitor eksternal (yang memiliki dot pitch lebih besar).
Saya menemukan perintah untuk menskalakan monitor:

xrandr --output VGA-1 --scale 1.5x1.5

VGA-1 adalah nama internal monitor, ditemukan dengan menjalankan perintah berikut:

xrandr --current | grep connected

Efeknya adalah sekarang monitor lama menampilkan isinya dengan ukuran yang hampir sama dengan notebook.

Anehnya, ia bekerja dengan skala x1.5 tetapi tidak 1,45, tampilan (dalam kasus saya) menjadi hitam.

Ketika saya menjalankan komentar skala pertama kalinya hasilnya menakutkan karena isi dari kedua layar tumpang tindih. Misalnya kursor kursor muncul dua kali.

Saya menjalankan program:

arandr &

untuk mengatur posisi layar relatif untuk memperbaikinya.
Ini berfungsi seperti Pengaturan> Perangkat> Menampilkan pengaturan.

Saya menginstalnya dengan:

sudo apt-get install arandr

Terima kasih @LuisAlvarado dan yang lainnya untuk berbagi pengetahuan Anda!

Juan Lanus
sumber
Ini berfungsi untuk saya sementara waktu, tetapi tidak menempel jika saya restart. Saya pikir saya perlu menemukan skrip untuk melakukan apa arandryang dilakukan di sini, dan kemudian meletakkan semuanya di bashrc saya atau sesuatu. Terima kasih!
Max von Hippel
arandr dapat mengekspor file konfigurasi. Saya mengatur file di desktop saya dan memasukkannya ke arandr di setiap reboot. Tidak mengembangkan skrip dan sekarang saya punya monitor dan tidak menggunakan arandr lagi.
Juan Lanus
0

Jalankan tinju $xrandruntuk menampilkan semua output

Screen 0: minimum 320 x 200, current 7680 x 2160, maximum 8192 x 8192
eDP-1 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 344mm x 194mm
   3840x2160     60.00*+  59.98    59.97  
   3200x1800     59.96    59.94  
   2880x1620     59.96    59.97   
DP-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 connected 3840x2160+3840+0 (normal left inverted right x axis y axis) 521mm x 294mm
   1920x1080     60.00*+  50.00    59.94  
   1920x1080i    60.00    50.00    59.94  
   1680x1050     59.88  
   1280x1024     75.02    60.02

Seperti yang Anda lihat dalam hal ini monitor kedua terhubung ke DP-3 Kemudian Anda dapat menjual kembali layar: $xrandr --output DP-3 --auto --scale 2x2

Abdelhak
sumber