Come si usa un tablet Android come secondo display?


63

Ho notato persone che utilizzano un prodotto per Windows e Mac chiamato iDisplay che ti consente di utilizzare il tuo Android o iPad come display secondario. Sembra un'ottima idea e qualcosa che potrebbe essere fatto su Ubuntu. Sfortunatamente, non ho idea di come iniziare.

Come hai potuto ricreare questa configurazione su Ubuntu?


2
Domanda simile attualmente in discussione sui forum: utilizzare VNC come secondo monitor
ændrük

1
Stessa domanda su Super User: usa VNC per creare una seconda schermata
ændrük

1
Ok, le soluzioni qui presentate sono di rete. Ma c'è qualche possibilità per raggiungere questo obiettivo semplicemente falsificando un monitor tramite USB, per avere la stessa esperienza di un monitor proprio come fa Duet ?
Augustin Riedinger,

Quindi Duet potrebbe emulare (essenzialmente) un chip DisplayLink nel software - non lo so, ma questa è la mia ipotesi. Non ci proverei nemmeno. Quello che vorrei provare (e non è difficile) è la rete USB: tether (o reverse tether) il tablet e la rete di distanza.
chx

Risposte:


28

Ottieni un client VNC per Android, avvia una nuova sessione del server VNC sul tuo computer (non solo condividere il display corrente - usa vnc4server non x11vnc), connettiti ad esso dal client VNC Android e (il bit intelligente) condividi il Tastiera e mouse per PC tra le due sessioni usando la sinergia.

Tutto il software necessario per farlo è disponibile nei repository standard per il lato Ubuntu e sul mercato sono disponibili alcuni client VNC gratuiti per Android.

Non sarai in grado di trascinare le finestre sui display usando questo metodo. Per questo penso che dovresti usare Xdmx per unire le due sessioni. Questo è molto più difficile e probabilmente ti farà perdere l'accelerazione 3D.

Inoltre, tenere presente che sinergia e vnc non utilizzano la crittografia per impostazione predefinita, pertanto è necessario eseguire il tunneling delle connessioni se non si è su una rete attendibile.


9
posso aggiungere un esempio per favore
rkmax

19
sarebbe utile avere un esempio passo dopo passo che possiamo seguire
OganM il

2
In che modo questo renderebbe un tablet un secondo schermo, come in più spazio sullo schermo?
NoBugs

Ho avuto problemi con vncserver e Gnome 3. Ogni volta che ho provato ad avviare vncserver lo schermo diventava nero. Ho finito per usare tightvncserver (anche nei repository di Ubuntu) e ha funzionato al primo tentativo senza alcuna configurazione.
terzo

Questo è più simile a uno switch KVM o una soluzione di controllo remoto di un secondo display. Sì, ti offre un altro set di input ma l'output è lo stesso su entrambi i dispositivi: non puoi nemmeno passare il tablet a un desktop virtuale diverso rispetto alla schermata principale, accendendo uno cambia entrambi. Non risponde alla domanda. La domanda è sull'uso di dispositivi mobili per spazio di output aggiuntivo, non sull'input.
cprn,

17

TL; dr: xrandr --fbe x11vnc --clipinsieme facciamo una combo killer.

Il thread collegato da riconoscitium ha un'idea davvero interessante, non sono sicuro che intendesse questo perché non riuscivo a trovare l'autore che ha indicato e anche perché ho seguito il post sul forum lì, lo posterò separatamente e non come una modifica :

  1. Innanzitutto, supponiamo che la macchina principale abbia una risoluzione dello schermo di 1280x800 e che la macchina secondaria su cui vuoi estendere il tuo desktop su VNC abbia una risoluzione dello schermo di 1280x1024 e desideri che lo schermo esteso sia giusto rispetto allo schermo principale. Lo schermo virtuale deve essere 1280x800 + 1280x1024 = 2560x1024. (estendilo orizzontalmente e rendi la risoluzione verticale la più grande delle due) Quindi corri xrandr --fb 2560x1024.

  2. Ora, che lo schermo è più grande del tuo monitor principale, devi assicurarti che non ci siano panning o altre "funzioni" indesiderate attivate e che le coordinate dell'angolo in alto a sinistra del monitor principale siano 0x0.

  3. x11vnc -clip 1280x1024+1281+0 inoltre aggiungi tutte le altre opzioni x11vnc a piacere :)

