Saat Terminal memroses, aplikasi saat ini kehilangan fokus

10

Sementara saya menjalankan beberapa program di Terminal (atau iTerm2), ketika program mem-fork proses, desktop OS X mengalihkan fokus dari aplikasi saat ini ke proses bercabang. Ketika ini terjadi, nama proses bercabang muncul di bilah menu OS X.

Ini sangat menjengkelkan saat menggunakan mode layar penuh karena menyebabkan ruang kerja berubah ketika proses bercabang menerima fokus.

Bagaimana saya bisa menghentikan saklar fokus ini terjadi? Program terminal ini mengganggu pekerjaan yang saya lakukan di aplikasi lain saat dijalankan.

jdgilday
sumber
Program mana yang Anda panggil dari Terminal?
nohillside
Maven. Plugin Maven Surefire untuk menjalankan tes Java Unit menggunakan kelas ForkedBooter ini yang selalu menghilangkan fokus dari terminal
jdgilday
Ini bukan hanya Maven tetapi ini adalah salah satu contoh konkret saya
jdgilday
Mungkinkah itu hanya terjadi dengan aplikasi Java?
nohillside
Mungkin. Jika saya menemukan contoh tandingan saya akan memposting
jdgilday

Jawaban:

5

Dalam kasus saya itu adalah Maven Failsafe Plugin yang menyebabkan fokus jendela yang mengganggu mencuri ForkedBooter, dan pengaturan JAVA_TOOL_OPTIONSvariabel .bashrctidak membantu.

Perbaikan ini berlaku untuk Failsafe dan Surefire (meskipun dalam kasus saya, Surefire tidak mencuri fokus).

Di Anda pom.xml, tambahkan <argLine>-Djava.awt.headless=true</argLine>baris di dalam <configuration>untuk plugin yang gagal aman (dan / atau).

Ini akan terlihat seperti ini:

<!-- 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>
michele b
sumber
4

Seperti @patrix telah menyarankan, sepertinya saya hanya mengalami masalah dengan proses Java.

Ini lebih jawaban di StackOverflow tampaknya untuk memecahkan masalah

jdgilday
sumber
0

Bisakah Anda menjalankan program terminal Anda di latar belakang? Saya percaya ini akan membuatnya tidak fokus pada desktop juga. Cukup tambahkan '&' di akhir perintah terminal untuk menjalankan proses di latar belakang.

Jadi jika perintah terminal Anda adalah:

sh someprocess.sh

ubah ke:

sh someprocess.sh &

Untuk membawa proses latar belakang ke latar depan di terminal gunakan perintah:

fg

Semua dalam satu
sumber