Как вы используете планшет Android в качестве второго дисплея?

Я заметил людей, использующих продукт для Windows и Mac под названием iDisplay , который позволяет использовать ваш Android или iPad в качестве дополнительного дисплея. Это кажется отличной идеей, и то, что можно сделать в Ubuntu. К сожалению, я понятия не имею, с чего начать.

Как вы можете воссоздать эту настройку в Ubuntu?

86
задан 1 March 2011 в 20:58

14 ответов

Получите VNC клиент для Android, запустите новую сессию сервера VNC на вашем компьютере (не просто разделяйте текущий дисплей - используйте vnc4server, а не x11vnc), подключитесь к нему с Android VNC клиента, и (умный бит) разделяйте клавиатуру и мышь PC между этими двумя сессиями, используя синергию.

Все необходимое для этого программное обеспечение доступно в стандартном репозитории для стороны Ubuntu, а на рынке доступно несколько бесплатных VNC-клиентов для Android.

С помощью этого метода вы не сможете перетаскивать окна по дисплеям. Для этого, я думаю, вам нужно будет использовать Xdmx, чтобы связать эти два сеанса. Это гораздо сложнее и, скорее всего, приведет к потере 3D ускорения.

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

33
ответ дан 1 March 2011 в 20:58

tl; dr: xrandr --fb и x11vnc --clip вместе составляют убийственную комбинацию.

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

  1. Во-первых, давайте предположим, что основная машина имеет разрешение экрана 1280x800 а вторичный компьютер, на котором вы хотите расширить свой рабочий стол до VNC, имеет разрешение экрана 1280x1024, и вы хотите, чтобы расширенный экран располагался справа от основного экрана. Виртуальный экран должен быть 1280x800 + 1280x1024 = 2560x1024 . (растяните его по горизонтали и сделайте вертикальное разрешение больше двух) Итак, запустите xrandr --fb 2560x1024 .

  2. Теперь, когда экран больше, чем ваш основной монитор, вы должны убедиться, что он не активировано панорамирование или какая-либо другая нежелательная "функция", а также что координаты верхнего левого угла вашего основного монитора равны 0x0.

  3. x11vnc -clip 1280x1024 + 1281 + 0 плюс добавьте любые другие параметры x11vnc по вкусу :)

Так и должно быть.

18
ответ дан 1 March 2011 в 20:58
  1. Установите vnc4server и x2x .
  2. Затем настройте файл конфигурации .vnc / xstartup . Мой выглядит так

     #! / Bin / sh
     # Раскомментируйте следующие две строки для обычного рабочего стола:
    отключить SESSION_MANAGER
    сбросить DBUS_SESSION_BUS_ADDRESS
     # exec / etc / X11 / xinit / xinitrc
    
     [-x / etc / vnc / xstartup] && exec / etc / vnc / xstartup
     [-r $ HOME / .Xresources] && xrdb $ HOME / .Xresources
    xsetroot - сплошной серый
     #vncconfig -iconic &
     # x-terminal-emulator -geometry 80x24 + 10 + 10 -ls -title "$ VNCDESKTOP Desktop" &
     # x-window-manager &
    exec gnome-session
     

    Он запускает резервный рабочий стол gnome (я не знаю, как запустить gnome 3 в vnc).

  3. Чтобы запустить vnc-сервер, используйте команду vnc4server -geometry 800x480 . Конечно, вместо 800х480 нужно выставить разрешение вашего планшета.
  4. Запустите x2x -east -to: 1 . Эта команда заставляет ваш компьютер действовать так, как если бы display: 1 находился справа от экрана (используйте параметр -west , если вы хотите, чтобы он находился слева). Вы не сможете перемещать приложения с одного дисплея на другой, но вы можете использовать одну мышь и одну клавиатуру для управления ими обоими.
  5. Подключитесь к дисплею, созданному с помощью vnc4server , со своего планшета ( номер порта - 5900 + номер дисплея (например, для дисплея: 1 номер порта будет 5901) (номер дисплея показан в выводе vnc4server )).
  6. Для выхода из x2x ,нажмите Ctrl-C . Кроме того, вы можете запустить его в фоновом режиме ( x2x -east -to: 1 & ). Затем вам сначала нужно переместить его на передний план ( fg ) или убить его с помощью kill $! (будьте осторожны, он убивает последний процесс, запущенный в фоновом режиме).
  7. Чтобы удалите созданный дисплей, вызовите vnc4server -kill: 1 , где вместо : 1 вы можете установить номер вашего нового дисплея.
