Bagaimana membagi layar lebar secara vertikal menjadi dua ruang kerja virtual di Ubuntu / Gnome?


23

Laptop baru saya memiliki layar 16: 9 yang besar, dan saya merasa sulit untuk menggunakannya sepenuhnya selama 95% waktu saya tidak menonton film HD di dalamnya.

Saya ingin mengaturnya sebagai semacam layar ganda virtual dengan membagi layar fisik menjadi dua ruang kerja. Saya tahu saya bisa mengatur windows saya secara manual, tapi saya ingin dapat memaksimalkan jendela dan hanya menggunakan setengah monitor, dan dialog pop upnya terpusat pada setengah layarnya, hal semacam itu.

Apakah ada beberapa plug in yang tersedia untuk melakukan ini?


Jika Anda menggunakan compiz, Anda mungkin menemukan plugin grid lebih mudah, lihat jawaban saya di bawah ini.
kynan

Jawaban:


24

Anda dapat gunakan ' fakexinerama ' untuk mencapai apa yang Anda inginkan:

 Fake Xinerama is a replacement libXinerama library that instead 
 of querying the XServer reads ~/.fakexinerama and provides fake 
 information about Xinerama screens based on this file. It can be 
 used to fake a Xinerama setup even on computers with just one monitor
 or to fake Xinerama setup other than one specified in the XServer 
 configuration (e.g. making one screen smaller when using two same 
 screens). It's probably only useful for developers.

1
Terima kasih, ini bekerja dengan sempurna, dan lebih baik dari yang saya harapkan sebenarnya. Dermaga, panel panel, dan jendela mengambang menjangkau layar fisik, tetapi aplikasi yang dimaksimalkan dan "layar penuh" (termasuk instance vmware guest saya) dengan sopan tetap berada di separuh layar. Saya cukup baru di linux, jadi peretasan pada pengaturan tampilan saya terasa agak berisiko, tetapi tidak banyak pekerjaan yang terlibat. Saya mendokumentasikan langkah-langkah tepat saya untuk amatir linux lain (seperti saya) dalam jawaban tambahan di bawah ini.
David

2
Tautan rusak. Adakah di mana saya dapat menemukan perangkat lunak ini?
Maxime

17

Untuk memperluas tip akira di atas tentang penggunaan "xinerama" palsu milik Lubos Lunak, inilah cara saya membuatnya bekerja:

  1. Saya mengunduh file Xinerama.c ini dari situs Xinerama Palsu .
  2. Saya membuka terminal, dan menavigasi ke folder folder tempat saya menyimpan Xinerama.c.
  3. Saya mengeksekusi:
    gcc -O2 -Wall Xinerama.c -fPIC -o libXinerama.so.1.0.0 -shared
  4. Saya membuka nautilus (file explorer gnome) sebagai root, dengan mengetikkan Alt-F2 dan kemudian:
    gksu nautilus
  5. Saya menavigasi ke / usr / lib, menemukan libXinerama.so.1.0.0 dan membuat salinan cadangannya.
  6. Saya menyalin libXinerama.so.1.0.0 dari direktori unduhan saya ke direktori / usr / lib, mengganti salinannya di sana (yang baru saja saya buat cadangannya di langkah 5, jadi saya bisa membatalkan ini nanti jika perlu.) Untuk menjaga hal-hal yang jelas sangat membantu untuk dicatat bahwa ukuran file versi "palsu" lebih besar (12,6 kb) daripada versi "asli" yang saya gantikan (8,6 kb).
  7. Saya membuat file teks baru bernama .fakexinerama di direktori / home / dave saya dan meletakkannya di dalamnya: (berdasarkan ukuran layar fisik 1440x900 saya)
    2
    0 0 720 900
    720 0 720 900

Fake Xinerama memungkinkan Anda menentukan segala jenis pengaturan layar virtual yang Anda inginkan, tetapi saya hanya ingin layar split vertikal. Untuk mencapainya di monitor Anda, berukuran X demi Y piksel, melihat contoh file saya, ganti 720 dengan X / 2 dan ganti 900 dengan Y.

