Как вы используете планшет Android в качестве второго дисплея?
Я заметил людей, использующих продукт для Windows и Mac под названием iDisplay, который позволяет вам использовать ваш Android или iPad в качестве дополнительного дисплея. Это кажется отличной идеей, и то, что можно сделать в Ubuntu. К сожалению, я понятия не имею, с чего начать.
Как вы можете воссоздать эту настройку в Ubuntu?
15 ответов
Получите клиент VNC для Android, запустите новый сеанс сервера VNC на своем компьютере (не просто делитесь текущим дисплеем - используйте vnc4server, а не x11vnc), подключитесь к нему из клиента VNC Android и (умный бит) поделитесь ПК клавиатура и мышь между двумя сеансами с помощью синергии.
Все необходимое программное обеспечение для этого доступно в стандартных репозиториях для Ubuntu, и на рынке доступно несколько бесплатных VNC-клиентов для Android.
Вы не сможете перетаскивать окна через дисплеи, используя этот метод. Для этого, я думаю, вам нужно использовать Xdmx для связи двух сессий. Это намного сложнее и, вероятно, приведет к потере 3D-ускорения.
Также имейте в виду, что synergy и vnc не используют шифрование по умолчанию, поэтому вам нужно туннелировать соединения, если вы не находитесь в доверенной сети.
Не могли заставить другие ответы работать, кроме этого, что связано без нареканий.
Это позволяет использовать Android в качестве второго монитора, совместно использовать мышь, перетаскивать окна между планшетом и компьютером.
Вот пошаговое руководство, запрошенное в комментариях.
А. Учебное пособие
1. Создайте новый виртуальный монитор
Разрешение моего планшета 1280х1024. (Вы можете изменить 1280
а также 1024
везде в командах, если ваш планшет в другом разрешении. Вам также может понадобиться изменить LVDS1
если имя монитора по умолчанию другое).
Запустите в терминале:
- $
gtf 1280 1024 60
,
В выводе есть строка, аналогичная Modeline "1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync
, Скопируйте все после слова Modeline
(исключить его) в следующую команду.
xrandr --newmode "1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync
xrandr --addmode VIRTUAL1 1280x1024_60.00
xrandr --output VIRTUAL1 --mode 1280x1024_60.00 --left-of LVDS1
2. Запустите VNC
x11vnc -clip 1280x1024+0+0
3. Подключите с помощью Android (LAN (Wi-Fi) или USB (кабель))
Найдите IP вашего компьютера, используя
ifconfig
(при подключении из локальной сети).Загрузите приложение 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
ТЛ; др: xrandr --fb
а также x11vnc --clip
вместе сделайте убийственный комбо.
В теме, связанной с узнаваемостью, есть очень интересная идея, я не уверен, имел ли он в виду это, потому что я не смог найти автора, которого он указал, а также потому, что я следил за сообщением на форуме, я опубликую это отдельно, а не как редактирование.:
Во-первых, давайте предположим, что основной компьютер имеет разрешение экрана 1280x800, а дополнительный компьютер, на который вы хотите расширить рабочий стол до VNC, имеет разрешение экрана 1280x1024, и вы хотите, чтобы расширенный экран находился справа от основного экрана. Виртуальный экран должен быть
1280x800 + 1280x1024 = 2560x1024
, (растяните его горизонтально и сделайте вертикальное разрешение больше)xrandr --fb 2560x1024
,Теперь, когда экран больше, чем ваш основной монитор, вы должны убедиться, что нет панорамирования или любой другой нежелательной "функции", а также что координаты верхнего левого угла вашего основного монитора равны 0x0.
x11vnc -clip 1280x1024+1281+0
плюс добавить любые другие варианты x11vnc по вкусу:)
Это должно быть так.
- устанавливать
vnc4server
а такжеx2x
, Затем установите
.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).
- Чтобы запустить VNC-сервер, используйте
vnc4server -geometry 800x480
команда. Конечно, вместо 800x480 вы должны установить разрешение вашего планшета. - запуск
x2x -east -to :1
, Эта команда говорит, что ваш компьютер ведет себя так, как будто дисплей:1 был справа от экрана (используйте-west
вариант, если вы хотите, чтобы он был слева). Вы не сможете перемещать приложения с одного дисплея на другой, но вы можете использовать одну мышь и одну клавиатуру для управления ими обоими. - Подключитесь к дисплею, созданному с
vnc4server
с вашего планшета (номер порта 5900 + номер дисплея (например, для дисплея:1 номер порта будет 5901) (номер дисплея отображается наvnc4server
выходной)). - Для выхода из
x2x
, НажмитеCtrl-C
, Кроме того, вы можете запустить его в фоновом режиме (x2x -east -to :1 &
). Тогда вам сначала нужно будет переместить его на передний план (fg
) или убить егоkill $!
(будьте осторожны, это убивает последний процесс, запущенный в фоновом режиме). - Чтобы удалить созданный дисплей, позвоните
vnc4server -kill :1
где вместо:1
Вы можете установить номер вашего нового дисплея.
Это в принципе возможно при использовании 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
Просто хотел добавить, что если вы хотите улучшить соединение между вашим устройством Android и компьютером, вы можете использовать USB:
Убедитесь, что вы включили отладку по USB ( https://developer.android.com/studio/debug/dev-options)
Затем установите adb через
sudo apt-get install android-tools-adb
Затем, если ваш VNC-сервер работает на вашем компьютере через порт 5900, используйте adb с:
adb обратный tcp:5900 tcp:5900
Таким образом, порт 5900 вашего компьютера также будет доступен на вашем устройстве Android через
localhost:5900
поэтому настройте свой клиент Android VNC для подключения к
localhost:5900
вместо того
your-computer-IP-addres:5900
Я сделал простой 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
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
,так далее. Итак, я ленивый парень и сделал это с помощью:
- Установка пакета:
sudo apt-get install x11vnc
Откройте какой-нибудь терминал и поставьте
xwininfo | awk '/Window.id/{print $4}'
и нажмите в окне, которым вы хотите поделиться. Результат будет примерно таким:$ xwininfo | awk '/Window.id/{print $4}' 0x4402f34
Теперь вы можете начать свой
x11vnc
сессия:$ x11vnc -viewonly -nopw -avahi -id 0x4402f34 >/dev/null 2>&1 &
Измените размер окна (0x4402f34), чтобы получить максимально возможное изображение.
Запомните связанный порт вашего сеанса: 5900 -> :0
, 5901 -:1
, 5902 -> :2
...
Кроме того, отлично работает с приложениями X11: Firefox, OpenOffice и т. Д.
Я использую фиктивный драйвер 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
Использовать https://github.com/mrenrich84/vnc_virtual_display_linker
Инструмент настраивает второй виртуальный монитор для соединения с VNC, как описано во многих предыдущих ответах. Он даже поддерживает подключения устройств Android с помощью USB-кабеля.
Поскольку ни одно из вышеперечисленных решений не помогло мне в Ubuntu, я поделюсь сценарием и действиями, которые использую.
- Приобретите «Адаптер безголового дисплея»; Пакет-пустышка Xorg мне не помог. Возможно, из-за NVIDIA, и через 3 часа не было четкого решения. Итак, я приобрел в Интернете одно из этих фиктивных устройств HDMI. Найдите «фиктивный HDMI».
Установите приложение VNC на Android; Я использую приложение «bVNC Free», которое работает хорошо и просто.
Возьмите кабели; Если на обоих устройствах есть порты Type-C, приобретите кабель для подключения портов.
Включить режим разработчика на устройстве Android;
Установите необходимые пакеты x11 и adb на устройство Ubuntu;
sudo apt update
sudo apt install android-tools-adb x11-xserver-utils x11vnc
Настройте приложение VNC на Android; Использовать
127.0.0.1
для настроек подключения VNC IP и порт5901
. Все остальное по умолчанию.Получите отображаемое имя фиктивного HDMI, используя
xrandr
; Один дисплей должен быть основным, а другой — фиктивным. У меня был «HDMI-A-0»;
xrandr | grep ' connected'
- Для начала запустите скрипт ниже; Его необходимо запустить на терминале. Его можно сохранить в исполняемом файле
.sh
файл, чтобы облегчить запуск каждый раз.
#!/bin/bash
#Set screen resolution and display name
resh=1920;
resv=1080;
dummy="HDMI-A-0";
#Define mode and mode resolutions
mode=$(cvt $resh $resv | grep "Modeline" | xargs | sed 's/Modeline //' | sed 's/\.00//');
moderes=$(echo $mode | awk '{print $1;}');
#Reset and kill all existing processes
adb kill-server
xrandr --output $dummy --off
xrandr --delmode $dummy $moderes
xrandr --rmmode $moderes
killall -9 x11vnc
#Start adb, set xrandr and start x11vnc
adb reverse tcp:5901 tcp:5901 &
sleep 5
adb shell monkey -p com.iiordanov.freebVNC -c android.intent.category.LAUNCHER 1 &
sleep 5
xrandr --newmode $mode
xrandr --addmode $dummy $moderes
xrandr --output $dummy --mode $moderes
x11vnc -bg -clip "${resh}x${resv}+0+0" -rfbport 5901 2>/dev/null 1>&2
#Notify and exit
echo "VNC ready; Open VNC app to use. This window closes in 10 seconds.";
notify-send "VNC ready";
sleep 10
exit;
- Когда все будет готово, откройте приложение VNC и откройте сохраненное соединение. Он должен показать второй дисплей. Используя диспетчер дисплея Ubuntu, положение второго дисплея можно немного изменить. Больше возможностей для экспериментов.
Для тех, кто все еще интересуется этой темой: клип 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
Эти инструкции предназначены для создания "дополнительного" экрана для вашей машины 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 --version
в /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
вам может понадобиться выполнить:cd /usr/local/bin" and "ln -s /bin/xkbcomp
, затем попробуйте Xdmx снова.Ctrl+Alt+F1 через F7 должен работать в Xdmx для переключения на другие консоли /xsessions, но по какой-то причине это не работает, я просто выполняю команду
sudo chvt X
(где X - номер консоли / xsession), чтобы переключиться на мой основной дисплей. Также, когда вы переключаетесь обратно на Xdmx, вы можете столкнуться с некоторыми проблемами при рисовании в любых открытых окнах, я просто нажимаю на панели задач, чтобы скрыть / показать окно снова, вызывая перерисовку.
У меня было много проблем с другими методами, перечисленными здесь. Хотелось бы, чтобы у меня было лучшее решение, но мое медленное и простое решение - хорошая отправная точка.
Для сервера 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
При таком подходе второй экран довольно медленный. Тем не менее, многие другие варианты, которые я пробовал, зашли в тупик, и этот работал вообще без конфигурации.
Спасибо за уроки, ребята, я поделюсь с вами тем, что сработало для меня в 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-сервер / перезагрузите / выньте вилку питания, что угодно подходит вам больше:).
Запустите x11vnc, выполнив
x11vnc -rfbauth ~/.vnc/passwd -clip 1024x550+1680+0
Здесь разрешением должна быть ширина вашего планшета х высота планшета + ширина основного дисплея + 0
Подключитесь к своему ПК с помощью клиента androidVNC, обязательно включите опцию localmouse. Так и должно быть, теперь почувствуй странность запуска linux на Android:)