Mientras ejecuto algún programa en Terminal (o iTerm2), cuando el programa bifurca el proceso, el escritorio OS X cambia el enfoque de la aplicación actual al proceso bifurcado. Cuando esto sucede, el nombre del proceso bifurcado se muestra en la barra de menú de OS X.
Esto es especialmente molesto cuando se usa el modo de pantalla completa, ya que hace que el espacio de trabajo cambie cuando el proceso bifurcado recibe el foco.
¿Cómo puedo evitar que suceda este cambio de enfoque? Estos programas de terminal interrumpen el trabajo que estoy haciendo en otras aplicaciones mientras se ejecutan.
En mi caso, fue el Maven Failsafe Plugin el que causó el molesto robo del enfoque de la ventana de ForkedBooter, y configurar la JAVA_TOOL_OPTIONS
variable .bashrc
no ayudó.
Esta solución se aplica tanto a Failsafe como a Surefire (aunque en mi caso, Surefire no estaba robando el foco).
En su pom.xml
, agregue una <argLine>-Djava.awt.headless=true</argLine>
línea dentro de <configuration>
para el complemento a prueba de fallas (y / o) seguro.
Se verá así:
<!-- 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>
Como sugirió @patrix, parece que solo tengo este problema con los procesos de Java.
Esta respuesta en StackOverflow parece resolver el problema
¿Puedes ejecutar tu programa de terminal en segundo plano? Creo que esto también evitará que se enfoque en el escritorio. Simplemente agregue '&' al final del comando de terminal para ejecutar un proceso en segundo plano.
Entonces, si su comando de terminal fuera:
sh algúnproceso.sh
cambiarlo a:
sh algúnproceso.sh &
Para traer un proceso en segundo plano al primer plano en la terminal, use el comando:
fg
sin ladera
jdgilday
jdgilday
sin ladera
jdgilday
jacob foshee
mono
en un escenario similar.jdgilday