Использование планшета в качестве дополнительного монитора в Linux

Есть большой планшет, который хочется применить с пользой при работе за ПК?
Не хватает размера монитора, новый купить жаба не позволяет, но есть планшет?
Просто хочется пользоваться месенджером (например) с планшета, но все действия выполнять клавиатурой и мышкой?
И при всём этом у вас Linux? (Для Windows есть приложение iDisplay)

Тогда эта статья для вас.

Пример такого расширения экрана можно увидеть на данном плохоньком видео:

Предварительные требования

На вашем ПК необходимо установить xrandr и x11vnc:

# apt-get install xrandr x11vnc

На планшете (телефоне), на который вы хотите расширить экран, нужно установить VNC-клиент.
Важно, чтобы этот клиент обладал следующими свойствами:

  • Разворот изображения на весь экран устройства (скрытие верхней и нижней панелей в Android)
  • Отображение курсора мыши с управляемого ПК
  • Скрытие всех дополнительных элементов управления
  • Поддержка метода сжатия tight, дающий высокую скорость передачи изображения

Для Android я перепробовал множество приложений, и остановился на bVNC

Для iOS, на первый взгляд, подойдёт VNC Viewer

Если вдруг вы хотите странного — увеличить рабочий стол на другой ПК, например, на ноутбук, вам понадобится VNC клиент для него. Если на ноутбуке Linux, то нужно установить xtightvncviewer. Если Windows, то TightVnc.

Принцип действия

Вкратце, принцип действия таков:
1) Мы добавляем к нашему экрану дополнительный «виртуальный» экран, слева, справа, сверху или с низу.
2) Как это обычно бывает, когда вы подключаете к своему ПК обычный дополнительный монитор, рабочий стол расширяется на этот экран и можно перетаскивать туда окна и переползать туда мышкой.
3) На ПК мы запускаем x11vnc — VNC-сервер, и указываем ему, что нужно транслировать не весь экран, а только тот кусок, который относится к свежедобавленному виртуальному экрану
4) На Планшете/Телефоне/Другом ПК мы устанавливаем VNC-клиент, и, подключившись к VNC-серверу, видим тот дополнительный экран, который мы добавляли ранее.
5) Остаётся поставить планшет/телефон/другой ПК рядом с вашим основным монитором так, чтобы он соответствовал месту, в которое вы «поместили» доп. экран, чтобы утаскивая окно мышкой в соответствующий угол, можно было увидеть его вылезающим как раз в том месте планшета, где это и ожидается.

Сбор информации

1. Нужно выяснить разрешение экрана на вашем основном ПК (скорее всего вы его и так знаете, но всё же):

xrandr | grep connected

В результате будет выдано что-то вроде:

eDP1 connected primary 1600x900+0+0 (normal left inverted right x axis y axis) 388mm x 219mm

В данном примере видно, что подключён монитор на разъёме eDP1 и разрешение экрана составляет 1600х900. У вас это может быть какое-то другое, запомним его.

2. Нужно выяснить разрешение экрана вашего планшета (либо другого ноутбука/ПК/Телефона, который вы хотите использовать в качестве дополнительного экрана)
Самый простой способ: открыть сайт http://yandex.ru/internet/, там разрешение написано в блоке «Разрешение экрана».
Для примера, предположим, что разрешение экрана планшета у вас 1024х600

Настройка экрана на ПК

3. Создадим новый режим экрана для разрешения вашего планшета:

Для начала, создадим новый «режим» для разрешения вашего планшета.

Вызовем генератор данных режимов, передадим ему разрешение экрана 1024 600 и число 60, означающее 60 Герц (наследие прошлого, когда была важна частота обновления экрана):

gtf 1024 600 60

В результате будет выведено сообщение типа такого:

# 1024x600 @ 60.00 Hz (GTF) hsync: 37.32 kHz; pclk: 48.96 MHz
Modeline "1024x600_60.00"  48.96  1024 1064 1168 1312  600 601 604 622  -HSync +Vsync

Здесь вторая строка (начинающаяся с Modeline) — это режим экрана для заданного разрешения, а точнее, так называемый VESA GTF, являющийся набором параметров компонентного видеосигнала (используемого в VGA), включающих частоты горизонтального и вертикального обновления, задержки сброса и другие параметры.
Из неё нам понадобится весь текст после слова «Modeline» без самого этого слова.
Эти данные предназначены для настройки экрана в X-Server, раньше их писали в xorg.conf, когда Xorg был недостаточно умным чтобы самостоятельно определять все поддерживаемые разрешения. Сейчас же можно воспользоваться утилитой xrandr, чтобы поменять значения на лету, без правки xorg.conf.

Создадим новый режим в XServer с помощью следующей команды. Вставим после ключа «—newmode» данные, выведенные предыдщуей команды без слова «Modeline».

xrandr --newmode "1024x600_60.00"  48.96  1024 1064 1168 1312  600 601 604 622  -HSync +Vsync

