Fenster ist ausgeblendet, aber der Prozess läuft [geschlossen]

13

Wie kann ich die Fenster für eine bestimmte PID wiederherstellen? Es wäre in einigen Situationen nützlich, in denen das Fenster eines bestimmten Programms verschwindet (passiert mir manchmal).

Beispielsweise wird jedes Mal, wenn ich Hexchat schließen möchte, ein Dialogfeld zur Bestätigung angezeigt. Wenn ich auf Abbrechen klicke, ist das Fenster trotzdem verschwunden, aber der Prozess läuft im Hintergrund weiter. (Ich kann es pgrep es ist id).

Kann ich das Fenster wiederherstellen, wenn ich die pid kenne?

userEng15
quelle
Hast du das herausgefunden? Das passiert mir immer noch gelegentlich - es sieht so aus, als hätten sie Probleme, dieses Problem zu beheben.
Jason Kleban
Ich erinnere mich nicht genau. Musste für eine Weile zu den Fenstern zurückkehren. Ich glaube, jemand hat mir im Chat erzählt, dass es zu der Zeit in der Entwicklungsabteilung behoben worden war. Aber wenn du sagst, dass es immer noch passiert, dann ist der Fehler immer noch da ... Es tut mir leid, dass ich dir nicht weiterhelfen kann.
UserEng15
Ich benutze xdotool, kann funktionieren. 'xdotool Suche -Name hexchat' und 'xdotool WindowActivate theWindowId'
zayn

Antworten:

3

Leider nein - es gibt im Allgemeinen keine Möglichkeit, eine X Windows-Anwendung dazu zu bringen, die Verbindung zum Fenstersystem wiederherzustellen, wenn die Verbindung unterbrochen und das Fenster zerstört wird. Und Fenster verschwinden im Allgemeinen nur, wenn das Programm selbst einen Fehler enthält. In diesem Fall hängt der Prozess wahrscheinlich, ohne es zu wissen, und wartet auf die E / A, die niemals stattfinden wird, da nicht erkannt wird, dass das Fenster verschwunden ist .

Es sei denn, die Anwendung weist ein sehr seltenes Design auf und ermöglicht es Ihnen, ein spezielles Signal oder eine Nachricht zu senden, um die Verbindung zum X-Server wiederherzustellen oder ein neues Fenster zu erstellen, oder es ist auf dem Bildschirm noch irgendwo als Symbol oder angedocktes Symbol und Sie vorhanden Wenn Sie auf diese Weise mit dem Programm interagieren können, muss der Programmprozess einfach abgebrochen und neu gestartet werden.

Das Schließen des letzten Fensters ohne Beenden des Prozesses ist im Allgemeinen ein Fehler, den Sie im Upstream über die Anwendung melden können.

(Hinweis: Es gibt seltene Ausnahmen, wie z. B. Webbrowser, die einen laufenden Prozess beibehalten, selbst wenn das letzte Fenster geschlossen wird. In diesen Fällen wird durch erneutes Klicken auf das Browsersymbol oder das erneute Ausführen über die Befehlszeile lediglich der bereits laufende Vorgang angezeigt Prozess zum Öffnen eines neuen Fensters. Auch hier muss eine App speziell für die vorübergehende Fensterlosigkeit geschrieben werden, wenn dies funktionieren soll.)

Brandon Rhodes
quelle
3

Wie Brandon Rhodes erklärte, ist es nicht möglich, das Fenster außerhalb des Prozesses oder der Anwendung selbst wiederherzustellen, neu zu erstellen oder anzuzeigen, wenn es durch den übergeordneten Prozess zerstört oder ausgeblendet wird.

Sie können über den Fenstermanager Folgendes bestätigen: Es wmctrl -l -pwird kein Fenster aufgelistet, das mit der PID zusammenhängt.

Also, es ist möglich, dass hexchatnoch reagiert, versuchen Sie:

hexchat -e --command="gui show"

-e URL öffnen oder Befehl in einem vorhandenen HexChat ausführen

Verweise:

user.dz
quelle
1
Hat perfekt funktioniert.
Amar
1

Wenn der Prozess einfach im Hintergrund ist, passt diese Antwort vielleicht auch hierher:

Verwenden Sie fg, um den Vorgang wieder in den Vordergrund zu bringen.

Weitere Anweisungen finden Sie in der vollständigen Antwort.

j08lue
quelle
1

Ich kenne Hexchat nicht, aber möglicherweise verwendet das Programm ein Taskleistensymbol, mit dem das Hauptfenster wieder geöffnet werden kann. Leider gibt es unter Linux mehrere Trays und nicht alle funktionieren zusammen.

Ich hatte so ein Problem mit dem Programm RadioTray, das nach dem Update auf Xubuntu 14.04 nicht mehr auftauchte. Die Lösung hat es neu konfiguriert (die Datei ~ / .local / share / radiotray / config.xml hatte die Option 'gui_engine' mit den 3 möglichen Werten 'appindicator', 'systray' und 'chooser').

Wenn dies nicht hilft, versuchen Sie, die Optionen / Einstellungen Ihrer Anwendung zu überprüfen. Möglicherweise finden Sie eine Option 'In Ablage minimieren'. Deaktivieren Sie es und schließen Sie das Fenster erneut.

Daniel Alder
quelle
0

Sie können Strg + Alt + Entf versuchen und dann den Vorgang beenden. Hoffe das hilft. Dies ist, was ich mache, wenn ein Programm in Ubuntu einfriert oder sich für mich komisch verhält.

John H
quelle