如何还原给定PID的Windows?在某些程序的窗口消失的情况下(有时对我而言),这将很有用。
例如,每次我要关闭十六进制聊天时,都会显示一个确认对话框。如果我单击“取消”,则该窗口仍然消失,但是该过程继续在后台运行。(我可以pgrep它的id)。
如果知道pid,是否可以还原窗口?
如何还原给定PID的Windows?在某些程序的窗口消失的情况下(有时对我而言),这将很有用。
例如,每次我要关闭十六进制聊天时,都会显示一个确认对话框。如果我单击“取消”,则该窗口仍然消失,但是该过程继续在后台运行。(我可以pgrep它的id)。
如果知道pid,是否可以还原窗口?
Answers:
不幸的是,没有-如果X Windows应用程序失去连接并且其窗口被破坏,则通常无法使它重新连接到窗口系统。通常,只有在程序本身存在错误时,窗口才会消失–在这种情况下,该进程可能处于挂起状态而不知道它,等待不会发生的I / O,因为它没有意识到其窗口已消失。
除非应用程序的设计非常罕见,除非您允许它向其发送特殊信号或消息以重新连接到X服务器,或者重建一个新窗口,或者除非它仍在屏幕上以图标或固定图标的形式出现,并且您可以通过这种方式与其交互,则必须简单地终止程序的进程,而必须重新启动它。
关闭其最后一个窗口而不退出进程的行为通常是一个错误,您可以向上游报告有关该应用程序的错误。
(注意:很少有例外,例如网络浏览器即使关闭了最后一个窗口也会保持运行状态,但是在这种情况下,重新单击浏览器的图标或从命令行重新运行它只会告诉已经运行的图标打开新窗口的过程。再次,必须专门编写一个应用程序来处理暂时的无窗口现象。)
正如Brandon Rhodes解释的那样,如果窗口被其父进程破坏/隐藏,则无法从进程或应用程序本身之外恢复/重新创建/显示该窗口。
您可以从窗口管理器确认,尝试:wmctrl -l -p
,没有列出与其PID相关的窗口。
因此,可能hexchat
仍然响应,请尝试:
hexchat -e --command="gui show"
-e
在现有的HexChat中打开URL或执行命令
参考文献:
man hexchat
man wmctrl
我不知道hexchat,但是该程序可能使用了托盘图标,这使得返回主窗口成为可能。不幸的是,Linux上有多个托盘实现,并且并不是所有的协同工作。
我对RadioTray程序有这样的问题,该程序在更新到Xubuntu 14.04之后不再显示。解决方案是重新配置它(文件〜/ .local / share / radiotray / config.xml具有选项'gui_engine',带有3个可能的值'appindicator','systray'和'chooser')。
如果这样做没有帮助,请尝试检查应用程序的选项/首选项。可能会找到“最小化到托盘”选项。禁用它,然后尝试再次关闭该窗口。