Comment puis-je restaurer les fenêtres d'un pid donné? Cela serait utile dans certaines situations où la fenêtre d'un certain programme disparaît (cela m'arrive parfois).
Par exemple, chaque fois que je vais fermer hexchat, il affiche une boîte de dialogue pour confirmation. Si je clique sur Annuler, la fenêtre disparaît quand même, mais le processus continue de s'exécuter en arrière-plan. (Je peux pgrep c'est id).
Est-il possible de restaurer la fenêtre, étant donné que je connais le pid?
Réponses:
Malheureusement, non - il n'y a généralement aucun moyen d'obtenir une application X Windows pour se reconnecter au système de fenêtrage si elle perd sa connexion et que sa fenêtre est détruite. Et les fenêtres ne disparaissent généralement que s'il y a un bogue dans le programme lui-même - auquel cas le processus est probablement dans un état bloqué sans le savoir, attendant des E / S qui ne se produiront jamais car il ne se rend pas compte que sa fenêtre a disparu .
Sauf si l'application est d'une conception très rare et vous permet de lui envoyer un signal ou un message spécial pour vous reconnecter au serveur X, ou reconstruire une nouvelle fenêtre, ou à moins qu'elle ne soit toujours présente à l'écran quelque part sous forme d'icône ou d'icône ancrée et que vous peut interagir avec lui de cette façon, le processus du programme doit simplement être tué et vous devez le redémarrer.
Le comportement de fermeture de sa dernière fenêtre sans quitter le processus est généralement un bogue que vous pouvez signaler en amont sur l'application.
(Remarque: il existe de rares exceptions, comme les navigateurs Web qui maintiennent un processus en cours même une fois leur dernière fenêtre fermée - mais dans ces cas, le fait de re-cliquer sur l'icône du navigateur ou de le relancer à partir de la ligne de commande indique simplement au déjà en cours d'exécution pour ouvrir une nouvelle fenêtre. Encore une fois, une application doit être spécialement écrite pour gérer l'absence de fenêtre temporaire pour que cela fonctionne.)
la source
Comme l'a expliqué Brandon Rhodes, si la fenêtre est détruite / masquée par son processus parent, aucun moyen de la récupérer / recréer / afficher depuis l'extérieur du processus ou de l'application elle-même.
Vous pouvez confirmer à partir du gestionnaire de fenêtres, essayez
wmctrl -l -p
:, aucune fenêtre liée à son PID n'est répertoriée.Donc, il est possible que cela
hexchat
soit toujours réactif, essayez:-e
Ouvrir une URL ou exécuter une commande dans un HexChat existantLes références:
man hexchat
man wmctrl
la source
Si le processus est simplement en arrière-plan, peut - être que cette réponse convient ici aussi:
Utilisez
fg
pour ramener le processus au premier plan.Voir la réponse complète pour plus d'instructions.
la source
Je ne connais pas hexchat, mais le programme utilise peut-être une icône de plateau qui permet de récupérer la fenêtre principale. Malheureusement, il existe plusieurs implémentations de plateaux sur Linux et elles ne fonctionnent pas toutes ensemble.
J'ai eu un tel problème avec le programme RadioTray qui n'apparaissait plus après la mise à jour de Xubuntu 14.04. La solution la reconfigurait (le fichier ~ / .local / share / radiotray / config.xml avait l'option 'gui_engine' avec les 3 valeurs possibles 'appindicator', 'systray' et 'chooser').
Si cela ne vous aide pas, essayez de vérifier les options / préférences de votre application. Vous trouverez peut-être une option «Réduire au plateau». Désactivez-le et essayez de refermer la fenêtre.
la source
Vous pouvez essayer Ctrl + Alt + Suppr, puis terminer le processus. J'espère que cela t'aides. C'est ce que je fais quand un programme dans Ubuntu se fige ou me fait rire.
la source