터미널 포크 처리시 현재 앱의 포커스가 사라짐


10

터미널 (또는 iTerm2)에서 일부 프로그램을 실행하는 동안 프로그램이 프로세스를 분기하면 OS X 데스크톱 스위치가 현재 응용 프로그램에서 분기 프로세스로 포커스를 전환합니다. 이 경우 포크 된 프로세스 이름이 OS X 메뉴 표시 줄에 표시됩니다.

포크 프로세스가 포커스를 받으면 작업 공간이 변경되므로 전체 화면 모드를 사용하는 동안 특히 성가신 일입니다.

이 포커스 스위치가 발생하지 않도록하려면 어떻게해야합니까? 이 터미널 프로그램은 다른 응용 프로그램에서 실행중인 작업을 방해합니다.


터미널에서 어떤 프로그램을 호출하고 있습니까?
nohillside

메이븐 자바 단위 테스트를 실행하기위한 메이븐 확실한 플러그인이 사용 ForkedBooter에 항상 멀리 터미널에서 초점을 취 클래스
jdgilday

그것은 단지 Maven 일뿐만 아니라 이것은 나의 구체적인 예 중 하나입니다
jdgilday

Java 응용 프로그램에서만 발생할 수 있습니까?
nohillside

답변:


5

필자의 경우 Maven Failsafe 플러그인이 ForkedBooter의 성가신 창 포커스를 훔쳐서 JAVA_TOOL_OPTIONS변수를 설정해도 .bashrc도움이되지 않았습니다.

이 수정은 Failsafe와 Surefire 모두에 적용됩니다 (필자의 경우 Surefire는 포커스를 훔치지 않았습니다).

에 안전 장치 (및 / 또는) 확실한 플러그인을위한 줄을 pom.xml추가 하십시오 .<argLine>-Djava.awt.headless=true</argLine><configuration>

다음과 같이 보일 것입니다 :

<!-- this is inside your <project><build><plugins> block -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>${maven.surefire.plugin.version}</version>
    <configuration>
      <includes>
        <include>**/unit/**/*Test*.java</include>
      </includes>
      <!-- prevent the annoying ForkedBooter process from stealing window 
        focus on Mac OS -->
      <argLine>-Djava.awt.headless=true</argLine>
    </configuration>
  </plugin>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>${maven.failsafe.plugin.version}</version>
    <configuration>
      <!-- prevent the annoying ForkedBooter process from stealing window 
        focus on Mac OS -->
      <argLine>-Djava.awt.headless=true</argLine>
      <includes>
        <include>**/integration/**/*Test*</include>
      </includes>
    </configuration>
    <executions>
      <execution>
        <goals>
          <goal>integration-test</goal>
          <goal>verify</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

4

@patrix가 제안했듯이 Java 프로세스에서만이 문제가있는 것 같습니다.

답변은 StackOverflow 에서 문제를 해결하는 것으로 보입니다.


0

백그라운드에서 터미널 프로그램을 실행할 수 있습니까? 이것이 데스크톱에 초점을 맞추지 못하게 할 것이라고 믿습니다. 백그라운드에서 프로세스를 실행하려면 터미널 명령 끝에 '&'를 추가하십시오.

따라서 터미널 명령이 다음과 같은 경우

sh someprocess.sh

그것을 다음으로 변경하십시오 :

sh someprocess.sh &

터미널에서 백그라운드 프로세스를 포 그라운드로 가져 오려면 다음 명령을 사용하십시오.

fg

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.