जब टर्मिनल प्रक्रिया शुरू करता है, तो वर्तमान ऐप फ़ोकस खो देता है


10

जब मैं टर्मिनल (या iTerm2) में कुछ प्रोग्राम चला रहा होता हूं, जब प्रोग्राम प्रक्रिया की तलाश करता है, तो OS X डेस्कटॉप स्विच चालू एप्लिकेशन से फोर्क की गई प्रक्रिया पर केंद्रित होता है। जब ऐसा होता है, तो forked प्रक्रिया का नाम OS X मेनू बार में दिखाता है।

पूर्ण स्क्रीन मोड का उपयोग करते समय यह विशेष रूप से कष्टप्रद है क्योंकि यह कार्यक्षेत्र को बदलने का कारण बनता है जब कांटा प्रक्रिया फोकस प्राप्त करती है।

मैं इस फ़ोकस स्विच को होने से कैसे रोक सकता हूं? ये टर्मिनल प्रोग्राम मेरे द्वारा चलाए जा रहे काम को अन्य अनुप्रयोगों में बाधित कर रहे हैं।


आप टर्मिनल से किन कार्यक्रमों को बुला रहे हैं?
nohillside

Maven। जावा यूनिट परीक्षणों को चलाने के लिए मावेन स्योरफेयर प्लगइन इस ForkedBooter वर्ग का उपयोग करता है जो हमेशा टर्मिनल से दूर ले जाता है
jdgilday

यह सिर्फ मावेन का नहीं है बल्कि मेरे ठोस उदाहरणों में से एक है
jdgilday

क्या ऐसा हो सकता है कि यह केवल जावा अनुप्रयोगों के साथ ही हो?
nohillside

शायद। अगर मुझे एक प्रति-उदाहरण मिलता है तो मैं पोस्ट
करूंगा

जवाबों:


5

मेरे मामले में यह मावेन फेलसेफ प्लगिन था, जो फोर्कबेडर के कष्टप्रद विंडो फ़ोकस को चोरी करने, और मदद नहीं करने के लिए JAVA_TOOL_OPTIONSचर सेट करने का कारण बना .bashrc

यह फिक्स Failsafe और Surefire दोनों पर लागू होता है (हालांकि मेरे मामले में, Surefire फोकस चोरी नहीं कर रहा था)।

अपने में pom.xml, फेलसेफ (और / या) अचूक प्लगइन <argLine>-Djava.awt.headless=true</argLine>के <configuration>लिए अंदर एक लाइन जोड़ें ।

यह इस तरह दिखेगा:

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

4

जैसा कि @patrix ने सुझाव दिया है, ऐसा लगता है कि मुझे केवल जावा प्रक्रियाओं के साथ यह समस्या है।

StackOverflow पर यह जवाब समस्या को हल करने के लिए लगता है


0

क्या आप पृष्ठभूमि में अपना टर्मिनल प्रोग्राम चला सकते हैं? मेरा मानना ​​है कि यह इसे डेस्कटॉप पर भी ध्यान में आने से रखेगा। पृष्ठभूमि में एक प्रक्रिया चलाने के लिए टर्मिनल कमांड के अंत में बस 'और' जोड़ें।

तो अगर आपके टर्मिनल कमांड थे:

sh someprocess.sh

इसे बदलें:

sh someprocess.sh &

टर्मिनल में अग्रभूमि में पृष्ठभूमि प्रक्रिया लाने के लिए कमांड का उपयोग करें:

FG

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.