2012-06-28 58 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,这样做的另一个副作用是,它执行异步

相关问题