Pregunta

Mientras estoy ejecutando algún programa en Terminal (o iTerm2), cuando el programa bifurca el proceso, el escritorio de OS X cambia el foco 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 ocurra este cambio de enfoque?Estos programas de terminal interrumpen el trabajo que estoy haciendo en otras aplicaciones mientras se ejecutan.

¿Fue útil?

Solución

En mi caso, fue el complemento Maven Failsafe el que provocó el molesto robo del foco de la ventana de ForkedBooter y la configuración del JAVA_TOOL_OPTIONS variables en .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 tus pom.xml, Agrega un <argLine>-Djava.awt.headless=true</argLine> línea dentro del <configuration> para el complemento a prueba de fallos (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>

Otros consejos

Como se ha sugerido @patrix, parece que solo estoy teniendo este problema con los procesos de Java.

Esta Responder en StackOverFlow parece resolver el problema

¿Puedes ejecutar tu programa de terminal en el fondo?Creo que esto también evitará que se centre en el escritorio.Solo agregue '&' hasta el final del comando terminal para ejecutar un proceso en el fondo.

Entonces, si su comando de terminal fue:

sh someprocess.sh

Cámbialo a:

sh someprocess.sh &

Para llevar un proceso de fondo al primer plano en la terminal, use el comando:

fg

Licenciado bajo: CC-BY-SA con atribución
No afiliado a apple.stackexchange
scroll top