web-dev-qa-db-fra.com

Comment utilisez-vous une tablette Android comme deuxième écran?

J'ai remarqué des personnes utilisant un produit pour Windows et Mac appelé iDisplay , qui vous permet d'utiliser votre Android ou votre iPad comme écran secondaire. Cela semble être une excellente idée et quelque chose qui pourrait être fait sur Ubuntu. Malheureusement, je n'ai aucune idée de comment commencer.

Comment pourriez-vous recréer cette configuration sur Ubuntu?

58
Mark B

Obtenez un client VNC pour Android, démarrez une nouvelle session de serveur VNC sur votre ordinateur (ne vous contentez pas de partager l'affichage actuel - utilisez vnc4server et non x11vnc), connectez-vous à partir du client Android VNC, et ( le bit intelligent) partagez le clavier et la souris du PC entre les deux sessions en utilisant la synergie.

Tous les logiciels nécessaires à cette fin sont disponibles dans le dépôt standard pour Ubuntu, et il existe quelques clients VNC gratuits disponibles pour Android sur le marché.

En utilisant cette méthode, vous ne pourrez pas faire glisser des fenêtres sur les écrans. Pour cela, je pense que vous auriez besoin d’utiliser Xdmx pour lier les deux sessions. Ceci est beaucoup plus difficile et vous causera probablement une perte d’accélération 3D.

Sachez également que Synergy et vnc n'utilisent pas le cryptage par défaut, vous devez donc tunneler les connexions si vous ne vous trouvez pas sur un réseau approuvé.

27
Alistair Buxton

tl; dr: xrandr --fb et x11vnc --clip forment ensemble un combo de tueur.

Le fil lié par Recognitium a une idée très intéressante, il n'est pas sûr de savoir s'il s'agit bien de celui-ci car je ne trouve pas l'auteur qu'il a indiqué et, également, du suivi que j'ai effectué sur le forum, je le posterai séparément et non en tant que modification. :

  1. Tout d'abord, supposons que la machine principale ait une résolution d'écran de 1280x800 et que la machine secondaire sur laquelle vous voulez étendre votre bureau via VNC a une résolution d'écran de 1280x1024 et que vous voulez que la vue étendue soit à droite de votre écran principal. L'écran virtuel doit être 1280x800 + 1280x1024 = 2560x1024. (étendez-le horizontalement et faites de la résolution verticale la plus grande des deux) Donc lancez xrandr --fb 2560x1024.

  2. Maintenant que l'écran est plus grand que votre moniteur principal, vous devez vous assurer qu'il n'y a pas de panoramique ou autre "fonctionnalité" non désirée activée et que les coordonnées du coin supérieur gauche de votre moniteur principal sont 0x0.

  3. x11vnc -clip 1280x1024+1281+0 ainsi que toute autre option x11vnc à votre goût :)

Cela devrait être ça.

16
chx

Impossible de faire fonctionner les autres réponses, sauf this , qui s'est parfaitement connecté.

Il permet d’utiliser Android comme deuxième moniteur, de partager la souris, de faire glisser les fenêtres entre la tablette et l’ordinateur.

Voici un didacticiel pas à pas, demandé par les commentaires.

A. Tutoriel

1. Créer un nouveau moniteur virtuel

La résolution de ma tablette est 1280x1024. (Vous pouvez modifier 1280 et 1024 partout dans les commandes si la résolution de votre tablette est différente. Vous devrez peut-être également modifier LVDS1 si le nom du moniteur par défaut est différent).

Run in terminal:

  1. $ gtf 1280 1024 60.

Il y a une ligne dans la sortie similaire à Modeline "1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync. Copiez tout ce qui suit le mot Modeline(excluez-le) dans la commande suivante.

  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. Démarrer VNC

  1. x11vnc -clip 1280x1024+0+0