Itu dia. Saya login dan kembali, dan berdiri dan berjalan.

Sekali lagi terima kasih kepada Lubos Lunak untuk membuat mod ini dan kepada akira karena telah menunjukkannya kepada saya.


Ini banyak membantu saya dengan tampilan tiga kepala. Xinerama sangat lambat dengan tiga desktop sehingga menggunakan ini memungkinkan saya untuk menempatkan mereka berdua di twinview tanpa memaksimalkan mengganggu untuk kedua masalah dan memiliki yang ketiga sebagai layar X terpisah bergabung ke twinview dengan Xinerama. Terima kasih telah meluangkan waktu untuk menulis langkah-langkah David!
Kyle Brandt

7

Sekarang ada proyek baru bernama FakeXRandR yang bekerja sangat mudah.

Ini adalah alat untuk menipu server X11 untuk percaya bahwa ada lebih banyak monitor daripada yang sebenarnya. Ini menghubungkan ke libXRandR dan libXinerama dan menggantikan konfigurasi monitor tertentu yang dapat dikonfigurasi dengan beberapa monitor virtual. Alat yang disertakan dengan paket ini dapat digunakan untuk mengonfigurasi cara monitor dipisah.


Saya menggunakan fakexrandr sesekali berhasil. Sayangnya layar saya menjadi berantakan ketika saya memiliki xorg.conf (yang saya perlukan untuk resolusi khusus untuk monitor ultrawide saya). Saya terpaksa menghapus konfigurasi fakexrandr, restart X dan mengkonfigurasi ulang fakexrandr.
JAponte

3

Ini dapat dilakukan dalam XRandR 1.5 tanpa perangkat lunak tambahan. Walaupun fakexinerama atau FakeXRandR tidak bekerja untuk saya di Xubuntu, solusi ini akhirnya membagi layar menjadi dua.

Untuk membagi monitor lakukan hal berikut:

  1. Masuk xrandrke terminal untuk memeriksa nama keluaran dan resolusi tampilan saat ini yang ingin Anda bagi.
    Di sistem saya hasilnya adalah:

    Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 32767 x 32767
    HDMI1 disconnected (normal left inverted right x axis y axis)
    HDMI2 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 509mm x 286mm
       1920x1080     60.00*+  50.00    59.94
       1920x1080i    60.00    50.00    59.94  
       1600x900      60.00  
       1280x1024     75.02    60.02  
       1152x864      75.00  
       1280x720      60.00    50.00    59.94  
       1024x768      75.08    60.00  
       800x600       75.00    60.32  
       720x576       50.00  
       720x576i      50.00
       720x480       60.00    59.94
       720x480i      60.00    59.94
       640x480       75.00    60.00    59.94
       720x400       70.08
    VGA1 disconnected (normal left inverted right x axis y axis)
    VIRTUAL1 disconnected (normal left inverted right x axis y axis)
    

    Kita dapat melihat bahwa monitor saya terhubung ke HDMI2 dan resolusinya diatur ke 1920x1080.

  2. Tambahkan 2 monitor virtual dengan xrandr --setmonitorperintah yang memastikan mereka tumpang tindih dengan tampilan fisik Anda dan diletakkan di samping satu sama lain. Sintaks perintahnya adalah (tanpa tanda kutip):

    xrandr --setmonitor "monitor_name" "width_px"/"width_mm"x"height_px"/"height_mm"+"x_offset_px"+"y_offset_px" "output_name" 
    

    Untuk sistem saya itu:

    xrandr --setmonitor HDMI2~1 960/254x1080/286+0+0 HDMI2
    xrandr --setmonitor HDMI2~2 960/255x1080/286+960+0 none
    
  3. Sementara di atas telah mengkonfigurasi monitor virtual pada sistem saya, perubahan belum diterapkan sampai saya telah mengeksekusi (sepertinya menyegarkan xrandr):

    xrandr --fb 1921x1080
    xrandr --fb 1920x1080
    

