Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Python (http://www.velocityreviews.com/forums/f43-python.html)
-   -   Checking for X availability (http://www.velocityreviews.com/forums/t340180-checking-for-x-availability.html)

Flavio codeco coelho 01-11-2005 11:32 AM

Checking for X availability
 
I have a program that uses pythondialog for its UI.

Pythondialog is a wrapper of the shell dialog and xdialog libs.

But I would like for it to switch between using Dialog ( when X is not
available ) and xdialog (when X is available)

So my question is: how can I check for the availability of X? i.e.,
How will my program know if its running in a text only console or in
console window over X?

thanks,

Flávio

Nils Nordman 01-11-2005 11:39 AM

Re: Checking for X availability
 
On Tue, Jan 11, 2005 at 03:32:01AM -0800, Flavio codeco coelho wrote:
> So my question is: how can I check for the availability of X? i.e.,
> How will my program know if its running in a text only console or in
> console window over X?


Well, one way to do it is to check whether the environment variable
DISPLAY is set (which it is when running under X, and should not be
otherwise).

Cheers,

--
Nils Nordman <nino@nordman.org>

Jeremy Bowers 01-11-2005 12:39 PM

Re: Checking for X availability
 
On Tue, 11 Jan 2005 03:32:01 -0800, Flavio codeco coelho wrote:
> So my question is: how can I check for the availability of X? i.e., How
> will my program know if its running in a text only console or in console
> window over X?


The first thing that leaps to mind is... try it. If it fails, switch to
the other. Remember modules are just variables and can be re-assigned, if
needed.

try:
import xdialog as mydialog
except ImportError:
# user must not have it
import dialog as mydialog

try:
# do something with mydialog here
except YouDontHaveXError:
# tried to use xdialog, but it failed
import dialog as mydialog

etc.

That won't be useful, and I don't know what exception will be thrown when
X isn't found, but you should get something. This should be invisible to
the user, and is also the most transparent way to get it right; using
environment vars and such may not be the best way to do it.

This, by the way, was assuming that xdialog and dialog have identical
APIs. If that is not the case, I'd suggest "process-level recursion"; try
starting up with X, and if it fails, os.execl your process again with a
command line parameter to use console dialog. That will be somewhat
simpler than trying to detect it inside the program itself.

Dan Stromberg 01-12-2005 05:20 AM

Re: Checking for X availability
 
On Tue, 11 Jan 2005 03:32:01 -0800, Flavio codeco coelho wrote:

> I have a program that uses pythondialog for its UI.
>
> Pythondialog is a wrapper of the shell dialog and xdialog libs.
>
> But I would like for it to switch between using Dialog ( when X is not
> available ) and xdialog (when X is available)
>
> So my question is: how can I check for the availability of X? i.e.,
> How will my program know if its running in a text only console or in
> console window over X?
>
> thanks,
>
> Flávio


If there's interest, I could make available my "pdialog" module, which is
also a wrapper around *dialog, but uses X when available, and curses when
it is not.


Cameron Laird 01-16-2005 04:08 PM

Re: Checking for X availability
 
In article <mailman.508.1105443600.22381.python-list@python.org>,
Nils Nordman <nino@nordman.org> wrote:
>On Tue, Jan 11, 2005 at 03:32:01AM -0800, Flavio codeco coelho wrote:
>> So my question is: how can I check for the availability of X? i.e.,
>> How will my program know if its running in a text only console or in
>> console window over X?

>
>Well, one way to do it is to check whether the environment variable
>DISPLAY is set (which it is when running under X, and should not be
>otherwise).

.
.
.
While there certainly are successful programs that use this
approach, it's NOT true in general--at least in the generality
I encounter. It can happen, for example, that a user withOUT
$DISPLAY in the environment launches

interesting_application -display SOME_DISPLAY ...

Jeremy Bowers gives excellent advice elsewhere in this thread:
try, and use exceptions to learn what's going on; as you learn
more, relaunch the application with a refined command-line.


All times are GMT. The time now is 12:53 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.