Sida 1 av 1

har jag tillgång till xorg?

Postat: 21 feb 2009, 10:07
av Barre
Tjena, håller på med ett bash script och behöver veta om scriptet har tillgång till xorg när det exekveras eller inte..
är det variablen $DISPLAY jag skall använda då?

eller är det något annat "rätt" sätt att göra det på?

cheers
//Barre

Re: har jag tillgång till xorg?

Postat: 21 feb 2009, 10:14
av Osprey
Vad menar du egentligen med "tillgång till xorg"...?

Re: har jag tillgång till xorg?

Postat: 21 feb 2009, 10:16
av Barre
Ok... fönsterhanterare då....
så jag kan öppna t.ex zenity eller gdialog

Re: har jag tillgång till xorg?

Postat: 21 feb 2009, 10:53
av Osprey
Jag vet inte när DISPLAY sätts, den borde sättas när X starta, men jag vet inte säkert om det att den är satt är en garanti för att X är igång. Det kan hända att det funkar att testa på den.

Annars kan du alltid göra en test som:

Kod: Markera allt

x11=$(ps -ef | grep -i /usr/bin/X | grep -v grep | wc -l)
if [ $x11 == 1 ]; then
    echo "X11 running"
else
    echo "No X11"
fi
Det är mycket möjligt att det finns någon bättre och snyggare test att göra, men det här var vad jag kunde få ihop på några sekunder nu. Du kan använda det här så länge och se om det är någon som kommer med något bättre... :)

Re: har jag tillgång till xorg?

Postat: 21 feb 2009, 11:15
av Lars
Jo, DISPLAY är rimligtvis bara satt när man startat skriptet från X11, så det är nog rätt att testa på den variabeln.

Re: har jag tillgång till xorg?

Postat: 21 feb 2009, 12:25
av Barre
Osprey skrev:Jag vet inte när DISPLAY sätts, den borde sättas när X starta, men jag vet inte säkert om det att den är satt är en garanti för att X är igång. Det kan hända att det funkar att testa på den.

Annars kan du alltid göra en test som:

Kod: Markera allt

x11=$(ps -ef | grep -i /usr/bin/X | grep -v grep | wc -l)
if [ $x11 == 1 ]; then
    echo "X11 running"
else
    echo "No X11"
fi
Det är mycket möjligt att det finns någon bättre och snyggare test att göra, men det här var vad jag kunde få ihop på några sekunder nu. Du kan använda det här så länge och se om det är någon som kommer med något bättre... :)
Det går ju inte, eftersom jag kan ha en session som inte har tillgång till X , även om X körs... t.ex om jag ansluter mig med SSH.
Lars skrev:Jo, DISPLAY är rimligtvis bara satt när man startat skriptet från X11, så det är nog rätt att testa på den variabeln.
Kalas Lars... men ordet "rimligtvis" gör mig lite orolig ;-)

Jag kör på DISPLAY så länge... men det vore roligt att veta om DISPLAY alltid är satt vid en X session....

Re: har jag tillgång till xorg?

Postat: 21 feb 2009, 12:38
av Barre
Barre skrev: eftersom jag kan ha en session som inte har tillgång till X , även om X körs... t.ex om jag ansluter mig med SSH.
Jag får väl förtydliga innan jag blir "påhoppad" om att jag visst kan ha tillgång till X11 med ssh!!!,...


.. t.ex om jag ansluter mig med SSH utan X11 forwarding.
;D

Re: har jag tillgång till xorg?

Postat: 21 feb 2009, 14:48
av palle-kuling
Nej. Man bör du använda X forwarding i ssh för att få DISPLAY satt (ssh -X), och sen så hamnar iaf jag på en "pseudo terminal" (/dev/pts) när jag ssh:ar (utan -X) till min server, medans X på servern använder en virtuell terminal (/dev/tty), så DISPLAY bör inte (och är inte, på min server, med xorg igång) vara satt där normalt sett. Jag är *ingen* expert på detta område dock.

Re: har jag tillgång till xorg?

Postat: 21 feb 2009, 15:23
av Konservburk
Barre skrev:Jag kör på DISPLAY så länge... men det vore roligt att veta om DISPLAY alltid är satt vid en X session....
Det finns inget som hindrar att $DISPLAY är satt till någonting helt galet.

Varför inte bara ansluta till xservern och se om det gick eller inte? Det är möjligt att det redan finns något färdigt kommando. Annars du kan alltid skapa ett eget:

Kod: Markera allt

#include <X11/Xlib.h>

int main()
{
	Display *display = XOpenDisplay(NULL);
	if (!display) return 1;
	XCloseDisplay(display);
	return 0;
}

Re: har jag tillgång till xorg?

Postat: 21 feb 2009, 15:59
av Lars
Annars kan du ju t.ex. testa att köra kommandot xset q, det fungerar inte om DISPLAY pekar fel.