15
ответ дан 1 March 2011 в 20:58

Это в принципе возможно при использовании xdmx (распределенной многоголовочной X), что позволяет создать один рабочий стол, используя два X-сервера, запущенных на разных машинах.

три сценария в принципе возможны, но ни один из них не так бесшовен, как iDisplay, так как все они требуют перезапуска X-сессии, по крайней мере,. Я не смог ни то, ни другое работать идеально, но я запустил Ubuntu 10.10 и не могу обновиться по разным причинам. Три из них:

1: запустить X-сервер на Android (есть два доступных сейчас в магазине приложений) и использовать xdmx в сочетании с дисплеем на рабочем столе или ноутбуке. - не сработало, потому что xdmx разбился, когда указатель переместился на планшетную часть рабочего стола.

2: запустите второй X-сервер с бэкэндом vnc на вашем компьютере, используйте xdmx, чтобы объединить его в один рабочий стол с экраном вашего компьютера, затем посмотрите на виртуальную часть с vnc viewer на планшете - не сработало на меня, потому что xdmx требует, чтобы все x-серверы имели одинаковую цветную визуализацию, чего нельзя сказать о vncserver и реальном дисплее, и я не смог убедить vncserver измениться.

3: запустите два vnc-сервера, по одному для каждого экрана, затем соедините их с xdmx и посмотрите на каждую часть с помощью vncviewer на соответствующей машине. - Это было близко к тому, чтобы работать на меня, к сожалению, inpout был испорчен. он также был довольно медленным в true-color через wifi. Я использовал этот скрипт для запуска xdmx и vncs:

#!/bin/sh 
vncserver :2 -geometry 1024x768 -depth 24 && \
vncserver :3 -geometry 1920x1120 -depth 24 && \
startx -- \
/usr/bin/X11/Xdmx :1 \
-input :2 \
-display :2 \
-display :3 \
-ignorebadfontpaths \
-norender \
-noglxproxy \
+xinerama \
-nomulticursor
vncserver -kill :2 
vncserver -kill :3

YMMV

8
ответ дан 1 March 2011 в 20:58

Я написал простой сценарий bash, чтобы сделать планшет вторым дисплеем. Скопируйте ipad_monitor.sh (не волнуйтесь. Он также работает с Android) в моем сообщении в блоге .

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

Изменить: Я включил сюда исходный ipad_monitor.sh . запустите эту команду, например:

  • ./ ipad_monitor.sh --right или ./ ipad_monitor.sh --left
  • ./ ipad_monitor.sh --right --portrait
  • ./ ipad_monitor.sh --right --portrait --hidpi

Основная идея этого сценария такая же, как и у других, запускается xrandr и x11vnc , но я включил параметры, например, с какой стороны вы хотите прикрепить экран.

#!/bin/sh
# ----------------------------------------------------------------------------
# "THE BEER-WARE LICENSE" (Revision 42):
# <k.bumsik@gmail.com> wrote this file. As long as you retain this notice you
# can do whatever you want with this stuff. If we meet some day, and you think
# this stuff is worth it, you can buy me a beer in return. - Bumsik Kim
# ----------------------------------------------------------------------------

# Configuration
WIDTH=1024  # 1368 for iPad Pro
HEIGHT=768  # 1024 for iPad Pro
MODE_NAME="mode_ipad"       # Set whatever name you like, you may need to change
                            # this when you change resolution, or just reboot.
DIS_NAME="VIRTUAL1"         # Don't change it unless you know what it is
RANDR_POS="--right-of"      # Default position setting for xrandr command

