Cuando el terminal procesa el proceso, la aplicación actual pierde el foco

10

Mientras ejecuto algún programa en Terminal (o iTerm2), cuando el programa realiza el proceso, el escritorio de OS X cambia 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 causa que el espacio de trabajo cambie cuando el proceso bifurcado recibe el enfoque.

¿Cómo puedo detener este cambio de enfoque? Estos programas de terminal están interrumpiendo el trabajo que estoy haciendo en otras aplicaciones mientras se ejecutan.

    
pregunta jdgilday 26.08.2013 - 17:58

3 respuestas

5

En mi caso, fue el Complemento Maven Failsafe el que provocó el robo del foco de la ventana de ForkedBooter, y no fue útil configurar la variable JAVA_TOOL_OPTIONS en .bashrc .

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 línea <argLine>-Djava.awt.headless=true</argLine> dentro del <configuration> para el complemento de seguridad contra fallas (y / o) surefire.

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>
    
respondido por el michele b 23.07.2014 - 13:14
4

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

Esta respuesta en StackOverflow parece resolver el problema

    
respondido por el jdgilday 09.09.2013 - 18:32
0

¿Puede ejecutar su programa de terminal en segundo plano? Creo que esto evitará que se enfoque también en el escritorio. Solo agrega '&' hasta el final del comando de terminal para ejecutar un proceso en segundo plano.

Entonces, si tu comando de terminal fuera:

  

sh someprocess.sh

cámbialo a:

  

sh someprocess.sh &

Para traer un proceso en segundo plano al primer plano en la terminal, use el comando:

  

fg

    
respondido por el AllInOne 26.08.2013 - 20:59

Lea otras preguntas en las etiquetas