2012-06-28 14 views
6

OS X terminalinden bir GUI işlemi başlatıldığında, arka planda pencere görünür ve komut kullanmanız gerekir. odaklanmak için sekme.Mac OS X: Komut satırından başlatıldığında GUI uygulamalarını ön plana getirme

Terminalin, başlatıldıktan sonra otomatik olarak böyle GUI'leri odaklamasını sağlamanın bir yolu var mı? Örneğin (varsayarak gitk yüklenir):

% gitk

GUI başlatmak ve sonra da geçmelisiniz.

Not: Bazı nedenlerden ötürü, this answer'un open kullanılması önerileri genel bir çözüm değildir.

Güncelleştirme:open yönteminin neden tatmin edici olmadığını daha iyi açıklamak için, örnek bir bash oturumu (esprili yorumlarla birlikte).

% cd /my_repo 
% gitk 

GUI'nin görünmesini bekliyor ... şimdi herhangi bir gün ... oh wait - zaten açık. Fark etmedim çünkü terminalimden bir pencere açtı. Ne kadar beklediğimi merak ediyorum, burada bekleyeceğim ....

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

Ah, elbette. ... o gitk çalıştırmak için yeni terminal penceresi açıldı ve o benim ev dizininde öyle yaptım ne

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

değil/my_repo, böylece gitk geçerli dizin aslında bir depo olmadığını şikayet ..

+0

eşzamansız şekilde işlem olmasıdır Pencereli bir uygulamayı komut satırından eşzamanlı olarak çağırmak için (bu işlevi "açık" ile eşzamansız olarak açmak yerine). –

+0

Tüm uygulamalar 'open' ile açılmaz (örneğin gitk). Ayrıca, bu şekilde açılabilenler, rahatsız edici olabilecek ayrı bir terminal aracılığıyla açılacaktır. –

+0

'Tüm uygulamalar açık olarak açılmıyor' Neden olmasın? Bunun neden doğru olacağını düşünemiyorum - tanım gereği normal/pencereli uygulamalar Finder veya Dock'tan açabileceğiniz bir şey olmalıdır. 'ayrı bir terminal aracılığıyla açılacak' 'ayrı terminal' ile ne demek istediğini anlamıyorum. Yani, bir terminaliniz açık olsa bile, bu terminalden 'açık ... 'kullanamazsınız? Eğer öyleyse, neden olmasın? –

cevap

3

Eşzamanlı olarak çağırmanız mı gerekiyor? Değilse, & ile eşzamansız olarak başlatabilir ve ardından osascript -e 'tell application "gitk" to activate' ile etkinleştirebilirsiniz.

1

Bir bash işlevinde @chris sayfanın cevabı sarıp .bashrc içine bırakabilirsiniz

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

döngü ve 'dilek' ile arayarak gecikme kurtulmak için bir yol olmalıdır bir zaman aşımı.

Not: 'Wish', Mac'imde gitk için görünen pencere başlığıdır.Özellikle bunu başarmak için gitk dosyasını düzenleyebilirsiniz gitk ile ilgili iseniz

2

, elma yığını borsasında yanıt gönderdi: Terminal

aşağıdaki komutu kullanarak gitk dosyasını bulabilirsiniz

https://apple.stackexchange.com/a/74917/35956 benim gitk dosyasında

which gitk 

değiştiğimi

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

tepesine yakın takip (hat 3) benzeyen bir satır bulundu Ben gitk pencere ön plana gelir komut satırından gitk yürütmek bu

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

için o bu başka yan etkisi size neden ihtiyaç hakkında daha açıkladı ona iyi gelebilir