# Parse arguments
while [ "$#" -gt 0 ]; do
  case $1 in
    -l|--left)      RANDR_POS="--left-of"  ;;
    -r|--right)     RANDR_POS="--right-of" ;;
    -a|--above)     RANDR_POS="--above"    ;;
    -b|--below)     RANDR_POS="--below"    ;;
    -p|--portrait)  TMP=$WIDTH; WIDTH=$HEIGHT; HEIGHT=$TMP
                    MODE_NAME="$MODE_NAME""_port"  ;;
    -h|--hidpi)     WIDTH=$(($WIDTH * 2)); HEIGHT=$(($HEIGHT * 2))
                    MODE_NAME="$MODE_NAME""_hidpi" ;;
    *) echo "'$1' cannot be a monitor position"; exit 1 ;;
  esac
  shift
done

# Detect primary display
PRIMARY_DISPLAY=$(xrandr | perl -ne 'print "$1" if /(\w*)\s*connected\s*primary/')

# Add display mode
RANDR_MODE=$(cvt "$WIDTH" "$HEIGHT" 60 | sed '2s/^.*Modeline\s*\".*\"//;2q;d')
xrandr --addmode $DIS_NAME $MODE_NAME 2>/dev/null
# If the mode doesn't exist then make mode and retry
if ! [ $? -eq 0 ]; then
  xrandr --newmode $MODE_NAME $RANDR_MODE
  xrandr --addmode $DIS_NAME $MODE_NAME
fi

# Show display first
xrandr --output $DIS_NAME --mode $MODE_NAME
# Then move display
sleep 5 # A short delay is needed. Otherwise sometimes the below command is ignored.
xrandr --output $DIS_NAME $RANDR_POS $PRIMARY_DISPLAY

# Cleanup before exit
function finish {
  xrandr --output $DIS_NAME --off 
  xrandr --delmode $DIS_NAME $MODE_NAME
  echo "Second monitor disabled."
}

trap finish EXIT

# Get the display's position
CLIP_POS=$(xrandr | perl -ne 'print "$1" if /'$DIS_NAME'\s*connected\s*(\d*x\d*\+\d*\+\d*)/')
echo $CLIP_POS
# Share screen
x11vnc -multiptr -repeat -clip $CLIP_POS
# Possible alternative is x0vncserver but it does not show the mouse cursor.
#   x0vncserver -display :0 -geometry $DIS_NAME -overlaymode -passwordfile ~/.vnc/passwd
if ! [ $? -eq 0 ]; then
  echo x11vnc failed, did you \'apt-get install x11vnc\'?
fi
5
ответ дан 1 March 2011 в 20:58

Мен xorg муляж драйверин жана x11vnc -клипти колдоном. Чычкан чекити четине тыгылып калган эмес.

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

Экинчи экранда муляж драйвер үчүн /etc/X11/xorg.conf бар:

Section "Device"
        Identifier      "Configured Video Device"
    Driver "radeon"         #CHANGE THIS
EndSection

Section "Monitor"
        Identifier      "Configured Monitor"
EndSection

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


##Xdummy:##
Section "Device"
  Identifier "Videocard0"
  Driver "dummy"
  #VideoRam 4096000
  VideoRam 256000
EndSection

##Xdummy:##
Section "Monitor"
  Identifier "Monitor0"
#  HorizSync   10.0 - 300.0
#  VertRefresh 10.0 - 200.0
#  DisplaySize 4335 1084
EndSection

##Xdummy:##
Section "Screen"
  Identifier "Screen0"
  Device "Videocard0"
  Monitor "Monitor0"
EndSection



Section "ServerLayout"
  Identifier   "dummy_layout"
  Screen       0 "Default Screen"
  Screen       1 "screen0" rightof "Default Screen"
    Option         "Xinerama" "1"
EndSection

Андан кийин X сессиясына кирип, чуркап өтүңүз:

x11vnc -clip 1024x768+1280+0
]
2
ответ дан 1 March 2011 в 20:58

Вот как использовать Android в качестве второго монитора, совместно использовать мышь, перетаскивать окна между экранами планшета и компьютера .

Можно найти исходный источник для руководства здесь .

A. Учебное пособие

Шаг 1. Создайте новый виртуальный монитор

Разрешение моего планшета - 1280x1024. (Вы можете изменить 1280 и 1024 везде в командах, если ваш планшет имеет другое разрешение. Вам также может потребоваться изменить LVDS1 , если имя монитора по умолчанию другое).

