Планшет в качестве второго экрана под linux
Решил попробовать для расширения рабочего пространства, сенсорного ввода и удаленного управления использовать планшет как дополнительный экран к своему ноутбуку c Linux.
Нашлось 2 способа сделать это. Чем и делюсь.
Все дальнейшие действия выполняются на ноутбуке. Для подключения на планшет надо установить любой VNC клиент.
Первый, самый быстрый
Понадобятся vnc4server и x2x:
При первом запуске vnc4server спросит пароль для подключения. После чего запустит X сессию и будет ждать vnc подключения на 5901 порту. Конфигурация сессии задается в файле
Для управления сессией с компьютера можно использовать x2x:
Теперь при перемещении курсора мыши за правую границу экрана, он будет появляться на планшете и ввод с клавиатуры будет переключаться туда же.
Такой способ имеет недостаток: нельзя перетащить окно с одного экрана на другой.
Второй способ
Использовать dummy драйвер в качестве второй видеокарты, объединить их с основной с помошью xinerama и отдать часть рабочего стола через x11vnc.
Придется написать конфигурацию для xorg. Пример конфигурации /etc/X11/xorg.conf
Все остальное настраивается Xorg автоматически.
Перезагружаем xorg сервер, заходим в сеанс и запускаем:
Порт по умолчанию 5900.
В данном случае у меня 1280 размер экрана ноутбука по горизонтали, это число является смещением, и 1024×768 — размер экрана планшета.
Данное решение позволяет работать с двумя экранами в одной сессии и перемещать окна между устройствами.
Для подключения я использую vnc клиент androidVNC. На ноутбуке Ubuntu 12.04.
Источник
Android планшет как второй монитор ubuntu
Есть большой планшет, который хочется применить с пользой при работе за ПК?
Не хватает размера монитора, новый купить жаба не позволяет, но есть планшет?
Просто хочется пользоваться месенджером (например) с планшета, но все действия выполнять клавиатурой и мышкой?
И при всём этом у вас Linux? (Для Windows есть приложение iDisplay)
Тогда эта статья для вас.
Пример такого расширения экрана можно увидеть на данном плохоньком видео:
Предварительные требования
На вашем ПК необходимо установить xrandr и x11vnc:
Debian и Ubuntu:
# apt-get install x11-xserver-utils x11vnc
RadHat, Fedora, CentOs:
# yum install xorg-xrandr
На планшете (телефоне), на который вы хотите расширить экран, нужно установить 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 и разрешение экрана составляет 1600х900. У вас это может быть какое-то другое, запомним его.
2. Нужно выяснить разрешение экрана вашего планшета (либо другого ноутбука/ПК/Телефона, который вы хотите использовать в качестве дополнительного экрана)
Самый простой способ: открыть сайт http://yandex.ru/internet/, там разрешение написано в блоке «Разрешение экрана».
Для примера, предположим, что разрешение экрана планшета у вас 1024х600
Настройка экрана на ПК
3. Создадим новый режим экрана для разрешения вашего планшета:
Для начала, создадим новый «режим» для разрешения вашего планшета.
Вызовем генератор данных режимов, передадим ему разрешение экрана 1024 600 и число 60, означающее 60 Герц (наследие прошлого, когда была важна частота обновления экрана):
gtf 1024 600 60
В результате будет выведено сообщение типа такого:
Здесь вторая строка (начинающаяся с 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
В результате должно быть выведено примерно следующее:
Это список ваших отключённых экранов. Обычно, хотя-бы один должен быть, так как на современных ПК часто бывает по 2-3 видеовыхода разного типа, не говоря уж о ноутбуках.
Вам нужно выбрать тот, который вы не будете использовать для чего-то другого (то есть, не будете подключать к нему физический монитор), например, я выбираю здесь VGA1, так как, на моём ноутбуке, где я выполняю данную команду, на самом деле нет видео выхода VGA1, он видимо не распаян разъём. Если у вас в этом списке нет ни одного разъёма, чтож, это печально, но предётся добавлять новый, виртуальный выход путём правки xorg.conf. Об этом напишу позже.
5. Включим наш дополнительный монитор
Для начала надо выбрать, где именно будет ваш новый «экран» — справа от вашего текущего экрана, или слева от него.
Этот выбор понадобится нам здесь, а также в следующем пункте.
Добавим созданный ранее режим в наш «экран»:
xrandr —addmode VGA1 «1024x600_60.00»
Вспомним, какой именно экран у вас главный:
xrandr | grep primary
В моём случае данная команда выдаст что-то вроде:
Нас интересует первое слово — eDP1, это название основного экрана, слева или справа от которого нужно включить «виртуальный».
Наконец включим «экран»:
Вместо VGA1 пишите то, что выбрали ранее, вместо eDP1 — название вашего активного экрана, а вместо «1024x600_60.00» укажите ваш режим, который вы добавляли по этой инструкции ранее. Если хотите разместить новый экран справа от вашего основного — оставьте «—right-of» как есть, а если хотите разместить его слева, замените на «—left-of»
xrandr —output VGA1 —mode 1024x600_60.00 —right-of eDP1
Предоставление доступа к ПК
6. Создадим пароль для доступа:
после запуска этой команды x11vnc спросит у вас пароль, попросит повторить его, после чего уточнит, следует ли его записать. Нужно предоставить ему все требуемые ответы на вопросы.
7. Запустим в терминале x11vnc:
Если у вас дополнительный монитор справа от вашего основного:
В приведенной команде, в строке «1024х600+1600+0» нужно заменить часть «1024х600» на ваше разрешение планшета (мы его определяли в пункте 2), а часть «1600» на ширину вашего основного экрана (пункт 1)
x11vnc -rfbport 25900 -clip 1024×600+1600+0 -forever
Если дополнительный монитор слева от вашего основного:
В приведенной команде, в строке «1024х600+1600+0» нужно заменить часть «1024х600» на ваше разрешение планшета (мы его определяли в пункте 2)
x11vnc -rfbport 25900 -clip 1024×600+0+0 -forever
в обоих командах вместо 25900 можно поставить тот номер порта, который вам больше нравится. На этом порту будет слушать VNC-сервер.
Подключение к ПК с планшета
Я буду исходить из того, что у вас планшет на Android, и для подключения вы используете приложение bVNC.
8. Для начала нужно, чтобы ваш планшет и ПК были в одной сети. Самое простое — подключить их к одному WiFi.
Узнаем IP-адрес вашего ПК, чтобы знать куда подключаться, для этого выполняем на пк:
ip addr list | grep «inet»
В результате будет выдано что-то вроде:
Из этого списка вам нужно выбрать тот IP-адрес, который является адресом вашего ПК в локальной сети. Если у вас домашний роутер, то, как правило этот адрес будет начинаться на 192.168…, в других случаях нужно выяснять отдельно у тех, кто настраивал вашу сеть.
В моём случае это 192.168.0.10, запомним этот адрес.
9. Откроем на планшете с Android приложение bVNC, и прикажем ему подключится к адресу 192.168.0.10 (а на самом деле тому, который вы нашли для себя), и порту 25900 (либо другому порту, если вы решили изменить его в пункте 7).
Укажем пароль, который вы придумывали на этапе 6, и подключение должно установиться.
На экране планшета вы увидите обои вашего рабочего стола, и, возможно, какие-то элементы управления (например, если у вас KDE, то увидите в углу кнопку управления рабочим столом Plasma.
13 комментариев
Пакет xrandr недоступен, но упомянут в списке зависимостей другого пакета.
Это может означать, что пакет отсутствует, устарел, или доступен из источников, не упомянутых в sources.list
Нерабочий репозиторий
Это может означать что у тебя не все стандартные репозитории включены.
Попробуй сделать apt-get update и после этого установить снова.
Если не поможет, покажи содержимое твоего файла /etc/apt/sources.list
Супер… а если ОС не дебианоподобная а fedora и apt-get нет как такового…
Если fedora, то
yum install xrandr x11vnc
Если ты поставил себе федору, предполагается что ты знаешь что в ней вместо apt-get 🙂
всё заработало, почти… работает в режиме дублирования на экран девайса а не расширения (((
Это значит что:
1) Либо ты неверное разместил виртуальный экран с помощью xrandr
2) Либо неверно дал x11vnc координаты этого экрана
Пришли команды которые набирал, и разрешения твоих экранов, подскажу
ПИШИТЕ БЛЯТЬ АДЕКВАТНЫЕ ИНСТРУКЦИИ А НЕ КОПИРУЙТЕ ОДНО И ТОЖЕ НЕ РАБОТАЮЩЕЕ ГОВНО С САЙТА НА САЙТ!!
vadiki@vadiki-pc:
$ xrandr —newmode «1280x720_60.00» 74.48 1280 1336 1472 1664 720 721 724 746 -HSync +Vsync
X Error of failed request: BadName (named color or font does not exist)
Major opcode of failed request: 140 (RANDR)
Minor opcode of failed request: 16 (RRCreateMode)
Serial number of failed request: 35
Current serial number in output stream: 35
vadiki@vadiki-pc:
$ arandr
bash: arandr: команда не найдена
vadiki@vadiki-pc:
$ randr | grep disconnected
bash: randr: команда не найдена
Возьми и напиши адекватную инструкцию.
Или ты попутал и решил что это сайт на котором ты подписался на платные инструкции высочайшего качества, которые просто гарантировано должны у тебя работать?
Данную инструкцию я написал сам, после того как сам собрал всю необходимую информацию из разрозненных источников. Если в ней что-то не работает — причина может быть в том, что:
а) Я писал её 3 года назад и с тех пор вышло уже 2 новых дистрибутива Debian
б) В ней закрались опечатки (например, в указанной тобой команде «randr | grep disconnected» действительно в начале нет буквы «x»)
в) У тебя кривые руки
Кроме того:
> X Error of failed request: BadName
по этой ошибке сразу же гуглится причина проблемы. Намекну — она не в данной инструкции.
> vadiki@vadiki-pc:
$ arandr
А где ты в моей инструкции увидел arandr?
Сам надёргал откуда-то команд — сам себе злобный буратино.
Вывод: перестань быть паразитом и начни что-то делать самостоятельно. Хотя-бы в гугл вбивать фразу ошибки. Если же это слишком сложно — можно для начала быть вежливее, может быть тебе кто и подскажет в чём проблема.
вот до этой команды всё было без ошибок
x11vnc -rfbport 25900 -clip 1920х1080+1920+0 -forever
а она выводит вот такую ошибку, и соответственно bVNC на устройстве не подключается
X11 MIT Shared Memory Attach failed:
Is your DISPLAY=:0 on a remote machine?
Suggestion, use: x11vnc -display :0 … for local display :0
caught X11 error:
10/07/2021 21:20:47 deleted 120 tile_row polling images.
X Error of failed request: BadAccess (attempt to access private resource denied)
Major opcode of failed request: 130 (MIT-SHM)
Minor opcode of failed request: 1 (X_ShmAttach)
Serial number of failed request: 56
Current serial number in output stream: 178
может есть у кого мысли в чём дело?
Запускаешь x11vnc от имени простого пользователя? Не от рута? Не через sudo?
сорян. всё заработало, просто нужно было последнюю команду запускать от юзера а не от рута
X11 MIT Shared Memory Attach failed:
Is your DISPLAY=:0 on a remote machine?
Эта фраза означает «не смог подключиться к X11, неужто DISPLAY=:0 на удалённом ПК?»
Обычно ты не можешь от имени одного пользователя подключиться к сессии X-сервера, запущеной другим пользователем. В том числе от рута.
Можно сделать это с параметром -auth /…путь…к…файлу…авторизации…X-сервера, но этот файл авторизации обычно не так просто найти и в твоём случае по сути не нужно.
Источник