Questo dovrebbe essere.


2
Questo sembra un modo molto più semplice per farlo rispetto al trucco Synergy, bello! Sono curioso di sapere come lo spazio virtuale aggiuntivo interagirà con il mio gestore di finestre di piastrellatura. Ci proverò tra poco e riferirò.
Ibrahim,

2
La sconfitta strappata dalle fauci della vittoria. Il puntatore del mouse non è autorizzato a lasciare la schermata principale. :(
Gringo Suave,

1
Sembra interessante. In realtà riesco ad avere un doppio schermo lì, ma sfortunatamente, il comando xrandr --fb 2560x1024non sembra avere alcun effetto. Ciò significa che non posso avere uno schermo più grande delle dimensioni del mio monitor principale ... :(
Augustin Riedinger,

1
Ho letto di più su questo . Ho ricevuto un 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 errore La mia ipotesi è che il mio laptop non supporti una risoluzione superiore rispetto a quella nativa 1600*900. Significa che questa soluzione non può funzionare. Dovrò invece trovare una soluzione a doppio schermo.
Augustin Riedinger,

3
Alla fine l'ho fatto funzionare grazie a questo post eseguendo: sudo xrandr --fb 2732x768 --output LVDS1 --panning 2732x768+0+0/2732x768+0+0(Mi mancava l' --panningopzione)
Augustin Riedinger,

16

Non è stato possibile far funzionare le altre risposte, tranne questo , che si è collegato in modo impeccabile.

Permette di utilizzare Android come secondo monitor, condividere il mouse, trascinare le finestre tra tablet e computer.

Ecco un tutorial passo-passo, richiesto dai commenti.

A. Tutorial

1. Creare un nuovo monitor virtuale

La risoluzione del mio tablet è 1280x1024. (È possibile modificare 1280e 1024ovunque nei comandi se il tablet ha una risoluzione diversa. Potrebbe anche essere necessario modificare LVDS1se il nome del monitor predefinito è diverso).

Esegui nel terminale:

  1. $ gtf 1280 1024 60.

C'è una linea nell'output simile a Modeline "1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync. Copia tutto dopo la parola Modeline(escludila) nel comando successivo.

  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. Avviare VNC

  1. x11vnc -clip 1280x1024+0+0

3. Connettiti con Android (LAN (Wi-Fi) o USB (Cavo))

  1. Trova l'IP del tuo computer utilizzando ifconfig(quando ti connetti dalla LAN).

  2. Scarica un'app VNC e connettiti al computer usando il suo IP (e selezionando la porta 5900) nell'app.

Avvisi

  • Crediti: kjan , contenuti modificati.
  • ATTENZIONE : i dati non sono crittografati! (Rilevante per l'utilizzo Wi-Fi e non LAN)
  • ATTENZIONE : Qualsiasi rete a cui sei collegato che può raggiungere la porta 5900 può connettersi al tuo monitor! (Non è un problema se si utilizza l'interfaccia USB AND limitando l'aggiunta -listen <IP_ADDR>dell'opzione x11vnc(dove si <IP_ADDR>trova l'indirizzo del computer nella rete a cui si desidera dare accesso esclusivo))
  • L'esecuzione di uno dei passaggi 1 - 4 due volte può generare errori.
  • Dopo un uso corretto, è necessario ripetere il passaggio 5. per un'altra connessione.

B. Script

Il tutorial è stato implementato come uno script (Cambia l'IP per l'uso con il cavo USB O eliminalo e togli il commento alla linea da usare con il 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

@Prometheus, x11vnc -clip 1280x1024+0+0può essere sostituito con x11vnc -clip xinerama1. Inoltre, --left-of LVDS1non è strettamente necessario se hai intenzione di utilizzare l' Monitorsapp delle impostazioni per posizionare il monitor aggiuntivo dove vuoi.
LeoRochael,

6
xrandr: cannot find output "VIRTUAL1"è stato restituito quando ho digitato il numero 3. Qualche idea?
dat tutbrus,

3
xrandr: cannot find output "VIRTUAL1"tornato daxrandr --addmode VIRTUAL1 1280x800_60.00
Tooniis il

Funziona, tranne per il fatto che è necessario disporre di un output inutilizzato in grado di utilizzare la modalità video di destinazione. VIRTUAL1sembra essere un segnaposto per tale output, non qualcosa di presente in un sistema tipico.
Ruslan,

1
@cprn Sì, puoi condividere il cursore del mouse e trascinare le finestre. È come se avessi un secondo monitor collegato
Elijas,

13
  1. Installa vnc4servere x2x.
  2. Quindi, imposta un .vnc/xstartupfile di configurazione. Il mio assomiglia a questo

    #!/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
    

    Avvia il desktop gnome-fallback (non so come fare il lancio di gnome 3 in vnc).

  3. Per avviare il server vnc, utilizzare il vnc4server -geometry 800x480comando Certo, invece di 800x480 devi impostare la risoluzione del tuo tablet.
  4. Avvia x2x -east -to :1. Quel comando dice che il tuo computer si comporta come se il display: 1 fosse sulla destra dello schermo (usa l' -westopzione se vuoi che sia sulla sinistra). Non sarai in grado di spostare le app da uno schermo all'altro, ma puoi usare un mouse e una tastiera per controllarli entrambi.
  5. Collegarsi al display creato con vnc4serverdal tablet (il numero di porta è 5900 + numero display (ad es. Per display: 1 numero porta sarà 5901) (il numero display viene visualizzato vnc4servernell'uscita)).
  6. Per uscire da x2x, premere Ctrl-C. In alternativa, è possibile avviarlo in background ( x2x -east -to :1 &). Quindi dovrai prima spostarlo in primo piano ( fg) o ucciderlo kill $!( fai attenzione, uccide l'ultimo processo avviato in background).
  7. Per rimuovere il display creato, chiama vnc4server -kill :1, dove invece di :1te puoi impostare il numero del tuo nuovo display.

1
Grazie per x2x ... Perché nessun altro lo menziona su tutto Internet ??? Mi ha salvato alla grande. Synergy richiede cyanogenmod o simile sul tablet. Inoltre nessuno lo menziona.
Stefanos Kalantzis,

1
Lo so già x2x, trova questo post cercando x2x android su google ... Ma +1 per .vnc/xstartup, specialmente per unset DBUS_SESSION_BUS_ADDRESS!! Post piccolo ma ricco e molto utile, grazie!
F. Hauri,

7

Ciò è possibile in linea di principio utilizzando xdmx (distribuito multihead X) che consente di creare un singolo desktop utilizzando due X-server in esecuzione su macchine separate.

tre scenari sono possibili in linea di principio, ma nessuno è fluido come iDisplay, perché richiedono almeno il riavvio della sessione X. Non sono stato in grado di farlo funzionare perfettamente, ma sto eseguendo Ubuntu 10.10 e non posso aggiornarlo per vari motivi. I tre sono:

1: esegui un X-server su Android (ce ne sono due disponibili ora nell'app store) e usa xdmx per combinarlo con lo schermo del tuo desktop o laptop. - non ha funzionato per me perché xdmx si è arrestato in modo anomalo quando il puntatore si è spostato sulla parte tablet del desktop.

2: esegui un secondo X-server con backend vnc sul tuo computer, usa xdmx per combinarlo in un desktop con lo schermo del tuo computer, quindi guarda la parte virtuale con un visualizzatore vnc sul tablet - non ha funzionato per me perché xdmx richiede che tutti gli x-server abbiano gli stessi elementi visivi di colore, il che non è il caso del vncserver e del display reale, e non sono stato in grado di convincere vncserver a cambiare.

3: esegui due vncserver, uno per ogni schermo, quindi collegali con xdmx e guarda ogni parte con un vncviewer sul rispettivo computer. - Questo è stato il più vicino al lavoro per me, sfortunatamente inpout era incasinato. era anche abbastanza lento in true color tramite wifi. Ho usato questo script per avviare xdmx e 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

Ho realizzato un semplice script bash per rendere un tablet un secondo display. Copia ipad_monitor.sh(Non preoccuparti. Funziona anche con Android) nel mio post sul blog .

Ciò che differisce dall'altro post è che puoi impostare la posizione della seconda schermata con argomenti aggiuntivi molto facilmente.

Modifica: ho incluso l'originale ipad_monitor.shqui. eseguire questo comando come:

  • ./ipad_monitor.sh --right o ./ipad_monitor.sh --left
  • ./ipad_monitor.sh --right --portrait
  • ./ipad_monitor.sh --right --portrait --hidpi

L'idea di base di questo script è la stessa di altri, in esecuzione xrandre x11vncma ho incluso opzioni come quale lato si desidera collegare lo schermo.

#!/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
Hai un nome per lo script / l'app o qualsiasi altro link che puoi pubblicare per evitare il marcio del link? Qui generalmente cerchiamo di essere il più autonomi possibile in modo da non fare affidamento su altri siti che restano attivi, soprattutto se tali siti contengono la maggior parte delle informazioni che sarebbero rilevanti per una risposta in cui tali informazioni non sono effettivamente inserite nella risposta .
sbergeron,

Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il collegamento come riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. - Dalla recensione
anonymous2

2
@sbergeron vedo. Includo qui il codice originale.
Bumsik Kim,

1
@ anonymous2 Hai ragione. Ho incluso il codice bash qui.
Bumsik Kim,

Ah, molto meglio. Penso che questo dovrebbe essere in grado di rimanere in questo modo.
anonymous2

2

Uso il driver fittizio xorg e x11vnc -clip. Il punto del mouse non è bloccato sul bordo.

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

C'è il /etc/X11/xorg.confdriver fittizio nella seconda schermata:

Sezione "Dispositivo"
        Identificatore "Dispositivo video configurato"
    Driver "radeon" # CAMBIA QUESTO
EndSection

Sezione "Monitor"
        Identificatore "Monitor configurato"
EndSection

Sezione "Schermo"
        Identificatore "Schermata predefinita"
        Monitor "Monitor configurato"
        Dispositivo "Dispositivo video configurato"
EndSection


## Xdummy: ##
Sezione "Dispositivo"
  Identificatore "Videocard0"
  Driver "fittizio"
  #VideoRam 4096000
  VideoRam 256000
EndSection

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

## Xdummy: ##
Sezione "Schermo"
  Identificatore "Screen0"
  Dispositivo "Videocard0"
  Monitor "Monitor0"
EndSection



Sezione "ServerLayout"
  Identificatore "dummy_layout"
  Schermata 0 "Schermata predefinita"
  Schermata 1 "schermata0" a destra di "Schermata predefinita"
    Opzione "Xinerama" "1"
EndSection

Quindi accedi alla sessione X ed esegui:

x11vnc -clip 1024x768+1280+0

Un modo per farlo senza xorg.conf? Se ne creo uno sul mio computer, la mia grafica viene completamente incasinata.
daboross,

Xinerama è ancora supportato? Che ne dici di xrandr?
Gringo Suave,

1

Queste istruzioni sono per creare una schermata "aggiuntiva" per la tua macchina linux usando un tablet o qualsiasi computer attraverso un client VNC.

Ho fatto questi passaggi in Mageia3 32Bit (non ho provato a 64 bit) ma dovrei essere simile anche per altre distro (cioè Ubuntu).

Assicurati di avere tutti i pacchetti richiesti con il seguente comando terminale:

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

Una volta che hai tutti i pacchetti sopra, emetti questi comandi:

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

Se non si verificano errori, patch Xdmx (in poche parole, è stato "rotto" da un po 'di tempo):

apri /usr/share/x11-server-sources/hw/dmx/input/dmxevents.ce cambia la riga 730: cambia questo:

POINTER_ABSOLUTE | POINTER_SCREEN, &mask);

a questo:

POINTER_RELATIVE | POINTER_DESKTOP, &mask);

Se la riga 730 è diversa utilizzare questa sezione per trovare la riga corretta: Sezione originale - riga da modificare contrassegnata con *

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

Controlla la tua versione di Xdmx eseguendo ./configure --versionin /usr/share/x11-server-source/, per Xdmx 1.13 e più si hanno anche per apportare queste modifiche (per 1.14 e più recenti si può passare al "fare" gradino sotto):

aperto /usr/share/x11-server-sources/dix/getevents.c, linea 1395: cambia questo:

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

A questo:

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

(Sezione originale - riga da modificare contrassegnata con *)

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

aperto /usr/share/x11-server-sources/Xext/xtest.c, linea 311: cambia questo:

flags = POINTER_ABSOLUTE | POINTER_SCREEN;

a questo:

flags = POINTER_ABSOLUTE | POINTER_DESKTOP;

(sezione originale - riga da modificare contrassegnata con *)

       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, riga 73: aggiungere questa riga dopo la riga che inizia con #define POINTER_EMULATED:

#define POINTER_DESKTOP         (1 << 7)

Dopo aver apportato le modifiche sopra riportate, rieseguire (in /usr/share/x11-server-sources/):

make

Dovresti avere un nuovo file Xdmx in /usr/share/x11-server-sources/hw/dmx/. Dobbiamo installarlo a livello globale per facilità, quindi ti consiglio di rinominare quello esistente:

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

e copia quello nuovo al suo posto:

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

Ora sei pronto per fare la tua prima prova, i seguenti comandi ti consentono di mantenere il tuo display principale / esistente ( :0) in esecuzione e aprire un nuovo display con il supporto multi-monitor. Sto usando icewm con questi comandi per renderlo un po 'più leggero (uso KDE sul mio display principale :0e apro qualsiasi applicazione multi-monitor nel nuovo display multi-head). Puoi sicuramente scriptare questi comandi per facilità d'uso (è quello che ho fatto) - Ognuno di questi comandi può essere eseguito su console e / o finestra terminale di qualsiasi display, l'unico requisito è che vengano eseguiti in ordine.

Questo comando crea il tuo nuovo display come frame buffer per il tuo display VNC :2(regola le dimensioni dello schermo come desideri):

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

Questo avvia una nuova sessione X leggera sul tuo display fisico come display :1(ci sono diversi modi per farlo):

startx 'icewm' -- :1

Questo comando avvia la visualizzazione multipla tra lo schermo fisico e lo schermo virtuale e avvia icewm per il gestore di finestre:

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

Ora apri una finestra di terminale e avvia il server vnc (cambia la password come desiderato):

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

L'unica cosa che resta da fare ora è accendere il client VNC e connettersi al VNC: potrebbe essere necessario disabilitare o aggiungere un'eccezione al firewall alla porta 5900 in modo da poter connettersi ad esso. Un'altra cosa da tenere a mente è che alcuni client VNC non visualizzano la posizione del cursore remoto, certifico che "Mocha VNC" per iOS funziona alla grande se si disattiva l'opzione "mouse locale".

Divertiti a trascinare le finestre tra il tuo monitor principale e il tuo nuovo secondo monitor virtuale (mentre puoi anche usare il tablet per fare clic / digitare sulle cose nel secondo monitor).

Per chiudere Xdmx premere Ctrl+ Alt+ Backspacedue volte.

Automazione:

Uso questo script bash per avviare l'intero processo (uccide anche Xvfb all'uscita):

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

Quindi ho un ~/.xinitrcfile personalizzato con questo:

#!/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

Risoluzione dei problemi:

  • Quando si esegue Xdmx se si riceve un errore che dice sh: /usr/local/bin/xkbcomp: No such file or directoryche potrebbe essere necessario eseguire execute cd /usr/local/bin" and "ln -s /bin/xkbcomp:, quindi riprovare Xdmx.

  • Ctrl+ Alt+ F1through F7dovrebbe funzionare in Xdmx per passare ad altre console / xsession ma per qualche motivo non funziona, quello che faccio è semplicemente eseguire sudo chvt X(dove X è un numero console / xsession) per passare al mio display principale. Inoltre, quando torni a Xdmx potresti riscontrare alcuni problemi di disegno su qualsiasi finestra aperta, faccio semplicemente clic sulla barra delle applicazioni per nascondere / mostrare di nuovo la finestra forzando un ridisegno.


0

Grazie per il tutorial ragazzi, condividerò ciò che ha funzionato per me su Ubuntu 14.04

Scarica AndroidVNC qui per il tuo tablet

Ottieni x11vnc per il tuo PC Ubuntu eseguendolo

sudo apt-get install x11vnc

Ho dovuto usare il metodo del driver fittizio Xorg. Ecco come appare il mio file /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**

Probabilmente non avrai bisogno di tutto lì dentro, basta eseguire X -configure per ottenere la configurazione automatica del tuo sistema e aggiungere le sezioni fittizie (cose tra gli asterischi) al tuo file. La risoluzione per lo schermo fittizio in xorg.conf dovrebbe essere la larghezza del monitor principale + la larghezza della risoluzione del tablet, nel mio caso 1680 + 1024 = 2704 mantieni l'altezza del monitor principale, 1050 nel mio caso. Riavvia il server X / Riavvia / Stacca la spina, qualunque cosa ti sta più bene :).

Esegui x11vnc facendo

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

Qui la risoluzione dovrebbe essere la larghezza del tablet x l'altezza del tablet + larghezza del display principale + 0

Connettiti al tuo PC utilizzando il client androidVNC, assicurati di abilitare l'opzione localmouse. Dovrebbe essere così, ora sento la stranezza di avere Linux su Android :)


0

Ho avuto molti problemi con le altre tecniche elencate qui. Vorrei avere una soluzione migliore, ma la mia soluzione lenta e semplice è un buon punto di partenza.

Per il server VNC, ho provato il vncserverpacchetto ma lo schermo sarebbe gdmdiventato nero e avrei dovuto riavviare per far funzionare di nuovo qualsiasi cosa. Sono passato a tightvncservere ha funzionato la prima volta senza configurazione.

Per condividere il mouse / la tastiera tra schermi ho usato x2vnc . Questo potrebbe anche essere usato con win2vnc per condividere mouse / tastiera con un PC Windows accanto al tuo PC Linux.

Comandi finali:

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

A questo punto dovresti essere in grado di aprire la seconda schermata in un programma VNC collegandoti a YOUR_IP_ADDRESS:1. Per avviare un programma sulla schermata VNC, aprire un terminale, impostare DISPLAYe quindi eseguire il comando. Ad esempio, per aprire xtermsullo "schermo" VNC, eseguire:

export DISPLAY=:1
xterm

Utilizzando questo approccio il secondo schermo è piuttosto lento. Tuttavia, molte delle altre opzioni che ho provato sono finite in un vicolo cieco, e questa ha funzionato senza alcuna configurazione.


0

Per chiunque si stia ancora chiedendo su questo argomento: la clip xrandr e x11vnc funziona; per consentire al mouse di passare lì è necessario utilizzare l'argomento panning per impostare l'area di tracciamento del mouse:

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

Quindi quando esegui xvnc usa:

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

Ciò impedisce a VNC di tentare di utilizzare il proprio tracciamento del cursore e dipinge il cursore come parte dell'immagine sullo schermo.

Ho preso appunti qui 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 &

Ora, fai clic sulla finestra che desideri condividere.


COMPLETO :

Ho un iPad e Chromebook e vorrei usarli come miei monitor, solo per uso alcuni comandi da terminale htop, iptstate, nmon, ecc. Quindi, sono un ragazzo pigro e ce l'ho fatta usando:

  1. Installazione del pacchetto: sudo apt-get install x11vnc
  2. Apri un terminale e inserisci xwininfo | awk '/Window.id/{print $4}'e fai clic nella finestra che desideri condividere. L'output sarà simile a:

    $ xwininfo | awk '/Window.id/{print $4}'
    0x4402f34
    
  3. Ora puoi iniziare la x11vncsessione:

    $ x11vnc -viewonly -nopw -avahi -id 0x4402f34 >/dev/null 2>&1 &
    
  4. Ridimensiona la finestra (0x4402f34) per ottenere l'immagine migliore possibile.

Mind the associato porto della sessione : 5900 -> :0, 5901 -:1, 5902 -> :2...

Inoltre, funziona perfettamente con le app X11: Firefox, OpenOffice, ecc.


0

Usa vnc_virtual_display_linker

Lo strumento imposta un secondo monitor virtuale per la connessione con VNC come descritto in molte delle risposte precedenti. Supporta anche connessioni da dispositivi Android tramite un cavo USB.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.