窗口是隐藏的,但进程正在运行[关闭]


13

如何还原给定PID的Windows?在某些程序的窗口消失的情况下(有时对我而言),这将很有用。

例如,每次我要关闭十六进制聊天时,都会显示一个确认对话框。如果我单击“取消”,则该窗口仍然消失,但是该过程继续在后台运行。(我可以pgrep它的id)。

如果知道pid,是否可以还原窗口?


你知道了吗?我还是偶尔会遇到这种情况-好像他们在解决此问题时遇到了麻烦。
杰森·克莱班

我不记得了。不得不回到窗户一会儿。我认为有人在聊天中告诉我,它当时已固定在开发分支上。但是,如果您说它仍然会发生,那么该错误仍然存​​在...很抱歉没有任何帮助。
userEng15 2014年

我使用xdotool,可以工作。'xdotool搜索-name hexchat'和'xdotool windowactivate theWindowId'
zayn

Answers:


3

不幸的是,没有-如果X Windows应用程序失去连接并且其窗口被破坏,则通常无法使它重新连接到窗口系统。通常,只有在程序本身存在错误时,窗口才会消失–在这种情况下,该进程可能处于挂起状态而不知道它,等待不会发生的I / O,因为它没有意识到其窗口已消失。

除非应用程序的设计非常罕见,除非您允许它向其发送特殊信号或消息以重新连接到X服务器,或者重建一个新窗口,或者除非它仍在屏幕上以图标或固定图标的形式出现,并且您可以通过这种方式与其交互,则必须简单地终止程序的进程,而必须重新启动它。

关闭其最后一个窗口而不退出进程的行为通常是一个错误,您可以向上游报告有关该应用程序的错误。

(注意:很少有例外,例如网络浏览器即使关闭了最后一个窗口也会保持运行状态,但是在这种情况下,重新单击浏览器的图标或从命令行重新运行它只会告诉已经运行的图标打开新窗口的过程。再次,必须专门编写一个应用程序来处理暂时的无窗口现象。)


3

正如Brandon Rhodes解释的那样,如果窗口被其父进程破坏/隐藏,则无法从进程或应用程序本身之外恢复/重新创建/显示该窗口。

您可以从窗口管理器确认,尝试:wmctrl -l -p,没有列出与其PID相关的窗口。

因此,可能hexchat仍然响应,请尝试:

hexchat -e --command="gui show"

-e 在现有的HexChat中打开URL或执行命令

参考文献:


1
工作完美。
2015年

1

如果该过程只是在后台运行,那么此答案也可能适合以下情况:

使用fg使处理返回至前台。

有关更多说明,请参见完整答案。


1

我不知道hexchat,但是该程序可能使用了托盘图标,这使得返回主窗口成为可能。不幸的是,Linux上有多个托盘实现,并且并不是所有的协同工作。

我对RadioTray程序有这样的问题,该程序在更新到Xubuntu 14.04之后不再显示。解决方案是重新配置它(文件〜/ .local / share / radiotray / config.xml具有选项'gui_engine',带有3个可能的值'appindicator','systray'和'chooser')。

如果这样做没有帮助,请尝试检查应用程序的选项/首选项。可能会找到“最小化到托盘”选项。禁用它,然后尝试再次关闭该窗口。


0

您可以尝试按Ctrl + Alt + Del,然后结束该过程。希望这可以帮助。当Ubuntu中的程序死机或对我来说很有趣时,我就是这样做的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.