Wie benutzt man ein Android Tablet als zweites Display?


63

Ich habe festgestellt, dass Benutzer ein Produkt für Windows und Mac namens iDisplay verwenden, mit dem Sie Ihr Android oder iPad als sekundäres Display verwenden können. Dies scheint eine großartige Idee zu sein und könnte unter Ubuntu durchgeführt werden. Leider habe ich keine Ahnung, wie ich anfangen soll.

Wie können Sie dieses Setup unter Ubuntu neu erstellen?


2
Ähnliche Frage, die derzeit in den Foren diskutiert wird: Verwenden Sie VNC als zweiten Monitor
ændrük

1
Dieselbe Frage zum
Superuser

1
Ok, die hier vorgestellten Lösungen sind Netzwerklösungen. Aber gibt es eine Möglichkeit, dies zu erreichen, indem einfach ein Monitor über USB gefälscht wird, um die gleiche Erfahrung wie bei einem Monitor zu erzielen, wie dies bei Duet der Fall ist?
Augustin Riedinger

Duet emuliert also möglicherweise (im Wesentlichen) einen DisplayLink-Chip in der Software - ich weiß es nicht, aber das ist meine Vermutung. Ich würde es nicht einmal versuchen. Was ich versuchen würde (und es ist nicht schwer), ist ein USB-Netzwerk: Binden Sie Ihr Tablet an (oder binden Sie es um) und vernetzen Sie es.
chx

Antworten:


28

Holen Sie sich einen VNC-Client für Android, starten Sie eine neue VNC-Serversitzung auf Ihrem Computer (geben Sie nicht nur die aktuelle Anzeige frei - verwenden Sie vnc4server nicht x11vnc), stellen Sie eine Verbindung über den Android-VNC-Client her und geben Sie (das clevere Bit) die PC-Tastatur und -Maus nutzen Synergieeffekte zwischen den beiden Sitzungen.

Die dafür erforderliche Software ist in den Standard-Repos für die Ubuntu-Seite verfügbar, und es gibt ein paar kostenlose VNC-Clients für Android auf dem Markt.

Mit dieser Methode können Sie keine Fenster über die Anzeigen ziehen. Ich denke, dafür müssten Sie Xdmx verwenden, um die beiden Sitzungen zu verbinden. Dies ist viel schwieriger und würde wahrscheinlich dazu führen, dass Sie die 3D-Beschleunigung verlieren.

Beachten Sie auch, dass Synergy und VNC standardmäßig keine Verschlüsselung verwenden, sodass Sie die Verbindungen tunneln müssen, wenn Sie sich nicht in einem vertrauenswürdigen Netzwerk befinden.


9
kann ein Beispiel bitte hinzufügen
rkmax

18
Es wäre nützlich, ein schrittweises Beispiel zu haben, dem wir folgen können
OganM

2
Wie würde dies ein Tablet zu einem zweiten Bildschirm machen - wie bei mehr Bildschirmfläche?
NoBugs

Ich hatte Probleme mit vncserver und Gnome 3. Jedes Mal, wenn ich versuchte, vncserver zu starten, wurde der Bildschirm schwarz. Am Ende habe ich tightvncserver verwendet (auch in den Ubuntu-Repos) und es hat beim ersten Versuch ohne jegliche Konfiguration funktioniert.
Thirdender

Dies ist eher eine KVM-Switch-ähnliche oder eine Fernsteuerungslösung als ein zweites Display. Ja, es gibt Ihnen einen anderen Satz von Eingaben, aber die Ausgabe ist auf beiden Geräten gleich - Sie können das Tablet nicht einmal auf einen anderen virtuellen Desktop als Ihren Hauptbildschirm umschalten, wenn Sie einen der beiden einschalten. Es beantwortet die Frage nicht. Bei der Frage geht es um die Verwendung mobiler Geräte als zusätzlichen Speicherplatz für die Ausgabe und überhaupt nicht um die Eingabe.
cprn

17

tl; dr: xrandr --fbund x11vnc --clipzusammen eine Killerkombination machen.

