5

Я использую VNC в офисе для подавляющего большинства моей работы. У нас есть кластер серверов Linux, настроенный для входа в систему через SSH для выполнения нашей работы. Они позволяют нам использовать VNC, чтобы мы могли получить постоянную рабочую среду для простоты рабочего процесса. Я подключаюсь к системе Windows с двумя мониторами на моем столе. Я могу настроить сервер TightVNC для своего сеанса по своему усмотрению.

Я хотел бы настроить сервер так, чтобы он создавал сеанс с двумя отдельными мониторами. Их можно объединить в один видовой экран, но я не хочу, чтобы моя панель задач Fluxbox или развернутые окна охватывали весь экран, как, например, когда я просто удваиваю горизонтальное разрешение. К Х, я хочу видеть два экрана. Но для TightVNC Viewer он будет отображаться как один широкий дисплей.

Я смотрел в Интернете и видел упоминания о людях, способных сделать это, но никаких реальных руководств или списков переключателей, чтобы это произошло. Я не могу использовать xorg.conf для создания нескольких адаптеров, так как у меня нет root (и у нас в любом случае нет общесистемных файлов xorg.conf). Серверы находятся в стойке и не имеют головы, поэтому я не могу использовать неиспользуемые физические адаптеры в качестве виртуальных мониторов для VNC. Я попытался указать несколько экранов на vncserver командной строки с -screen , а затем с помощью xrandr попробовать и место «VNC-1» рядом с «VNC-0», но он держит отчет о том , что выход с именем «VNC-1» является не найден, даже если я запрашиваю xrandr с помощью --screen 1 он показывает подключенный к нему дисплей. Если я включаю VNC в сеанс, настроенный таким образом, я все равно вижу только экран 0 (на выходе "VNC-0").

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

Также отметить:

  • Мы используем Xvnc TightVNC 1.3.0 в качестве сервера. Таким образом, он не использует x11vnc в качестве серверной части.
  • Мой компьютер с Windows подключен к последней версии программы просмотра TightVNC (2.7.10 на момент публикации).
  • Я попытался выполнить эту настройку как с Fluxbox, так и с Gnome, и не было никакой разницы в поведении - только в том, какой рабочий стол /WM работал.
  • Я не хочу устанавливать два отдельных дисплея в этом сеансе. Я хочу, чтобы окна, созданные на одном мониторе, можно было перетаскивать на другой.

Что мне не хватает? Или то, что я хочу сделать, даже возможно?

РЕДАКТИРОВАТЬ: (16.06.2016) Чтобы подчеркнуть, нет никакого физического отображения (используется или не используется), который я вижу доступным. Я не знаю, как выглядит физическая машина, но она без головы, поэтому на ней не может быть физического адаптера дисплея.

Когда я запускаю xrandr после подключения через SSH с пересылкой X, вот что я вижу:

xrandr: Failed to get size of gamma for output default
Screen 0: minimum 0 x 0, current 3840 x 1200, maximum 32768 x 32768
default connected 3840x1200+0+0 0mm x 0mm
   3840x1200       0.0* 

Из сессии VNC:

Screen 0: minimum 32 x 32, current 1920 x 1200, maximum 32768 x 32768
VNC-0 connected 1920x1200+0+0 0mm x 0mm
   1920x1200      60.0* 
   1920x1080      60.0  
   1600x1200      60.0  
   1680x1050      60.0  
   1400x1050      60.0  
   1360x768       60.0  
   1280x1024      60.0  
   1280x960       60.0  
   1280x800       60.0  
   1280x720       60.0  
   1024x768       60.0  
   800x600        60.0  
   640x480        60.0  

Если я попытаюсь добавить режим к безымянному выводу, он покажет это:

> xrandr --addmode VIRTUAL2 1920x1200_60.00
xrandr: cannot find output "VIRTUAL2"

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

2 ответа2

6

