10

GUI プロセスが OS X ターミナルから起動されると、ウィンドウがバックグラウンドで表示され、コマンドタブを使用してフォーカスを与える必要があります。

端末が起動後にそのような GUI に自動的にフォーカスを与える方法はありますか? 例 (gitk がインストールされていると仮定):

% gitk

GUI を起動して切り替えます。

注:いくつかの理由により、この回答が示唆するように使用することは一般的な解決策ではありませんopen

更新: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 は現在のディレクトリが実際にはリポジトリではないと文句を言います...

4

3 に答える 3

4

同期的に呼び出す必要がありますか? そうでない場合は、 で非同期に開始し&、 でアクティブ化できますosascript -e 'tell application "gitk" to activate'

于 2012-07-02T22:01:17.250 に答える
2

特にgitkを扱っている場合は、gitkファイルを編集してこれを実現できます。Appleスタック交換に回答を投稿しました:https ://apple.stackexchange.com/a/74917/35956

ターミナルから次のコマンドを使用して gitk ファイルを見つけることができます。

which gitk

私のgitkファイルで、上部近くに次のような行が見つかりました(3行目)

exec wish "$0" -- "$@"

これに変えました

exec wish "$0" -- "$@" & exec osascript -e "tell application \"Wish\" to activate"

コマンド ラインから gitk を実行すると、gitk ウィンドウが前面に表示されます。これによるもう 1 つの副作用は、非同期で実行されることです。

于 2012-12-14T20:11:48.247 に答える
1

@chris ページの回答を bash 関数にまとめて、.bashrc にドロップできます。

function gitk() {
  command gitk "$@"&
  command osascript -e "delay .5" -e "tell application \"wish\" to activate"
}

ループしてタイムアウトで「ウィッシュ」を探すことにより、遅延を取り除く方法があるはずです。

注: 'Wish' は、私の Mac で gitk 用に表示されるウィンドウ タイトルです。

于 2012-11-25T17:25:16.427 に答える