Выполнить в терминале:

  1. $ gtf 1280 1024 60 .

    На выходе есть строка, аналогичная Строка режима "1280x1024_60.00" 108,88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync + Vsync . Скопируйте все после слова Modeline (исключите его) в следующую команду.

  2. xrandr --newmode "1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync + Vsync

    ( Обратите внимание: на следующем шаге вам также может потребоваться изменить VIRTUAL1 тем, что вы найдете в выводе xrandr в качестве вывода с новым режимом)

  3. xrandr --addmode VIRTUAL1 1280x1024_60.00

  4. xrandr --output VIRTUAL1 --mode 1280x1024_60.00 --left-of LVDS1

Шаг 2. Включите удаленный рабочий стол для виртуального монитора

Запустите VNC:

  1. x11vnc -clip 1280x1024 + 0 + 0

Шаг 3. Подключитесь к удаленному рабочему столу

  1. Подключите планшет к той же локальной сети, что и компьютер. Либо подключившись к тому же Wi-Fi, либо создав точку доступа с одним устройством, а затем подключившись к нему другим (USB-модем).

  2. Найдите IP-адрес своего компьютера с помощью ifconfig (при подключении из локальной сети) .

  3. Загрузите приложение VNC на планшет, а затем подключитесь к компьютеру, используя IP-адрес компьютера (и выбрав порт 5900 ) в приложении.

Уведомления

  • Кредиты: kjans , содержание отредактировано.
  • ПРЕДУПРЕЖДЕНИЕ : данные не зашифрованы! (Имеет значение для использования Wi-Fi и не LAN)
  • ПРЕДУПРЕЖДЕНИЕ : устройства из всех сетей, к которым вы подключены, могут достичь порта 5900 и, следовательно, подключиться к вашему монитору! Находясь за маршрутизатором, обычно он будет доступен только в вашей локальной сети (если вы используете USB-соединение, вы можете полностью заблокировать локальную сеть с помощью параметра -listen для x11vnc (где - сетевой интерфейс USB)).
  • Выполнение любого из 1–4 шагов дважды может привести к ошибкам.
  • После успешного использования 5. шаг необходимо повторить для другого соединения.

B. Сценарий

Учебное пособие реализовано в виде сценария (измените IP-адрес для использования с USB-кабелем ИЛИ удалите его и раскомментируйте строку для использования с Wi-Fi).

#!/bin/bash
W=1280
H=800
O=VIRTUAL1
if [ "$1" == "create" ]; then
  gtf $W $H 60 | sed '3q;d' | sed 's/Modeline//g' | xargs xrandr --newmode
  # sed: get third line, delete 'Modeline', get first word, remove first and last characters
  gtf $W $H 60 | sed '3q;d' | sed 's/Modeline//g' | awk '{print $1;}' | sed 's/^.\(.*\).$/\1/' | xargs xrandr --addmode $O
  gtf $W $H 60 | sed '3q;d' | sed 's/Modeline//g' | awk '{print $1;}' | sed 's/^.\(.*\).$/\1/' | xargs xrandr --output $O --left-of LVDS1 --mode
elif [ "$1" == "on" ]; then
  x11vnc -listen 192.168.42.149 -clip ${W}x${H}+0+0
  # For use in Wi-Fi LAN.
  #x11vnc -clip ${W}x${H}+0+0 #**WARNING** Unencrypted stream. VNC accessible without password through port 5900 in all internet interfaces.
else
  echo "missing argument: [create | on]"
fi
35
ответ дан 1 March 2011 в 20:58

Для тех, кто все еще интересуется этой темой: клипы xrandr и x11vnc действительно работают; чтобы мышь могла перемещаться туда, вам нужно использовать аргумент панорамирования для установки области отслеживания мыши:

xrandr --fb 2560x1024 --output LVDS1 --panning 1280x1024+0+0/2560x1024+0+0

Затем при запуске xvnc используйте:

x11vnc -clip 1280x1024+1281+0 -nocursorshape -nocursorpos

Это останавливает VNC от попытки использовать собственное отслеживание курсора и закрашивает курсор как часть изображения на экране.

Я сделал заметки здесь http://mikescodeoddities.blogspot.ae/2015/04/android-tablet-as-second-ubuntu-screen.html

