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.


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>


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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.