Вопрос или проблема
Я боролся с несколькими (2+, а не 1+) мониторами, подключенными к своему ноутбуку на Ubuntu, в течение некоторого времени. Та же старая история с проблемами поддержки драйверов и т.д. В настоящее время у меня есть один традиционный внешний монитор и другой, работающий через USB-адаптер, что не является идеальным решением. Мой вопрос заключается в следующем… Есть ли способ, чтобы я мог запустить хост (в данном случае мой ноутбук с Ubuntu) и подключиться к нему через VNC, добавив при этом столько мониторов, сколько у меня есть доступа в “окнах” VNC-клиента? Проблема, которую я вижу из того, что я прочитал, заключается в том, что хост должен знать о всех мониторах до подключения VNC… а не после.
Я подумал, что это может быть креативный способ наконец-то подключить 2-3 (или более) монитора к ноутбуку с Ubuntu, не сталкиваясь с проблемами с драйверами и плохой производительностью при подключении дисплеев к USB-адаптерам.
Меня не беспокоит скорость через VNC, все это будет внутренний сетевой трафик.
Немного исследований
https://support.realvnc.com/knowledgebase/article/View/379/6/how-do-i-map-multiple-vnc-viewer-monitors-to-multiple-vnc-server-monitors
Если USB-видеопереходник “менее идеален” по причинам производительности, за исключением узкого места в USB-шине, которое является проблемой, вероятно, нет других способов добавить то же количество мониторов с приемлемой производительностью, по крайней мере, если есть много движения. Тем не менее, вот один способ по сути подключить столько мониторов “к ноутбуку”, сколько вы хотите, при этом управляя ими с помощью одной клавиатуры и мыши, не требуя специализированного оборудования:
Настройте VNC на ноутбуке так, чтобы когда вы входите, он подключался к своему собственному отдельному X-серверу (в отличие от дисплея :0, который в настоящее время управляет вашими мониторами). Теперь вы можете настроить дополнительные компьютеры. С каждого из них вы можете открыть сессию VNC (с собственной независимой сессией X) и запустить ее в полноэкранном режиме. (Вы также можете напрямую использовать X через LTSP или другой метод удаленного контроля для подключения к сессиям X; просто выведите их на экран. С VNC ваши другие компьютеры даже не должны работать под управлением Linux.) Окей, отлично. Теперь у вас есть 25 дисплеев рядом друг с другом, но у вас тоже 25 пар клавиатур/мышей. Теперь что?
Сначала установите VNC на каждом из других компьютеров. Убедитесь, что вы можете подключиться к каждому из них и видеть рабочий стол, который они отображают. Итак, с ноутбука вы можете подключиться к другой машине по VNC и увидеть “приватный” рабочий стол, который генерируется на вашем собственном ноутбуке, но отображается на мониторе другой машины и также в окне вашего собственного VNC-клиента. Окей, теперь мы знаем, что это работает. Это все еще не то, что вы хотите, так что вот следующий шаг.
Введите “x2vnc”. По сути, это клиент VNC, который отправляет события клавиатуры/мыши, но не беспокоится о получении видео обратно. Вместо традиционного окна клиента (которое вы активируете, чтобы оно знало, что отправляет события мыши/клавиатуры на удаленную машину вместо вашей локальной сессии) вы настраиваете его так, чтобы оно активировалось, когда вы перемещаете мышь к краям экрана. Вы можете подключить его либо к машинам, которые отображают ваши дополнительные рабочие столы, либо к серверам VNC, работающим на вашем собственном ноутбуке, к которым они подключены.
В любом случае, магия x2vnc позволяет вам подключить монитор к удаленному компьютеру, сидящему справа от вашего основного, и когда вы перемещаете мышь за правый край вашего экрана, она волшебным образом продолжает движение с левой стороны правого монитора, как если бы это был двойной дисплей, когда на самом деле вы управляете другим компьютером (который в свою очередь управляет сессией рабочего стола на вашем собственном компьютере). Он отслеживает местоположение мыши, чтобы когда вы вернетесь налево, ваш указатель снова появился на вашем локальном дисплее в нужное время и в нужном месте, чтобы все это выглядело очень естественно.
Прошло время с тех пор, как я играл с x2vnc. Я знаю, что он гибкий, но не знаю, как. В этом плане вы могли бы подключить как минимум 4 других машины: верх, низ, левые и правые края экрана. И, конечно, если одна из ваших других машин имеет 2 монитора и позволяет вам растянуть VNC-клиента на оба, то это позволит вам уйти дальше от вашего локального центрального дисплея. В этом смысле, вы, вероятно, могли бы запустить x2VNC (win2VNC на машинах с Windows) на одной из удаленных машин, чтобы затем она управляла другой, пока вы продолжаете движение в том же направлении; это позволит вам создать длинную цепь мониторов в одном направлении, каждый из которых добавляет новый уровень к a-controls-b-which-controls-c-which-controls-d-which-views-a2 цепи. Сотни мониторов!
Конечно, с несколькими независимыми X-серверами, работающими одновременно, вы все равно не сможете плавно переносить окна между сессиями (хотя я почти помню приложение, которое как бы позволяло вам это делать, действуя как посредник между приложениями и несколькими X-серверами). Если вы вместо этого настроите другие машины как “толстые клиенты” (используя LTSP), вы сможете хотя бы частично синхронизировать приложения с вашим ноутбуком (ваш толстый клиент нужно периодически обновлять, чтобы поддерживать его синхронным с тем, что у вас установлено), при этом используя процессор/память других машин, чтобы снизить нагрузку на ноутбук.
Похоже, это ужасно много инфраструктуры для ноутбука!
Ответ или решение
Подключение нескольких мониторов через VNC от одного монитора на хосте: подробное руководство
Проблема использования нескольких мониторов при подключении к вашему ноутбуку на базе Ubuntu через VNC представляет собой сложную задачу, но существует решение, которое позволяет обойти некоторые ограничения, связанные с аппаратным обеспечением и управлением драйверами. В этой статье мы рассмотрим, как можно эффективно управлять несколькими мониторами, используя VNC для отображения нескольких виртуальных рабочих столов.
Проблематика
Основной вопрос заключается в том, что, по сути, VNC ориентирован на управление уже существующими графическими сессиями на хосте. В случае с несколькими мониторами ваша система должна быть сконфигурирована так, чтобы она распознавала и обрабатывала все доступные экраны до подключения клиента VNC. Однако если ваше оборудование ограничено, особенно в случае с USB-адаптерами, это может привести к снижению производительности.
Решение: Виртуальные X-сессии
Решение заключается в настройке нескольких X-сессий на вашем ноутбуке. Это можно сделать следующим образом:
-
Установка VNC-сервера: Убедитесь, что на вашем ноутбуке установлен VNC-сервер, такой как
TightVNC
илиTigerVNC
. -
Настройка нескольких X-сессий:
- Запустите дополнительные X-сессии на вашем ноутбуке. Вы можете сделать это с помощью команд, таких как
startx -- :1
для создания нового сеанса X под номером 1. - Повторите команду для каждой дополнительной сессии, которую вы хотите создать.
- Запустите дополнительные X-сессии на вашем ноутбуке. Вы можете сделать это с помощью команд, таких как
-
Подключение к VNC-серверу: Убедитесь, что каждый из ваших VNC-серверов (например, :1, :2 и т.д.) правильно запущен и что вы можете подключаться к ним с другого устройства, используя VNC-клиент.
Использование x2vnc для управления несколькими мониторами
Для управления несколькими мониторами с одного устройства удобно использовать инструмент x2vnc
. Это программа, которая позволяет использовать одну клавиатуру и мышь для управления несколькими устройствами без необходимости переключаться между сеансами. Как это работает:
-
Установка x2vnc: Установите
x2vnc
на всех компьютерах или устройствах, к которым вы хотите подключаться. -
Конфигурация x2vnc: Настройте так, чтобы окно x2vnc активировалось при наведении курсора мыши на края экрана, тем самым позволяя вашему указателю продолжать движение на другие экраны, как будто они являются частью единой конфигурации.
-
Создание виртуальных рабочих столов: Каждая VNC-сессия, подключенная к вашему ноутбуку, будет представлять отдельный рабочий стол. С помощью x2vnc вы сможете перемещаться между этими рабочими столами, не теряя контроля над мышью и клавиатурой.
Загрузка "толстых клиентов"
Если вам нужно больше возможностей, рассмотрите использование толстых клиентов (fat clients) через LTSP (Linux Terminal Server Project). Это позволит задействовать вычислительные мощности других машин, одновременно предоставляя доступ к ресурсам вашего ноутбука. Настройка LTSP может стать сложной, но она даст вам возможность эффективно использовать ресурсы и уменьшить нагрузку на ваше устройство.
Заключение
Управление несколькими мониторами через VNC от единственного ноутбука может показаться сложной задачей, но с помощью виртуальных X-сессий и инструментов, таких как x2vnc, вы сможете эффективно организовать свою рабочую среду. Это стиль работы, который требует более сложной инфраструктуры, но даст возможность значительно улучшить производительность и потенциально освобождает вас от проблем с несовместимыми драйверами и аппаратным обеспечением.
Если вы заинтересованы в подробной настройке или имеете дополнительные вопросы, не стесняйтесь обращаться за помощью.