Der von Recognitium verlinkte Thread hat eine wirklich interessante Idee, nicht sicher, ob er dies meinte, da ich den von ihm angegebenen Autor nicht finden konnte und auch, weil ich den Forumsbeitrag dort nachverfolgt habe, werde ich diesen separat und nicht als Bearbeitung posten :

  1. Nehmen wir zunächst an, dass der primäre Computer eine Bildschirmauflösung von 1280 x 800 hat und der sekundäre Computer, auf den Sie Ihren Desktop über VNC erweitern möchten, eine Bildschirmauflösung von 1280 x 1024 hat und der erweiterte Bildschirm direkt neben Ihrem primären Bildschirm angezeigt werden soll. Der virtuelle Bildschirm muss sein 1280x800 + 1280x1024 = 2560x1024. (erweitere es horizontal und mache die vertikale Auflösung größer) Also lauf xrandr --fb 2560x1024.

  2. Da der Bildschirm jetzt größer ist als Ihr primärer Monitor, müssen Sie sicherstellen, dass kein Panning oder keine andere unerwünschte "Funktion" aktiviert ist und dass die Koordinaten der oberen linken Ecke Ihres primären Monitors 0x0 sind.

  3. x11vnc -clip 1280x1024+1281+0 und fügen Sie weitere x11vnc-Optionen hinzu, um zu schmecken :)

Das sollte es sein.


2
Dies scheint eine viel nahtlosere Möglichkeit zu sein als der Synergy-Trick, schön! Ich bin gespannt, wie der zusätzliche virtuelle Raum mit meinem Kachelfenster-Manager interagiert. Werde das gleich ausprobieren und berichten.
Ibrahim

