Quando il processo di fork del terminale viene eseguito, l'app corrente perde l'attenzione

10

Mentre eseguo qualche programma in Terminal (o iTerm2), quando il programma avvia il processo, il desktop OS X passa dall'applicazione corrente al processo biforcato. Quando ciò accade, il nome del processo biforcuto viene visualizzato nella barra dei menu OS X.

Questo è particolarmente fastidioso durante l'utilizzo della modalità a schermo intero, in quanto fa sì che lo spazio di lavoro cambi quando il processo a forcella riceve lo stato attivo.

Come posso evitare che questo interruttore di messa a fuoco si accenda? Questi programmi terminali interrompono il lavoro che sto facendo in altre applicazioni mentre sono in esecuzione.

    
posta jdgilday 26.08.2013 - 17:58
fonte

3 risposte

5

Nel mio caso è stato il plugin Maven Failsafe a causare il fastidioso blocco del focus sulla finestra di ForkedBooter e l'impostazione della variabile JAVA_TOOL_OPTIONS in .bashrc non ha aiutato.

Questa correzione si applica a Failsafe e Surefire (anche se nel mio caso, Surefire non stava rubando lo stato attivo).

Nel tuo pom.xml , aggiungi una riga <argLine>-Djava.awt.headless=true</argLine> all'interno di <configuration> per il plugin surefire failsafe (e / o).

Sembrerà così:

<!-- 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>
    
risposta data 23.07.2014 - 13:14
fonte
4

Come suggerito da @patrix, sembra che stia avendo questo problema solo con i processi Java.

Questa risposta a StackOverflow sembra risolvere il problema

    
risposta data 09.09.2013 - 18:32
fonte
0

È possibile eseguire il programma terminale in background? Credo che ciò impedirà di focalizzarsi anche sul desktop. Aggiungi "&" alla fine del comando del terminale per eseguire un processo in background.

Quindi se il tuo comando terminale fosse:

sh someprocess.sh

cambialo in:

sh someprocess.sh &

Per portare un processo in background in primo piano nel terminale usa il comando:

fg

    
risposta data 26.08.2013 - 20:59
fonte

Leggi altre domande sui tag