주어진 pid에 대한 창을 어떻게 복원 할 수 있습니까? 특정 프로그램의 창이 사라지는 상황에서 유용합니다 (때로는 나에게 일어날 수 있음).
예를 들어 hexchat을 닫을 때마다 확인 대화 상자가 표시됩니다. 취소를 클릭하면 창이 사라지지만 프로세스는 백그라운드에서 계속 실행됩니다. (id pgrep 수 있습니다).
내가 pid를 알고 있다면 창을 복원 할 수 있습니까?
주어진 pid에 대한 창을 어떻게 복원 할 수 있습니까? 특정 프로그램의 창이 사라지는 상황에서 유용합니다 (때로는 나에게 일어날 수 있음).
예를 들어 hexchat을 닫을 때마다 확인 대화 상자가 표시됩니다. 취소를 클릭하면 창이 사라지지만 프로세스는 백그라운드에서 계속 실행됩니다. (id pgrep 수 있습니다).
내가 pid를 알고 있다면 창을 복원 할 수 있습니까?
답변:
불행히도, 아닙니다 — 일반적으로 X 윈도우 응용 프로그램이 윈도우 시스템에 연결이 끊어지고 창이 손상되면 다시 연결할 수있는 방법이 없습니다. 그리고 일반적으로 프로그램 자체에 버그가있는 경우에만 윈도우가 사라집니다.이 경우 프로세스는 모르는 상태에서 프로세스가 중단 된 상태 일 수 있습니다. .
응용 프로그램의 디자인이 매우 드문 경우가 아니면 X 서버에 다시 연결하거나 새 창을 다시 작성하기 위해 또는 아이콘 또는 도킹 된 아이콘으로 화면에 표시되지 않는 한 특별한 신호 또는 메시지를 보낼 수없는 경우 그런 식으로 상호 작용할 수 있으면 프로그램의 프로세스를 간단히 종료해야하며 다시 시작해야합니다.
프로세스를 종료하지 않고 마지막 창을 닫는 동작은 일반적으로 응용 프로그램에 대해 업스트림에보고 할 수있는 버그입니다.
(참고 : 마지막 창을 닫아도 실행중인 프로세스를 유지하는 웹 브라우저와 같은 드문 예외가 있습니다. 이러한 경우 브라우저 아이콘을 다시 클릭하거나 명령 줄에서 다시 실행하면 이미 실행 중임을 알려줍니다. 새 창을 열려면 프로세스를 다시 수행해야합니다. 다시 작동하려면 임시 창없는 상태를 처리 할 수 있도록 앱을 특별히 작성해야합니다.)
Brandon Rhodes가 설명했듯이, 창이 부모 프로세스에 의해 파괴 / 숨겨져 있으면 프로세스 나 응용 프로그램 외부에서 창을 복구 / 재 작성 / 표시 할 방법이 없습니다.
창 관리자에서 확인할 수 있습니다. wmctrl -l -p
, PID와 관련된 창이 표시되지 않습니다.
따라서 hexchat
여전히 반응이 좋을 수 있습니다.
hexchat -e --command="gui show"
-e
기존 HexChat에서 URL 열기 또는 명령 실행
참고 문헌 :
man hexchat
man wmctrl
hexchat을 모르지만 프로그램에서 트레이 아이콘을 사용하여 기본 창을 다시 가져올 수 있습니다. 불행히도, 리눅스에는 여러 개의 트레이 구현이 있으며 모두 함께 작동하지는 않습니다.
Xubuntu 14.04로 업데이트 한 후에 더 이상 표시되지 않는 RadioTray 프로그램과 같은 문제가있었습니다. 해결책은 재구성 중이었습니다 (~ / .local / share / radiotray / config.xml 파일에는 'appindicator', 'systray'및 'chooser'의 3 가지 가능한 값으로 'gui_engine'옵션이 있습니다).
그래도 문제가 해결되지 않으면 응용 프로그램의 옵션 / 기본 설정을 확인하십시오. 아마도 '트레이에 최소화'옵션이 있습니다. 비활성화하고 창을 다시 닫으십시오.