13 votes

Lorsque le terminal fait bifurquer un processus, l'application actuelle perd le focus.

Lorsque j'exécute un programme dans Terminal (ou iTerm2), lorsque le programme fait bifurquer le processus, le bureau d'OS X passe de l'application actuelle au processus bifurqué. Lorsque cela se produit, le nom du processus bifurqué apparaît dans la barre de menu d'OS X.

Cela est particulièrement gênant en mode plein écran, car l'espace de travail change lorsque le processus bifurqué reçoit le focus.

Comment puis-je empêcher ce changement de focalisation ? Ces programmes de terminal interrompent le travail que j'effectue dans d'autres applications pendant leur exécution.

9voto

michele b Points 206

Dans mon cas, c'est le plugin Maven Failsafe qui est à l'origine de l'ennuyeux vol du focus de la fenêtre de ForkedBooter. JAVA_TOOL_OPTIONS variable dans .bashrc n'a pas aidé.

Cette correction s'applique à la fois à Failsafe et Surefire (bien que dans mon cas, Surefire ne volait pas le focus).

Dans votre pom.xml , ajoutez un <argLine>-Djava.awt.headless=true</argLine> à l'intérieur de la ligne <configuration> pour le plugin infaillible (et/ou) infaillible.

Cela ressemblera à ceci :

<!-- 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>

4voto

jdgilday Points 273

Comme @patrix l'a suggéré, il semble que je n'ai ce problème qu'avec les processus Java.

Ce site réponse sur StackOverflow semble résoudre le problème

0voto

AllInOne Points 1543

Pouvez-vous exécuter votre programme terminal en arrière-plan ? Je pense que cela l'empêchera de s'afficher sur le bureau également. Il suffit d'ajouter '&' à la fin de la commande du terminal pour exécuter un processus en arrière-plan.

Donc si votre commande de terminal était :

sh someprocess.sh

le changer en :

sh someprocess.sh &

Pour faire passer un processus d'arrière-plan au premier plan dans le terminal, utilisez la commande :

fg

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X