Как разделить по вертикали широкоэкранный режим на два виртуальных рабочих пространства в Ubuntu / Gnome?

23

У моего нового ноутбука большой экран 16: 9, и мне трудно использовать его в полной мере в 95% случаев, когда я не смотрю фильмы HD на нем.

Я хотел бы настроить его как виртуальный двойной экран, разделив физический экран на два рабочих пространства. Я знаю, что мог бы расположить свои окна вручную, но я бы хотел иметь возможность максимизировать окно, чтобы оно занимало только половину монитора, а его всплывающие диалоговые окна были сосредоточены на его половине экрана, такого рода вещи.

Есть ли какой-нибудь плагин для этого?

Дэвид
источник
Если вы используете compiz, вы можете найти плагин сетки более простым, см. Мой ответ ниже.
Кинан

Ответы:

24

Вы можете использовать « fakexinerama » для достижения желаемого:

 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
Спасибо, это работает отлично, и лучше, чем я надеялся. Мои доки, панели и плавающие окна охватывают физический экран, но развернутые и полноэкранные приложения (включая гостевые экземпляры vmware) вежливо сохраняют свою половину экрана. Я довольно новичок в Linux, так что взломать мои настройки дисплея было немного рискованно, но на самом деле не так много работы. Я документирую свои точные шаги для других любителей Linux (таких как я) в дополнительном ответе ниже.
Дэвид
2
Ссылка не работает. Есть идеи, где я могу найти это программное обеспечение?
Максим
16

Чтобы расширить совет Акиры выше по использованию «поддельной ксинерамы» Лубоса Лунака, вот как я это сделал:

  1. Я скачал этот файл Xinerama.c с поддельного сайта Xinerama .
  2. Я открыл терминал и перешел в папку, в которой я сохранил Xinerama.c.
  3. Я выполнил:
    gcc -O2 -Wall Xinerama.c -fPIC -o libXinerama.so.1.0.0 -shared
  4. Я открыл nautilus (файловый менеджер gnome) от имени пользователя root, набрав Alt-F2, а затем:
    gksu nautilus
  5. Я перешел в / usr / lib, нашел libXinerama.so.1.0.0 и сделал его резервную копию.
  6. Я скопировал libXinerama.so.1.0.0 из моего каталога загрузки в каталог / usr / lib, переопределив там копию (которую я только что скопировал на шаге 5, так что я могу отменить это позже, если потребуется). Ясно, что было полезно отметить, что размер файла «поддельной» версии был больше (12,6 КБ), чем «реальной» версии, которую я заменял (8,6 КБ).
  7. Я создал новый текстовый файл с именем .fakexinerama в моем каталоге / home / dave и поместил его в него: (на основе моего физического размера экрана 1440x900)
    2
    0 0 720 900
    720 0 720 900

Поддельный Xinerama позволяет вам определить любой вид виртуального экрана, который вы хотите, но я просто хочу вертикальный разделенный экран. Чтобы добиться этого на вашем мониторе, размер X на Y пикселей, в примере с моим файлом, просто замените 720 на X / 2 и замените 900 на Y.

Вот и все. Я вышел из системы и снова вошел.

Еще раз спасибо Lubos Lunak за создание этого мода и akira за указание на это.

Дэвид
источник
Это очень помогло мне с дисплеем с тремя головами. Xinerama довольно медленно работает с тремя рабочими столами, поэтому использование этого позволило мне разместить два из них в режиме twinview без раздражающего максимизации обеих проблем и получить третий в качестве отдельного экрана X, присоединенного к twinview с Xinerama. Спасибо, что нашли время, чтобы записать шаги Дэвид!
Кайл Брандт
6

В настоящее время существует новый проект под названием FakeXRandR, который работает действительно прямо.

Это инструмент для обмана сервера X11, чтобы полагать, что мониторов больше, чем есть на самом деле. Он подключается к libXRandR и libXinerama и заменяет некоторые настраиваемые конфигурации мониторов несколькими виртуальными мониторами. Инструмент, который поставляется с этим пакетом, можно использовать для настройки разделения мониторов.

mperrin
источник
Время от времени я успешно использовал fakexrandr. К сожалению, мой экран становится зашифрованным, когда у меня есть xorg.conf (который мне нужен для настраиваемого разрешения для моего сверхширокого монитора). Я вынужден удалить конфигурацию fakexrandr, перезапустить X и перенастроить fakexrandr.
Японте
3

