261

И снова о втором мониторе из планшета…

В заголовке название моей статьи опубликованной на хабре.


Оказавшись обладателем большого планшета с нерабочим сенсором(старшенький сына постарался 😏) долго думал, куда приспособить. Гуглил, гуглил и нагуглил раз, два, Хакер №227,  а так же много других рецептов с участием spacedesk, iDispla и некоторых других. Вот только незадача - у меня Linux. Погуглив еще я нашел несколько рецептов и путем несложного шаманства получил приемлемый результат.

И снова о втором мониторе из планшета… Гаджеты, Монитор, Linux, Длиннопост, Habr

А теперь мой способ.


Вам потребуется:

Linux с установленными:

x11vnc (всякие tigervnc и прочие я откровенно недолюбливаю)

adb из комплекта android-tools

Планшет/смарт с включенным режимом отладки и установленными:

AndroidNVC (у меня именно он, т.к. нет рекламы)

Какой нибудь блокировщик гашения экрана(без рекламы не нашел)

Любой автозагрузчик(запускать VNC и блокировщик) — необязательно(об этом ниже).


Итак, стартуем.

1. Получаем Modeline для xorg.conf

$ cvt 1024 768 25 # Можно и gtf, но он не всегда дает корректный modeline.

2. Редактируем xorg.conf

Section "ServerLayout"

Identifier "Xorg Configured"

Screen 0 "Monitor" 0 0

Screen 2 "Screen2" rightof "Screen0" # "Пустышка для VNC"

Option "Xinerama" "1"

EndSection

#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

# здесь все настройки оборудования, коли таковые есть

#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

#Dummy видеокарта

Section "Device"

Identifier "Device2"

Driver "dummy"

VideoRam 8000

EndSection


#Dummy монитор

Section "Monitor"

Identifier "Monitor2"

Modeline "1024x768@25" 23.77 1024 1056 1144 1176 768 785 789 807 # см. п. 1

EndSection


#Dummy экран

Section "Screen"

Identifier "Screen2"

Device "Device2"

Monitor "Monitor2"

DefaultDepth 24

SubSection "Display"

#разрешение плашета

Modes "1024x768"

Virtual 1024 748

EndSubSection

EndSection


Перезапускаем Х-сы и проверяем через arandr. Настраиваем расположение и ориентацию.Должно быть примерно так:

И снова о втором мониторе из планшета… Гаджеты, Монитор, Linux, Длиннопост, Habr

Сохраняем в файл — он нам пригодится.


3. Создаем файл для автозагрузки в WM/DE (у меня planshet.sh)


x11vnc -rfbport 5900 -display :0 -dontdisconnect -noxfixes -xdamage -shared -forever -clip 1024x768+1600+0 -scale 1024x768 -bg -cursor X -o /home/$USER/x11vnc.log -repeat

xrandr --addmode VIRTUAL1 1024x768 # необязательно

xrandr --output VIRTUAL1 --mode 1024x768 # необязательно

xrandr --output VIRTUAL2 --off --output HDMI1 --off --output VIRTUAL1 --mode 1024x768 --pos 1602x0 --rotate normal --output DP1 --off --output VGA1 --mode 1600x900 --pos 0x0 --rotate normal #вот эта строка заимствована из сохраненного файла arandr


Проверим:


$ xrandr |grep VIRTUAL1

VIRTUAL1 connected 1024x768+1600+0 (normal left inverted right x axis y axis) 0mm x 0mm


Так как в IceWM каталога автостарта нет, но есть файл ~/.icewm/startup(который должен быть исполняемым), добавим в него следующее:


sh -c /path/to/planshet.sh


4. Отключим гашение мониторов:


xset s off

xset s noblank

xset -dpms


А теперь самое интересное! Как получить координаты «тапов» для устройства без «метода проб и ошибок» истязая клавиатуру в консоли?!


Ради такого дела наваял я программулю. Если запускать ее из консоли, то получим искомое — вывод координат тапов.

И снова о втором мониторе из планшета… Гаджеты, Монитор, Linux, Длиннопост, Habr

6. Перепишем все это в planshet.sh


#!/bin/bash

x11vnc -rfbport 5900 -display :0 -dontdisconnect -noxfixes -xdamage -shared -forever -clip 1024x768+1600+0 -scale 1024x768 -bg -cursor X -o /home/$USER/x11vnc.log -repeat

xrandr --addmode VIRTUAL1 1024x768 # необязательно

xrandr --output VIRTUAL1 --mode 1024x768 # необязательно

xrandr --output VIRTUAL2 --off --output HDMI1 --off --output VIRTUAL1 --mode 1024x768 --pos 1602x0 --rotate normal --output DP1 --off --output VGA1 --mode 1600x900 --pos 0x0 --rotate normal #вот эта строка заимствована из сохраненного файла arandr

xset s off

xset s noblank

xset -dpms

adb tcpip 5555

adb connect 192.168.0.14:5555

sudo adb devices

adb shell input tap 1000 20 # тапаем по "квадратикам" в правом верхнем углу (не знаю, как нызавется) - скрин 3

adb shell input tap 392 138 # тапаем по AndroidVNC

adb shell input tap 20 65 # запускаем VNC предварительно прописав адрес и порт


И сделаем


chmod +x /path/to/planshet.sh


Вот, собственно, и все. Перезагружаем Х-сервер и получаем мультискрин.

У меня на «маленьком» крутится conky.

Скрин двойного экрана прилагается.

И снова о втором мониторе из планшета… Гаджеты, Монитор, Linux, Длиннопост, Habr
А еще я на него кидаю datasheet'ы, когда что-то моделирую.


Оригинал здесь.

P.S: Если кто знает, как вставлять сюда, на Пикабу, оформленный код, буду весьма признателен подсказке.

GNU/Linux

1.2K пост15.6K подписчика

Правила сообщества

Все дистрибутивы хороши.

Будьте людьми.