← Back to team overview

sslug-teknik team mailing list archive

Re: su i xwindow, hvordan?

 

Brian Christensen wrote:

> På min RH 5.2 starter jeg op i xwindow (med xdm). For det meste logger
> jeg ind med min brugerkonto (altså _ikke_ root) og så bruger 'su' når
> der er brug for det.
> Men det gir' lidt problemer med bla. emacs. Jeg får flg. besked når jeg
> prøver at starte emacs fra xterm: "emacs: Cannot connect to X server
> :0.0.". Jeg mangler vist at sætte en variabel eller to - jeg mener at
> ha' set det en gang.
> 
> Bruger jeg i stedet 'su -' startes consolversionen af emacs!

Når du logger ind med "su" er DISPLAY variablen ikke sat.
prøv "echo $DISPLAY"
Den skal fortælle hvilken X-server som X-programmer skal skrive til.
Hvis du kun har en X-servere kørende på din skærm (det normale) :

export DISPLAY=:.0.0           # X server på denne  maskine
export DISPLAY=tux.hjemme:0.0  # X server på maskinen tux.hjemme

Evt. kan du sætte følgende i din /etc/profile :
(desværre anvender RH5.2 hvis ikke "xterm" så tilret evt. til
de i RH52 anvendte xterm typer, men ofte er det af formen
xterm, xterm-debian,.... så følgende skulle virke på alt
i TERM der starter med "xterm" :

if [  "${TERM:0:5}" != "xterm" ]  ; then
  if [ "$DISPLAY" = "" ] ; then
    DISPLAY=":0.0"
  fi
fi
export DISPLAY

Har du et lokalt hjemmet net, og laver en rlogin/telnet til en anden
maskine, og vil gerne afvikle x-programmer som visses på din egen
maskine (der f.eks. hedder tux.hjemme :) , så kan du på den maskine
du laver rlogin/telnet til, tilføje følgende i /etc/profile :
(erstatter ovenfor viste eksempel)

if [  "${TERM:0:5}" != "xterm" ]  ; then
  tt = `tty`; tt = ${tt/\/dev\//}
  tt=`who | fgrep $tt`
  tt=${tt/*(/}
  DISPLAY=${tt/)*/}
  if [ ! "$DISPLAY" = ":0.0" ] ; then
    DISPLAY=$DISPLAY:0.0    # der vælges :0.0 som standard
  fi
  # lidt debug/test:
  echo " --- XTERM=$XTERM --- DISPLAY=$DISPLAY"
fi
export DISPLAY


-- 
mvh Frank Damgaard  frda@xxxxxxxxxxxxx | frank@xxxxxxxx |fido  2:236/15.2


Follow ups

References