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

63

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

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

Марк Б
источник
2
Подобный вопрос в настоящее время обсуждается на форумах: используйте VNC в качестве второго монитора
--ndrük
1
Тот же вопрос о
суперпользователе
1
Хорошо, решения, представленные здесь, являются сетевыми. Но есть ли шанс достичь этого, просто подделав монитор через usb, чтобы получить тот же опыт, что и монитор, как это делает Duet ?
Августин Ридингер
Таким образом, Duet может (по сути) эмулировать чип DisplayLink в программном обеспечении - я не знаю, но это мое предположение. Я бы даже не попробовал. То, что я бы попробовал (и это не сложно), - это USB-соединение: трос (или обратный трос) вашего планшета и сети.
ЧХ

Ответы:

28

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

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

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

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

Алистер Бакстон
источник
9
можете добавить пример, пожалуйста
rkmax
19
было бы полезно иметь пошаговый пример, которому мы можем следовать
OganM
2
Как это сделало бы планшет вторым экраном - как в большем пространстве экрана?
NoBugs
У меня были проблемы с vncserver и Gnome 3. Каждый раз, когда я пытался запустить vncserver, экран становился черным. В конце концов я воспользовался thinvncserver (также в репозиториях Ubuntu), и это сработало с первой попытки без какой-либо настройки.
Третий
Это больше похоже на KVM-коммутатор или дистанционное управление, чем на второй дисплей. Да, он дает вам другой набор входных данных, но вывод одинаков на обоих устройствах - вы даже не можете переключить планшет на другой виртуальный рабочий стол, кроме основного экрана, при включении одного переключателя на обоих. Это не отвечает на вопрос. Вопрос об использовании мобильных устройств для дополнительного пространства вывода, а не о вводе вообще.
cprn
17

ТЛ; Доктор: xrandr --fbи x11vnc --clipвместе сделать убийственную комбо.

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

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

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

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

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

СНХ
источник
2
Кажется, это гораздо более простой способ сделать это, чем трюк с Синергией, хорошо! Мне любопытно, как дополнительное виртуальное пространство будет взаимодействовать с моим оконным менеджером. Дадим этому шанс через некоторое время и доложим.
Ибрагим
2
Поражение вырвано из челюстей победы. Указатель мыши не может покинуть основной экран. :(
Гринго Суаве
1
Кажется интересным У меня действительно есть двойной экран, но, к сожалению, команда xrandr --fb 2560x1024, похоже, не имеет никакого эффекта. Это означает, что у меня не может быть экрана большего размера, чем мой основной размер монитора ... :(
Августин Ридингер,
1
Я читал дальше об этом . Получил X Error of failed request: BadMatch (invalid parameter attributes) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 18 (RRAddOutputMode) Serial number of failed request: 29 Current serial number in output stream: 30 ошибку. Я предполагаю, что мой ноутбук не поддерживает более высокое разрешение, чем родное 1600*900. Это означает, что это решение не может работать. Вместо этого мне придется найти решение с двойным экраном.
Августин Ридингер
3
Я наконец заставил это работать благодаря этому посту , запустив: sudo xrandr --fb 2732x768 --output LVDS1 --panning 2732x768+0+0/2732x768+0+0(мне не хватало --panningопции)
Августин Ридингер
16

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

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

Вот пошаговое руководство, запрошенное в комментариях.

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

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

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

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

  1. $ gtf 1280 1024 60.

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

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

  2. xrandr --addmode VIRTUAL1 1280x1024_60.00

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

2. Запустите VNC

  1. x11vnc -clip 1280x1024+0+0

3. Подключите с помощью Android (LAN (Wi-Fi) или USB (кабель))

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

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

Извещения

  • Кредиты: kjans , содержание отредактировано.
  • ВНИМАНИЕ : данные не зашифрованы! (Относится к использованию Wi-Fi и без локальной сети)
  • ВНИМАНИЕ : Любая сеть, к которой вы подключены, которая может достигнуть порта 5900, может подключаться к вашему монитору! (Не проблема, если вы используете USB и ограничивает -listen <IP_ADDR>возможность добавления интерфейса x11vnc(где <IP_ADDR>находится адрес компьютера в сети, к которому вы хотите предоставить эксклюзивный доступ))
  • Выполнение любого из 1 - 4 шагов дважды может привести к ошибкам.
  • После успешного использования, 5. шаг должен быть повторен для другого соединения.

Б. Сценарий

Учебник реализован в виде скрипта (измените 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
Elijas
источник
@ Prometheus, x11vnc -clip 1280x1024+0+0можно заменить на x11vnc -clip xinerama1. Кроме того, --left-of LVDS1это не является строго необходимым, если вы в последний раз собираетесь использовать Monitorsприложение настроек, чтобы расположить дополнительный монитор в любом месте.
LeoRochael
6
xrandr: cannot find output "VIRTUAL1"был возвращен, когда я наберу номер 3. Есть идеи?
Дат tutbrus
3
xrandr: cannot find output "VIRTUAL1"вернулся изxrandr --addmode VIRTUAL1 1280x800_60.00
Tooniis
Это работает, за исключением того, что у вас должен быть неиспользуемый выход, способный на целевой режим видео, чтобы это работало. VIRTUAL1кажется заполнителем для такого вывода, а не чем-то присутствующим в типичной системе.
Руслан
1
@cprn Да, вы можете поделиться курсором мыши и перетаскивать окна. Это как если бы у вас был подключен второй монитор
Elijas
13
  1. Установите vnc4serverи x2x.
  2. Затем настройте .vnc/xstartupфайл конфигурации. Моя выглядит так

    #!/bin/sh
    # Uncomment the following two lines for normal desktop:
    unset SESSION_MANAGER
    unset DBUS_SESSION_BUS_ADDRESS
    # exec /etc/X11/xinit/xinitrc
    
    [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
    [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
    xsetroot -solid grey
    #vncconfig -iconic &
    #x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
    #x-window-manager &
    exec gnome-session
    

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

  3. Чтобы запустить сервер vnc, используйте vnc4server -geometry 800x480команду. Конечно, вместо 800x480 вы должны установить разрешение вашего планшета.
  4. Launch x2x -east -to :1. Эта команда говорит, что ваш компьютер работает так, как если бы дисплей: 1 был справа от экрана (используйте -westопцию, если вы хотите, чтобы он был слева). Вы не сможете перемещать приложения с одного дисплея на другой, но вы можете использовать одну мышь и одну клавиатуру для управления ими обоими.
  5. Подключитесь к дисплею, созданному на vnc4serverвашем планшете (номер порта 5900 + номер дисплея (например, для дисплея: 1 номер порта будет 5901) (номер дисплея отображается в vnc4serverвыходных данных).
  6. Для выхода x2xнажмите Ctrl-C. Кроме того, вы можете запустить его в фоновом режиме ( x2x -east -to :1 &). Затем вам сначала нужно переместить его на передний план ( fg) или убить его kill $!(будьте осторожны, это убивает последний процесс, запущенный в фоновом режиме).
  7. Чтобы удалить созданный дисплей, позвоните vnc4server -kill :1, где вместо :1вас можно установить номер вашего нового дисплея.
passick
источник
1
Спасибо за x2x ... Почему никто не упоминает об этом во всем Интернете ??? Спасло меня большое время. Синергия требует CyanogenMod или аналог на вашем планшете. Также никто не упоминает об этом.
Стефанос Каланцис
1
Я уже знаю x2x, найти этот пост с помощью поиска x2x Android на Google ... Но +1 для .vnc/xstartup, особенно для unset DBUS_SESSION_BUS_ADDRESS!! Небольшой, но богатый и очень полезный пост, спасибо!
Ф. Хаури
7

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

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

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

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

3: запустите два vncservers, по одному для каждого экрана, затем соедините их с xdmx и посмотрите на каждую часть с vncviewer на соответствующем компьютере. - Это было ближе всего к работе у меня, к сожалению, ввод был испорчен. это было также довольно медленно в истинном цвете по Wi-Fi. Я использовал этот скрипт для запуска 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

Феликс
источник
3

Я сделал простой 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
Бумсик Ким
источник
1
У вас есть имя для скрипта / приложения или альтернативной ссылки, которую вы можете опубликовать, чтобы избежать гниения ссылок? Здесь мы обычно стараемся быть максимально автономными, чтобы не полагаться на то, чтобы другие сайты оставались в рабочем состоянии, особенно если на этих сайтах содержится большая часть информации, которая будет иметь отношение к ответу, когда эта информация фактически не помещается в ответ. ,
Сбергерон
Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если связанная страница изменится. - Из Обзора
anonymous2
2
@sbergeron я вижу. Я включаю оригинальный код здесь.
Бумсик Ким
1
@ anonymous2 Ты прав. Я включил код Bash здесь.
Бумсик Ким
Ах, намного лучше. Я думаю, что это должно быть в состоянии остаться вокруг так.
anonymous2
2

Я использую фиктивный драйвер xorg и x11vnc -clip. Точка мыши не застряла на краю.

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

На /etc/X11/xorg.confвтором экране есть драйвер для фиктивного драйвера:

Раздел «Устройство»
        Идентификатор «Настроенное видеоустройство»
    Водитель "Radeon" # ИЗМЕНИТЬ ЭТО
EndSection

Раздел "Монитор"
        Идентификатор «Настроенный монитор»
EndSection

Раздел "Экран"
        Идентификатор «Экран по умолчанию»
        Монитор "Настроенный монитор"
        Устройство «Настроенное видеоустройство»
EndSection


## Xdummy: ##
Раздел «Устройство»
  Идентификатор "Видеокард0"
  Водитель "пустышка"
  #VideoRam 4096000
  VideoRam 256000
EndSection

## Xdummy: ##
Раздел "Монитор"
  Идентификатор "Монитор0"
# HorizSync 10.0 - 300.0
# VertRefresh 10.0 - 200.0
# DisplaySize 4335 1084
EndSection

## Xdummy: ##
Раздел "Экран"
  Идентификатор "Screen0"
  Устройство "Видеокард0"
  Монитор "Монитор0"
EndSection



Раздел "ServerLayout"
  Идентификатор "dummy_layout"
  Экран 0 «Экран по умолчанию»
  Экран 1 "screen0" справа от "Экран по умолчанию"
    Вариант "Xinerama" "1"
EndSection

Затем войдите в X сессию и запустите:

x11vnc -clip 1024x768+1280+0
мираж
источник
Есть ли способ сделать это без xorg.conf? Если я создаю один на моем компьютере, тогда моя графика полностью испорчена.
daboross
Xinerama все еще поддерживается? Как насчет Xrandr?
Гринго Суаве
1

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

Я сделал эти шаги в Mageia3 32Bit (не пробовал 64bit), но должен быть похожим и для других дистрибутивов (например, 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);

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

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

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

открыть /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);

открыть /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

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

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 и подключиться к нему - вам может потребоваться отключить или добавить исключение для брандмауэра для порта 5900, чтобы вы могли подключиться к нему. Следует также помнить, что некоторые клиенты VNC не отображают положение удаленного курсора. Я подтверждаю, что Mocha VNC для iOS прекрасно работает, если вы отключите опцию «локальная мышь».

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

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

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

Я использую этот bash-скрипт для запуска всего процесса (также убивает 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: No such file or directory, возможно, вам нужно выполнить execute:, а cd /usr/local/bin" and "ln -s /bin/xkbcompзатем попробуйте снова Xdmx.

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

LinuxNewb
источник
0

Спасибо за уроки, ребята, я поделюсь с вами тем, что сработало для меня в Ubuntu 14.04.

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

Получите x11vnc для вашего компьютера с Ubuntu, запустив

sudo apt-get install x11vnc

Я должен был использовать метод Xorg Dummy Driver. Вот как выглядит мой файл /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 server / Reboot / Pull power plug, что угодно подходит вам больше :).

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

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

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

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

Матье Гренье
источник
0

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

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

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

Финальные команды:

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

На этом этапе вы сможете открыть второй экран в программе VNC, подключившись к YOUR_IP_ADDRESS:1. Чтобы запустить программу на экране VNC, откройте терминал, установите DISPLAYи запустите команду. Например, чтобы открыть xtermна VNC «экран», запустите:

export DISPLAY=:1
xterm

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

thirdender
источник
0

Для тех, кто все еще интересуется этой темой: клип 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

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 и т. Д.

Антонио Фейтоса
источник
0

Использовать vnc_virtual_display_linker

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

Фалько Менге
источник