0
ответ дан 1 March 2011 в 20:58

У меня было много проблем с другими перечисленными здесь методами. Хотел бы я найти лучшее решение, но мое медленное и простое решение является хорошей отправной точкой.

Для сервера VNC я попробовал пакет vncserver , но экран стал черным, и я бы перезапустить gdm , чтобы все снова заработало. Я переключился на tightvncserver , и в первый раз он заработал без какой-либо конфигурации.

Чтобы разделить мышь / клавиатуру между экранами, я использовал x2vnc . Это также можно использовать с win2vnc , чтобы совместно использовать мышь / клавиатуру с ПК с Windows рядом с вашим ПК с Linux.

Заключительные команды:

sudo apt-get install tightvncserver
tightvncserver
sudo apt-get install x2vnc
x2vnc -east localhost:1

На этом этапе вы сможете открыть второй экран в программе VNC, подключившись к ВАШ_IP_ADDRESS: 1 . Чтобы запустить программу на экране VNC, откройте терминал, установите ДИСПЛЕЙ , а затем выполните команду. Например, чтобы открыть xterm на «экране» VNC, выполните:

export DISPLAY=:1
xterm

При таком подходе второй экран работает довольно медленно. Тем не менее, многие другие варианты, которые я пробовал, зашли в тупик, и этот работал вообще без конфигурации.

0
ответ дан 1 March 2011 в 20:58

Спасибо за обучающие, я расскажу, что у меня сработало на Ubuntu 14.04

Получите AndroidVNC здесь для своего планшета

Получите x11vnc для вашего Ubuntu pc, запустив

sudo apt-get install x11vnc

, мне пришлось использовать метод фиктивного драйвера Xorg. Вот как выглядит мой файл /etc/X11/xorg.conf:

Section "ServerLayout"
Identifier     "X.org Configured"
Screen      0  "Screen0" 0 0
**Screen        1  "Screen1" rightof "Screen0"**
InputDevice    "Mouse0" "CorePointer"
InputDevice    "Keyboard0" "CoreKeyboard"
**Option         "Xinerama" "1"**
EndSection

Section "Files"
ModulePath   "/usr/lib/xorg/modules"
FontPath     "/usr/share/fonts/X11/misc"
FontPath     "/usr/share/fonts/X11/cyrillic"
FontPath     "/usr/share/fonts/X11/100dpi/:unscaled"
FontPath     "/usr/share/fonts/X11/75dpi/:unscaled"
FontPath     "/usr/share/fonts/X11/Type1"
FontPath     "/usr/share/fonts/X11/100dpi"
FontPath     "/usr/share/fonts/X11/75dpi"
FontPath     "built-ins"
EndSection

Section "Module"
Load  "glx"
EndSection

Section "InputDevice"
Identifier  "Keyboard0"
Driver      "kbd"
EndSection

Section "InputDevice"
Identifier  "Mouse0"
Driver      "mouse"
Option      "Protocol" "auto"
Option      "Device" "/dev/input/mice"
Option      "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
Identifier   "Monitor0"
VendorName   "Monitor Vendor"
ModelName    "Monitor Model"
DisplaySize 1680 1050
EndSection

**Section "Monitor"
Identifier "Monitor1"
VendorName "Dummy"
ModelName "Dummy"
DisplaySize 2704 1050
EndSection**

Section "Device"
    ### Available Driver options are:-
    ### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
    ### <string>: "String", <freq>: "<f> Hz/kHz/MHz",
    ### <percent>: "<f>%"
    ### [arg]: arg optional
    #Option     "NoAccel"               # [<bool>]
    #Option     "SWcursor"              # [<bool>]
    #Option     "EnablePageFlip"        # [<bool>]
    #Option     "ColorTiling"           # [<bool>]
    #Option     "ColorTiling2D"         # [<bool>]
    #Option     "RenderAccel"           # [<bool>]
    #Option     "SubPixelOrder"         # [<str>]
    #Option     "AccelMethod"           # <str>
    #Option     "EXAVSync"              # [<bool>]
    #Option     "EXAPixmaps"            # [<bool>]
    #Option     "ZaphodHeads"           # <str>
    #Option     "EnablePageFlip"        # [<bool>]
    #Option     "SwapbuffersWait"       # [<bool>]