Untuk mempertahankan perubahan setelah reboot Anda ingin menjalankan perintah ini ketika Anda login. Anda dapat melakukannya dengan menambahkan perintah di akhir ~/.profilefile Anda .


1
Bagus bahwa ia ada di xrandr, bagus. Tapi itu hanya membuat sisi kiri monitor saya dapat digunakan, bagian kanan tidak menunjukkan apa-apa. Dan saya tidak mendapatkan kesalahan yang ditampilkan. - Oh, sepertinya WM Luar Biasa tidak mendukung monitor, tetapi hanya menggunakan output. Jadi Anda perlu dukungan dalam WM juga.
nert

Oh, tidak masalah, hebat memiliki dukungan untuk monitor xrandr, itu tidak bekerja untuk saya. Tapi hebat bisa melakukannya dengan sendirinya: awesomewm.org/apidoc/classes/screen.html#screen:fake_add
nert

1

Saya menemukan sebuah artikel di omgubuntu yang memberikan cara yang cukup mudah untuk meniru fungsionalitas Windows Snap di Ubuntu / Gnome menggunakan panel kontrol Compiz. Snap Windows ini membuat saya dengan satu desktop layar lebar, tetapi windows itu sendiri dapat dengan mudah merapat untuk mengisi setengah layar. (Itu bukan apa yang saya cari pada awalnya, tapi masih cukup berguna.)


1

Saya telah menggunakan solusi untuk pertanyaan yang tepat ini selama beberapa tahun menggunakan triplehead2go. Perangkat itu akan bergabung hingga 3 monitor dan melaporkan satu monitor besar ke X.

Berikut adalah cara membagi monitor besar itu ke ruang kerja virtual di xorg.conf:

Section "Device"
    # ... your other settings above
    Option         "TwinViewXineramaInfoOverride" "1280x1024+0+0, 1280x1024+1280+1, 1280x1024+2560+0"
EndSection

Dan jika Anda menggunakan driver nvidia terbaru, driver tersebut memberikan ekstensi xinerama mereka sendiri yang tampaknya mengabaikan pengaturan di atas sehingga Anda harus menambahkan yang berikut di bagian perangkat itu:

Option         "NoTwinViewXineramaInfo" "true"

0

Saya cukup yakin Anda bisa melakukan ini dengan mengubah konfigurasi X Anda file , tetapi saya tidak akan hanya karena saya mungkin akan merusak konfigurasi tampilan saya. Jika Anda mencoba ini, berhati-hatilah, cadangan Anda menampilkan konfigurasi & pastikan Anda memiliki login alternatif yang dapat Anda gunakan jika Anda harus memperbaiki tampilan Anda.

Anda mungkin mendapatkan lebih banyak kepuasan dari manajer jendela ubin seperti xmonad , atau bahkan menjalankan compiz untuk mengontrol cara jendela membuka, menutup & memasang.


0

Bekerja dengan baik untuk saya:

Saya menggunakan yang berikut ini untuk dua monitor (1280x1024 + 2048x1152):

3
0 0 1280 1024
1280 0 1024 1152
2304 0 1024 1152

0

Jika Anda menggunakan compiz, Anda mungkin menemukan plugin gridnya sebagai solusi yang lebih mudah dan lebih fleksibel. Anda dapat mengonfigurasinya untuk memasang jendela di bagian kiri / kanan layar saat menyeretnya ke tepi.

Itu adalah fitur Window Snapping yang dijelaskan dalam artikel yang ditautkan oleh David. Selain itu Anda dapat mengkonfigurasi pintasan dan membuat jendela menempati bagian atas / bawah setengah atau seperempat layar.

Xinerama menyebabkan hit kinerja yang terkenal (karena itu mereplikasi tindakan X di semua layar Xinerama) dan tidak bekerja dengan baik dengan manajer jendela komposit.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.