Befehlszeilenmethode zum Senden von Tastatureingaben an ein Fenster, das in einer anderen X-Sitzung geöffnet ist

13968
Sanjay Manohar

Auf meinem Hauptcomputer habe ich einen Ubuntu-Desktop geöffnet und angemeldet. Ich melde mich dann auch von einem entfernten Computer aus an diesem Computer an. Mit X2go wird eine neue X-Sitzung erstellt. Ich habe eine libreoffice-Datei in der ursprünglichen Sitzung geöffnet . Ich möchte diese Datei speichern und schließen - aber vom entfernten Rechner aus! (Bei beiden Sitzungen ist derselbe Benutzer angemeldet; bei Bedarf kann ich sudo verwenden.)

Ich habe versucht es zu benutzen, xdotool searchaber das Fenster kann nicht gefunden werden. Gibt es eine Möglichkeit zu tun, was ich von dieser zweiten Sitzung will? Ich kann den Prozess mit sehen, ps -A ich kann sogar die geöffnete Datei mit sehen lsof! Wie mache ich ein "Speichern und Schließen"?

10
Sie könnten den Prozess einfach beenden - wenn Sie keine gravierenden, nicht gespeicherten Änderungen vorgenommen haben, wäre dies einfach. Wenn Sie dies tun, sollte es dennoch versuchen, das Dokument beim nächsten Öffnen wiederherzustellen. Wayne Werner vor 11 Jahren 2
Das stimmt, @wayne, es würde wahrscheinlich autorecover sein ... Danke für den Vorschlag. Nicht sicher, ob ich diese Chance trotzdem nutzen wollte! Keine Möglichkeit, Tastendrücke (oder andere direkte Nachrichten) zu senden? Das hört sich so einfach an. Sanjay Manohar vor 11 Jahren 0
Ich bin mir sicher, dass es Wege gibt - ich bin mir dessen nicht bewusst. Bei einigen komplizierten Anwendungen müssen Sie einen einfachen VNC-Client installieren und "DISPLAY =: 0" (oder wie auch immer Ihr anderes Konto angezeigt wird) einstellen. Starten Sie dann den Server und rufen Sie den Client auf. Aber das könnte übertrieben sein. LibreOffice hat möglicherweise ein Nachrichtenprotokoll. Ich bin nicht besonders gut damit vertraut, da ich entweder Google Docs oder Nur-Text-Dateien in Vim (einschließlich LaTex) verwende. Wayne Werner vor 11 Jahren 0
Verwenden Sie VNC, um von einem anderen Ort auf das Hauptfenster zuzugreifen Olivier Dulac vor 11 Jahren 0
xdotool wird auf dem aktuellen $ DISPLAY-Wert der Sitzung ausgeführt. Sie können ssh auf jedem Rechner oder vncserver ausführen und xdotool darauf ausführen. Wenn Sie beispielsweise einen VNC-Server auf dem Port 5901 ausführen, wird Folgendes verwendet: 1 Bildschirm nach Konvention. Führen Sie also `DISPLAY: 1` aus, starten Sie dann ein beliebiges X-Programm (xeyes for test) und würden Sie es unter VNC ausführen. Gleiches gilt für Remote-VNC-Server. SSH in die Maschine, dann führen Sie den Export DISPLAY: 1 aus, bevor Sie sie verwenden. erm3nda vor 9 Jahren 1

2 Antworten auf die Frage

9
mr.spuratic

Unter der Annahme der Standardkonfiguration würde xdpyinfo auf "original" eine Anzeige von ": 0.0" anzeigen, z

xdpyinfo | grep name 

Wenn Ihre DISPLAY-Umgebungsvariable für "x2go" ": 1.0" ist, sollte dies der Fall sein.

Von einem Terminal auf "x2go" Versuchen Sie, die Fenster-ID zu finden:

DISPLAY=:0.0 xwininfo -root -tree | grep Writer 

Es ist möglich, dass die Zugriffskontrolle so eingerichtet ist, dass sie nicht funktioniert, aber ich denke, wenn Sie dieselbe Benutzer-ID auf demselben Host haben (dh Zugriff auf ~ / .Xauthority). Überprüfen Sie die "xauth list" -Ausgabe, wenn kein Zugriff möglich ist.

Wenn es funktioniert, verwenden Sie Ihr Lieblingswerkzeug, um es zu steuern. Fügen Sie "-int" zu der oben genannten xwininfo hinzu, um die Fenster-ID in Dezimalzahl zu drucken, falls Ihr Tool dies erfordert.

export DISPLAY=:0.0 xdotool windowactivate 0x15a18918 xdotool windowfocus 0x15a18918 xdotool key "ctrl+s" xdotool key "ctrl+q" 

oder Sie könnten mit diesen anstelle von "Strg + S" / "Strg + Q" mehr Glück haben

xdotool key "meta+f" "s" xdotool key "meta+f" "c" xdotool key "meta+f" "x" 

Möglicherweise benötigen Sie "alt +" anstelle von "meta +". Ich habe keine Standard-Meta / alt / super-Zuordnungen. Meta arbeitet für mich, getestet mit einem Xnest. Ich gehe davon aus, dass das englische Menülayout und die Beschleuniger unverändert bleiben.

Möglicherweise gibt es ein Popup auf Ihrem Weg. In diesem Fall ist es einen Versuch wert:

xdotool key "Escape" 

ein paar Mal, dann das Speichern und Schließen erneut versuchen. Denken Sie daran, dass xdotool den genauen Fall von "Schlüsselnamen" pikiert.

Sie sollten dies alles versuchen können, indem Sie libreoffice unter x2go starten und Ihr DISPLAY NICHT ändern. Sie sollten die Befehle in einer Shell-Skriptdatei speichern, damit Sie nicht durch Änderungen im Fokus beeinträchtigt werden.

lsof sollte zeigen, dass die Datei nicht mehr geöffnet ist, wenn es funktioniert hat :-)

Funktioniert perfekt - danke! Sanjay Manohar vor 10 Jahren 0
Vielen Dank für den Hinweis `xdotool key" Escape "` über Namen, aber keine langen Namen ausprobiert: D erm3nda vor 9 Jahren 0
1
Joshua K

Es sieht so aus, als gäbe es einige mögliche Anforderungen. Anscheinend muss sich der Host in der xhosts-Datei befinden (er wurde als Antwort markiert) und der entsprechende DISPLAY-Wert wird exportiert. Dieser Beitrag hier soll Ihnen helfen, es so zu machen, wie Sie es wollten, und xdotool kann das entfernte x11-Fenster finden .