Строка, указанная в кавычках, в данном случае «1024x600_60.00» — это «режим» экрана, который мы используем для создания виртуального монитора.

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

randr | grep disconnected

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

VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)

Это список ваших отключённых экранов. Обычно, хотя-бы один должен быть, так как на современных ПК часто бывает по 2-3 видеовыхода разного типа, не говоря уж о ноутбуках.
Вам нужно выбрать тот, который вы не будете использовать для чего-то другого (то есть, не будете подключать к нему физический монитор), например, я выбираю здесь VGA1, так как, на моём ноутбуке, где я выполняю данную команду, на самом деле нет видео выхода VGA1, он видимо не распаян разъём. Если у вас в этом списке нет ни одного разъёма, чтож, это печально, но предётся добавлять новый, виртуальный выход путём правки xorg.conf. Об этом напишу позже.

5. Включим наш дополнительный монитор
Для начала надо выбрать, где именно будет ваш новый «экран» — справа от вашего текущего экрана, или слева от него.
Этот выбор понадобится нам здесь, а также в следующем пункте.

Добавим созданный ранее режим в наш «экран»:

xrandr --addmode VGA1 "1024x600_60.00"

Вспомним, какой именно экран у вас главный:

xrandr | grep primary

В моём случае данная команда выдаст что-то вроде:

eDP1 connected primary 1600x900+0+0 (normal left inverted right x axis y axis) 388mm x 219mm

Нас интересует первое слово — eDP1, это название основного экрана, слева или справа от которого нужно включить «виртуальный».

Наконец включим «экран»:
Вместо VGA1 пишите то, что выбрали ранее, вместо eDP1 — название вашего активного экрана, а вместо «1024x600_60.00» укажите ваш режим, который вы добавляли по этой инструкции ранее. Если хотите разместить новый экран справа от вашего основного — оставьте «—right-of» как есть, а если хотите разместить его слева, замените на «—left-of»

xrandr --output VGA1 --mode 1024x600_60.00 --right-of eDP1

Предоставление доступа к ПК

6. Создадим пароль для доступа:

x11vnc -storepasswd

после запуска этой команды x11vnc спросит у вас пароль, попросит повторить его, после чего уточнит, следует ли его записать. Нужно предоставить ему все требуемые ответы на вопросы.

7. Запустим в терминале x11vnc:

Если у вас дополнительный монитор справа от вашего основного:
В приведенной команде, в строке «1024х600+1600+0» нужно заменить часть «1024х600» на ваше разрешение планшета (мы его определяли в пункте 2), а часть «1600» на ширину вашего основного экрана (пункт 1)

x11vnc -rfbport 25900 -clip 1024x600+1600+0 -forever

Если дополнительный монитор слева от вашего основного:
В приведенной команде, в строке «1024х600+1600+0» нужно заменить часть «1024х600» на ваше разрешение планшета (мы его определяли в пункте 2)

x11vnc -rfbport 25900 -clip 1024x600+0+0 -forever

в обоих командах вместо 25900 можно поставить тот номер порта, который вам больше нравится. На этом порту будет слушать VNC-сервер.

Подключение к ПК с планшета

Я буду исходить из того, что у вас планшет на Android, и для подключения вы используете приложение bVNC.

8. Для начала нужно, чтобы ваш планшет и ПК были в одной сети. Самое простое — подключить их к одному WiFi.

Узнаем IP-адрес вашего ПК, чтобы знать куда подключаться, для этого выполняем на пк:

ip addr list | grep "inet"

В результате будет выдано что-то вроде:

 inet 127.0.0.1/8 scope host lo
 inet 192.168.0.10/24 brd 192.168.0.255 scope global wlan0
 inet 172.17.0.1/16 scope global docker0

Из этого списка вам нужно выбрать тот IP-адрес, который является адресом вашего ПК в локальной сети. Если у вас домашний роутер, то, как правило этот адрес будет начинаться на 192.168…, в других случаях нужно выяснять отдельно у тех, кто настраивал вашу сеть.
В моём случае это 192.168.0.10, запомним этот адрес.

9. Откроем на планшете с Android приложение bVNC, и прикажем ему подключится к адресу 192.168.0.10 (а на самом деле тому, который вы нашли для себя), и порту 25900 (либо другому порту, если вы решили изменить его в пункте 7).
Укажем пароль, который вы придумывали на этапе 6, и подключение должно установиться.

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


2 комментария

  • Ответить lemurglass |

    Пакет xrandr недоступен, но упомянут в списке зависимостей другого пакета.
    Это может означать, что пакет отсутствует, устарел, или доступен из источников, не упомянутых в sources.list
    Нерабочий репозиторий

    • Ответить mihanentalpo |

      Это может означать что у тебя не все стандартные репозитории включены.
      Попробуй сделать apt-get update и после этого установить снова.
      Если не поможет, покажи содержимое твоего файла /etc/apt/sources.list

Оставить комментарий

  • *