프로그램의 모든 인스턴스를 즉시 닫는 방법? 여자 친구의 고양이가 내 노트북을 걷고

내 여자 친구의 고양이가 내 노트북을 걷고 있었는데 나는 그녀를 보지 못했습니다. 확인을하려고하면 32 개의 “아카이브 관리자”탭이 있습니다. 한 번에 모두 Alt+ F4를 사용하는 것처럼 모든 것을 즉시 닫을 수 있습니까 ?



답변

명령 행에서 :

killall file-roller

alt + f4를 수행 할 수 있지만 열린 모든 아카이브 관리자에 대해 수행해야합니다.


답변

또 다른 방법은이 wmctrl유틸리티 를 사용하는 것입니다 (Window Manager 컨트롤). 이것은 창 관리자에게 닫기 버튼을 클릭 한 척하는 데 사용됩니다. 이것은 잠재적으로 험한 특성을 피한다 killall. 예를 들어, 저장되지 않은 문서가있는 일부 프로그램은 종료 될 때 (부드럽게) 즉시 종료되며 닫기 버튼을 클릭하면 “저장 하시겠습니까?”가 나타납니다. 신속한.

기본 명령은 wmctrl -c WINDOWTITLE이 경우 wmctrl -c "Archive Manager"( 이 경우 열린 파일이 없다고 가정하면 제목이 변경됨) 불행히도 한 번에 하나만 닫히므로 모두 닫으려면 더 많은 작업이 필요합니다.

wmctrl 일치하는 것을 찾으면 성공을 반환하므로 실패 할 때까지 반복 할 수 있습니다.

while wmctrl -c "Archive Manager"; do sleep 0.1; done

이것은 항상 찾은 첫 번째 창을 선택하므로 이미 닫히고있는 첫 번째 창에 닫기 명령 스트림을 지속적으로 보내지 않기 위해 잠을 자야합니다. 이로 인해 루프를 중지시키는 오류가 발생할 수 있습니다.

이것은 간단하고 일반적으로 작동하지만, 일정 시간 동안 잠을 자고 다시 시도하기 전에 창이 닫히기를 희망하는 것은 오류를 피하기 위해 지저분하고 느린 방법입니다. 우리가 정말로 원하는 것은 모든 일치하는 창에 즉시 하나의 닫기 메시지를 보내는 것입니다.

로 열려있는 모든 창을 찾을 수 있습니다 wmctrl -l. 여기에는 제목이 같은 경우에도 각 창을 개별적으로 식별하는 데 사용할 수있는 숫자 창 ID가 나열됩니다. 그런 다음 일치하는 창 ( grep명령) 으로 만 필터링 하고 창 ID ( cut명령) 만 꺼내 각 창을 호출 wmctrl -i -c해야합니다. 는 -i윈도우 대신 ID의 창 제목을 일치시킬 필요가있다.

for w in $(wmctrl -l | grep "Archive Manager" | cut -d" " -f1); do
    wmctrl -i -c $w
done

고양이가 키보드를 밟을 때마다 입력하기가 약간 복잡하지만 스크립팅 도구 상자에 보관하는 편리한 기술이기를 바랍니다.


답변

Ctrl+ Q키보드 단축키를 사용하면 Archive Manager의 모든 열린 창을 닫을 수 있습니다 .


Ctrl+의 Q바로 가기 우분투 (뿐만 아니라 다른 배포판의 많은)에 일반적입니다. 지금까지 사용한 대부분의 응용 프로그램에서 동일하게 작동합니다. 즉, 실행중인 응용 프로그램의 모든 창을 닫습니다.


답변