Fixing the ‘Cannot Open Display’ Error on Linux

The Cannot Open Display error can occur on a Linux system when trying to open a GUI application, especially if opening it from the command line. It can also pop up if you are trying to use X11 forwarding via SSH to a remote system. The good news is that this error is relatively easy to fix, whether you are getting it when accessing a local application or a remote server. In this tutorial, we will cover the steps necessary to fix the Cannot Open Display error on Linux.

In this tutorial you will learn:

  • How to check the DISPLAY variable
  • How to set the DISPLAY variable
  • How to enable X forwarding in SSH
Fixing the 'Cannot Open Display' Error on Linux
Fixing the ‘Cannot Open Display’ Error on Linux
Software Requirements and Linux Command Line Conventions
Category Requirements, Conventions or Software Version Used
System Any Linux distro
Software N/A
Other Privileged access to your Linux system as root or via the sudo command.
Conventions # – requires given linux commands to be executed with root privileges either directly as a root user or by use of sudo command
$ – requires given linux commands to be executed as a regular non-privileged user
A great way to test if your system has the DISPLAY variable configured correctly is to execute xeyes. This small program is on most Linux distros by default and is a quick and handy way to test for display issues.

Fixing the ‘Cannot Open Display’ Error on Linux

  1. When receiving the Cannot Open Display error, the first thing you should check is the value of your DISPLAY variable, and verify that it is even set at all.
    $ echo DISPLAY

    If this command shows no output or gives you an error, then your variable has not been set or is set incorrectly.

  2. To set the DISPLAY variable, we will use the following command:
    $ export DISPLAY=:0

    Note that your DISPLAY value may need to be different, like :0.0. It depends on your system and configuration. After setting it, check again to make sure that your variable is now set correctly, and then try opening xeyes to verify the fix:

    $ echo DISPLAY
    $ xeyes
  3. If you are attempting to run a GUI based application from a remote server, you need to make sure that your SSH connection has X11 forwarding enabled. Try disconnecting from the session, and when reconnecting, use the -X option in your SSH login command:
    $ ssh -X username@remote-server

    Alternatively, try using a different application to share the desktop screen such as X11vnc.

  4. If you still cannot use X11 forwarding via SSH, then make sure that the server has X11 forwarding enabled in the sshd config file:
    $ grep X11Forwarding /etc/ssh/sshd_config

    The line will look like this if it is enabled:

    X11Forwarding yes
  5. The next thing to check is to see if the host has proper permissions to use X11 forwarding. We can do this by executing the xhost command on the server. Use the following command to disable access control and allow all hosts to utilize X11 forwarding. Then try to connect once again and open the GUI application – this will tell you whether or not it is a permission issue.

    $ xhost +
    access control disabled, clients can connect from any host

Closing Thoughts

In this tutorial, we saw how to fix the Cannot Open Display error on a Linux system. This is a common issue that is usually caused by a misconfigured DISPLAY variable or a problem with an X11 forwarding setting if using SSH. Fortunately, the steps here make it a pretty easy fix, and should get your GUI based apps running again in no time.

Comments and Discussions
Linux Forum