Identifier  "Card0"
Driver      "radeon"
BusID       "PCI:1:0:0"
EndSection

**Section "Device"
  Identifier "Dummy"
  Driver "dummy"
EndSection**

Section "Screen"
Identifier "Screen0"
Device     "Card0"
Monitor    "Monitor0"
SubSection "Display"
    Viewport   0 0
    Depth     1
EndSubSection
SubSection "Display"
    Viewport   0 0
    Depth     4
EndSubSection
SubSection "Display"
    Viewport   0 0
    Depth     8
EndSubSection
SubSection "Display"
    Viewport   0 0
    Depth     15
EndSubSection
SubSection "Display"
    Viewport   0 0
    Depth     16
EndSubSection
SubSection "Display"
    Viewport   0 0
    Depth     24
EndSubSection
EndSection

**Section "Screen"
Identifier "Screen1"
Device "Dummy"
Monitor "Monitor1
EndSection**

Вам, вероятно, не понадобится все, что есть, просто запустите X -configure, чтобы получить автоконфигурацию вашей системы, и добавьте фиктивные разделы (то, что между звездочками) в ваш файл . Разрешение для фиктивного экрана в xorg.conf должно быть шириной вашего основного монитора + шириной разрешения вашего планшета, в моем случае 1680 + 1024 = 2704, сохраните высоту основного монитора, в моем случае 1050. Перезапустите X-сервер / перезагрузите / вытащите вилку питания, что угодно Вам больше подходит :).

Запустите x11vnc, выполнив

x11vnc -rfbauth ~/.vnc/passwd -clip 1024x550+1680+0

Здесь разрешение должно быть шириной вашего планшета x высотой планшета + Ширина основного дисплея + 0

Подключитесь к вашему ПК с помощью клиента androidVNC, обязательно включите localmouse вариант. Так и должно быть, теперь почувствуйте странность запуска Linux на android :)

0
ответ дан 1 March 2011 в 20:58

Эти инструкции предназначены для создания "дополнительного" экрана для вашей машины linux с помощью планшета или любого компьютера через VNC-клиент.

Я сделал эти шаги в Mageia3 32Bit (не пробовал 64bit), но должен быть аналогичен и для других дистрибутивов (i. e. Ubuntu).

Убедитесь, что у вас есть все необходимые пакеты со следующей командой терминала:

sudo apt-get install gcc autoconf automake x11-font-util libtool libxi-devel ibopenssl-devel libxfont1-devel libpam-devel x11-util-macros x11-xtrans-devel x11-server-xvfb x11-server-xdmx x11-server-devel x11-server-source

После того, как вы получите все вышеперечисленные пакеты, выпустите следующие команды:

cd /usr/share/x11-server-sources/
./autogen.sh
./configure --with-fontrootdir=/usr/share/fonts --with-xkb-path=/usr/share/X11/xkb --with-xkb-output=/usr/share/X11/xkb/compiled --enable-dmx
make

Если вы не получили никаких ошибок, поставьте патч Xdmx (проще говоря, он был "сломан" некоторое время):

откройте /usr/share/x11-server-sources/hw/dmx/input/dmxevents.c, и измените строку 730: измените это:

POINTER_ABSOLUTE | POINTER_SCREEN, &mask);

на это:

POINTER_RELATIVE | POINTER_DESKTOP, &mask);

IF строка 730 используется по-другому, чтобы найти правильную строку: Оригинальный раздел - строка для изменения, помеченная *

    case ButtonPress:
    case ButtonRelease:
        detail = dmxGetButtonMapping(dmxLocal, detail);
        valuator_mask_zero(&mask);
        QueuePointerEvents(p, type, detail,
 *                         POINTER_RELATIVE | POINTER_DESKTOP, &mask);
        return;

Проверьте вашу версию Xdmx, запустив ./configure --version в /usr/share/x11-server-source/, для Xdmx 1. 13 и старше вы также должны внести эти изменения (для 1.14 и старше вы можете пропустить шаг "сделать" ниже):

откройте /usr/share/x11-server-sources/dix/getevents.c, строка 1395: изменить это:

if (flags & POINTER_SCREEN ) {    /* valuators are in screen coords */

К этому:

if (flags & ( POINTER_SCREEN | POINTER_DESKTOP) ) {    /* valuators are in screen coords */

(Первоначальный участок - строка для изменения, отмеченная *)

    /* valuators are in driver-native format (rel or abs) */

    if (flags & POINTER_ABSOLUTE) {
*       if (flags & POINTER_SCREEN ) {    /* valuators are in screen coords */
            sx = valuator_mask_get(&mask, 0);
            sy = valuator_mask_get(&mask, 1);

open /usr/share/x11-server-sources/Xext/xtest.c, строка 311: изменить это:

flags = POINTER_ABSOLUTE | POINTER_SCREEN;

на это:

flags = POINTER_ABSOLUTE | POINTER_DESKTOP;

(оригинальный участок - строка для изменения отмечена *)

       case MotionNotify:
            dev = PickPointer(client);
            valuators[0] = ev->u.keyButtonPointer.rootX;
            valuators[1] = ev->u.keyButtonPointer.rootY;
            numValuators = 2;
            firstValuator = 0;
            if (ev->u.u.detail == xFalse)
*               flags = POINTER_ABSOLUTE | POINTER_DESKTOP;
            break;

/usr/share/x11-server-sources/include/input.h, строка 73: Добавьте эту строку после строки, начинающейся с #define POINTER_EMULATED:

#define POINTER_DESKTOP         (1 << 7)

После внесения вышеуказанных изменений повторите (в /usr/share/x11-server-sources/):

make

В /usr/share/x11-server-sources/hw/dmx/ должен быть новый Xdmx-файл. Для удобства мы должны установить его глобально, поэтому я рекомендую переименовать ваш существующий:

sudo mv /bin/Xdmx /bin/Xdmx-old

и скопировать новый вместо него:

cp /usr/share/x11-server-sources/hw/dmx/Xdmx /bin

Теперь вы готовы к первому пробному запуску, следующие команды позволяют вам сохранить основной/существующий дисплей (:0) и открыть новый дисплей с поддержкой мультимониторов. Я использую icewm с этими командами, чтобы сделать его немного легче (я использую KDE на моем основном дисплее :0 и открываю любое приложение с большим мультимонитором в новом мультиголовочном дисплее). Вы можете скриптировать эти команды для простоты использования (это то, что я сделал) -- Любая из этих команд может быть выполнена на консольном и/или терминальном окне любого дисплея, единственное требование - чтобы они выполнялись по порядку.

Эта команда создает новый дисплей в качестве буфера кадров для дисплея VNC :2 (настраивает размер экрана по желанию):

Xvfb :2 +xinerama -screen 0 1024x1280x24 -ac &

Это запускает новый легковесный сеанс X на вашем физическом дисплее в качестве дисплея :1 (есть различные способы сделать это):

startx 'icewm' -- :1

Эта команда запускает мультидисплей между вашим физическим экраном и виртуальным экраном и запускает icewm для оконного менеджера:

Xdmx :3 +xinerama -display :1 -display :2 -norender -noglxproxy -ac & DISPLAY=:3 starticewm

Теперь откройте терминальное окно и запустите сервер vnc (измените пароль по желанию):

x11vnc -display :3 -passwd test -clip xinerama1 -noshm -forever -nowireframe &

Осталось только запустить VNC-клиент и подключиться к VNC -- вам может понадобиться отключить или добавить исключение в ваш брандмауэр к порту 5900, чтобы вы могли подключиться к нему. Другая вещь, которую следует помнить, что некоторые VNC клиенты не отображают положение удаленного курсора, я подтверждаю, что "Mocha VNC" для iOS работает отлично, если вы отключите опцию "локальная мышь".

Наслаждайтесь перетаскиванием окон между вашим основным монитором и вашим новым виртуальным вторым монитором (в то же время, имея возможность использовать планшет для щелчка/типа на вещи на втором мониторе).

Чтобы закрыть Xdmx нажмите Ctrl+Alt+Backspace дважды.

Автоматизация:

Я использую этот бэш-скрипт, чтобы начать весь процесс (также убивает Xvfb на выходе):

Xvfb :2 +xinerama -screen 0 1024x1280x24 -ac &
xinit dual -- :1
ps | grep Xvfb | awk '{print $1}' | xargs kill

Тогда у меня есть пользовательский ~/. xinitrc файл с этим:

#!/bin/sh
#
# ~/.xinitrc
#
# Executed by startx (run your window manager from here)

if [[ $1 == "" ]]
then
  exec startkde 
elif [[ $1 == "xterm" ]]
then
  exec xterm
elif [[ $1 == "dual" ]]
then
  exec Xdmx :3 +xinerama -display :1 -display :2 -norender -noglxproxy -ac & DISPLAY=:3 starticewm & x11vnc -display :3 -passwd test -clip xinerama1 -noshm -forever -nowireframe
else
  exec $1
fi

Устранение неполадок:

  • При запуске Xdmx, если вы получаете ошибку, говорящую sh: /usr/local/bin/xkbcomp: Нет такого файла или каталога, который может понадобиться для выполнения: cd /usr/local/bin" и "ln -s /bin/xkbcomp, затем повторите попытку Xdmx.

  • Ctrl+Alt+F1 через F7 должен работать в Xdmx, чтобы переключиться на другие консоли/сессии, но по каким-то причинам это не работает, я просто выполняю sudo chvt X (где X - это номер консоли/сессии), чтобы переключиться на мой основной дисплей. Также, когда вы переключаетесь обратно на Xdmx, вы можете получить некоторые проблемы с рисованием в любых открытых окнах, я просто нажимаю на панель задач, чтобы спрятать/показать окно снова, заставляя перерисовать.

1
ответ дан 1 March 2011 в 20:58

TL; DR :

    $ sudo apt-get install x11vnc
    $ WINDOW_ID=$(xwininfo | awk '/Window.id/{print $4}') && x11vnc -viewonly -nopw -avahi -id $WINDOW_ID >/dev/null 2>&1 &

Теперь просто щелкните в окне, которым хотите поделиться.


ПОЛНЫЙ :

У меня есть iPad и Chromebook, Я хотел бы использовать их в качестве мониторов, просто чтобы использовать некоторые команды терминала htop , iptstate , nmon и т. Д. Итак, я ленив и сделал это с помощью:

  1. Установка пакета: sudo apt-get install x11vnc
  2. Откройте какой-нибудь терминал и поместите xwininfo | awk '/Window.id/{print $ 4}' и щелкните в окне, которым хотите поделиться. Результат будет примерно таким:

     $ xwininfo |  awk '/Window.id/{print $ 4}'
    0x4402f34
     
  3. Теперь вы можете запустить сеанс x11vnc :

     $ x11vnc -viewonly -nopw -avahi -id 0x4402f34> / dev / null 2> & 1 &
     
  4. Измените размер окна (0x4402f34), чтобы получить наилучшее изображение.

Обратите внимание на связанный порт вашего сеанса : 5900 ->: 0 ], 5901 -: 1 , 5902 ->: 2 ...

Кроме того, отлично работает с приложениями X11: Firefox, OpenOffice и т. Д.

2
ответ дан 1 March 2011 в 20:58

Используйте vnc_virtual_display_linker

Инструмент настраивает второй виртуальный монитор для соединения с VNC, как описано во многих предыдущих ответах. Он даже поддерживает подключения с устройств Android с помощью кабеля USB.

1
ответ дан 1 March 2011 в 20:58

Просто хотел добавить, что если вы хотите улучшить соединение между вашим устройством Android и компьютером, вы можете использовать USB:

Убедитесь, что вы включили отладку по USB ( https: //developer.android.com/studio/debug/dev-options)

Затем установите adb через sudo apt-get install android-tools-adb

Затем, если ваш сервер VNC работает на ваш компьютер на порту 5900, используйте adb с:

adb reverse tcp: 5900 tcp: 5900

Таким образом, порт 5900 вашего компьютера также будет доступен на вашем устройстве Android через localhost: 5900 , поэтому настройте ваш клиент VNC Android для подключения к localhost: 5900 вместо IP-адрес вашего компьютера: 5900

3
ответ дан 5 January 2021 в 23:55

Другие вопросы по тегам:

Похожие вопросы: