Git Bash中如何将焦点切换至启动的外部程序?
问题描述
OS:Windows 11
git version:2.23.0.windows.1
在Git Bash中执行启动外部程序(例如gvim、gitk等)的命令时,新程序会在后台打开,Git Bash仍保持活动窗口,如何设置让新打开的程序自动获取焦点?
背景:
- 更换Windows 11笔记本后出现该问题,此前Windows 10旧设备可正常自动切换焦点;
- 已检查
~/.bashrc、~/.bash_profile、~/.minttyrc和~/.gitconfig文件,未发现相关配置。
解决方法
方法1:修改mintty配置
Git Bash基于mintty,直接修改~/.minttyrc添加以下配置:
focus=follow
保存后关闭所有Git Bash窗口重新打开,后续启动外部程序时焦点会自动切换到新窗口。
方法2:用脚本包装启动命令强制激活窗口
如果方法1无效,可编写bash脚本调用Windows工具激活窗口:
- 在用户目录创建
launch.sh文件,内容如下:
#!/bin/bash "$@" & sleep 0.2 # 通过powershell查找并激活目标程序窗口 powershell -Command "(Get-Process -Name $(basename "$1")).MainWindowHandle | ForEach-Object { [void][System.Diagnostics.Process]::Start('powershell', \"-Command (Add-Type -Name Window -Namespace Console -MemberDefinition '[DllImport(\\\"user32.dll\\\")] public static extern bool SetForegroundWindow(IntPtr hWnd);') -PassThru | Out-Null; [Console.Window]::SetForegroundWindow($_)\") }"
- 给脚本添加执行权限:
chmod +x ~/launch.sh
- 用脚本包装启动命令,比如:
~/launch.sh gvim ~/launch.sh gitk
注:
sleep 0.2是给程序启动留足窗口创建时间,可根据实际情况调整时长。
方法3:升级Git版本
当前使用的Git版本(2.23.0)较为老旧,Windows 11的兼容性问题可能在新版本中已修复,建议升级到最新版Git for Windows,默认配置大概率会自动解决焦点切换问题。
内容的提问来源于stack exchange,提问作者Invalidsearch
相关产品推荐
相关产品推荐

