Gtk-WARNING **: cannot open display:

  • by

While running a GTK+ based C program under Cygwin, the following runtime error is observed,

Gtk-WARNING **: cannot open display:

SOLUTION

  1. Make sure that Cygwin/XServer is installed and is running. If it is not installed, download the relevant packages from Cygwin.

  2. Make sure that environment variable DISPLAY is defined in the shell's environment. If DISPLAY is not defined, it can be defined by giving the following commands from shell,


    DISPLAY=":0" 
    export DISPLAY 
    
    You can, alternatively, put the following code in the .bashrc file,
    if [[ -z "$DISPLAY" ]] 
    then
        DISPLAY=":0" 
        export DISPLAY 
    fi
    

  3. Better still, put the code for setting the environment variable, DISPLAY, in the source code. This can be done by putting the following lines at the beginning of the main function of the C program.
    #include <stdlib.h> 
    // introduce the environment variable 
    // DISPLAY, if not present  
    if (setenv ("DISPLAY", ":0", 0) == -1)   
        error ("setenv");  
    

    This will obviate the requirement of setting the environment variable and is particularly helpful if you wish to run the program directly under Windows.

SEE ALSO

0 0 votes
Article Rating
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments

You may like these, also

  • POSIX message queues in Linux 1.0 POSIX Message queues POSIX interprocess comunication (IPC) was introduced in the POSIX.1b standard (IEEE Std 1003.1b-1993) for real time…
  • POSIX Shared Memory in Linux 1.0 Shared Memory Shared memory is the fastest method of interprocess communication (IPC) under Linux and other Unix-like systems. The…
  • POSIX Semaphores in Linux 1.0 Semaphores Semaphores are used for process and thread synchronization. Semaphores are clubbed with message queues and shared memory under…
  • fork and exec system calls in Linux 1.0 fork and exec system calls Suppose we wish to write a "shell program" which would execute another program. Now,…
  • Connecting two computers with Ethernet LAN cable Quite often, we wish to connect two computers back to back using an Ethernet LAN cable. It may be because…
  • D-Bus Tutorial 1.0 D-Bus D-Bus is a mechanism for interprocess communication under Linux and other Unix-like systems. D-Bus has a layered architecture.…
  • Socket programming using the select system call 1.0 Client-Server Paradigm The Client-Server paradigm divides the software architecture of a system in two parts, the server and its…
  • System V message queues in Linux 1.0 Message queues Message queues are one of the interprocess communication mechanisms available under Linux. Message queues, shared memory and…
  • POSIX Threads Synchronization in C 1.0 POSIX Threads Synchronization POSIX Threads provide multiple flows of execution within a process. The threads have their own stacks…
  • System V Shared Memory in Linux 1.0 Shared Memory Shared memory is one of the three interprocess communication (IPC) mechanisms available under Linux and other Unix-like…