特定のPIDのウィンドウを復元するにはどうすればよいですか?特定のプログラムのウィンドウが消えるような状況で役立ちます(時々私に起こります)。
たとえば、hexchatを閉じようとするたびに、確認のためのダイアログが表示されます。[キャンセル]をクリックすると、ウィンドウは消えますが、プロセスはバックグラウンドで実行され続けます。(idをpgrepできます)。
PIDを知っていれば、ウィンドウを復元することは可能ですか?
特定のPIDのウィンドウを復元するにはどうすればよいですか?特定のプログラムのウィンドウが消えるような状況で役立ちます(時々私に起こります)。
たとえば、hexchatを閉じようとするたびに、確認のためのダイアログが表示されます。[キャンセル]をクリックすると、ウィンドウは消えますが、プロセスはバックグラウンドで実行され続けます。(idをpgrepできます)。
PIDを知っていれば、ウィンドウを復元することは可能ですか?
回答:
残念ながら、いいえ—通常、X Windowsアプリケーションが接続を失い、ウィンドウが破壊された場合、ウィンドウシステムに再接続する方法はありません。通常、ウィンドウはプログラム自体にバグがある場合にのみ消えます。この場合、プロセスはおそらくそれを知らずにハング状態になり、ウィンドウが消えたことに気付かないため発生しないI / Oを待機します。 。
アプリケーションが非常にまれなデザインであり、Xサーバーに再接続するか、新しいウィンドウを再構築するための特別な信号またはメッセージを送信できるようにする場合、またはアイコンまたはドッキングアイコンとして画面のどこかに存在しない限り、そのように対話できるため、プログラムのプロセスを強制終了するだけで、再起動する必要があります。
プロセスを終了せずに最後のウィンドウを閉じる動作は一般にバグであり、アプリケーションについてアップストリームに報告できます。
(注:最後のウィンドウが閉じられても実行中のプロセスを保持するWebブラウザーなど、まれな例外がありますが、その場合、ブラウザーのアイコンを再クリックするか、コマンドラインから再実行すると、既に実行されていることがわかります新しいウィンドウを開くプロセス。これも機能する場合は、一時的なウィンドウレスを処理するためにアプリを特別に作成する必要があります。
Brandon Rhodesが説明したように、ウィンドウが親プロセスによって破壊/隠された場合、プロセスまたはアプリケーション自体の外部からウィンドウを回復/再作成/表示する方法はありません。
ウィンドウマネージャから確認できます:try wmctrl -l -p
:、そのPIDに関連するウィンドウは表示されません。
だから、それhexchat
はまだ反応する可能性があります、試してください:
hexchat -e --command="gui show"
-e
既存のHexChatでURLを開くか、コマンドを実行します
参照:
man hexchat
man wmctrl
hexchatはわかりませんが、プログラムでトレイアイコンを使用すると、メインウィンドウに戻ることができます。残念ながら、Linuxには複数のトレイが実装されており、それらのすべてが連携して動作するわけではありません。
Xubuntu 14.04へのアップデート後、RadioTrayプログラムでこのような問題が発生しなくなりました。ソリューションはそれを再構成していました(ファイル〜/ .local / share / radiotray / config.xmlには、オプション 'gui_engine'に3つの値 'appindicator'、 'systray'および 'chooser'がありました)。
それでも解決しない場合は、アプリケーションのオプション/設定を確認してください。おそらく「トレイに最小化」オプションがあります。無効にして、もう一度ウィンドウを閉じてみてください。