2012-06-28 56 views
6

當從OS X終端啓動GUI進程時,窗口將顯示在後臺,並且必須使用命令行界面,標籤給它焦點。Mac OS X:從命令行啓動時將非應用程序GUI應用程序置於前臺

有沒有辦法讓終端在啓動後自動給這些GUI關注? 例如(假設gitk安裝):

% gitk

應啓動GUI,然後切換到它。

注意:由於以下幾個原因,使用open作爲this answer暗示不是一個通用的解決方案。

更新:爲了更好地解釋爲什麼open方法不令人滿意,這裏是一個示例bash會話(與機智的評論)。

% cd /my_repo 
% gitk 

等待GUI出現......現在任何一天......哦,等等 - 它已經打開了。我只是沒有注意到,因爲它打開了一個窗口在我的終端後面。我不知道我坐了多久等待......

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

啊,當然。

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

什麼......它打開一個新的終端窗口中運行gitk,它在我的主目錄這樣做,不是/ my_repo,所以gitk抱怨說,當前目錄是不實際的存儲庫.. 。

+0

如果您更詳細地解釋,爲什麼需要它可以幫助從命令行同步調用一個窗口化的應用程序(而不是用'open'異步打開它)。 –

+0

並非所有的應用程序都可以通過'open'打開(例如gitk)。另外,那些可以打開的方式將通過一個單獨的終端打開,這可能很不方便。 –

+0

'並非所有的應用程序都可以通過打開'爲什麼不可以?我想不出爲什麼它會是真實的原因 - 根據定義,普通/窗口應用程序應該可以從Finder或Dock打開。 '將通過一個單獨的終端打開'我不明白'獨立終端'的含義。你的意思是,即使你打開了一個終端,你也不能使用該終端的「open ...」。如果是這樣,爲什麼不呢? –

回答

3

你需要同步調用它嗎?如果不是,可以用&異步啓動,然後用osascript -e 'tell application "gitk" to activate'激活它。

1

您可以在bash功能包@克里斯頁的答案,並在你的.bashrc砸

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

應該是由循環和尋找「希望」以擺脫延遲的方式超時。

注:'希望'是窗口標題,顯示在我的Mac上gitk。

2

如果您正在使用gitk處理具體情況,你可以編輯gitk文件來實現這一點,我貼在蘋果堆疊交換答案:https://apple.stackexchange.com/a/74917/35956

您可以使用以下命令從終端

找到gitk文件
which gitk 

在我gitk文件中我發現了一個線,看起來像在靠近頂端處以下

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

我改變(3號線)它這個

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

當我在命令行中gitk窗口來到前臺執行gitk,這樣做的另一個副作用是,它執行異步

相關問題