¿Cómo se usa una tableta Android como segunda pantalla?


63

He notado que la gente usa un producto para Windows y Mac llamado iDisplay que le permite usar su Android o iPad como pantalla secundaria. Esto parece una gran idea, y algo que se podría hacer en Ubuntu. Desafortunadamente, no tengo idea de cómo comenzar.

¿Cómo podría volver a crear esta configuración en Ubuntu?


2
Pregunta similar actualmente en discusión en los foros: Use VNC como segundo monitor
ændrük

1
Misma pregunta sobre el Súper Usuario: Use VNC para crear una segunda pantalla
ændrük

1
Ok, las soluciones presentadas aquí son de red. Pero, ¿hay alguna posibilidad de lograr esto simplemente simulando un monitor a través de usb, para obtener la misma experiencia que un monitor al igual que Duet ?
Augustin Riedinger

Por lo tanto, Duet podría estar emulando (esencialmente) un chip DisplayLink en el software; no lo sé, pero esa es mi suposición. Ni siquiera lo intentaría. Lo que probaría (y no es difícil) es la conexión en red USB: conecte (o revierta) su tableta y su red.
chx

Respuestas:


28

Obtenga un cliente VNC para Android, inicie una nueva sesión de servidor VNC en su computadora (no solo comparta la pantalla actual, use vnc4server no x11vnc), conéctese desde el cliente Android VNC y (el bit inteligente) comparta Teclado y mouse de PC entre las dos sesiones usando sinergia.

Todo el software necesario para hacer esto está disponible en los repositorios estándar para el lado de Ubuntu, y hay algunos clientes VNC gratuitos disponibles para Android en el mercado.

No podrá arrastrar ventanas a través de las pantallas con este método. Para eso creo que necesitarías usar Xdmx para unir las dos sesiones. Esto es mucho más difícil y probablemente te haga perder la aceleración 3D.

También tenga en cuenta que sinergia y vnc no usan cifrado de forma predeterminada, por lo que debe hacer un túnel de las conexiones si no se encuentra en una red confiable.


99
puede agregar un ejemplo por favor
rkmax

19
sería útil tener un ejemplo paso a paso que podamos seguir
OganM

2
¿Cómo convertiría esto a una tableta en una segunda pantalla, como en más espacio de pantalla?
NoBugs

Tuve problemas con vncserver y Gnome 3. Cada vez que intentaba iniciar vncserver, la pantalla se apagaba. Terminé usando tightvncserver (también en los repositorios de Ubuntu) y funcionó el primer intento sin ninguna configuración.
Thirdender

Esto es más una solución de control remoto o de KVM que una segunda pantalla. Sí, le da otro conjunto de entrada, pero la salida es la misma en ambos dispositivos: ni siquiera puede cambiar la tableta a un escritorio virtual diferente que su pantalla principal, al encender uno cambia ambos. No responde la pregunta. La pregunta es sobre el uso de dispositivos móviles para espacio de salida adicional, no sobre la entrada en absoluto.
cprn

17

tl; dr: xrandr --fby x11vnc --clipjuntos hacen un combo asesino.

El hilo vinculado por Recognitium tiene una idea realmente interesante, no estoy seguro de si se refería a este porque no pude encontrar al autor que indicó y también porque seguí en la publicación del foro allí, lo publicaré por separado y no como una edición :

  1. Primero, supongamos que la máquina principal tiene una resolución de pantalla de 1280x800 y la máquina secundaria a la que desea extender su escritorio sobre VNC tiene una resolución de pantalla de 1280x1024 y desea que la pantalla extendida esté a la derecha de su pantalla principal. La pantalla virtual debe ser 1280x800 + 1280x1024 = 2560x1024. (extiéndalo horizontalmente y haga que la resolución vertical sea la más grande de las dos) Entonces corra xrandr --fb 2560x1024.

  2. Ahora, que la pantalla es más grande que su monitor principal, debe asegurarse de que no se active ninguna panorámica o cualquier otra "característica" no deseada y que las coordenadas de la esquina superior izquierda de su monitor principal sean 0x0.

  3. x11vnc -clip 1280x1024+1281+0 además agrega cualquier otra opción x11vnc al gusto :)

