【发布时间】:2013-04-07 02:36:44
【问题描述】:
当从 OS X 终端启动 GUI 进程时,窗口会在后台显示,您必须使用 command-tab 来获得焦点。
有没有办法让终端在这些 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 抱怨当前目录实际上不是存储库...
【问题讨论】:
-
如果您能详细解释一下为什么需要从命令行同步调用窗口应用程序(而不是使用
open异步打开它),这可能会有所帮助。 -
并非所有应用程序都可以通过
open(例如gitk)打开。另外,可以通过这种方式打开的会通过单独的终端打开,这可能会很不方便。 -
'并非所有应用程序都可以通过 open 打开' 为什么不呢?我想不出它是真的原因——根据定义,普通/窗口应用程序应该是您可以从 Finder 或 Dock 打开的东西。 “将通过单独的终端打开”我不明白“单独的终端”是什么意思。你的意思是,即使你打开了一个终端,你也不能从那个终端使用
open ...?如果是这样,为什么不呢? -
抱歉含糊不清。我刚刚更新了这个问题。希望它能解释为什么
open没有完全削减它...... -
gitk 正在做一些奇怪的事情,它的行为部分像一个 GUI 应用程序,部分像一个命令行工具(注意它的当前工作目录)。我认为理想情况下它应该负责将自己带到最前沿。