La fenêtre est masquée mais le processus est en cours d'exécution [fermé]

13

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?

userEng15
la source
Avez-vous compris cela? Cela m'arrive encore occasionnellement - on dirait qu'ils ont du mal à réparer celui-ci.
Jason Kleban
Je ne me souviens pas exactement. J'ai dû revenir aux fenêtres pendant un moment. Je pense que quelqu'un m'a dit dans le chat qu'il avait été corrigé sur la branche de développement à l'époque. Mais si vous dites que cela se produit toujours, alors le bug est toujours là ... Désolé de ne pas vous être utile.
userEng15
J'utilise xdotool, peut fonctionner. 'xdotool search -name hexchat', et 'xdotool windowactive theWindowId'
zayn

Réponses:

3

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.)

Brandon Rhodes
la source
3

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 hexchatsoit toujours réactif, essayez:

hexchat -e --command="gui show"

-e Ouvrir une URL ou exécuter une commande dans un HexChat existant

Les références:

user.dz
la source
1
Fonctionne parfaitement.
amar
1

Si le processus est simplement en arrière-plan, peut - être que cette réponse convient ici aussi:

Utilisez fgpour ramener le processus au premier plan.

Voir la réponse complète pour plus d'instructions.

j08lue
la source
1

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.

Daniel Alder
la source
0

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.

John H
la source