Esto debería ser.


2
Esto parece una manera mucho más fluida de hacerlo que el truco de Synergy, ¡genial! Sin embargo, tengo curiosidad por saber cómo interactuará el espacio virtual adicional con mi administrador de ventanas de mosaico. Le daré una oportunidad a esto en un momento e informará.
Ibrahim

2
Derrota arrebatada de las fauces de la victoria. El puntero del mouse no puede salir de la pantalla principal. :(
Gringo Suave

1
Parece interesante. Realmente logro tener una doble pantalla allí, pero desafortunadamente, el comando xrandr --fb 2560x1024no parece tener ningún efecto. Lo que significa que no puedo tener una pantalla más grande que el tamaño de mi monitor principal ... :(
Augustin Riedinger

1
Leí más sobre esto . Tengo 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 error Supongo que mi computadora portátil no admite una resolución más alta que la nativa 1600*900. Lo que significa que esta solución no puede funcionar. Tendré que encontrar una solución de doble pantalla en su lugar.
Augustin Riedinger

3
Finalmente lo hice funcionar gracias a esta publicación ejecutando: sudo xrandr --fb 2732x768 --output LVDS1 --panning 2732x768+0+0/2732x768+0+0(Me faltaba la --panningopción)
Augustin Riedinger

16

No se pudo hacer que las otras respuestas funcionen, excepto esto , que se conectó sin problemas.

Permite usar Android como un segundo monitor, compartir el mouse, arrastrar ventanas entre la tableta y la computadora.

Aquí hay un tutorial paso a paso, solicitado por los comentarios.

Un tutorial

1. Crear un nuevo monitor virtual

La resolución de mi tableta es 1280x1024. (Puede cambiar 1280y 1024en todas partes en los comandos si su tableta tiene una resolución diferente. También puede necesitar cambiar LVDS1si el nombre del monitor predeterminado es diferente).

Ejecutar en terminal:

  1. $ gtf 1280 1024 60.

Hay una línea en la salida similar a Modeline "1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync. Copie todo después de la palabra Modeline(excluirla) en el siguiente comando.

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

  1. x11vnc -clip 1280x1024+0+0

3. Conéctese con Android (LAN (Wi-Fi) o USB (Cable))

  1. Encuentre la IP de su computadora usando ifconfig(cuando se conecta desde LAN).

  2. Descargue una aplicación VNC y conéctese a la computadora usando su IP (y seleccionando el puerto 5900) en la aplicación.

Avisos

  • Créditos: kjans , contenidos editados.
  • ADVERTENCIA : ¡Los datos no están encriptados! (Relevante para el uso de Wi-Fi y no LAN)
  • ADVERTENCIA : ¡Cualquier red que esté conectado que pueda alcanzar el puerto 5900 puede conectarse a su monitor! (No es un problema si se usa USB y se restringe la -listen <IP_ADDR>opción de agregar interfaz a x11vnc(dónde <IP_ADDR>está la dirección de la computadora en la red a la que desea dar acceso exclusivo))
  • Ejecutar cualquiera de los 1 a 4 pasos dos veces puede generar errores.
  • Después de un uso exitoso, 5. el paso debe repetirse para otra conexión.

B. Script

El tutorial implementado como un script (Cambie la IP para usar con el cable USB O elimínelo y elimine el comentario de la línea para usar con 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+0se puede reemplazar con x11vnc -clip xinerama1. Además, esto --left-of LVDS1no es estrictamente necesario si va a utilizar la Monitorsaplicación de configuración para colocar el monitor adicional donde desee.
LeoRochael

66
xrandr: cannot find output "VIRTUAL1"fue devuelto cuando escribí el número 3. ¿Alguna idea?
dat tutbrus

3
xrandr: cannot find output "VIRTUAL1"regresar dexrandr --addmode VIRTUAL1 1280x800_60.00
Tooniis

Esto funciona, excepto que debe tener una salida no utilizada capaz del modo de video de destino para que esto funcione. VIRTUAL1parece ser un marcador de posición para tal salida, no algo presente en un sistema típico.
Ruslan

1
@cprn Sí, puede compartir el cursor del mouse y arrastrar ventanas. Es como si tuvieras un segundo monitor conectado
Elijas

13
  1. Instalar vnc4servery x2x.
  2. Luego, configure un .vnc/xstartuparchivo de configuración. El mío se ve así

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

    Inicia gnome-fallback desktop (no sé cómo hacer que gnome 3 se inicie en vnc).

  3. Para iniciar el servidor vnc, use el vnc4server -geometry 800x480comando. Por supuesto, en lugar de 800x480, debe configurar la resolución de su tableta.
  4. Lanzamiento x2x -east -to :1. Ese comando dice que su computadora debe actuar como si la pantalla: 1 hubiera estado a la derecha de la pantalla (use la -westopción si desea que esté a la izquierda). No podrá mover aplicaciones de una pantalla a otra, pero puede usar un mouse y un teclado para controlarlos a ambos.
  5. Conéctese a la pantalla creada con vnc4serversu tableta (el número de puerto es 5900 + número de pantalla (por ejemplo, para la pantalla: 1 número de puerto será 5901) (el número de pantalla se muestra en la vnc4serversalida).
  6. Para salir de x2x, presione Ctrl-C. Alternativamente, puede iniciarlo en segundo plano ( x2x -east -to :1 &). Luego, primero tendrá que moverlo a primer plano ( fg), o matarlo con kill $!(tenga cuidado, mata el último proceso iniciado en segundo plano).
  7. Para eliminar la pantalla creada, llame vnc4server -kill :1, donde en lugar de :1usted puede configurar el número de su nueva pantalla.

1
Gracias por x2x ... ¿Por qué nadie más lo menciona en todo Internet? Me salvó a lo grande. La sinergia requiere cyanogenmod o similar en su tableta. Además, nadie lo menciona.
Stefanos Kalantzis

1
Ya lo sé x2x, encuentre esta publicación buscando x2x android en google ... ¡Pero +1 para .vnc/xstartup, especialmente para unset DBUS_SESSION_BUS_ADDRESS!! Mensaje pequeño pero rico y muy útil, ¡gracias!
F. Hauri

7

En principio, esto es posible usando xdmx (X distribuido de múltiples cabezas) que le permite crear un solo escritorio usando dos servidores X que se ejecutan en máquinas separadas.

En principio, son posibles tres escenarios, pero ninguno es tan perfecto como iDisplay, porque todos requieren reiniciar su sesión X al menos. No he podido hacer que ninguno funcione perfectamente, pero estoy ejecutando Ubuntu 10.10 y no puedo actualizar por varias razones. Los tres son:

1: ejecute un servidor X en Android (ahora hay dos disponibles en la tienda de aplicaciones) y use xdmx para combinarlo con la pantalla de su computadora de escritorio o portátil. - no funcionó para mí porque xdmx se bloqueó cuando el puntero se movió a la parte de tableta del escritorio.

2: ejecute un segundo servidor X con vnc back-end en su computadora, use xdmx para combinarlo en un escritorio con la pantalla de su computadora, luego mire la parte virtual con un visor vnc en la tableta; no funcionó para mí porque xdmx requiere que todos los servidores x tengan las mismas imágenes en color, que no es el caso para vncserver y la pantalla real, y no pude convencer a vncserver para que cambie.

3: ejecute dos servidores vncs, uno para cada pantalla, luego conéctelos con xdmx y mire cada parte con un vncviewer en la máquina respectiva. - Esto estuvo más cerca de trabajar para mí, desafortunadamente la entrada estaba desordenada. También fue bastante lento en color verdadero a través de wifi. Usé este script para iniciar xdmx y las 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

Hice un script bash simple para hacer que una tableta sea una segunda pantalla. Copiar ipad_monitor.sh(No te preocupes. También funciona con Android) en mi blog .

Lo que es diferente de la otra publicación es que puedes establecer la posición de la segunda pantalla con argumentos adicionales muy fácilmente.

Editar: incluí el original ipad_monitor.shaquí. ejecuta este comando como:

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

La idea básica de este script es la misma que otras, ejecutándose xrandry x11vncpero incluí opciones como de qué lado le gustaría adjuntar la pantalla.

#!/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
¿Tiene un nombre para el script / aplicación o algún enlace alternativo que pueda publicar para ayudar a evitar la descomposición del enlace? Aquí generalmente tratamos de ser lo más autónomos posible para no depender de otros sitios que permanecen activos, especialmente si esos sitios contienen la mayor parte de la información que sería relevante para una respuesta donde esa información no se incluye realmente en la respuesta .
sbergeron

Si bien este enlace puede responder la pregunta, es mejor incluir aquí las partes esenciales de la respuesta y proporcionar el enlace como referencia. Las respuestas de solo enlace pueden volverse inválidas si la página vinculada cambia. - De la opinión
anonymous2

2
@Sbergeron Ya veo. Incluyo el código original aquí.
Bumsik Kim

1
@ anónimo2 Tienes razón. Incluí el código bash aquí.
Bumsik Kim

Ah, mucho mejor Creo que esto debería poder quedarse así.
anonymous2

2

Uso el controlador ficticio xorg y x11vnc -clip. La punta del mouse no está atascada en el borde.

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

Existe el /etc/X11/xorg.confcontrolador falso en la segunda pantalla:

Sección "Dispositivo"
        Identificador "Dispositivo de video configurado"
    Conductor "radeon" # CAMBIAR ESTO
EndSection

Sección "Monitor"
        Identificador "Monitor configurado"
EndSection

Sección "Pantalla"
        Identificador "Pantalla predeterminada"
        Monitor "Monitor configurado"
        Dispositivo "Dispositivo de video configurado"
EndSection


## Xdummy: ##
Sección "Dispositivo"
  Identificador "Videocard0"
  Conductor "ficticio"
  #VideoRam 4096000
  VideoRam 256000
EndSection

## Xdummy: ##
Sección "Monitor"
  Identificador "Monitor0"
# HorizSync 10.0 - 300.0
# VertRefresh 10.0 - 200.0
# DisplaySize 4335 1084
EndSection

## Xdummy: ##
Sección "Pantalla"
  Identificador "Pantalla0"
  Dispositivo "Videocard0"
  Monitor "Monitor0"
EndSection



Sección "ServerLayout"
  Identificador "dummy_layout"
  Pantalla 0 "Pantalla predeterminada"
  Pantalla 1 "pantalla0" a la derecha de "Pantalla predeterminada"
    Opción "Xinerama" "1"
EndSection

Luego inicie sesión en la sesión X y ejecute:

x11vnc -clip 1024x768+1280+0

¿Alguna forma de hacer esto sin xorg.conf? Si creo uno en mi computadora, entonces mis gráficos se desordenan por completo.
daboross

¿Xinerama todavía es compatible? ¿Qué tal xrandr?
Gringo Suave

1

Estas instrucciones son para crear una pantalla "adicional" para su máquina Linux usando una tableta o cualquier computadora a través de un cliente VNC.

Hice estos pasos en Mageia3 32Bit (no he probado 64 bits) pero también debería ser similar para otras distribuciones (es decir, Ubuntu).

Asegúrese de tener todos los paquetes necesarios con el siguiente comando de terminal:

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 vez que tenga todos los paquetes anteriores, emita estos comandos:

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

Si no obtiene ningún error, aplique el parche Xdmx (simplemente, se ha "roto" por algún tiempo):

abrir /usr/share/x11-server-sources/hw/dmx/input/dmxevents.cy cambiar la línea 730: cambie esto:

POINTER_ABSOLUTE | POINTER_SCREEN, &mask);

a esto:

POINTER_RELATIVE | POINTER_DESKTOP, &mask);

Si la línea 730 es diferente, use esta sección para encontrar la línea correcta: Sección original - línea para cambiar marcada con *

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

Para comprobar la versión de Xdmx ejecutando ./configure --versionen /usr/share/x11-server-source/, por Xdmx 1.13 y mayores también hay que hacer estos cambios (de 1.14 y posteriores se puede saltar a la "hacer" a continuación paso):

abierto /usr/share/x11-server-sources/dix/getevents.c, línea 1395: cambie esto:

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

A esto:

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

(Sección original - línea para cambiar marcada 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);

abierto /usr/share/x11-server-sources/Xext/xtest.c, línea 311: cambie esto:

flags = POINTER_ABSOLUTE | POINTER_SCREEN;

a esto:

flags = POINTER_ABSOLUTE | POINTER_DESKTOP;

(sección original - línea para cambiar marcada 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, línea 73: agregue esta línea después de la línea que comienza con #define POINTER_EMULATED:

#define POINTER_DESKTOP         (1 << 7)

Después de realizar los cambios anteriores, vuelva a ejecutar (en /usr/share/x11-server-sources/):

make

Debería tener un nuevo archivo Xdmx en /usr/share/x11-server-sources/hw/dmx/. Necesitamos instalarlo globalmente para facilitarlo, por lo que recomiendo cambiar el nombre de uno existente:

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

y copie el nuevo en su lugar:

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

Ahora que está listo para hacer su primera prueba, los siguientes comandos le permiten mantener su pantalla principal / existente ( :0) en funcionamiento y abrir una nueva pantalla con el soporte de monitores múltiples. Estoy usando icewm con estos comandos para hacerlo un poco más liviano (uso KDE en mi pantalla principal :0y abro cualquier aplicación grande de múltiples monitores en la nueva pantalla de múltiples cabezales). Definitivamente puede escribir estos comandos para facilitar su uso (es lo que hice): cualquiera de estos comandos se puede ejecutar en la consola y / o ventana de terminal de cualquier pantalla, el único requisito es que se ejecuten en orden.

Este comando crea su nueva pantalla como un búfer de cuadro para su pantalla VNC :2(ajuste el tamaño de la pantalla como desee):

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

Esto inicia una nueva sesión X ligera en su pantalla física como pantalla :1(hay diferentes formas de hacer esto):

startx 'icewm' -- :1

Este comando inicia la visualización múltiple entre su pantalla física y la pantalla virtual e inicia icewm para el administrador de ventanas:

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

Ahora abra una ventana de terminal e inicie el servidor vnc (cambie la contraseña como desee):

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

Lo único que queda por hacer ahora es iniciar su cliente VNC y conectarse a su VNC; es posible que deba deshabilitar o agregar una excepción a su firewall al puerto 5900 para poder conectarse a él. Otra cosa a tener en cuenta es que algunos clientes VNC no muestran la posición del cursor remoto, certifico que "Mocha VNC" para iOS funciona muy bien si desactiva la opción "mouse local".

Disfrute arrastrando ventanas entre su monitor principal y su nuevo segundo monitor virtual (al mismo tiempo que puede usar la tableta para hacer clic / escribir en cosas en el segundo monitor).

Para cerrar Xdmx presione Ctrl+ Alt+ Backspacedos veces.

Automatización:

Utilizo este script bash para comenzar todo el proceso (también mata Xvfb al salir):

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

Entonces tengo un ~/.xinitrcarchivo personalizado con esto:

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

Solución de problemas:

  • Cuando ejecute Xdmx, si recibe un error sh: /usr/local/bin/xkbcomp: No such file or directoryque indica que es posible que deba ejecutar: cd /usr/local/bin" and "ln -s /bin/xkbcompe intente Xdmx nuevamente.

  • Ctrl+ Alt+ F1A través F7se supone que funciona en Xdmx para cambiar a otras consolas / xsessions pero por alguna razón no funciona, lo que hago es simplemente ejecutar sudo chvt X(donde X es un número consola / xsession) para cambiar a mi pantalla principal. Además, cuando vuelva a cambiar a Xdmx, es posible que tenga algunos problemas de dibujo en cualquier ventana abierta, solo hago clic en la barra de tareas para ocultar / mostrar la ventana nuevamente y forzar un redibujo.


0

Gracias por el tutorial chicos, compartiré lo que funcionó para mí en Ubuntu 14.04

Obtenga AndroidVNC aquí para su tableta

Obtenga x11vnc para su PC Ubuntu ejecutando

sudo apt-get install x11vnc

Tuve que usar el método del controlador ficticio Xorg. Así es como se ve mi archivo /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**

Probablemente no necesite todo lo que contiene, simplemente ejecute X -configure para que su sistema se autoconfigure y agregue las secciones ficticias (cosas entre los asteriscos) a su archivo. La resolución para la pantalla ficticia en xorg.conf debe ser el ancho de su monitor principal + el ancho de resolución de su tableta, en mi caso 1680 + 1024 = 2704 mantener la altura de su monitor principal, 1050 en mi caso. Reinicie el servidor X / Reiniciar / Enchufe te queda más :).

Ejecute x11vnc haciendo

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

Aquí la resolución debe ser el ancho de la tableta x la altura de la tableta + Ancho de la pantalla principal + 0

Conéctese a su PC con el cliente androidVNC, asegúrese de habilitar la opción localmouse. Eso debería ser, ahora siente la rareza de tener Linux corriendo sobre Android :)


0

Tuve muchos problemas con las otras técnicas enumeradas aquí. Desearía tener una solución mejor, pero mi solución lenta y simple es un buen punto de partida.

Para el servidor VNC, probé el vncserverpaquete, pero la pantalla se oscureció y tuve que reiniciar gdmpara que todo volviera a funcionar. Me cambié tightvncservery funcionó la primera vez sin configuración.

Para compartir el mouse / teclado entre pantallas utilicé x2vnc . Esto también podría usarse con win2vnc para compartir el mouse / teclado con una PC con Windows junto a su PC con Linux.

Comandos finales:

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

En este punto, debería poder abrir la segunda pantalla en un programa VNC conectándose a YOUR_IP_ADDRESS:1. Para iniciar un programa en la pantalla VNC, abra una terminal, configure DISPLAYy luego ejecute el comando. Por ejemplo, para abrir xtermen la "pantalla" de VNC, ejecute:

export DISPLAY=:1
xterm

Usando este enfoque, la segunda pantalla es bastante lenta. Aún así, muchas de las otras opciones que probé se encontraron con callejones sin salida, y esta funcionó sin ninguna configuración.


0

Para cualquiera que todavía se pregunte sobre este tema: el clip xrandr y x11vnc funciona; para permitir que el mouse llegue allí, debe usar el argumento de desplazamiento para establecer el área de seguimiento del mouse:

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

Luego, cuando ejecute xvnc use:

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

Eso impide que VNC intente usar su propio seguimiento del cursor y pinta el cursor como parte de la imagen de la pantalla.

Tomé notas aquí 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 &

Ahora, simplemente haga clic en la ventana que desea compartir.


COMPLETO :

Tengo un iPad y Chromebook y me gustaría usarlos como mis monitores, sólo para USO algunos comandos de terminal htop, iptstate, nmon, etc. Entonces, soy un tipo vago y lo hice usando:

  1. Instalación del paquete: sudo apt-get install x11vnc
  2. Abra alguna terminal y coloque xwininfo | awk '/Window.id/{print $4}'y haga clic en la ventana que desea compartir. La salida será algo así como:

    $ xwininfo | awk '/Window.id/{print $4}'
    0x4402f34
    
  3. Ahora puedes comenzar tu x11vncsesión:

    $ x11vnc -viewonly -nopw -avahi -id 0x4402f34 >/dev/null 2>&1 &
    
  4. Cambie el tamaño de la ventana (0x4402f34) para tener la mejor imagen posible.

Cuidado con el asociado puerto de la sesión : 5900 -> :0, 5901 -:1, 5902 -> :2...

Además, funciona bien con aplicaciones X11: Firefox, OpenOffice, etc.


0

Use vnc_virtual_display_linker

La herramienta configura un segundo monitor virtual para conectarse con VNC como se describe en muchas de las respuestas anteriores. Incluso admite conexiones desde dispositivos Android mediante un cable USB.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.