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?
Antworten:
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.)
quelle
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 -p
wird kein Fenster aufgelistet, das mit der PID zusammenhängt.Also, es ist möglich, dass
hexchat
noch reagiert, versuchen Sie:-e
URL öffnen oder Befehl in einem vorhandenen HexChat ausführenVerweise:
man hexchat
man wmctrl
quelle
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.
quelle
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.
quelle
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.
quelle