hi
wie kann ich prüfen, ob mein Programm unter X-Windows ausgeführt wird (in der console)?
wenn ja, dannmöchte ich die grafische umgebung meines programmes starten .. ansonsten normales bash-fenster
danke
prüfen ob X läuft.
Re: prüfen ob X läuft.
Die (m.E.) einzig sinnvolle Variante ist das Prüfen der Environment-Variablen DISPLAY. Schliesslich möchte man ggf. auch unter X das Programm in einem Terminal fahren bzw. auf einer Maschine ohne X-Server die Ausgabe auf einen X-Server im Netz umlenken.
man 3 getenv
Jochen
man 3 getenv
Jochen
Re: prüfen ob X läuft.
hi jochen
.. danke für antwort .. getenv ist auch meine derzetige lösung, aber ich dachte, daß es eine spezifischere Möglichkeit gibt.
Der start der GUI unter X ist zwingend ... ich will also ausschließen, daß es da in der Console ausgeführt werden kann (ist userfreundlicher).
naja .. so gehts ja eigentlich auch
Gruß BB (ne)
.. danke für antwort .. getenv ist auch meine derzetige lösung, aber ich dachte, daß es eine spezifischere Möglichkeit gibt.
Der start der GUI unter X ist zwingend ... ich will also ausschließen, daß es da in der Console ausgeführt werden kann (ist userfreundlicher).
naja .. so gehts ja eigentlich auch
Gruß BB (ne)
Re: prüfen ob X läuft.
Hi!
> Der start der GUI unter X ist zwingend ... ich will also ausschließen, daß es da in der Console ausgeführt werden kann (ist userfreundlicher).
Autsch! Es ist doch wohl zweifellos Benutzer*feindlich*, wenn man nicht die Möglichkeit hat, zu tun was man tun will. Es gibt immer Gründe, warum man etwas im Konsolenmode starten möchte, auch wenn X an sich läuft, seien das Probleme mit den von der Applikation im X-Modus verwendeten Fonts oder sonstwas. Dem (fortgeschrittenen) Benutzer hier keine Wahl zu lassen ist definitiv eine sehr schlechte Idee. Mit DISPLAY zu arbeiten ist die RichtigeLösung(tm).
Cheers,
GNU/Wolfgang
> Der start der GUI unter X ist zwingend ... ich will also ausschließen, daß es da in der Console ausgeführt werden kann (ist userfreundlicher).
Autsch! Es ist doch wohl zweifellos Benutzer*feindlich*, wenn man nicht die Möglichkeit hat, zu tun was man tun will. Es gibt immer Gründe, warum man etwas im Konsolenmode starten möchte, auch wenn X an sich läuft, seien das Probleme mit den von der Applikation im X-Modus verwendeten Fonts oder sonstwas. Dem (fortgeschrittenen) Benutzer hier keine Wahl zu lassen ist definitiv eine sehr schlechte Idee. Mit DISPLAY zu arbeiten ist die RichtigeLösung(tm).
Cheers,
GNU/Wolfgang
Re: prüfen ob X läuft.
hi wolfgang
naja .. du "sprichst" vom fortgeschrittenem User: jener sitz aber nich an diesem programm <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle"> .. für den fortgeschrittenen User habe ich einen Schalter integriert, der ihm die Wahl zwischen Console und X läßt. zufrieden ? <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
naja .. du "sprichst" vom fortgeschrittenem User: jener sitz aber nich an diesem programm <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle"> .. für den fortgeschrittenen User habe ich einen Schalter integriert, der ihm die Wahl zwischen Console und X läßt. zufrieden ? <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
Re: prüfen ob X läuft.
So richtig verstehe ich Deine Frage nicht, schließlich mußt Du in Deinem Programm doch das Display öffnen und falls das nicht gelingt startest Du eben Konsolen-code, etwa:
int xfd; /* File Descriptor for the X display */
int x_init()
{
if( ( pDisplay = XOpenDisplay(NULL) ) == NULL )
{
fprintf( stderr, "%s: Unable to open X display
", pAppname );
return( -1 );
}
.. ein bischen initialisieren, Farben, Fonts allozieren und eine Verbindungsnummer geben lassen ...
return( ConnectionNumber( pDisplay ) )
}
if( ( xfd = x_init() ) <0 )
Konsole ...
else
GUI
int xfd; /* File Descriptor for the X display */
int x_init()
{
if( ( pDisplay = XOpenDisplay(NULL) ) == NULL )
{
fprintf( stderr, "%s: Unable to open X display
", pAppname );
return( -1 );
}
.. ein bischen initialisieren, Farben, Fonts allozieren und eine Verbindungsnummer geben lassen ...
return( ConnectionNumber( pDisplay ) )
}
if( ( xfd = x_init() ) <0 )
Konsole ...
else
GUI