I second the detection of DISPLAY approach. Check the getenv(3) man page.

if (NULL == getenv("DISPLAY"))
    cli();
else
    gui();

Or something like that. You get the idea.

~Ryan

On Tue, Sep 22, 2009 at 3:58 AM, Daniel Eggleston <[email protected]> wrote:
> Use error handling, and try to launch the GUI.  If it fails, resort to
> terminal.  Checking the parent is no way to go, because they could be
> launching it from an xterm. If there's no DISPLAY variable set, you can bet
> that the terminal is warranted. If it *is* set, there's a pretty good chance
> the user has an X session open.
>
> On Tue, Sep 22, 2009 at 12:25 AM, Dos-Man 64 <[email protected]> wrote:
>>
>> I see.  I had assumed there was a simple way to tell. I'm coming from
>> the Windows platform where a console application has one bit set in
>> the program's header by the linker (or not set if it's a GUI app.)
>> Maybe I'll just leave this one as a terminal app, at least for now.  I
>> just think it sucks that if you double-click on it, nothing happens.
>>
>>
>>
>> On Sep 22, 12:17 am, Joe Wollard <[email protected]> wrote:
>> > Ah, I see what you're asking now. Sorry about that. The only thing
>> > that comes to mind is an examination of the process lineage. This is
>> > shooting from the hip, but perhaps if the program is launched from the
>> > terminal, its immediate parent would be bash or sh or similar. I'm not
>> > sure what the parent process would be in gnome though. Maybe gnome-
>> > session?
>> >
>> > Like I said, I'm shooting from the hip on this one. There's bound to
>> > be a more elegant way of doing what you need. You might look at some
>> > of the system-config-* scripts from the fedora project. I believe they
>> > kind of do what you need. They are written in python, but they might
>> > be a good starting point if nothing else.
>> >
>> > ---
>> > Joe Wollard
>> >
>> > On Sep 22, 2009, at 1:01 AM, Dos-Man 64 <[email protected]> wrote:
>> >
>> >
>> >
>> >
>> >
>> > > Is it that complicated just for the application to tell if the user
>> > > executed it from a terminal session?  I can easily write wrap 2
>> > > versions of the app (C++) in the same executable, the problem is I
>> > > can't tell which version to "run" if I can't tell if the program was
>> > > invoked from a shell session.
>> >
>> > > On Sep 21, 11:53 pm, Joe Wollard <[email protected]> wrote:
>> > >> You need to research the MVC (model, view, controller) pattern. Using
>> > >> that programing pattern is going to help you write code that can use
>> > >> the exact same bacground logic yet still use the native display
>> > >> language. e.g. Qt for KDE, gtk for Gnome, or good ol text for the
>> > >> terminal.
>> >
>> > >> It's tough to wrap your head around it at first, but once you've got
>> > >> it you won't want to program any other way.
>> >
>> > >> Happy coding!
>> >
>> > >> ---
>> > >> Joe Wollard
>> >
>> > >> On Sep 22, 2009, at 12:05 AM, Dos-Man 64 <[email protected]> wrote:
>> >
>> > >>> I'm just finishing up my first utility that shows the amount of
>> > >>> memory
>> > >>> and the amount of free memory.  It's a terminal app.  I'm
>> > >>> wondering if
>> > >>> it can also be a GUI app or is it common to create 2 different
>> > >>> versions?   From a programming perspective, I'm not sure how to tell
>> > >>> if the application is executing in a shell session or not...
>>
>
>
>
> --
>
>           Daniel
>
> >
>



-- 
http://rmgraham.blogspot.com
http://twitter.com/rmgraham

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Linux Users Group.
To post a message, send email to [email protected]
To unsubscribe, send email to [email protected]
For more options, visit our group at 
http://groups.google.com/group/linuxusersgroup
-~----------~----~----~----~------~----~------~--~---

Reply via email to