Setup dual monitor dengan xrandr: memperluas tanpa / dengan scrolling yang dinonaktifkan

11

Ini bukan pertanyaan, tetapi lebih merupakan penyelesaian untuk masalah di bawah Ubuntu, saya temui.

Penyiapan:
Diberikan layar laptop (misalnya, "LVDS-1-0") dan layar kedua (misalnya, "DP-1") dengan layar kedua menjadi layar utama Anda dan monitor Anda berada di sebelah kanan layar utama Anda ( atau kiri) sebagai ekstensi (lihat gambar). Layar pertama selalu diperluas secara virtual meskipun instruksi xrandr eksplisit tidak melakukan ini. Saat memasukkan ini, saya bisa menghindari pengguliran yang mengganggu ketika memindahkan kursor mouse saya ke kanan pada monitor utama.

xrandr --output LVDS-1-0 --off
xrandr --output DP-1 --mode 1920x1080 --primary --pos 0x0 --output LVDS-1-0 --mode 1920x1080 --pos 1920x0

Setelah ini, itu hanya berpindah dari satu monitor ke yang lain tanpa menggulir layar.

Memperbarui

Setelah beralih ke kartu grafis diskrit (nvidia diskrit dan intel terintegrasi untuk laptop saya), urutan output yang perlu diubah:

output_DP=$(xrandr | grep " connected" | grep DP | awk '{print $1}')
output_LVDS=$(xrandr | grep " connected" | grep LVDS | awk '{print $1}')

xrandr --output $output_LVDS --off
xrandr --output $output_LVDS --mode 1920x1080 --pos 1920x0 --output $output_DP --mode 1920x1080 --pos 0x0  --primary

Untuk kenyamanan lebih, saya membuat variabel-variabel ini memiliki lebih banyak fleksibilitas karena beralih antara kartu grafis diskrit dan terintegrasi mengubah penunjukan perangkat output (misalnya, LVDS-1-0 vs LVDS-1).

Layout monitor

rocky_hiker
sumber

Jawaban:

6

Saya bertemu bug yang sama. Solusi Anda tidak berhasil untuk saya. Trik Anda hanyalah pemicu yang membuat bug tidak jatuh. Saya menggali sedikit dan menemukan seorang pria yang baik dengan solusi yang mungkin membantu orang lain di sini juga.

Masalah utama adalah bahwa bug yang kami temui di sini menyebabkan monitor yang sedang menggulir ke yang lain memiliki layar virtual dengan ukuran kedua layar dijumlahkan. Jadi solusinya mungkin menonaktifkan ruang virtual tambahan di layar itu agar sesuai dengan resolusi monitor. Ini biasanya dilakukan dengan --panning AxBargumen - Kami menggunakannya untuk mengatur ukuran ruang virtual.

Ini adalah bagaimana Anda dapat melakukannya:

xrandr \
  --output LVDS-1-0 --mode 1920x1080 --panning 1920x1080 --pos 1920x0 \
  --output HDMI-0   --mode 1920x1080 --panning 1920x1080 --pos 0x0    --primary

(Dipotong \ditambahkan untuk menggunakan baris baru dalam perintah.)

Sayangnya masalahnya di sini adalah bahwa driver (itu adalah bug) tampaknya menimpa panning yang kita atur (atau tidak disetel). Tetapi yang tidak dilakukan adalah mengatur bagian lain dari panning: Area pelacakan! Area Pelacakan sebenarnya adalah bagian dari layar yang diikuti kamera dengan kursor pada monitor itu.

tl; dr: Jadi idenya adalah mengatur panning sebagai driver tetapi membatasi area pelacakan.

Ini dilakukan dengan perintah berikut:

xrandr \
  --output LVDS-1-0 --mode 1920x1080 \
  --output HDMI-0   --mode 1920x1080 --panning 3840x1080+0+0/1920x1080+1920+0/0/0/0/0    --primary

"Empat parameter pertama [ panningargumen] menentukan area panning total, empat berikutnya area penunjuk pointer (yang default ke area yang sama). Empat parameter terakhir menentukan batas dan default ke 0." [ man xrandr ]

Sebastian Barth
sumber
Saya memasukkan perintah terakhir ke dalam skrip shell yang saya panggil melalui keyboard (saat mengganti perangkat keras layar) dan beberapa detik setelah login secara otomatis.
Sebastian Barth
Mengatur area pelacakan juga sangat penting dalam pengaturan saya.
krlmlr
Pada akhirnya, solusi Anda tidak membantu saya, tetapi saya menemukan solusi dengan meninggalkan resolusi sendirian. Perintah untuk cermin: xrandr --output HDMI1 --same-as Laptop1dan untuk diperpanjang:xrandr --output Laptop1 --auto --output HDMI1 --auto --left-of Laptop1
Edenshaw