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.c
und ä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 --version
in /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 :0
und ö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 ~/.xinitrc
Datei 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 directory
angezeigt wird, dass Sie möglicherweise cd /usr/local/bin" and "ln -s /bin/xkbcomp
Folgendes 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.