2
Niederlage aus dem Rachen des Sieges gerissen. Der Mauszeiger darf den Hauptbildschirm nicht verlassen. :(
Gringo Suave

1
Scheint interessant. Ich schaffe es tatsächlich, dort einen Doppelbildschirm zu haben, aber leider xrandr --fb 2560x1024scheint der Befehl keine Wirkung zu haben. Was bedeutet, dass ich keinen größeren Bildschirm als meinen primären Monitor haben kann ... :(
Augustin Riedinger

1
Ich habe weiter darüber gelesen . Habe einen 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 Fehler. Ich vermute, dass mein Laptop keine höhere Auflösung als native unterstützt 1600*900. Das heißt, diese Lösung kann nicht funktionieren. Ich muss stattdessen eine Doppelscreen-Lösung finden.
Augustin Riedinger

3
Dank diesem Beitrag habe ich es endlich zum Laufen gebracht: sudo xrandr --fb 2732x768 --output LVDS1 --panning 2732x768+0+0/2732x768+0+0(Ich habe die --panningOption verpasst )
Augustin Riedinger

16

Konnte die anderen Antworten nicht zum Laufen bringen, außer dies , was fehlerfrei verbunden war.

Sie können Android als zweiten Monitor verwenden, die Maus freigeben und Fenster zwischen Tablet und Computer ziehen.

Hier ist eine Schritt-für-Schritt-Anleitung, die in den Kommentaren angefordert wird.

A. Tutorial

1. Erstellen Sie einen neuen virtuellen Monitor

Die Auflösung meines Tablets beträgt 1280x1024. (Sie können 1280und 1024überall in den Befehlen ändern, wenn Ihr Tablet eine andere Auflösung hat. Möglicherweise müssen Sie auch Änderungen vornehmen, LVDS1wenn der Name des Standardmonitors unterschiedlich ist.)

Im Terminal ausführen:

  1. $ gtf 1280 1024 60.

Es gibt eine Zeile in der Ausgabe ähnlich wie Modeline "1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync. Kopieren Sie alles nach dem Wort Modeline(schließen Sie es aus) in den nächsten Befehl.

  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. Starten Sie VNC

  1. x11vnc -clip 1280x1024+0+0

3. Verbindung mit Android (LAN (Wi-Fi) oder USB (Kabel))

  1. Ermitteln Sie die IP-Adresse Ihres Computers mithilfe von ifconfig(beim Herstellen einer Verbindung über LAN).

  2. Laden Sie eine VNC-App herunter und stellen Sie über ihre IP-Adresse (und die Auswahl des Ports 5900) in der App eine Verbindung zum Computer her .

Hinweise

  • Credits: kjans , Inhalte bearbeitet.
  • WARNUNG : Daten sind unverschlüsselt! (Relevant für Wi-Fi und Nicht-LAN-Nutzung)
  • WARNUNG : Jedes Netzwerk, mit dem Sie verbunden sind und das Port 5900 erreichen kann, kann eine Verbindung zu Ihrem Monitor herstellen! (Kein Problem, wenn Sie USB verwenden UND die Schnittstelle einschränken, indem Sie eine -listen <IP_ADDR>Option hinzufügen x11vnc(wo <IP_ADDR>ist die Adresse des Computers in dem Netzwerk, auf das Sie exklusiven Zugriff gewähren möchten))
  • Wenn Sie einen der Schritte 1 bis 4 zweimal ausführen, werden möglicherweise Fehler ausgegeben.
  • Nach erfolgreicher Verwendung muss der 5. Schritt für eine weitere Verbindung wiederholt werden.

B. Skript

Das Tutorial als Skript implementiert (Ändern Sie die IP für die Verwendung mit dem USB-Kabel ODER löschen Sie sie und kommentieren Sie die mit Wi-Fi zu verwendende Leitung aus).

#!/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, das x11vnc -clip 1280x1024+0+0kann durch ersetzt werden x11vnc -clip xinerama1. Dies --left-of LVDS1ist auch nicht unbedingt erforderlich, wenn Sie später die MonitorsEinstellungs-App verwenden möchten, um den zusätzlichen Monitor an einem beliebigen Ort zu positionieren.
LeoRochael

6
xrandr: cannot find output "VIRTUAL1"wurde zurückgegeben, als ich Nummer 3 eintippte. Irgendwelche Ideen?
dat tutbrus

3
xrandr: cannot find output "VIRTUAL1"zurückgekehrt vonxrandr --addmode VIRTUAL1 1280x800_60.00
Tooniis

Dies funktioniert, mit der Ausnahme, dass Sie einen nicht verwendeten Ausgang haben müssen, der für den Zielvideomodus geeignet ist, damit dies funktioniert. VIRTUAL1scheint ein Platzhalter für eine solche Ausgabe zu sein, nicht etwas, was in einem typischen System vorhanden ist.
Ruslan

1
@cprn Ja, Sie können den Mauszeiger freigeben und Fenster ziehen. Es ist, als ob Sie einen zweiten Monitor angeschlossen hätten
Elijas

13
  1. Installieren Sie vnc4serverund x2x.
  2. Richten Sie dann eine .vnc/xstartupKonfigurationsdatei ein. Meins sieht so aus

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

    Es startet den Gnome-Fallback-Desktop (ich weiß nicht, wie man Gnome 3 in vnc startet).

  3. Verwenden Sie zum Starten von vnc server den vnc4server -geometry 800x480Befehl. Anstelle von 800x480 müssen Sie natürlich die Auflösung Ihres Tablets einstellen.
  4. Starten Sie x2x -east -to :1. Dieser Befehl besagt, dass Ihr Computer sich so verhält, als wäre die Anzeige: 1 rechts auf dem Bildschirm (verwenden -westSie die Option, wenn Sie möchten, dass sie links angezeigt wird ). Sie können Apps nicht von einem Bildschirm auf einen anderen verschieben, aber Sie können beide mit einer Maus und einer Tastatur steuern.
  5. Stellen Sie eine Verbindung zu dem mit vnc4serverIhrem Tablet erstellten Display her (die Portnummer lautet 5900 + Displaynummer (z. B. für das Display: 1 Portnummer lautet 5901) (die Displaynummer wird in der vnc4serverAusgabe des Tablets angezeigt ).
  6. Zum Verlassen x2xdrücken Sie Ctrl-C. Alternativ können Sie es auch im Hintergrund starten ( x2x -east -to :1 &). Dann müssen Sie es zuerst in den Vordergrund verschieben ( fg) oder mit beenden kill $!(Vorsicht, der letzte im Hintergrund gestartete Vorgang wird abgebrochen).
  7. Rufen Sie an vnc4server -kill :1, um die erstellte Anzeige zu entfernen , und :1legen Sie stattdessen die Nummer der neuen Anzeige fest.

1
Danke für x2x ... Warum erwähnt es sonst niemand im gesamten Internet ??? Hat mir viel Zeit gespart. Synergy erfordert Cyanogenmod oder ähnliches auf Ihrem Tablet. Auch niemand erwähnt es.
Stefanos Kalantzis

1
Ich weiß schon x2x, finde diesen Beitrag, indem du nach x2x android auf google suchst ... Aber +1 für .vnc/xstartup, besonders für unset DBUS_SESSION_BUS_ADDRESS!! Kleiner aber feiner und sehr nützlicher Beitrag, danke!
F. Hauri

7

Dies ist im Prinzip mit xdmx (Distributed Multihead X) möglich, mit dem Sie einen einzelnen Desktop mit zwei X-Servern erstellen können, die auf unterschiedlichen Computern ausgeführt werden.

Grundsätzlich sind drei Szenarien möglich, aber keines ist so nahtlos wie iDisplay, da alle mindestens einen Neustart Ihrer X-Sitzung erfordern. Ich war nicht in der Lage, beide Funktionen perfekt zu nutzen, aber ich verwende Ubuntu 10.10 und kann aus verschiedenen Gründen kein Upgrade durchführen. Die drei sind:

1: Führen Sie einen X-Server auf Android aus (es gibt zwei im App Store) und kombinieren Sie xdmx mit Ihrem Desktop- oder Laptop-Display. - hat bei mir nicht funktioniert, weil xdmx abgestürzt ist, als der Zeiger auf den Tablet-Teil des Desktops verschoben wurde.

2: Führen Sie einen zweiten X-Server mit vnc-Backend auf Ihrem Computer aus, kombinieren Sie diesen mit xdmx zu einem Desktop mit Ihrem Computerbildschirm, und sehen Sie sich dann den virtuellen Teil mit einem vnc-Viewer auf dem Tablet an - hat bei mir nicht funktioniert, weil xdmx erfordert, dass alle x-server die gleichen visuellen farben haben, was für den vncserver und das reale display nicht der fall ist, und ich war nicht in der lage, vncserver zum wechseln zu überreden.

3: Führen Sie zwei vncserver aus, einen für jeden Bildschirm, verbinden Sie sie mit xdmx und sehen Sie sich jeden Teil mit einem vncviewer auf dem jeweiligen Computer an. - Dies kam der Arbeit bei mir am nächsten, leider war der Eingang durcheinander. Es war auch ziemlich langsam in Echtfarben über WLAN. Ich habe dieses Skript verwendet, um xdmx und die vncs zu starten:

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

Ich habe ein einfaches Bash-Skript erstellt, um aus einem Tablet eine zweite Anzeige zu machen. Kopiere ipad_monitor.sh(keine Sorge. Es funktioniert auch mit Android) in meinen Blog-Beitrag .

Der Unterschied zum anderen Beitrag besteht darin, dass Sie die Position des zweiten Bildschirms mit zusätzlichen Argumenten sehr einfach festlegen können.

Edit: Ich habe das Original ipad_monitor.shhier aufgenommen. Führen Sie diesen Befehl wie folgt aus:

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

Die Grundidee dieses Skripts ist die gleiche wie andere, Laufen xrandrund x11vncaber ich inklusive Optionen wie welche Seite Sie den Bildschirm befestigen möchten.

#!/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
Haben Sie einen Namen für das Skript / die App oder einen alternativen Link, den Sie posten können, um ein Verrotten des Links zu vermeiden? Hier versuchen wir im Allgemeinen, so eigenständig wie möglich zu sein, um nicht darauf angewiesen zu sein, dass andere Websites in Betrieb bleiben, insbesondere, wenn diese Websites den Großteil der Informationen enthalten, die für eine Antwort relevant wären, bei der diese Informationen nicht tatsächlich in die Antwort übernommen werden .
Sbergeron

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier einzuschließen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verlinkte Seite ändert. - Aus der Bewertung
anonymous2

2
@sbergeron ich verstehe. Ich füge hier den Originalcode ein.
Bumsik Kim

1
@ anonymous2 Du hast recht. Ich habe den Bash-Code hier eingefügt.
Bumsik Kim

Ah, viel besser. Ich denke, das sollte so bleiben können.
anonymous2

2

Ich benutze den xorg Dummy-Treiber und den x11vnc-Clip. Der Mauszeiger steckt nicht am Rand.

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

Auf dem /etc/X11/xorg.confzweiten Bildschirm befindet sich der Treiber für den Dummy:

Abschnitt "Gerät"
        Kennung "Konfiguriertes Videogerät"
    Treiber "radeon" #ÄNDERN SIE DIESES
EndSection

Abschnitt "Monitor"
        Kennung "Konfigurierter Monitor"
EndSection

Abschnitt "Bildschirm"
        Kennung "Standardbildschirm"
        Monitor "Konfigurierter Monitor"
        Gerät "Konfiguriertes Videogerät"
EndSection


## Xdummy: ##
Abschnitt "Gerät"
  Kennung "Videocard0"
  Treiber "Dummy"
  #VideoRam 4096000
  VideoRam 256000
EndSection

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

## Xdummy: ##
Abschnitt "Bildschirm"
  Kennung "Screen0"
  Gerät "Videocard0"
  Monitor "Monitor0"
EndSection



Abschnitt "ServerLayout"
  Kennung "dummy_layout"
  Bildschirm 0 "Standardbildschirm"
  Screen 1 "screen0" rechts von "Default Screen"
    Option "Xinerama" "1"
EndSection

Dann melden Sie sich bei der X-Sitzung an und führen Sie Folgendes aus:

x11vnc -clip 1024x768+1280+0

Wie kann man das ohne xorg.conf machen? Wenn ich eine auf meinem Computer erstelle, ist meine Grafik völlig durcheinander.
Daboross

Wird Xinerama weiterhin unterstützt? Wie wäre es mit xrandr?
Gringo Suave

1

Diese Anweisungen dienen zum Erstellen eines "zusätzlichen" Bildschirms für Ihren Linux-Computer mit einem Tablet oder einem beliebigen Computer über einen VNC-Client.

Ich habe diese Schritte in Mageia3 32Bit gemacht (habe 64bit nicht ausprobiert), sollte aber auch für andere Distributionen (zB Ubuntu) ähnlich sein.

Stellen Sie sicher, dass Sie über alle erforderlichen Pakete mit dem folgenden Terminalbefehl verfügen:

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

Wenn Sie alle oben genannten Pakete haben, geben Sie die folgenden Befehle ein:

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

Wenn Sie keine Fehler bekommen, patchen Sie Xdmx (einfach ausgedrückt, es ist seit einiger Zeit "kaputt"):

öffne /usr/share/x11-server-sources/hw/dmx/input/dmxevents.cund ändere Zeile 730: ändere dies:

POINTER_ABSOLUTE | POINTER_SCREEN, &mask);

dazu:

POINTER_RELATIVE | POINTER_DESKTOP, &mask);

WENN Zeile 730 anders ist, verwenden Sie diesen Abschnitt, um die richtige Zeile zu finden: Orginalabschnitt - zu ändernde Zeile markiert mit *

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

Überprüfen Sie Ihre Version von Xdmx , indem Sie ./configure --versionin /usr/share/x11-server-source/, für Xdmx 1.13 und älter Sie auch diese Änderungen vornehmen müssen (für 1.14 und neuere können Sie auf der „make“ Schritt unten überspringen):

open /usr/share/x11-server-sources/dix/getevents.c, line 1395: ändere dies:

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

Dazu:

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

(Originalabschnitt - zu ändernde Zeile mit * gekennzeichnet)

    /* 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, Zeile 311: Ändere dies:

flags = POINTER_ABSOLUTE | POINTER_SCREEN;

dazu:

flags = POINTER_ABSOLUTE | POINTER_DESKTOP;

(Originalabschnitt - zu ändernde Zeile mit * gekennzeichnet)

       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, Zeile 73: Fügen Sie diese Zeile nach der folgenden Zeile ein #define POINTER_EMULATED:

#define POINTER_DESKTOP         (1 << 7)

Nachdem Sie die obigen Änderungen vorgenommen haben, führen Sie erneut (in /usr/share/x11-server-sources/) aus:

make

Sie sollten eine neue Xdmx-Datei in haben /usr/share/x11-server-sources/hw/dmx/. Wir müssen das aus Gründen der Einfachheit global installieren, daher empfehle ich, Ihr vorhandenes umzubenennen:

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

und kopiere das neue stattdessen:

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

Mit den folgenden Befehlen können Sie Ihre Haupt- / vorhandene Anzeige ( :0) weiterhin ausführen und eine neue Anzeige mit Unterstützung für mehrere Monitore öffnen. Ich verwende icewm mit diesen Befehlen, um es ein wenig leichter zu machen (ich verwende KDE auf meinem Hauptdisplay :0und öffne jede Anwendung mit großem Multi-Monitor auf dem neuen Multi-Head-Display). Sie können diese Befehle zur Vereinfachung der Verwendung mit einem Skript versehen (wie ich es getan habe). - Jeder dieser Befehle kann auf der Konsole und / oder im Terminalfenster einer beliebigen Anzeige ausgeführt werden. Die einzige Voraussetzung ist, dass sie in der richtigen Reihenfolge ausgeführt werden.

Dieser Befehl erstellt Ihre neue Anzeige als Bildspeicher für Ihre VNC-Anzeige :2(passen Sie die Bildschirmgröße wie gewünscht an):

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

Dies startet eine neue Lightweight-X-Sitzung auf Ihrem physischen Bildschirm als Anzeige :1(es gibt verschiedene Möglichkeiten, dies zu tun):

startx 'icewm' -- :1

Dieser Befehl startet die Mehrfachanzeige zwischen Ihrem physischen Bildschirm und dem virtuellen Bildschirm und startet icewm für den Fenstermanager:

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

Öffnen Sie nun ein Terminalfenster und starten Sie den vnc-Server (ändern Sie das Passwort wie gewünscht):

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

Jetzt müssen Sie nur noch Ihren VNC-Client starten und eine Verbindung zu Ihrem VNC herstellen. Möglicherweise müssen Sie Ihre Firewall für Port 5900 deaktivieren oder eine Ausnahme hinzufügen, damit Sie eine Verbindung herstellen können. Beachten Sie auch, dass einige VNC-Clients die Position des Remote-Cursors nicht anzeigen. Ich bestätige, dass "Mocha VNC" für iOS hervorragend funktioniert, wenn Sie die Option "Lokale Maus" deaktivieren.

Genießen Sie das Ziehen von Fenstern zwischen Ihrem Hauptmonitor und Ihrem neuen virtuellen zweiten Monitor (und können Sie mit dem Tablet auch auf dem zweiten Monitor klicken / etwas eingeben).

Um Xdmx zu schließen, drücken Sie zweimal Ctrl+ Alt+ Backspace.

Automatisierung:

Ich benutze dieses Bash-Skript, um den gesamten Prozess zu starten (beendet auch Xvfb beim Beenden):

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

Dann habe ich eine benutzerdefinierte ~/.xinitrcDatei mit diesem:

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

Fehlerbehebung:

  • Wenn beim Ausführen von Xdmx die Fehlermeldung sh: /usr/local/bin/xkbcomp: No such file or directoryangezeigt wird, dass Sie möglicherweise cd /usr/local/bin" and "ln -s /bin/xkbcompFolgendes ausführen müssen :, versuchen Sie es erneut mit Xdmx.

  • Ctrl+ Alt+ F1Durch F7sollte in Xdmx arbeiten zu anderen Konsolen / xsessions zu wechseln , aber aus irgendeinem Grunde nicht funktioniert, was ich tue , ist einfach auszuführen sudo chvt X(wobei X eine Konsole / xsession Zahl ist) zu meiner Hauptanzeige zu wechseln. Auch wenn Sie zurück zu Xdmx wechseln, kann es bei geöffneten Fenstern zu Problemen beim Zeichnen kommen. Ich klicke einfach auf die Taskleiste, um das Fenster auszublenden / wieder einzublenden und ein Neuzeichnen zu erzwingen.


0

Vielen Dank für das Tutorial Jungs, ich werde teilen, was für mich auf Ubuntu 14.04 gearbeitet hat

Holen Sie sich AndroidVNC hier für Ihr Tablet

Holen Sie sich x11vnc für Ihren Ubuntu-PC, indem Sie es ausführen

sudo apt-get install x11vnc

Ich musste die Xorg-Dummy-Treibermethode verwenden. So sieht meine Datei /etc/X11/xorg.conf aus:

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**

Wahrscheinlich brauchen Sie dort nicht alles. Führen Sie einfach X -configure aus, um Ihr System automatisch zu konfigurieren, und fügen Sie die Dummy-Abschnitte (Zeug zwischen den Sternchen) zu Ihrer Datei hinzu. Die Auflösung für den Dummy-Bildschirm in xorg.conf sollte die Breite Ihres Hauptmonitors + die Breite Ihrer Tablet-Auflösung sein, in meinem Fall 1680 + 1024 = 2704. Behalten Sie Ihre Höhe des Hauptmonitors bei, in meinem Fall 1050. Starten Sie den X-Server neu / Neustarten / Ziehen Sie den Netzstecker, was auch immer steht dir besser :).

Führen Sie dabei x11vnc aus

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

Hier sollte die Auflösung Ihre Tablettbreite x Tabletthöhe + Hauptdisplaybreite + 0 sein

Stellen Sie über den androidVNC-Client eine Verbindung zu Ihrem PC her, und aktivieren Sie die Option localmouse. Das sollte es sein, jetzt fühle die Seltsamkeit, Linux über Android laufen zu lassen :)


0

Ich hatte viele Probleme mit den anderen hier aufgeführten Techniken. Ich wünschte, ich hätte eine bessere Lösung, aber meine langsame und einfache Lösung ist ein guter Ausgangspunkt.

Für den VNC-Server habe ich das vncserverPaket ausprobiert , aber der Bildschirm wurde schwarz und ich musste neu starten gdm, damit alles wieder funktioniert. Ich wechselte zu tightvncserverund es funktionierte das erste Mal ohne Konfiguration.

Um die Maus / Tastatur zwischen den Bildschirmen zu teilen, habe ich x2vnc verwendet . Dies kann auch mit win2vnc verwendet werden , um die Maus / Tastatur mit einem Windows-PC neben Ihrem Linux-PC zu teilen.

Letzte Befehle:

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

Zu diesem Zeitpunkt sollten Sie in der Lage sein, den zweiten Bildschirm in einem VNC-Programm zu öffnen, indem Sie eine Verbindung zu herstellen YOUR_IP_ADDRESS:1. Um ein Programm auf dem VNC-Bildschirm zu starten, öffnen Sie ein Terminal, legen Sie fest DISPLAYund führen Sie den Befehl aus. xtermFühren Sie zum Öffnen auf dem VNC-Bildschirm beispielsweise Folgendes aus:

export DISPLAY=:1
xterm

Mit diesem Ansatz ist der zweite Bildschirm ziemlich langsam. Trotzdem sind viele der anderen Optionen, die ich ausprobiert habe, in Sackgassen geraten, und diese funktionierten ohne jegliche Konfiguration.


0

Für alle, die sich noch über dieses Thema wundern: Der Clip xrandr und x11vnc funktioniert. Damit die Maus dorthin gelangen kann, müssen Sie das Panning-Argument verwenden, um den Mausverfolgungsbereich festzulegen:

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

Verwenden Sie dann beim Ausführen von xvnc Folgendes:

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

Dadurch wird VNC daran gehindert, eine eigene Cursor-Verfolgung zu verwenden, und der Cursor wird als Teil des Bildschirmbilds gezeichnet.

Ich habe hier Notizen gemacht 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 &

Klicken Sie jetzt einfach auf das Fenster, das Sie freigeben möchten.


VOLL :

Ich habe ein iPad und Chromebook , und ich möchte sie als meine Monitore verwenden, um nur einige Terminal - Befehle uso htop, iptstate, nmonusw. Also, ich bin faul und habe es geschafft mit:

  1. Paketinstallation: sudo apt-get install x11vnc
  2. Öffnen Sie ein Terminal und xwininfo | awk '/Window.id/{print $4}'klicken Sie in das Fenster, das Sie freigeben möchten. Die Ausgabe wird ungefähr so ​​aussehen:

    $ xwininfo | awk '/Window.id/{print $4}'
    0x4402f34
    
  3. Jetzt können Sie Ihre x11vncSitzung beginnen:

    $ x11vnc -viewonly -nopw -avahi -id 0x4402f34 >/dev/null 2>&1 &
    
  4. Ändern Sie die Größe des Fensters (0x4402f34), um das bestmögliche Bild zu erhalten.

Beachten Sie die zugehörigen Port Ihrer Sitzung : 5900 -> :0, 5901 -:1, 5902 -> :2...

Funktioniert außerdem gut mit X11-Apps: Firefox, OpenOffice usw.


0

Verwenden Sie vnc_virtual_display_linker

Das Tool richtet einen zweiten virtuellen Monitor für die Verbindung mit VNC ein, wie in vielen der vorherigen Antworten beschrieben. Es werden sogar Verbindungen von Android-Geräten über ein USB-Kabel unterstützt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.