Pull to refresh

Планшет в качестве второго экрана под linux

Reading time 5 min
Views 91K


Решил попробовать для расширения рабочего пространства, сенсорного ввода и удаленного управления использовать планшет как дополнительный экран к своему ноутбуку c Linux.
Нашлось 2 способа сделать это. Чем и делюсь.


Все дальнейшие действия выполняются на ноутбуке. Для подключения на планшет надо установить любой VNC клиент.

Первый, самый быстрый

Понадобятся vnc4server и x2x:
sudo apt-get install vnc4server x2x

При первом запуске vnc4server спросит пароль для подключения. После чего запустит X сессию и будет ждать vnc подключения на 5901 порту. Конфигурация сессии задается в файле ~/.vnc/xstartup.

Для управления сессией с компьютера можно использовать x2x:
x2x -to :1 -east

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

Такой способ имеет недостаток: нельзя перетащить окно с одного экрана на другой.

Второй способ

Использовать dummy драйвер в качестве второй видеокарты, объединить их с основной с помошью xinerama и отдать часть рабочего стола через x11vnc.

sudo apt-get install xserver-xorg-video-dummy x11vnc

Придется написать конфигурацию для xorg. Пример конфигурации /etc/X11/xorg.conf
#Основная видеокарта, надо указать нужный драйвер
Section "Device"
   Identifier      "Configured Video Device"
#тут ваш драйвер, можно подсмотреть в /var/log/Xorg.0.log
   Driver "radeon"
EndSection

Section "Monitor"
       Identifier      "Configured Monitor"
EndSection

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

#Dummy видеокарта
Section "Device"
 Identifier "Videocard0"
 Driver "dummy"
 VideoRam 256000
EndSection