3. Connectez-vous avec Android (LAN (Wi-Fi) ou USB (Câble))

  1. Recherchez l'adresse IP de votre ordinateur à l'aide de ifconfig(lors d'une connexion depuis un réseau local).

  2. Téléchargez une application VNC et connectez-vous à l'ordinateur à l'aide de son adresse IP (et en sélectionnant le port 5900) dans l'application.

Les avis

  • Crédits: kjans , contenu édité.
  • WARNING: les données ne sont pas cryptées! (Pertinent pour une utilisation Wi-Fi et non-LAN)
  • WARNING: Tout réseau connecté pouvant atteindre le port 5900 peut se connecter à votre moniteur! (Ce n'est pas un problème si vous utilisez l'interface USB ET restreignez l'interface en ajoutant l'option -listen <IP_ADDR> à x11vnc (où <IP_ADDR> est l'adresse de l'ordinateur sur le réseau que vous souhaitez accorder un accès exclusif))
  • L'exécution de l'une des étapes 1 à 4 deux fois peut générer des erreurs.
  • Après une utilisation réussie, l'étape 5. doit être répétée pour une autre connexion.

B. Script

Le didacticiel mis en œuvre sous forme de script (Modifiez l'adresse IP à utiliser avec le câble USB OR supprimez-la et supprimez la mise en commentaire de la ligne à utiliser avec le 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
14
Elijas
  1. Installez vnc4server et x2x.
  2. Ensuite, configurez un fichier de configuration .vnc/xstartup. Le mien ressemble à ceci

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

    Il lance le bureau gnome-fallback (je ne sais pas comment lancer gnome 3 dans vnc).

  3. Pour lancer le serveur vnc, utilisez la commande vnc4server -geometry 800x480. Bien sûr, au lieu de 800x480, vous devez définir la résolution de votre tablette.
  4. Lancez x2x -east -to :1. Cette commande indique à votre ordinateur d'agir comme si l'affichage: 1 s'était placé à la droite de l'écran (utilisez l'option -west si vous voulez que ce soit à gauche). Vous ne pourrez pas déplacer les applications d'un écran à un autre, mais vous pouvez utiliser une souris et un clavier pour les contrôler tous les deux.
  5. Connectez-vous à l'écran créé avec vnc4server à partir de votre tablette (le numéro de port est 5900 + numéro d'affichage (par exemple, pour l'affichage: 1 numéro de port sera 5901) (le numéro d'affichage est indiqué dans la sortie du vnc4server).
  6. Pour quitter x2x, appuyez sur Ctrl-C. Vous pouvez également le lancer en arrière-plan (x2x -east -to :1 &). Ensuite, vous devrez d’abord le déplacer au premier plan (fg) ou le tuer avec kill $! (soyez prudent, le dernier processus lancé en arrière-plan sera supprimé).
  7. Pour supprimer l'affichage créé, appelez vnc4server -kill :1 où, au lieu de :1, vous pouvez définir le numéro de votre nouvel affichage.
12
passick

Ceci est en principe possible avec xdmx (Distributed Multihead X) qui vous permet de créer un seul poste de travail à l'aide de deux serveurs X exécutés sur des ordinateurs distincts.

trois scénarios sont possibles en principe, mais aucun n’est aussi transparent que iDisplay, car ils nécessitent tous de redémarrer votre session X au moins. Je n'ai pas été capable de fonctionner parfaitement, mais j'utilise Ubuntu 10.10 et ne peux pas mettre à niveau pour différentes raisons. Les trois sont:

1: exécutez un serveur X sur Android (il en existe deux actuellement dans l’app store) et utilisez xdmx pour l’associer à l’affichage de votre ordinateur de bureau ou de votre ordinateur portable. - n'a pas fonctionné pour moi car xdmx s'est écrasé lorsque le pointeur s'est déplacé vers la partie tablette du bureau.

2: lancez un deuxième serveur X avec le backend vnc sur votre ordinateur, utilisez xdmx pour combiner cela en un seul bureau avec votre écran d’ordinateur, puis regardez la partie virtuelle avec un visualiseur vnc sur la tablette - cela n’a pas fonctionné pour moi car xdmx oblige tous les serveurs x à avoir les mêmes visuels en couleur, ce qui n’est pas le cas du vncserver et de l’affichage réel, et je n’ai pas pu convaincre vncserver de changer.

3: exécutez deux serveurs vncs, un pour chaque écran, puis connectez-les avec xdmx et examinez chaque partie avec un vncviewer sur la machine respective. - Cela a été proche de travailler pour moi, malheureusement, inpout a été gâché. c'était aussi assez lent en couleurs vraies sur wifi. J'ai utilisé ce script pour démarrer xdmx et le 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

7
Felix

J'ai fait un script bash simple pour rendre une tablette un deuxième écran. Copiez ipad_monitor.sh (ne vous inquiétez pas, cela fonctionne également avec Android) dans my blog post .

Ce qui diffère de l’autre message, c’est que vous pouvez définir très facilement la position du deuxième écran avec un argument supplémentaire.

Edit: J'ai inclus l'original ipad_monitor.sh ici. lancez cette commande comme ceci:

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

L'idée de base de ce script est identique à celle des autres, exécutant xrandr et x11vnc, mais j'ai inclus des options telles que le côté auquel vous souhaitez associer l'écran.

#!/bin/sh
# ----------------------------------------------------------------------------
# "THE BEER-WARE LICENSE" (Revision 42):
# <[email protected]> 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
3
Bumsik Kim

J'utilise le pilote factice xorg et x11vnc -clip. Le point de la souris n'est pas coincé sur le bord.

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

Il y a le /etc/X11/xorg.conf pour le pilote factice sur le deuxième écran:

 Section "Dispositif" 
 Identificateur "Périphérique vidéo configuré" 
 Pilote "radeon" #CHANGE THIS 
 EndSection 
 
 Section " Moniteur "Identifiant 
" Moniteur configuré "
 EndSection 
 
 Section" Écran "
 Identifiant" Écran par défaut "
 Moniteur" Configuré Moniteur "
 Périphérique" Périphérique vidéo configuré "
 EndSection 
 
 
 ## Xdummy: ## 
 Section" Périphérique "
 Identificateur "Videocard0" 
 Pilote "Dummy" 
 #VideoRam 4096000 
 VideoRam 256000 
 EndSection 
 
 ## Xdummy: ## 
 Section "Monitor" 
 Identifiant "Monitor0" 
 # HorizSync 10.0 - 300.0 
 # VertRefresh 10.0 - 200.0 
 # Taille d’écran 4335 1084 
 EndSection 
 
 ## Xdummy: ## 
 Section "Screen" 
 Identificateur "Screen0" 
 Périphérique "Videocard0" 
 Moniteur "Monitor0" 
 EndSecti on 
 
 
 
 Section "ServerLayout" 
 Identificateur "dummy_layout" 
 Écran 0 "Écran par défaut" 
 Écran 1 "écran0" à droite de "Écran par défaut" 
 Option "Xinerama" "1" 
 EndSection 

Puis connectez-vous à la session X et exécutez:

x11vnc -clip 1024x768+1280+0
2
mirage

Ces instructions permettent de créer un écran "supplémentaire" pour votre machine Linux à l'aide d'une tablette ou de tout ordinateur via un client VNC.

J'ai fait ces étapes dans Mageia3 32Bit (je n'ai pas essayé de 64 bits) mais je devrais en être de même pour les autres distributions (c'est-à-dire Ubuntu).

Assurez-vous de disposer de tous les packages requis avec la commande de terminal suivante:

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

Une fois que vous avez tous les packages ci-dessus, lancez les commandes suivantes:

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 vous n'obtenez aucune erreur, corrigez Xdmx (tout simplement, il est "cassé" depuis un certain temps):

ouvrez /usr/share/x11-server-sources/hw/dmx/input/dmxevents.c et changez la ligne 730: changez ceci:

POINTER_ABSOLUTE | POINTER_SCREEN, &mask);

pour ça:

POINTER_RELATIVE | POINTER_DESKTOP, &mask);

SI la ligne 730 est différente, utilisez cette section pour trouver la ligne correcte: Section d'origine - ligne à modifier indiquée par *

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

Vérifiez votre version de Xdmx en exécutant ./configure --version dans /usr/share/x11-server-source/, car Xdmx 1.1 et plus ancien. Vous devez également apporter ces modifications (pour les versions 1.14 et plus récentes, vous pouvez passer à l'étape "make" ci-dessous):

open /usr/share/x11-server-sources/dix/getevents.c, line 1395: changez ceci:

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

Pour ça:

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

(Section originale - ligne à modifier marquée avec *)

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

open /usr/share/x11-server-sources/Xext/xtest.c, line 311: changez ceci:

flags = POINTER_ABSOLUTE | POINTER_SCREEN;

pour ça:

flags = POINTER_ABSOLUTE | POINTER_DESKTOP;

(section originale - ligne à modifier marquée avec *)

       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, line 73: ajoutez cette ligne après la ligne commençant par #define POINTER_EMULATED:

#define POINTER_DESKTOP         (1 << 7)

Après avoir apporté les modifications ci-dessus, ré-exécutez (dans /usr/share/x11-server-sources/):

make

Vous devriez avoir un nouveau fichier Xdmx dans /usr/share/x11-server-sources/hw/dmx/. Nous devons installer cela globalement pour la facilité, donc je vous recommande de renommer votre nom actuel:

Sudo mv /bin/Xdmx /bin/Xdmx-old

et copiez le nouveau à la place:

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

Maintenant que vous êtes prêt à faire votre premier essai, les commandes suivantes vous permettent de garder votre affichage principal/existant (:0) actif et d'ouvrir un nouvel affichage avec le support multi-moniteurs. J'utilise icewm avec ces commandes pour le rendre un peu plus léger (j'utilise KDE sur mon écran principal :0 et ouvre n'importe quelle application à écrans multiples de grande taille sur le nouvel écran à têtes multiples). Vous pouvez très certainement écrire ces commandes pour faciliter leur utilisation (c’est ce que j’ai fait). Chacune de ces commandes peut être exécutée sur la console et/ou la fenêtre du terminal de n’importe quel affichage. La seule condition est qu’elles soient exécutées dans l’ordre.

Cette commande crée votre nouvel affichage en tant que tampon de trame pour votre affichage VNC :2 (ajustez la taille de l'écran à votre guise):

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

Cela démarre une nouvelle session X légère sur votre affichage physique sous la forme display :1 (il existe différentes façons de le faire):

startx 'icewm' -- :1

Cette commande démarre le multi-affichage entre votre écran physique et l'écran virtuel et lance icewm pour le gestionnaire de fenêtres:

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

Ouvrez maintenant une fenêtre de terminal et démarrez le serveur vnc (changez le mot de passe à votre guise):

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

Il ne reste plus qu’à allumer votre client VNC et à vous connecter à votre VNC - vous devrez peut-être désactiver ou ajouter une exception à votre pare-fe sur le port 5900 pour pouvoir vous y connecter. Une autre chose à garder à l'esprit est que certains clients VNC n'affichent pas la position du curseur distant. Je certifie que "Mocha VNC" pour iOS fonctionne parfaitement si vous désactivez l'option "souris locale".

Profitez du glissement des fenêtres entre votre moniteur principal et votre nouveau second moniteur virtuel (tout en pouvant utiliser la tablette pour cliquer/taper sur les éléments du second moniteur).

Pour fermer Xdmx, appuyez sur Ctrl+Alt+Backspace deux fois.

Automatisation:

J'utilise ce script bash pour démarrer l'ensemble du processus (tue également Xvfb à la sortie):

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

Ensuite, j'ai un fichier personnalisé ~/.xinitrc avec ceci:

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

Dépannage:

  • Lorsque vous exécutez Xdmx, si vous obtenez une erreur indiquant sh: /usr/local/bin/xkbcomp: No such file or directory, vous devrez peut-être exécuter: cd /usr/local/bin" and "ln -s /bin/xkbcomp, puis réessayez Xdmx.

  • Ctrl+Alt+F1 à travers F7 est supposé fonctionner dans Xdmx pour passer à d’autres consoles/xsessions, mais pour une raison quelconque, cela ne fonctionne pas. Ce que je fais est simplement exécuter Sudo chvt X (où X est un numéro de console/xsession) pour basculer vers mon écran principal. De plus, lorsque vous revenez à Xdmx, vous pouvez rencontrer des problèmes de dessin sur toutes les fenêtres ouvertes. Je clique simplement sur la barre des tâches pour masquer/afficher à nouveau la fenêtre, ce qui force le redessinage.

1
LinuxNewb

J'ai eu beaucoup de problèmes avec les autres techniques énumérées ici. J'aimerais avoir une meilleure solution, mais ma solution lente et simple est un bon point de départ.

Pour le serveur VNC, j'ai essayé le package vncserver mais l'écran devenait noir et je devais redémarrer gdm pour que tout fonctionne à nouveau. Je suis passé à tightvncserver et cela a fonctionné la première fois sans configuration.

Pour partager la souris/clavier entre les écrans, j’ai utilisé x2vnc . Cela pourrait également être utilisé avec win2vnc pour partager la souris/le clavier avec un PC Windows à côté de votre PC Linux.

Commandes finales:

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

À ce stade, vous devriez pouvoir ouvrir le deuxième écran dans un programme VNC en vous connectant à YOUR_IP_ADDRESS:1. Pour démarrer un programme sur l'écran VNC, ouvrez un terminal, définissez DISPLAY, puis exécutez la commande. Par exemple, pour ouvrir xterm sur "l'écran" de VNC, exécutez:

export DISPLAY=:1
xterm

En utilisant cette approche, le deuxième écran est assez lent. Malgré tout, bon nombre des autres options que j'ai essayées se sont retrouvées dans des impasses, et celle-ci fonctionnait sans configuration.

0
thirdender

Merci pour les gars du tutoriel, je vais partager ce qui a fonctionné pour moi sur Ubuntu 14.04

Obtenez AndroidVNC ici pour votre tablette

Obtenez x11vnc pour votre pc Ubuntu en lançant

Sudo apt-get install x11vnc

J'ai dû utiliser la méthode du pilote factice Xorg. Voici à quoi ressemble mon fichier /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**

Vous n'aurez probablement pas besoin de tout ce qu'il y a dedans, lancez simplement X -configure pour obtenir la configuration automatique de votre système et ajouter les sections factices (les éléments entre les astérisques) à votre fichier. La résolution de l'écran factice dans xorg.conf doit correspondre à la largeur de votre moniteur principal et à la largeur de la résolution de votre tablette. Dans mon cas, 1680 + 1024 = 2704 conservez la hauteur de votre moniteur principal, 1050 dans mon cas. Redémarrez le serveur X/redémarrez/tirez sur la prise d'alimentation, peu importe. te convient plus :).

Exécuter x11vnc en faisant

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

Ici, la résolution doit être la largeur de votre tablette x hauteur de la tablette + largeur de l'écran principal + 0

Connectez-vous à votre PC en utilisant le client androidVNC, assurez-vous d'activer l'option localmouse. Cela devrait être le cas, sentez maintenant l’étrangeté de faire tourner Linux sur Android :)

0
Mathieu Grenier

Utilisez vnc_virtual_display_linker

L'outil configure un deuxième moniteur virtuel pour la connexion à VNC, comme décrit dans de nombreuses réponses précédentes. Il prend même en charge les connexions de Android appareils via un câble USB.

0
Falko Menge

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 &

Maintenant, cliquez simplement sur la fenêtre que vous souhaitez partager.


COMPLET:

J'ai un iPad et un Chromebook et j'aimerais les utiliser comme moniteurs, juste pour utiliser certaines commandes de terminal htopname__, iptstatename__, nmonname __, etc. Donc, je suis un gars paresseux et je l'ai créé avec:

  1. Instalation du paquet: Sudo apt-get install x11vnc
  2. Ouvrez un terminal et mettez xwininfo | awk '/Window.id/{print $4}' et cliquez dans la fenêtre que vous souhaitez partager. La sortie sera quelque chose comme:

    $ xwininfo | awk '/Window.id/{print $4}'
    0x4402f34
    
  3. Vous pouvez maintenant démarrer votre session x11vnc:

    $ x11vnc -viewonly -nopw -avahi -id 0x4402f34 >/dev/null 2>&1 &
    
  4. Redimensionnez la fenêtre (0x4402f34) pour obtenir la meilleure image possible.

Attention au port associé de votre session: 5900 -> :0, 5901 -:1, 5902 -> :2...

En outre, fonctionne bien avec les applications X11: Firefox, OpenOffice, etc.

0
Antonio Feitosa

Pour ceux qui s’interrogent encore sur ce sujet: le clip xrandr et x11vnc fonctionne; pour permettre à la souris d'arriver par là, vous devez utiliser l'argument panoramique pour définir la zone de suivi de la souris:

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

Ensuite, lors de l'exécution de xvnc, utilisez:

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

Cela empêche VNC d'essayer d'utiliser son propre suivi de curseur et le peint en tant que partie de l'image à l'écran.

J'ai pris des notes ici http://mikescodeoddities.blogspot.ae/2015/04/Android-tablet-as-second-ubuntu-screen.html

0
Mike Dawson