I used to launch git gui within my cygwin console without any problems but since I updated cygwin I've got the following error message:
$ git gui
Application initialization failed: no display name and no $DISPLAY environment variable
Error in startup script: invalid command name "tk_messageBox"
while executing
"tk_messageBox -icon error -type ok -title "git-gui: fatal error" -message $err"
invoked from within
"if {[catch {package require Tcl 8.4} err]
|| [catch {package require Tk 8.4} err]
} {
catch {wm withdraw .}
tk_messageBox \
-icon error \
-typ..."
(file "/usr/lib/git-core/git-gui" line 34)
Anyone who knows how to solve this?
Edit: Brought up to date in March 2016 to account for renamed packages etc.
Cygwin's gitk and git gui require X11. This means you need to install some of the Cygwin X11 packages and set them up to be able to open the GUI.
This should get you up and running:
export DISPLAY=:0.0
.You'll need to repeat step 3 every time you reboot your computer, and step 4 every time you open a new Cygwin shell (or just run echo "export DISPLAY=:0.0" >>~/.profile
to have it run automatically whenever you create a new shell).
In the comments, it seems some people are getting errors stating 'couldn't connect to display ":0.0"'. If you get that, mouse over the X that should have appeared in your system tray (you may need to click the little up icon if the X icon has been hidden); the pop-up title should say something like "Cygwin/X Server:1.0". Use that ":1.0" (or whatever you see) as the value for DISPLAY
in step 4, rather than ":0.0", making sure to include the colon.
If you have any other problems starting the X server, you will probably find you have a file called ~/.xsession-errors
; check out the contents of that for what's going wrong. Also check whether you have a ~/.startxwinrc
file, and try deleting it and seeing if that fixes the problem.
For the interested, the reason the X11 packages aren't installed automatically is that they're not technically needed: it's possible through somewhat convoluted means to use a different X11 server than the one Cygwin installs when you install the "xinit" package.