Хитрость заключается в том, чтобы сгенерировать виртуальный монитор на сервере, расположить его относительно реального монитора, где бы вы ни хотели, а затем дать VNC команду использовать ту часть общего монитора (реальная + виртуальная), которую вы хотели бы использовать. , Все это хорошо задокументировано на очень полезном форуме Arch Linux.

  1. Чтобы создать виртуальное зеркало:

    $ gtf 1920 1080 60
    # 1920x1080 @ 60.00 Hz (GTF) hsync: 67.08 kHz; pclk: 172.80 MHz
    Modeline "1920x1080_60.00"  172.80  1920 2040 2248 2576  1080 1081 1084 1118  -HSync +Vsync
    

    позволяет найти необходимую модельную линию: это предполагает наличие виртуального монитора размером 1920x1080 и частоту обновления 60 Гц, вы можете настроить его в соответствии со своими потребностями.

    Теперь вы можете создать новую моделину с помощью

    xrandr --newmode "1920x1080_60.00"  172.80  1920 2040 2248 2576  1080 1081 1084 1118  -HSync +Vsync
    
  2. Теперь вы можете сгенерировать монитор VIRTUAL1 с помощью:

    xrandr --addmode VIRTUAL1 1920x1080_60.00
    
  3. Теперь вы можете разместить виртуальный монитор слева от существующего монитора (в моем случае HDMI1 измените его так, как вам больше подходит):

    xrandr --output VIRTUAL1 --mode 1920x1080_60.00 --left-of HDMI1
    
  4. Наконец, вы можете решить увидеть только виртуальную часть дисплея (например) с помощью

    x11vnc -clip 1920x1080+0+0
    x11vnc -clip xinerama1
    

    (что работает для вас). Если вы хотите увидеть все пространство монитора (виртуальное + реальное), просто опустите вышеуказанное.

  5. Исходная запись, на которую ссылаются выше, предлагает передать следующие два параметра на удаленный компьютер, когда вы хотите запустить сеанс vnc :

    vncviewer -encodings "tight copyrect"
    

    Я никогда не считал это необходимым, но я передам это вам с YMMV.

PS: ваше описание того, как X11 должен относиться к наличию двух разных мониторов, сбивает с толку. То, что делает X11 легко и без необходимости нашего вмешательства, - это создание единого рабочего пространства (называемого экраном) из существующих мониторов таким образом, чтобы окна можно было перетаскивать с одного монитора на другой, и мышь перемещалась без барьеры по всему пространству монитора (экран). Кроме того, максимизация окон заполняет только монитор, в котором они находятся, а не экран. Это то, что, как я предполагал, вы хотели, и то, что вышеперечисленное достигается без дополнительной работы. Все остальное требует работы (если это вообще возможно).

0

Используя Fedora 26, я столкнулся с той же проблемой, что VIRTUAL1 не показывается командой xrandr.

Затем я следовал другим инструкциям, чтобы повторно использовать пустой вывод, такой как HDMI-2, и он работал довольно хорошо, но:

  • Gnome (и xrandr) не распознает пустой вывод как подключенный и не показывает виртуальный монитор для размещения позиции в расширенном рабочем столе или клоне. Каждый раз, когда новый физический монитор подключается к другому выходу, он имеет высокую вероятность поломки.
  • хуже всего то, что гном-оболочка (и бормотание под ней) не
    рассматривать новый виртуальный монитор как часть видимой области в
    составной фреймбуфер, он не правильно перекрашен, а windows
    разрывая при движении, оставляя за собой постоянный анимированный след,
    даже после закрытия окна, даже после перезапуска x11vnc, они все еще там.

Затем, после коротких проб и ошибок с фиктивным драйвером, я обнаружил, что не нужен полный файл xorg.conf, но достаточно добавить информацию о драйвере "intel" (в моем случае вы должны использовать собственное имя драйвера) в файл. в каталоге /etc/X11/xorg.conf.d, чтобы активировать выходы VIRTUAL1 и VIRTUAL2 и заставить gnome-shell распознавать их как допустимые выходы. (Я также заметил, что имена выходных данных изменились незначительно, например, с «eDP-1» на "eDP1"). Кроме того, я добавил опцию "TearLess", установленную в значение true, чтобы перерисовывать драйвер, когда композитный менеджер этого не делает.

~# vi /etc/X11/xorg.conf.d/01-dummy-monitor.conf
Section "Device"
        Identifier      "Configured Video Device"
    Driver "intel"         #CHANGE THIS
    Option "TearLess"   "1"
EndSection

Section "Monitor"
        Identifier      "Configured Monitor"
EndSection

Section "Screen"
        Identifier      "Default Screen"
        Monitor         "Configured Monitor"
        Device          "Configured Video Device"
EndSection

После этого, инструкции в ответе выше работают хорошо, и новым виртуальным монитором можно управлять в настройках экрана Gnome. Если у вас есть клиентские устройства VNC с различными разрешениями, вы можете добавить их, используя xrandr, как описано, и назначить их в настройках экрана Gnome.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .