Як ви використовуєте планшет Android як другий дисплей?


63

Я помітив, що люди, які використовують продукт для Windows та Mac під назвою iDisplay, дозволяють використовувати ваш Android або iPad як вторинний дисплей. Це здається чудовою ідеєю, і щось, що можна було б зробити на Ubuntu. На жаль, я поняття не маю, як почати.

Як ви могли заново створити цю установку на Ubuntu?


2
Подібне питання зараз обговорюється на форумах: Використовуйте VNC як другий монітор
ændrük


1
Добре, рішення, представлені тут, є мережевими. Але чи є шанс досягти цього, просто підробивши монітор через usb, щоб отримати такий же досвід, як і монітор, як Duet ?
Августин Ріддінгер

Тож Duet, можливо, (по суті) імітує чіп DisplayLink в програмному забезпеченні - я не знаю, але це моя здогадка. Я б навіть не намагався. Я б спробував (і це не важко) - це USB-мережа: тетер (або зворотний тетер) планшетного ПК та мережі.
chx

Відповіді:


28

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

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

За допомогою цього методу ви не зможете перетягнути вікна по екранах. З цього приводу я думаю, що вам потрібно буде використовувати Xdmx для зв'язку двох сеансів. Це набагато складніше і, ймовірно, призведе до втрати 3D-прискорення.

Також пам’ятайте, що synergy та vnc не використовують шифрування за замовчуванням, тому вам потрібно тунелювати з'єднання, якщо ви не користуєтеся надійною мережею.


9
можна додати приклад, будь ласка
rkmax

18
було б корисно мати покроковий приклад, який ми можемо наслідувати
OganM

2
Як це зробить планшет другим екраном - як у більшому просторі екрану?
NoBugs

У мене виникли проблеми з vncserver та Gnome 3. Кожен раз, коли я намагався запустити vncserver, екран стане чорним. Я в кінцевому підсумку використовував жорсткий синхронівер (також у репортах Ubuntu), і він спробував першу спробу абсолютно без конфігурації.
тридендер

Це скоріше KVM-комутатор або рішення дистанційного керування, ніж другий дисплей. Так, це дає ще один набір вводу, але вихід є однаковим на обох пристроях - ви навіть не можете переключити планшет на інший віртуальний робочий стіл, ніж ваш головний екран, увімкнувши один перемикач обох. Це не відповідає на запитання. Питання полягає у використанні мобільних пристроїв для додаткового вихідного простору, а не про введення.
cprn

17

тл; д-р: xrandr --fbі x11vnc --clipразом зробіть комбо-вбивцю.

Нитка, пов’язана з prepoznaktium, має дійсно цікаву ідею, не впевнений, чи мав він це на увазі, тому що я не міг знайти автора, якого він вказав, а також тому, що я пішов на пост форуму, я опублікую це окремо, а не як редагування :

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

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

  3. x11vnc -clip 1280x1024+1281+0 плюс додати будь-які інші варіанти x11vnc за смаком :)

Це має бути.


2
Це здається більш легким способом зробити це, ніж трюк Synergy, приємно! Мені цікаво, як додатковий віртуальний простір буде взаємодіяти з моїм менеджером плиткових вікон. За короткий час дам це зйомку і звіту.
Ібрагім

2
Поразка вирвана з щелеп перемоги. Вказівник миші не може залишати основний екран. :(
Gringo Suave

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. Створіть новий віртуальний монітор

Роздільна здатність мого планшета - 1280x1024. (Ви можете змінювати команди 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, може підключитися до монітора! (Не проблема, якщо використовувати -listen <IP_ADDR>опцію додавання USB та обмежувального інтерфейсу до 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

@ Прометей, x11vnc -clip 1280x1024+0+0можна замінити на x11vnc -clip xinerama1. Крім того, --left-of LVDS1це не обов'язково, якщо ви використовуєте Monitorsдодаток налаштувань, щоб розмістити додатковий монітор там, де вам потрібно.
LeoRochael

6
xrandr: cannot find output "VIRTUAL1"було повернуто, коли я набрав номер 3. Будь-які ідеї?
dat tutbrus

3
xrandr: cannot find output "VIRTUAL1"повернувся зxrandr --addmode VIRTUAL1 1280x800_60.00
Tooniis

Це працює, за винятком випадків, коли ви повинні мати невикористаний вихід, здатний цільовий режим відео для цього. VIRTUAL1здається, є заповнювачем такого виходу, а не чимось наявним у типовій системі.
Руслан

1
@cprn Так, ви можете ділитися курсором миші та перетягувати вікна. Це як би у вас підключений другий монітор
Ілляш

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-backback (я не знаю, як зробити запуск gnome 3 в vnc).

  3. Щоб запустити сервер vnc, використовуйте vnc4server -geometry 800x480команду. Звичайно, замість 800x480 вам потрібно встановити роздільну здатність планшета.
  4. Запуск 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вас можна встановити номер нового дисплея.

1
Дякую за x2x ... Чому ніхто не згадує його у всьому Інтернеті ??? Врятувало мені великий час. Синергія вимагає ціаногенного або подібного на вашому планшеті. Також про це ніхто не згадує.
Стефанос Каланціс

1
Я вже знаю x2x, знайдіть цю публікацію, шукаючи андроїд x2x на 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: запустіть два vncserver, по одному для кожного екрана, потім з'єднайте їх з xdmx та перегляньте кожну частину за допомогою vncviewer на відповідній машині. - Це найближче до мене працювало, на жаль, вхід був зіпсований. він також був досить повільним у справжньому кольорі через 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


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
У вас є ім'я сценарію / програми або будь-яке альтернативне посилання, яке ви можете опублікувати, щоб уникнути гниття посилань? Тут ми, як правило, намагаємося бути максимально автономними, щоб не покладатися на інші сайти, що залишаються, особливо якщо ці сайти містять основну частину інформації, яка була б важливою для відповіді, де ця інформація насправді не вкладається у відповідь. .
sbergeron

Хоча це посилання може відповісти на питання, краще включити сюди суттєві частини відповіді та надати посилання для довідки. Відповіді лише на посилання можуть стати недійсними, якщо пов’язана сторінка зміниться. - З огляду
анонімний2

2
@sbergeron Я бачу. Я включаю сюди оригінальний код.
Бумсик Кім

1
@ anonymous2 Ви маєте рацію. Я включив сюди баш-код.
Бумсик Кім

Ах, набагато краще. Я думаю, що це повинно бути в змозі приклеїтись так.
анонімний2

2

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

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

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

Розділ "Пристрій"
        Ідентифікатор "Налаштований відеопристрій"
    Драйвер "radeon" # ЗМІНЕ ЦЕ
EndSection

Розділ "Монітор"
        Ідентифікатор "Налаштований монітор"
EndSection

Розділ "Екран"
        Ідентифікатор "Екран за замовчуванням"
        Монітор "Налаштований монітор"
        Пристрій "Налаштований відеопристрій"
EndSection


## Xdummy: ##
Розділ "Пристрій"
  Ідентифікатор "Videocard0"
  Водій "манекен"
  #VideoRam 4096000
  VideoRam 256000
EndSection

## Xdummy: ##
Розділ "Монітор"
  Ідентифікатор "Monitor0"
# HorizSync 10,0 - 300,0
# VertRefresh 10,0 - 200,0
# DisplaySize 4335 1084
EndSection

## Xdummy: ##
Розділ "Екран"
  Ідентифікатор "Екран0"
  Пристрій "Відеокарта0"
  Монітор "Монітор0"
EndSection



Розділ "Розклад сервера"
  Ідентифікатор "dummy_layout"
  Екран 0 "Екран за замовчуванням"
  Екран 1 "screen0" rightof "Екран за замовчуванням"
    Варіант "Xinerama" "1"
EndSection

Потім увійдіть у X сеанс та запустіть:

x11vnc -clip 1024x768+1280+0

Будь-який спосіб зробити це без xorg.conf? Якщо я створюю її на своєму комп’ютері, то моя графіка повністю заплутається.
даборосс

Чи підтримується Xinerama? Як щодо xrandr?
Gringo Suave

1

Ці інструкції полягають у створенні "додаткового" екрана для вашої машини Linux за допомогою планшетного ПК або будь-якого комп'ютера через клієнт VNC.

Я зробив ці кроки в Mageia3 32Bit (не пробував 64-бітний), але повинен бути подібний і для інших дистрибутивів (тобто 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 відрізняється, використовуйте цей розділ, щоб знайти правильний рядок: Оригінальний розділ - рядок, щоб змінити позначку *

    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);

відкрити /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)

Після внесення вищезазначених змін повторно виконайте (in /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 та підключитися до 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 для переходу на інші консолі / xsesions, але чомусь це не працює, я це просто виконувати sudo chvt X(де X - номер консолі / xsession), щоб перейти на головний дисплей. Крім того, коли ви перейдете на Xdmx, у вас можуть виникнути проблеми з малюванням на будь-яких відкритих вікнах, я просто натискаю на панель завдань, щоб приховати / показати вікно ще раз, примушуючи перемальовувати.


0

Дякую хлопцям підручника, я поділюсь тим, що працювало на мене на Ubuntu 14.04

Завантажте тут AndroidVNC для свого планшета

Отримайте x11vnc для свого ПК Ubuntu, запустівши

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 -конфігуруйте, щоб отримати автоматичну конфігурацію системи та додати макетні розділи (речі між зірочками) у свій файл. Роздільна здатність для фіктивного екрана в xorg.conf повинна бути основною шириною монітора + шириною роздільної здатності планшетного ПК, у моєму випадку 1680 + 1024 = 2704 зберегти висоту основного монітора, 1050 в моєму випадку. Відновіть сервер X / Перезавантажте / витягніть шнур живлення, як би там не було. вам більше підходить :).

Запустити x11vnc, виконуючи

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

Тут роздільною здатністю має бути ширина вашого планшета x висота планшета + основна ширина дисплея + 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

Використовуючи такий підхід, другий екран досить повільний. Тим не менш, багато інших варіантів, які я спробував, зіткнулися з тупиків, і цей працював зовсім без конфігурації.


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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.