2012-06-28 9 views
6

से लॉन्च होने पर लॉन्च (गैर-बंडल) जीयूआई एप्लिकेशन अग्रभूमि में लाएं जब ओएस एक्स टर्मिनल से एक जीयूआई प्रक्रिया लॉन्च की जाती है, तो विंडो पृष्ठभूमि में दिखाई देती है, और आपको कमांड- इसे ध्यान देने के लिए टैब।मैक ओएस एक्स: कमांड लाइन

क्या टर्मिनल स्वचालित रूप से लॉन्च होने के बाद ऐसे जीयूआई फोकस करने का कोई तरीका है? उदाहरण के लिए (यह मानते हुए gitk स्थापित किया गया है):

% gitk

जीयूआई का शुभारंभ और फिर इसे करने के लिए स्विच करना चाहिए।

नोट: कई कारणों से openthis answer के रूप में सुझाव एक सामान्य समाधान नहीं है।

अद्यतन: बेहतर व्याख्या करने के लिए open विधि संतोषजनक नहीं है, यहां एक नमूना बैश सत्र (विनोदी टिप्पणी के साथ) है।

% cd /my_repo 
% gitk 

जीयूआई प्रकट होने की प्रतीक्षा कर रहा है ... किसी भी दिन ... ओह रुको - यह पहले से ही खुला है। मैंने अभी ध्यान नहीं दिया क्योंकि यह मेरे टर्मिनल के पीछे एक खिड़की खोला गया। मुझे आश्चर्य है कि कितने समय तक मैं निश्चित रूप से इंतज़ार कर यहाँ बैठने के लिए ....

% open gitk 
The file /my_repo/gitk does not exist. 

आह, जा रहा था।

% which gitk 
/usr/bin/gitk 
% open /usr/bin/gitk 

क्या ... यह gitk को चलाने के लिए एक नया टर्मिनल विंडो खोली है, और यह मेरे घर निर्देशिका में वैसा ही किया, नहीं/my_repo, तो gitk शिकायत है कि वर्तमान निर्देशिका वास्तव में एक भंडार नहीं है ..

+0

यदि आप के बारे में आप क्यों की जरूरत है और अधिक विस्तार से बताया है मदद कर सकता है कमांड लाइन से एक विंडो वाले अनुप्रयोग को सिंक्रनाइज़ करने के लिए (इसे 'ओपन' के साथ अतुल्यकालिक रूप से खोलने के बजाय) का आह्वान करना। –

+0

सभी अनुप्रयोगों को 'ओपन' (उदाहरण के लिए, gitk) के माध्यम से खोला नहीं जा सकता है। इसके अतिरिक्त, जो लोग इस तरह खोले जा सकते हैं उन्हें एक अलग टर्मिनल के माध्यम से खोला जाएगा, जो असुविधाजनक हो सकता है। –

+0

'सभी अनुप्रयोगों को खुले के माध्यम से खोला नहीं जा सकता' क्यों नहीं? मैं एक कारण के बारे में नहीं सोच सकता कि यह सच क्यों होगा - परिभाषा के अनुसार सामान्य/खिड़की वाले अनुप्रयोग कुछ ऐसा होना चाहिए जो आप खोजक या डॉक से खोल सकते हैं। 'एक अलग टर्मिनल के माध्यम से खोला जाएगा' मुझे समझ में नहीं आता कि आप 'अलग टर्मिनल' से क्या मतलब रखते हैं। क्या आपका मतलब यह है कि, यदि आपके पास टर्मिनल खुला है, तो आप उस टर्मिनल से 'ओपन ...' का उपयोग नहीं कर सकते? यदि हां, तो क्यों नहीं? –

उत्तर

3

क्या आपको इसे सिंक्रनाइज़ करने की आवश्यकता है? यदि नहीं, तो आप इसे & के साथ असीमित रूप से शुरू कर सकते हैं और फिर इसे osascript -e 'tell application "gitk" to activate' से सक्रिय कर सकते हैं।

1

आप एक पार्टी समारोह में @chris पेज का जवाब लपेट और अपने .bashrc में छोड़ सकते हैं

function gitk() { 
    command gitk "[email protected]"& 
    command osascript -e "delay .5" -e "tell application \"wish\" to activate" 
} 

वहाँ एक तरह से पाशन और साथ 'इच्छा' की खोज करके देरी से छुटकारा पाने के होना चाहिए एक टाइमआउट

नोट: 'विश' विंडो शीर्षक है जो मेरे मैक पर गिट के लिए दिखाई देता है।

2

आप gitk के साथ काम कर रहे हैं, तो विशेष रूप से आप इस लक्ष्य को हासिल करने के लिए gitk फ़ाइल को संपादित कर सकते हैं, मैं सेब ढेर एक्सचेंज पर एक उत्तर पोस्ट किया: https://apple.stackexchange.com/a/74917/35956

आप टर्मिनल

से निम्न आदेश का उपयोग कर gitk फ़ाइल पा सकते हैं
which gitk 

मेरी gitk फ़ाइल में मैं एक लाइन है कि शीर्ष के निकट निम्नलिखित (लाइन 3)

exec wish "$0" -- "[email protected]" 

मैं बदल की तरह दिखता है पाया यह इस

exec wish "$0" -- "[email protected]" & exec osascript -e "tell application \"Wish\" to activate" 

जब मैं कमांड लाइन gitk खिड़की अग्रभूमि करने के लिए आता से gitk निष्पादित करने के लिए, इस का एक और पक्ष प्रभाव है कि यह एसिंक्रोनस रूप से निष्पादित