[COFFEETUNES.DK] Tips & Trix til FreeBSD

Opsætning af XDM

Forfatter: Torben Sørensen / Dato: 1. marts 2003 / OS: FreeBSD 4.6

Hvis du er træt af at skulle logge ind i FreeBSD (og andre *NIX'er) i en sort prompt og godt kunne tænke dig et grafisk login (at X-serveren blev startet med det samme), er XDM en udemærket løsning.

XDM er hurtig og meget simpel - der er bare den lille hage at man kun har login billedet, og ikke en "Restart" eller "Shutdown" funktion som default. Men de kan sagtens laves :)

1. XDM opsætning

1.1 Test XDM før du starter

Inden du kan bruge XDM skal du sikre dig at du kan starte X-serveren med kommandoen: startx. Hvis det går godt, kan du prøve (som root) at starte XDM med kommandoen xdm. Herefter kan du prøve at logge ind via XDM. Dette kræver at der findes en .xsesstion i /home/dit_navn (hvis den ikke findes kan du lave den med "echo > startxfce4" - forudsat at du har installeret XfCE4).

1.2 Opsætning

Når du har testet at XDM køre som den skal, skal du slå XDM til så den starter automatisk når maskinen booter. Dette gøres i filen /etc/ttys:
# ee /etc/ttys

Ændre linien fra:
ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure

...til:
ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm on secure

NNår en bruger logger ind via XDM, køres scriptet ~/.xsession for den enkelte bruger. Der findes ligeledes et tilsvarende .xsession, men hvis en bruger har et script i sit /home bibliotek, er det den der bruges.

Når man starter X-serveren med kommandoen "startx", køres indholdet af filen ~/.xinitrc. Derfor, hvis du vil benytte samme Window Manager med XDM og startx, kan du bare lave et symbolsk link mellem de to filer:

> cd /home/torben
> ln -s .xinitrc .xsession

Min .xinitrc ser sådan ud:
# ********* .xinitrc ********
# Start XFCE4
startxfce4

Hvis der optår en fejl eller du ikke kan logge ind via XDM, lægges der fejlbeskeder i filen ~/.xsession-errors.

1.3 Ændring af XDM udseendet

Hvis du ikke er tilfreds med XDM's standard udseende (og det er du nok ikke) eller funktioner i XDM, findes alle de filer du skal bruge i /usr/X11R6/lib/X11/xdm.

Filen .Xressources indeholder oplysninger om, hvordan XDM skal se ud. Du kan fx. ændre baggrundsfarven ved at gøre følgende .Xresources:

*Foreground: white
*Background: grey

Kan ændres til:

*Foreground: yellow2
*Background: midnightblue

For at ændre baggrundsfarven, skal du ændre filen Xsetup_0:

xsetroot -bitmap /home/torben/img/freebsd.xbm -bg \#FF9966 -fg \#000000

Eller:

xv -root -quit /home/torben/img/freebsd.jpg

X distributioner indeholder som regl programmet "xclock" (analogt ur). For at vise uret i XDM, kan du indsætte følgende linie i din Xsetup fil:

xclock -hl white
-hd white -bg black -fg white -geometry 100x100+0+0 &

Dette viser et analogt ur i toppen til venstre (uret bliver der når brugeren er logget ind).

Screenshot af XDM/KDM

Hvis du vil tage et screenshot af XDM, kan du gøre det med følgende:

> xwd -root > screenshot.xwd
> convert screenshot.xwd screenshot.png

hvis du ikke vil have selv kommandoen med kan du sige:

> sleep 10; xwd -root > screenshot.xwd

På den måde kan man også få åbne menuer og den slags med.
xwd er i xbase-clients

Knapper i XDM

Ja, det er muligt at lave knapper til forskellige formål. For eksempel er det uhyggelig rart med muligheden for at kunne genstarte- eller lukke maskinen, uden at skulle CTRL+F1 for at logge ind som root og fx køre kommandoen:

# shutdown -h now

Bemærk: For at knapper kan virke, skal Tcl/Tk installeres (/usr/ports/x11-toolkits/p5-Tcl-Tk)

Nedenfor at vist et eksempel på hvordan knapper på XDM ser ud.

3.1 Scriptet

For at kunne vise selve knapperne, skal der laves et lille ”wish” script, som skal køres når XDM starter (indsættes i Xsetup_0 – se senere).

Scriptet nedenfor kan du kopiere og indsætte i en fil som du placere i /usr/local/sbin/xshutdown (husk at ændre owner på filen: ”# chown root:wheel /usr/local/sbin/xshutdown” og lav filen udførbar med ”#chmod 755 /usr/local/sbin/xshutdown”):

#!/usr/local/bin/wish8.2 proc restartf { } { exec /sbin/shutdown -r now } proc shutdownf { } { exec /sbin/shutdown -p now } frame .buttons button .buttons.restart \ -text "Restart" \ -width 10 \ -borderwidth 1 \ -command restartf button .buttons.shutdown \ -text "Shutdown" \ -width 10 \ -borderwidth 1 \ -command shutdownf pack append .buttons \ .buttons.shutdown {left expand fill} \ .buttons.restart {left expand fill} pack .buttons -side top -fill x -expand true

Bemærk: Første linie i scriptet indeholder kommandoen wish8.2. FreeBSD benytter versionsnummeret i kommandoen.

3.2 Xsetup_0

Min /usr/X11R6/lib/X11/xdm/Xsetup_0:

#!/bin/sh # $Xorg: Xsetup_0,v 1.3 2000/08/17 19:54:17 cpqbld Exp $ xv -root -quit /home/tos/BACK_THIS_UP/wallpapers/freebsd.jpg & /usr/local/sbin/xshutdown -geomerty +500+500 & echo $! > /var/run/xshutdown.pid

De vigtigste linier i ovenstående eksempel, er linie 4 og 5. Linie 4 er scriptet der laver knapperne og linie 5 er pid. Vi skal bruge pid senere, for at kunne fjerne knapperne igen, når vi er logget ind via XDM.

3.3 GiveConsole

Min /usr/X11R6/lib/X11/xdm/GiveConsole:

#!/bin/sh # Assign ownership of the console to the invoking user # $Xorg: GiveConsole,v 1.3 2000/08/17 19:54:17 cpqbld Exp $ # # By convention, both xconsole and xterm -C check that the # console is owned by the invoking user and is readable before attaching # the console output. This way a random user can invoke xterm -C without # causing serious grief. # kill -9 `cat /var/run/xshutdown.pid` rm -f /var/run/xshutdown.pid chown $USER /dev/console

kill-linien og rm-linien fjerne knapperne igen når der er logget ind via XDM.

XDM

Forfattere:

Torben Sørensen


Copyright 2005 © www.coffeetunes.dk