I am running Windows 10 on my Surface Pro 3. I installed Cygwin and also added some useful packages (gvim, nedit, emacs, vim, g++). However, when I run gvim, I get "Can't open display". The same thing happens with nedit. When I did echo $DISPLAY, I showed nothing so I set the DISPLAY to :0.0. I still get "can't open display." I tried removing cygwin and re-installing but I get the same problem.

  • 1
    Sounds like the X11 server isn't running. Have you worked through the steps at x.cygwin.com ? – thrig Sep 6 '15 at 17:11
  • Let me also clarify that I am running Cygwin on my machine, where I am an admin. Yes, I did install the x11 packages, and looked through the x11 issues but that doesn't solve the problem. – John Sep 6 '15 at 17:17

Unix GUI programs display through an X server. Cygwin doesn't automatically start an X server. You need to install the packages xorg-server and xinit, and run startxwin.

  • 4
    As of 2017/01, startxwin is included in the xinit package – David Ljung Madison Jan 20 '17 at 19:58

Source : CygwinX FAQ :

Since X server 1.17, by default the server does not listen for TCP/IP connections, only accepting local connections on a unix domain socket. For local clients, use DISPLAY=:0.0, rather than DISPLAY=localhost:0.0, DISPLAY=127.0.0.1:0.0, DISPLAY=::1:0.0, etc

If it does not work (if you are connecting from remote): Use the -listen tcp option to restore the previous behaviour, allowing the X server to open a TCP/IP socket as well e.g.

startxwin -- -listen tcp

Finally, don't forget to run xhost + in the Cygwin terminal.

You can also use XLaunch/Xming.

  • Open XLaunch, choose "Multiple Windows", and set a Display number (doesn't matter).
  • In Cygwin, export DISPLAY=[whatever your XLaunch Display number is].
  • Launch your program with gvim &

What helped me is changing

DISPLAY=:0.0 <mycommand>

to

DISPLAY=localhost:0.0 <mycommand>

How I got it working:

  • Install packages xorg-server and xinit.
  • Run this commands in a Cygwin shell window:

    startxwin

    DISPLAY=localhost:0.0 xterm

However, to be honest, the default CygWin console is nicer than XTerm, so I continued to use that.

just export it

export DISPLAY=localhost:0.0

to make persistant add that to your .bash_profile

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.