in reply to How to detect X?
A cheap and easy way to see if the X server is running is to just try to connect to it. If the connection works, then X is running (probably) otherwise it is not running. (This would fail if some other program is listening to the same port as X uses.)
First, you'll need $ENV{DISPLAY}. If it isn't there, then X is not running. The format of DISPLAY is "hostname:display.screen" where display and screen are numbers, and screen is optional. If hostname is not there, it defaults to localhost. Common settings are "localhost:0" and "localhost:0.0" or just ":0"
Once you have the hostname and the display number, add 6000 to the display number and attempt to make a TCP connection to that port number. If the connection fails, X is not running. If it works, just disconnect immediately and assume you connected to the X server. (For extra credit, you might try sending data into the connection and see if you get the right reply back.)
UPDATE: This method does not always work. The user's X server may not be listening on TCP. When DISPLAY=":0.0" then the "most efficient way of communicating to a server on the same machine" should be used. Usually that means UNIX domain sockets, but it is platform dependent. In this case, the TCP connection fails even though there is a running X server.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: How to detect X?
by gellyfish (Monsignor) on Feb 21, 2005 at 16:03 UTC | |
|
Re^2: How to detect X?
by Anonymous Monk on Feb 21, 2005 at 17:09 UTC | |
by meredith (Friar) on Feb 22, 2005 at 20:07 UTC | |
|
Re^2: How to detect X?
by Anonymous Monk on Feb 21, 2005 at 17:04 UTC |