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

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

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

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

9 ответов

Решение

Вы можете использовать " 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. Я скачал этот файл 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 за указание на это.

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

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

Это можно сделать в 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 файл.

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

Я уже несколько лет использую решение этих точных вопросов, используя 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"

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

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

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

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

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

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

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

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

Другие вопросы по тегам