터미널 (또는 iTerm2)에서 일부 프로그램을 실행하는 동안 프로그램이 프로세스를 분기하면 OS X 데스크톱 스위치가 현재 응용 프로그램에서 분기 프로세스로 포커스를 전환합니다. 이 경우 포크 된 프로세스 이름이 OS X 메뉴 표시 줄에 표시됩니다.
포크 프로세스가 포커스를 받으면 작업 공간이 변경되므로 전체 화면 모드를 사용하는 동안 특히 성가신 일입니다.
이 포커스 스위치가 발생하지 않도록하려면 어떻게해야합니까? 이 터미널 프로그램은 다른 응용 프로그램에서 실행중인 작업을 방해합니다.
답변
필자의 경우 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>
답변
@patrix가 제안했듯이 Java 프로세스에서만이 문제가있는 것 같습니다.
이 답변은 StackOverflow 에서 문제를 해결하는 것으로 보입니다.
답변
백그라운드에서 터미널 프로그램을 실행할 수 있습니까? 이것이 데스크톱에 초점을 맞추지 못하게 할 것이라고 믿습니다. 백그라운드에서 프로세스를 실행하려면 터미널 명령 끝에 ‘&’를 추가하십시오.
따라서 터미널 명령이 다음과 같은 경우
sh someprocess.sh
그것을 다음으로 변경하십시오 :
sh someprocess.sh &
터미널에서 백그라운드 프로세스를 포 그라운드로 가져 오려면 다음 명령을 사용하십시오.
fg