Section "Monitor"
 Identifier "Monitor0"
 HorizSync   10.0 - 300.0
 VertRefresh 10.0 - 200.0
 DisplaySize 300 200
 #The following modeline is invalid (calculator overflowed):
 #Modeline "32000x32000@0" -38917.43 32000 32032 -115848 -115816 32000 32775 32826 33601
 Modeline "16384x8192@10" 2101.93 16384 16416 24400 24432 8192 8390 8403 8602
 Modeline "8192x4096@10" 424.46 8192 8224 9832 9864 4096 4195 4202 4301
 Modeline "5120x3200@10" 199.75 5120 5152 5904 5936 3200 3277 3283 3361
 Modeline "3840x2880@10" 133.43 3840 3872 4376 4408 2880 2950 2955 3025
 Modeline "3840x2560@10" 116.93 3840 3872 4312 4344 2560 2622 2627 2689
 Modeline "3840x2048@10" 91.45 3840 3872 4216 4248 2048 2097 2101 2151
 Modeline "2048x2048@10" 49.47 2048 2080 2264 2296 2048 2097 2101 2151
 Modeline "2560x1600@10" 47.12 2560 2592 2768 2800 1600 1639 1642 1681
 Modeline "1920x1200@10" 26.28 1920 1952 2048 2080 1200 1229 1231 1261
 Modeline "1920x1080@10" 23.53 1920 1952 2040 2072 1080 1106 1108 1135
 Modeline "1680x1050@10" 20.08 1680 1712 1784 1816 1050 1075 1077 1103
 Modeline "1600x900@20" 33.92 1600 1632 1760 1792 900 921 924 946
 Modeline "1440x900@20" 30.66 1440 1472 1584 1616 900 921 924 946
 Modeline "1360x768@20" 24.49 1360 1392 1480 1512 768 786 789 807
 #common resolutions for android devices (both orientations):
 Modeline "800x1280@20" 25.89 800 832 928 960 1280 1310 1315 1345
 Modeline "1280x800@20" 24.15 1280 1312 1400 1432 800 819 822 841
 Modeline "720x1280@25" 30.22 720 752 864 896 1280 1309 1315 1345
 Modeline "1280x720@25" 27.41 1280 1312 1416 1448 720 737 740 757
 Modeline "768x1024@25" 24.93 768 800 888 920 1024 1047 1052 1076
 Modeline "1024x768@25" 23.77 1024 1056 1144 1176 768 785 789 807
 Modeline "600x1024@25" 19.90 600 632 704 736 1024 1047 1052 1076
 Modeline "1024x600@25" 18.26 1024 1056 1120 1152 600 614 617 631
 Modeline "536x960@25" 16.74 536 568 624 656 960 982 986 1009
 Modeline "960x536@25" 15.23 960 992 1048 1080 536 548 551 563
 Modeline "600x800@25" 15.17 600 632 688 720 800 818 822 841
 Modeline "800x600@25" 14.50 800 832 880 912 600 614 617 631
 Modeline "480x854@25" 13.34 480 512 560 592 854 873 877 897
 Modeline "848x480@25" 12.09 848 880 920 952 480 491 493 505
 Modeline "480x800@25" 12.43 480 512 552 584 800 818 822 841
 Modeline "800x480@25" 11.46 800 832 872 904 480 491 493 505
 Modeline "320x480@50" 10.73 320 352 392 424 480 490 494 505
 Modeline "480x320@50" 9.79 480 512 544 576 320 327 330 337
 Modeline "240x400@50" 6.96 240 272 296 328 400 408 412 421
 Modeline "400x240@50" 6.17 400 432 448 480 240 245 247 253
 Modeline "240x320@50" 5.47 240 272 288 320 320 327 330 337
 Modeline "320x240@50" 5.10 320 352 368 400 240 245 247 253
 #resolutions for android devices (both orientations)
 #minus the status bar
 #38px status bar (and width rounded up)
 Modeline "800x1242@20" 25.03 800 832 920 952 1242 1271 1275 1305
 Modeline "1280x762@20" 22.93 1280 1312 1392 1424 762 780 783 801
 Modeline "720x1242@25" 29.20 720 752 856 888 1242 1271 1276 1305
 Modeline "1280x682@25" 25.85 1280 1312 1408 1440 682 698 701 717
 Modeline "768x986@25" 23.90 768 800 888 920 986 1009 1013 1036
 Modeline "1024x730@25" 22.50 1024 1056 1136 1168 730 747 750 767
 Modeline "600x986@25" 19.07 600 632 704 736 986 1009 1013 1036
 Modeline "1024x562@25" 17.03 1024 1056 1120 1152 562 575 578 591
 Modeline "536x922@25" 16.01 536 568 624 656 922 943 947 969
 Modeline "960x498@25" 14.09 960 992 1040 1072 498 509 511 523
 Modeline "600x762@25" 14.39 600 632 680 712 762 779 783 801
 Modeline "800x562@25" 13.52 800 832 880 912 562 575 578 591
 Modeline "480x810@25" 12.59 480 512 552 584 810 828 832 851
 Modeline "848x442@25" 11.09 848 880 920 952 442 452 454 465
 Modeline "480x762@25" 11.79 480 512 552 584 762 779 783 801
 Modeline "800x442@25" 10.51 800 832 864 896 442 452 454 465
 #32px status bar (no need for rounding):
 Modeline "320x448@50" 9.93 320 352 384 416 448 457 461 471
 Modeline "480x288@50" 8.75 480 512 544 576 288 294 297 303
 #24px status bar:
 Modeline "240x376@50" 6.49 240 272 296 328 376 384 387 395
 Modeline "400x216@50" 5.50 400 432 448 480 216 220 222 227
 Modeline "240x296@50" 5.02 240 272 288 320 296 302 305 311
 Modeline "320x216@50" 4.55 320 352 368 400 216 220 222 227
EndSection

Section "Screen"
 Identifier "Screen0"
 Device "Videocard0"
 Monitor "Monitor0"
 DefaultDepth 24
 SubSection "Display"
#разрешение плашета
    Virtual 1024 768
 EndSubSection
EndSection

#Задаем схему из 2х экранов: левый основной, правый dummy(планшет)
Section "ServerLayout"
 Identifier   "dummy_layout"
 Screen       0 "Default Screen"
 Screen       1 "screen0" rightof "Default Screen"
 Option         "Xinerama" "1"
EndSection



Все остальное настраивается Xorg автоматически.

Перезагружаем xorg сервер, заходим в сеанс и запускаем:
x11vnc -clip 1024x768+1280+0


Порт по умолчанию 5900.
В данном случае у меня 1280 размер экрана ноутбука по горизонтали, это число является смещением, и 1024x768 — размер экрана планшета.

Данное решение позволяет работать с двумя экранами в одной сессии и перемещать окна между устройствами.

Для подключения я использую vnc клиент androidVNC. На ноутбуке Ubuntu 12.04.

Использованные сайты:
wiki.ubuntu.com/X/Config
www.x.org/archive/X11R6.8.0/doc/xorg.conf.5.html
xpra.org/xorg.conf
Tags:
Hubs:
+103
Comments 48
Comments Comments 48

Articles