Bagaimana cara menyelaraskan tepi bawah dua monitor dengan xrandr?

20

Saya memiliki dua output yang ingin saya gunakan di laptop saya:

  • LVDS1 - 1366 × 768
  • HDMI1 - 1920 × 1080

Saya mengatur monitor saya seperti ini:

xrandr --output LVDS1 --auto --output HDMI1 --auto --right-of LVDS1

Ini semua baik dan bagus, tetapi laptop saya duduk jauh lebih rendah dari monitor eksternal saya, dan dengan tepi atas layar disejajarkan, itu membuat lompatan dari satu layar ke yang lain agak tidak intuitif. Apakah ada cara saya bisa menyelaraskan tepi bawah? Saya pikir saya bisa menggunakan --posbendera untuk melakukan ini, tetapi saya telah mencoba dan tidak melihat perbedaan (mungkin saya tidak tahu bagaimana menggunakannya dengan benar).

Elynnaie
sumber

Jawaban:

36
 xrandr --output LVDS1 --auto --pos 0x312 --output HDMI1 --auto --pos 1366x0

Pada dasarnya, --pos menetapkan posisi sudut kiri atas layar dalam ruang layar virtual. Layar virtual adalah layar yang merentang seluruh layar fisik Anda. Ini adalah cara yang sangat umum untuk menentukan posisi layar.

Anda menginginkan konfigurasi ini:

(virtual screen coordinates)
     0       1366                 1366+1920

   0           A-----------------------
               |                      |
               |                      |
               |                      |
  x? B---------|         HDMI         |
     |         |                      |
     |  LVDS   |       1920x1080      |
     |1366x768 |                      |
1080 ----------------------------------

Dan Anda membutuhkan koordinat A dan B untuk digunakan dalam --posopsi. xmudah diselesaikan dengan 1080 - 768 = 312, jadi A adalah pada (1366,0) dan B berada pada (0,312).

Oleh karena itu, opsi --pos yang sesuai adalah --pos 1366x0 untuk HDMI dan --pos 0,312 untuk LVDS. Anda tidak perlu menentukan ukuran layar virtual (lagi), ukurannya secara otomatis.

Catatan yang --posdapat disalahgunakan, misalnya membuat lubang antara dua layar Anda, atau membuat tumpang tindih. Kebanyakan (semua?) WM tidak akan bisa menangani itu.

EDIT: oh, Anda ingin sebaliknya, perbaiki itu.

BatchyX
sumber
Heh, menemukan ini tepat sebelum Anda memposting. Apakah Anda dapat menjelaskan cara kerja flag --pos?
elynnaie
Terima kasih, ini masuk akal! Saya pikir Anda ingin mengganti 1600 dengan 1080 pada contoh Anda.
elynnaie
@denaje: Diperbaiki.
BatchyX
2
Apakah tidak ada cara untuk melakukannya di dalam xrandr tanpa menggunakan nilai-nilai ajaib? Saya ingin memiliki skrip yang berfungsi terlepas dari resolusi layar yang saya pasang. Jika tidak, saya rasa saya bisa mengekstrak nilai dari output xrandr, tapi itu terdengar agak membosankan ...
Khaur
5

Selain jawaban luar biasa @ BatchyX , opsi alternatif — dan IMO lebih nyaman — bisa menggunakan ARandR (yang merupakan kependekan dari "Another XRandR GUI"):

ARandR dirancang untuk memberikan tampilan depan visual sederhana untuk XRandR. Posisi monitor relatif ditunjukkan secara grafis dan dapat diubah dengan cara drag-and-drop.

Anda mungkin perlu menginstalnya terlebih dahulu, tetapi tersedia di sebagian besar repositori distro . Begini tampilannya untuk saya di LXDE, untuk pengaturan dengan satu monitor eksternal yang terhubung melalui VGA, di atas, dan monitor asli (ukuran netbook) di bawahnya:

Tangkapan layar ARandR

waldyrious
sumber
3

Jika Anda mencari solusi berbasis GUI drag-and-drop, saya dapat merekomendasikan ARandR .

Ini memungkinkan Anda untuk mengatur pengaturan XRandR yang paling penting, misalnya posisi layar dan resolusi, yang kemudian dapat disimpan dalam bentuk skrip shell yang memanggil xrandrdengan parameter yang sesuai.

Florian Franzen
sumber