Это можно сделать в XRandR 1.5 без дополнительного программного обеспечения. Хотя ни Fakexinerama, ни FakeXRandR не работали для меня в Xubuntu, это решение окончательно разделило экран на две части.

Чтобы разделить монитор, сделайте следующее:

  1. Войдите xrandrв терминал, чтобы проверить имя выхода и текущее разрешение дисплея, который вы хотите разделить.
    На моей системе результат был:

    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)
    

    Мы видим, что мой монитор подключен к HDMI2, а разрешение установлено на 1920x1080.

  2. Добавьте 2 виртуальных монитора с помощью xrandr --setmonitorкоманды, гарантирующей, что они перекрываются с вашим физическим дисплеем и расположены рядом друг с другом. Синтаксис команды (без кавычек):

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

    Для моей системы это было:

    xrandr --setmonitor HDMI2~1 960/254x1080/286+0+0 HDMI2
    xrandr --setmonitor HDMI2~2 960/255x1080/286+960+0 none
    
  3. Хотя вышеприведенное уже настроило виртуальные мониторы в моей системе, изменения не были применены до тех пор, пока я не выполнил (похоже, обновляет xrandr)

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

Чтобы сохранить изменения после перезагрузки, вы захотите выполнить эти команды при входе в систему. Вы можете сделать это, добавив команды в конец вашего ~/.profileфайла.

Strachu
источник
Хорошо, что он существует прямо в xrandr, отлично. Но это позволяет использовать только левую сторону моего монитора, правая часть ничего не показывает. И я не получаю сообщение об ошибке. - О, похоже, Awesome WM не поддерживает мониторы, а использует только выходные данные. Так что вам нужна поддержка и в WM.
18:15
О, неважно, у awesome есть поддержка мониторов xrandr, у меня это просто не сработало. Но awesome может сделать это сам по себе: awesomewm.org/apidoc/classes/screen.html#screen:fake_add
nert
1

Я наткнулся на статью о omgubuntu, которая дает довольно простой способ имитировать функциональность Windows Snap в Ubuntu / Gnome с помощью панели управления Compiz. Эта Windows Snap дает мне один широкоэкранный рабочий стол, но сами окна можно легко закрепить, чтобы заполнить любую половину экрана. (Это не совсем то, что я искал изначально, но все же довольно удобно.)

Дэвид
источник
1

Я уже несколько лет использую решение этих точных вопросов, используя triplehead2go. Это устройство объединит до 3 мониторов и сообщит об одном огромном мониторе X.

Вот как разделить этот огромный монитор на виртуальные рабочие пространства в xorg.conf:

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

И если вы используете последние версии драйверов nvidia, эти драйверы имеют собственное расширение xinerama, которое, похоже, игнорирует вышеуказанные настройки, поэтому вы должны добавить следующее в этот раздел устройств:

Option         "NoTwinViewXineramaInfo" "true"
bksunday
источник
0

Я вполне уверен, что вы можете сделать это, настроив свой X-конфигурационный файл, но я бы не стал просто потому, что, вероятно, нарушил бы мою конфигурацию дисплея. Если вы попробуете это, будьте очень осторожны, сделайте резервную копию вашего дисплея конфигурации и убедитесь, что у вас есть альтернативный логин, который вы можете использовать в случае, если вам нужно исправить ваш дисплей.

Вы можете получить больше удовольствия от оконного менеджера, такого как xmonad , или даже от запуска compiz для управления открытием, закрытием и мозаикой окон.

DaveParillo
источник
0

Хорошо работает для меня:

Я использовал следующее для двух мониторов (1280x1024 + 2048x1152):

3
0 0 1280 1024
1280 0 1024 1152
2304 0 1024 1152
codeinthehole
источник
0

Если вы используете compiz, вы можете найти его плагин сетки более простым и гибким решением. Вы можете настроить его так, чтобы он перетаскивал окно над левой / правой половиной экрана при перетаскивании его к краю.

Это функция привязки окна, описанная в статье, на которую ссылается Дэвид. Более того, вы можете настроить ярлыки и сделать так, чтобы окно занимало верхнюю / нижнюю половину или четверть экрана.

Xinerama вызывает заметное снижение производительности (поскольку он повторяет действия X на всех экранах Xinerama) и плохо работает с композитными оконными менеджерами.

kynan
источник