Running git difftool doesn't run external diff tool in foreground #5085

Closed
opened 2026-01-31 00:04:41 +00:00 by claunia · 2 comments
Owner

Originally created by @dracan on GitHub (Nov 20, 2019).

Environment

Windows build number: 10.0.18363.0
Windows Terminal version (if applicable): 0.6.2951.0

Any other software?

Steps to reproduce

  • Setup a git diff tool in your git config (see below for example)
  • Run git difftool in any git repo that has pending changes

Example .gitconfig section...

[diff]
    tool = winmerge
[difftool "winmerge"]
    cmd = \"C:/Program Files (x86)/WinMerge/winmergeu.exe\" -e -u \"$LOCAL\" \"$REMOTE\"

Expected behavior

The external tool appears in the foreground.

Actual behavior

The external diff tool appears behind the Windows Terminal window.

Additional Information

  • I've tried this with multiple diff tools (both Winmerge and P4Merge), and get the same issue.
  • I've tried this with other terminal apps (Cmder, normal Powershell window, and normal cmd window). This only happens when using the Windows Terminal.
Originally created by @dracan on GitHub (Nov 20, 2019). <!-- 🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨 I ACKNOWLEDGE THE FOLLOWING BEFORE PROCEEDING: 1. If I delete this entire template and go my own path, the core team may close my issue without further explanation or engagement. 2. If I list multiple bugs/concerns in this one issue, the core team may close my issue without further explanation or engagement. 3. If I write an issue that has many duplicates, the core team may close my issue without further explanation or engagement (and without necessarily spending time to find the exact duplicate ID number). 4. If I leave the title incomplete when filing the issue, the core team may close my issue without further explanation or engagement. 5. If I file something completely blank in the body, the core team may close my issue without further explanation or engagement. All good? Then proceed! --> <!-- This bug tracker is monitored by Windows Terminal development team and other technical folks. **Important: When reporting BSODs or security issues, DO NOT attach memory dumps, logs, or traces to Github issues**. Instead, send dumps/traces to secure@microsoft.com, referencing this GitHub issue. If this is an application crash, please also provide a Feedback Hub submission link so we can find your diagnostic data on the backend. Use the category "Apps > Windows Terminal (Preview)" and choose "Share My Feedback" after submission to get the link. Please use this form and describe your issue, concisely but precisely, with as much detail as possible. --> # Environment ```none Windows build number: 10.0.18363.0 Windows Terminal version (if applicable): 0.6.2951.0 Any other software? ``` # Steps to reproduce * Setup a git diff tool in your git config (see below for example) * Run `git difftool` in any git repo that has pending changes Example .gitconfig section... [diff] tool = winmerge [difftool "winmerge"] cmd = \"C:/Program Files (x86)/WinMerge/winmergeu.exe\" -e -u \"$LOCAL\" \"$REMOTE\" # Expected behavior The external tool appears in the foreground. # Actual behavior The external diff tool appears behind the Windows Terminal window. # Additional Information * I've tried this with multiple diff tools (both Winmerge and P4Merge), and get the same issue. * I've tried this with other terminal apps (Cmder, normal Powershell window, and normal cmd window). This only happens when using the Windows Terminal.
claunia added the Resolution-Duplicate label 2026-01-31 00:04:41 +00:00
Author
Owner

@zadjii-msft commented on GitHub (Nov 20, 2019):

Thanks for the report! This is actually something that's already tracked in #2988. This one's a little hard to search for, but that thread does explain why this is:

I (believe) that traditionally, start uses GetConsoleWindow to get the HWND of the console, to place explorer (or any application really) in the z-order above the conhost.exe window.

For something running in conpty however, the console doesn't actually have a window. The Terminal does, but the console doesn't. So there's no way for start to place something above the console window, since there is no console window.

I'll refer you to that thread for continued discussion.

/dup #2988

@zadjii-msft commented on GitHub (Nov 20, 2019): Thanks for the report! This is actually something that's already tracked in #2988. This one's a little hard to search for, but that thread does explain why this is: > I (believe) that traditionally, `start` uses `GetConsoleWindow` to get the `HWND` of the console, to place explorer (or any application really) in the z-order above the conhost.exe window. > > For something running in conpty however, the console doesn't actually have a window. The Terminal does, but the console doesn't. So there's no way for `start` to place something above the console window, since there _is no console window_. I'll refer you to that thread for continued discussion. /dup #2988
Author
Owner

@ghost commented on GitHub (Nov 20, 2019):

Hi! We've identified this issue as a duplicate of another one that already exists on this Issue Tracker. This specific instance is being closed in favor of tracking the concern over on the referenced thread. Thanks for your report!

@ghost commented on GitHub (Nov 20, 2019): Hi! We've identified this issue as a duplicate of another one that already exists on this Issue Tracker. This specific instance is being closed in favor of tracking the concern over on the referenced thread. Thanks for your report!
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#5085