# Handbok &kdm;

## Inledning

Inloggningshanteraren tillhandahåller ett grafiskt gränssnitt som låter dig logga in på ett system. Det begär användarnamn (inloggning) och lösenord, verifierar användarens identitet och startar en "session". &kdm; är en "drop-in"-ersättning av xdm, X Display Manager, och är överlägsen på ett antal olika sätt.

Inloggningshanterarens användargränssnitt består av två dialogrutor. Den huvudsakliga dialogrutan har följande funktioner:

- Fältet "Användare" där du anger ditt användarnamn.

- Fältet "Lösenord" där du anger ditt lösenord.

- Ett område till vänster om fälten "Användare" och "Lösenord" som kan användas för att visa en statisk bild eller en analog klocka.

- (Valfritt) en grafisk bild av varje användare (till exempel ett inläst fotografi). Att klicka på en bild är ekvivalent med att skriva in motsvarande användarnamn i fältet "Användare" (den här funktionen är en imitation av inloggningsrutan på IRIX).

- Kombinationsrutan "Typ av session" som låter inloggningshanteraren starta sessioner med diverse olika fönsterhanterare eller skrivbordsmiljöer som är installerade på systemet, inklusive KDE, KDE2 och GNOME.

- Knappen "OK" som validerar kombinationen av användarnamn/lösenord och försöker starta en session av den valda typen.

- Knappen "Rensa" som tar bort texten från fälten "Användare" och "Lösenord".

- (Valfritt) knappen "Stäng av" som visar dialogrutan "Stäng av".

Dialogrutan "Stäng av" visar ett antal knappar som gör att man kan välja ett av följande alternativ:

Stäng av

- Stäng av systemet på ett kontrollerat sätt, klart för att slå av strömmen.

Starta om

- Stäng av systemet och starta om. För system som använder Lilo, kan du välja ett visst operativsystem att användas vid omstarten i en valfri kombinationsruta.

Starta om X-server

- Avsluta och starta om X-servern. Ett typiskt tillfälle då du kan behöva använda det här alternativet är om du har ändrat X11-inställningar på något sätt.

Konsollinloggning

- Avsluta X-servern och återgå till konsolläge. Det här åstadkoms genom att ta ner systemet till körnivå 3. Ett typiskt tillfälle då systemadministratören kan behöva använda det här alternativet är innan X11-programvaran ska uppdateras eller omkonfigureras.

Om man trycker på knappen "OK" så påbörjas den valda åtgärden. Med knappen "Avbryt" återgår man till inloggningshanterarens vanliga dialogruta.

Nästa kapitel beskriver hur inloggningshanteraren anpassas. Följande kapitel beskriver hur man anpassar systemet för att använda inloggningshanteraren, hur man bygger och installerar den från källkod och hur man kan lära sig mer om inloggningshanteraren och KDE-projektet.

## Anpassa inloggningshanteraren

Det här kapitlet antar att inloggningshanteraren redan är igång på ditt system, och att du vill ändra beteendet på något sätt. Om ditt problem är mer allvarligt, hoppa vidare till följande kapitel.

När inloggningshanteraren startar, läser den sina inställningar från filen `kdmrc`. Eftersom inloggningshanteraren måste vara startad innan någon användare är inloggad, hör den inte till någon särskild användare. Därför är det inte möjligt att ha en användarspecifik `$HOME/share/config/kdmrc` file; alla användare delar på den gemensamma versionen av `kdmrc`, som finns i `$KDEDIR/share/config/kdmrc`. Av detta följer att inloggningshanterarens inställningar bara kan ändras av användare som har skrivbehörighet till `$KDEDIR/share/config/kdmrc` (normalt begränsat till systemadministratörer som är inloggade som "root").

Du kan titta på den aktuella `kdmrc`-filen på ditt system (som normalt finns i `$KDEDIR/share/config/kdmrc`), och du kan anpassa inloggningshanteraren genom att redigera den här filen. Som ett alternativ kan du använda det grafiska inställningsverktyget som tillhandahålls av KDE:s inställningscentral (under Inställningar System Inloggningshanteraren), som beskrivs i hjälpfil för inställningscentralen.

Resten av det här kapitlet beskriver innehållet i `kdmrc`-filen. Om du är nöjd med att använda den grafiska inställningsmodulen, finns det ingen anledning att läsa vidare.

Det finns fyra sektioner i `kdmrc`:

### KDM

Nycklarna i den här sektionen är:

    StdFont
    FailFont
    GreetFont
    GreetString
    SessionTypes
    LogoArea
    LogoPixmap
    ShutdownButton
    Shutdown
    Restart
    ConsoleMode
    UserView
    Users
    NoUsers
    SortUsers
    GUIStyle

En kort beskrivning av nycklarna:

`*Font`

- En teckensnittssträng formatterad så här: Courier,12,5,iso-8859-1,50,0.

`GreetString`

- Titeln på inloggningshanterarens fönster.

`SessionTypes`

- En lista av sessionsparametrar separerade med kommatecken, som vanligtvis används för att välja en särskild fönsterhanterare. Förvalt värde är `SessionTypes=kde,failsafe`.

`LogoArea`

- Avgör vad som syns i nedre vänstra hörnet av inloggningsfönstret. Kan antingen vara `KdmLogo` (om detta gäller visas bilden som anges av `LogoPixMap`) eller `KdmClock` (om detta gäller visas en klocka).

`LogoPixmap`

- Anger bilden som ska visas i nedre vänstra hörnet av inloggningsfönstret när LogoArea=KdmLogo.

`ShutdownButton`

- ShutdownButton kontrollerar när avstängningsknappen visas och kan vara en av `All` (alla), `None` (ingen), `RootOnly` (bara root) och `ConsoleOnly` (bara konsoll). Betydelsen av `All` och `None` är helt klar. Om du väljer `ConsoleOnly` kan du inte stänga av från en annan maskin. Om du väljer `RootOnly` blir du tillfrågad om root-lösenordet innan avstängningen fortsätter.

`Shutdown and Restart`

- Kommandon att köra vid avstängning och omstart av systemet. (förvalt: `/sbin/halt` och `/sbin/reboot`).

`ConsoleMode`

- Kommandosträngen som används av alternativet konsolläge för knappen "Stäng av". (Förvalt: `/sbin/init `3``). Det här alternativet är inte tillgängligt för BSD.

`UserView`

- Om detta är satt till "`1`", visas en grafisk bild av användare i inloggningshanterarens fönster.

`Users`

- En lista av användarnamn separerade med kommatecken, som visas i den grafiska användarlistan. Om `UserView` är satt till "`1`" och posten `Users` saknas, letar &kdm; efter användare i lösenordsfilen `/etc/passwd`. Användarna som visas är de som har ett riktigt namn förutom inloggningsnamnet, en hemkatalog och ett förvalt skal - de övriga hoppas över. För varje användare tittar &kdm; i `$KDEDIR/share/apps/kdm/pics/users/` efter en ikon. Om det finns en ikon som heter `NN.png`, använder &kdm; den för att visa användaren NN. Om ikonen saknas, använder &kdm; `default.png`.

  &kdm; kan hantera ikoner av olika storlek, men resultatet ser fult ut. Lösningen är att använda ett program som KDE:s Pixie, (eller GNU Image Manipulation Program, gimp, eller John Bradleys XV) för att konvertera alla bilder till samma storlek. Ett värde på 64x64 bör ge tillräcklig upplösning och passar ihop med de förvalda ikoner som tillhandahålls. Dessa program kan också användas för att överföra bilder från olika format till PNG-format.

`NoUsers`

- En lista av användarnamn som inte visas, separerade med kommatecken. Använd den för att filtrera bort "pseudoanvändare" som `sync` och `shutdown` från visningen av användare.

`SortUsers`

- Om satt till "`0`", visas listan av användare i den ordning som den lästes. Förval är att visa användare i sorteringsordning.

`GUIStyle`

- Kan antingen vara `Motif` eller `Windows`.

### KDMDESKTOP

Den här sektionen är föråldrad. I tidigare versioner av &kdm; användes den för att ange bakgrundsskärm innan inloggning. Den grafiska inställningen av &kdm; kan fortfarande skapa den här sektionen, men den ignoreras av &kdm;.

### Locale

Den här sektionen hanteras av ett KDE-standardbibliotek. De enda nycklarna som troligen kan ha någon effekt är:

    Country
    Language
    Charset

En kort beskrivning av nycklarna:

`Country`

- anger landet. Titta i `$KDEDIR/share/locale/l10n` för en fullständig lista på landskoder som systemet stöder. Landskoden används för att hitta filen `$KDEDIR/share/locale/l10n/country_code/entry.desktop` som används för att tillhandahålla områdesspecifik information som tids- och datumformat och den lokala valutasymbolen.

`Language`

- anger språket som &kdm; använder (förvalt: `C`, som representerar amerikansk engelska). Värdet kan överskridas av miljövariabeln `KDE_LANG`.

`Charset`

- anger teckenkodningen som används (förvalt: `iso-8859-1`).

Om du ändrar nycklarna men all dialogtext förblir på engelska, betyder detta förmodligen att du inte har installerat översättningen på systemet.

### Lilo

Lilo (Linux Loader) är en uppstartshanterare som ofta används på GNU/Linux-system. Lilo levereras med omfattande dokumentation (se man lilo till att börja med). Den här sektionen anpassar mekanismer för att starta om systemet med Lilo. Nycklarna är:

    Lilo
    LiloCommand
    LiloMap

En kort beskrivning av nycklarna:

`Lilo`

- Anger om Lilo används för att starta om systemet (förvalt: `FALSE`). När den här nyckeln sätts till `TRUE`, innehåller avstängningsdialogrutan en extra kombinationsruta intill omstartsknappen. Den här rutan låter dig välja den kärna som ska användas när systemet startas om. Listan på kärnor skapas genom att kontrollera Lilo-mappningsfilen.

`LiloCommand`

- Platsen för Lilo-programmet (förvalt: `/sbin/lilo`).

`LiloMap`

- Platsen för Lilos mappningsfil. Mappningsfilen hanteras av Lilo och innehåller en lista av kärnor (versioner av operativsystem) att starta (förvalt: `/boot/map`).

## Anpassa ditt system för att använda inloggningshanteraren

Det här kapitlet antar att ditt system redan är anpassat för att använda X-Window-systemet, och att du bara behöver anpassa det för att tillåta grafisk inloggning.

### Att ställa in &kdm;

Den grundläggande inställningen som avgör om din dator startar med en terminalprompt (konsolläge) eller en grafisk inloggning är den förvalda körnivån. Programmet /sbin/init sätter körnivån beroende på innehållet i konfigurationsfilen `/etc/inittab`. Förvalda körnivåer som används av olika Unix-system (och olika Linux-distributioner) varierar, men om du tittar i `/etc/inittab` bör början på filen likna det här:

    # Default runlevel. The runlevels used by RHS are:
    # 0 - halt (Do NOT set initdefault to this)
    # 1 - Single user mode
    # 2 - Multiuser, without NFS
    # 3 - Full multiuser mode
    # 4 - unused
    # 5 - X11
    # 6 - reboot (Do NOT set initdefault to this)

    id:3:initdefault:

Allt utom den sista raden av det här utdraget är kommentarer. De visar att körnivå 5 används för X11 och att körnivå 3 används för fleranvändarläge utan X11 (konsolläge). Den sista raden anger att systemets förvalda körnivå är 3 (konsolläge). Om ditt system använder grafisk inloggning för närvarande (till exempel med xdm) så matchar dess förvalda körnivå den som gäller för X11.

Körnivån med grafisk inloggning (xdm) för några vanliga Linux-distributioner är:

- 5 för Red Hat 3.x och senare, och för Mandrake

- 4 för Slackware

- 3 för S.u.S.E. 4.x och 5.x

Det första steget i att anpassa ditt system är att försäkra dig om att du kan starta &kdm; från kommandoraden. När det här väl fungerar, kan du ändra dina systeminställningar så att &kdm; startar automatiskt varje gång du startar om systemet.

För att prova &kdm;, måste du först ta ditt system till en körnivå som inte använder xdm. För att göra detta, ge ett kommando som liknar:

    /sbin/init 3

Istället för talet "`3`" ska du ange den körnivå som är lämplig för konsolläge för ditt system.

Därefter måste du hitta inställningskatalogen för xdm, normalt `/etc/X11/xdm/` eller `/usr/X11R6/lib/X11/xdm/`. Inställningskatalogen innehåller filen `Xsetup_0`. Om du byggde &kdm; från källkod och `configure`-steget inte kunde hitta den här katalogen, installerar det en ny version av `Xsetup_0` från en mall i &kdm;:s källkodsträd. Du kan infoga raden:

    kdmdesktop

i din fil för att visa någon trevlig bakgrund (bilder och bakgrundsfärger). (Jag är inte säker på att detta fungerar, det behövs helt klart inte). Om `KDEDIR` inte är `/opt/kde` kan du behöva ändra sökvägen till `kdmdesktop`.

Om ditt system använder Pluggable Authentication Modules (PAM), som är normalt i senare Red Hat- och Mandrake-system, bör du kontrollera att din PAM-inställning tillåter inloggning via en service som heter `xdm`. Om du tidigare har använt xdm med lyckat resultat, ska du inte behöva göra några ändringar i PAM-inställningarna för att kunna använda &kdm;, `/etc/pam.conf` eller `/etc/pam.d/xdm`. Information om anpassning av PAM är utanför den här handbokens omfattning, men PAM levereras med fullständig dokumentation (försök titta i `/usr/doc/pam*/html`).

Nu är det dags att prova inloggningshanteraren, genom att ge följande kommando:

    kdm -nodaemon

Om du får inloggningshanterarens dialogruta och du kan logga in, är du på god väg. Det som i huvudsak kan gå fel här är att den dynamiska länkaren inte hittar de delade Qt- och KDE-biblioteken. Om du har en binärdistribution av KDE-biblioteken, försäkra dig om att &kdm; är installerad där biblioteken tror att KDE är installerad (oftast `/opt/kde/bin`) och försök sätta några miljövariabler att peka på dina KDE- och Qt-bibliotek. Till exempel:

    export KDEDIR=/opt/kde
    export QTDIR=/usr/lib/qt2
    export PATH=$KDEDIR/bin:$QTDIR/bin:$PATH
    export LD_LIBRARY_PATH=$KDEDIR/lib:$QTDIR/lib

Om du fortfarande inte lyckas, försök att starta xdm istället, för att försäkra dig om att du inte lider av allvarligare X-konfigurationsproblem.

När du kan starta inloggningshanteraren med lyckat resultat, kan du börja ersätta xdm med &kdm;. Återigen är detta beroende på distributionen.

- För Redhat, redigera `/etc/inittab`, leta efter strängen xdm och byt ut den mot &kdm; (inklusive alla sökvägar).

- För Mandrake, startar X11-körnivån i `/etc/inittab` skalskriptet `/etc/X11/prefdm`, som är inställt att välja mellan flera olika skärmhanterare, inklusive &kdm;. Försäkra dig om att alla sökvägar är riktiga för din installation.

- För S.u.S.E, redigera `/sbin/init.d/xdm` och lägg till en rad i början:

      . /etc/rc.config
      DISPLAYMANAGER=kdm
      export DISPLAYMANAGER

- De flesta övriga distributioner är en variant av någon av dessa.

Om du inte gillar att ändra `inittab`, är ett alternativ att döpa om `xdm` till `xdm.bak` och göra `xdm` till en symbolisk länk till &kdm;.

I det här läget kan du prova &kdm; igen genom att ta ditt system till körnivån som nu ska starta &kdm;. För att göra detta ge ett kommando som det här:

    /sbin/init 5

Istället för talet "`5`" ska du ange den körnivå som är lämplig för att köra X11 på ditt system.

Det slutliga steget är att redigera `initdefault` posten i `/etc/inittab` för att ange den passande körnivån för X11.

Innan du gör den här ändringen, försäkra dig om att du har ett sätt att starta om ditt system om ett problem uppstår. Det här kan vara en "startdiskett" som tillhandahålls av din operativsystemdistribution eller en specialgjord "startdiskett" såsom `tomsrtbt`. Strunta i det här rådet på egen risk.

När du startar om ditt system, ska du slutligen få inloggningshanterarens grafiska inloggningsruta.

Om det här steget inte lyckas är det troligaste problemet att miljön som används vid uppstart skiljer sig från den som du hade när du provade på kommandoraden. Kontrollera filer som `/etc/X11/xdm/Xsetup_0` (och alla skript som den startar) för att vara säker på att din sökväg inte ändras utan din vetskap. Om du försöker få två versioner av KDE att existera tillsammans, var särskilt försiktig så att de inställningar som du använder för dina `PATH` och `LD_LIBRARY_PATH` miljövariabler är konsekventa, och att uppstartsskripten inte överskrider dem på något sätt.

### Stöd för flera fönsterhanterare

Huvuddialogrutan för &kdm; innehåller kombinationsrutan "Typ av session", som låter dig välja en fönsterhanterare som du vill använda för din session. Det här kapitlet beskriver de ändringar som du måste göra i konfigurationsfiler för att stöda den här funktionen.

Alternativen som visas i kombinationsrutan "Sessiontyp" anpassas av poster i `KDM` sektionen i `kdmrc`.

När du loggar in med &kdm;, körs skalskriptet `Xsession`. Sessiontypen som du valt skickas vidare som en kommandoradsväljare (`Xsession` finns i `/etc/X11/xdm/` för Redhat och Mandrake, och i `/usr/X11R6/lib/X11/xdm/` för S.u.S.E.). Medan du avlusar, kan det vara en hjälp att lägga till följande rad till `Xsession`:

    echo "$0 || $1 || $2"
    > $HOME/.Xsession_args

Hur du fortsätter nu beror på hur ditt system vanligtvis startar fönsterhanterare. Här är två olika fall, med exempel på de ändringar som du måste göra:

- Fönsterhanteraren startas av kommandon inne i `Xsession`. I det här fallet kan du lägga till en case-sats för att starta den lämpliga fönsterhanteraren. Linux Mandrake använder den här metoden. Här är ett utdrag från filen `Xsession`:

      # now, we see if xdm/gdm/kdm has asked for a specific environment
      case $# in
      1)
          case $1 in
              kde)
              source /opt/kde2/bin/kde1
              exec startkde
              ;;
              kde2)
              source /opt/kde2/bin/kde2
              exec startkde
              ;;
          	failsafe)
      	exec xterm -geometry 80x24-0-0
      	;;
      	default)
      	;;
      	*)
      	exec /bin/sh -c "$(/usr/sbin/chksession -x=$1)"
      	;;
           esac
      esac

- Fönsterhanteraren startas av ett annat skript som körs av `Xsession`. I det här fallet måste du försäkra dig om att argumenten som skickas till `Xsession` också skickas vidare till detta andra skript. Om fönsterhanteraren till exempel startas så här:

      exec $startup

  du behöver ändra det till:

      exec $startup $@

  Efter du har gjort den här ändringen måste du spåra genom uppstarten för att hitta stället där fönsterhanteraren startas. Ett sätt använder `xinitrc` för att starta fönsterhanteraren, detta tillåter att systemfilen `/etc/X11/xinit/xinitrc` eller en användarspecifik fil `$HOME/.xinitrc` används. Om du redigerar `$HOME/.xinitrc`, kan du vilja spara en kopia i `/etc/skel`, så att den läggs till automatiskt i varje användarkonto som du skapar i framtiden. Här är ett exempel på en `xinitrc`-fil för ett system som använder det här sättet:

      #!/bin/bash
      #
      # .xsession/.xinitrc
      #
      # choose a window manager
      #

      defaultwm=kde
      #set the window manager to $1 if it was supplied
      windowmgr=${1:-$defaultwm}

      #start the respective window managers
      case ${windowmgr} in
        kde|kwm|kdestart)
      	WINDOWMANAGER=startkde
      	;;
        fvwm|fvwm2)
      	WINDOWMANAGER=fvwm2
      	;;

        fvwm95)
      	WINDOWMANAGER=fvwm95
      	;;

        *)    WINDOWMANAGER=windowmgr   # default for unknown wm's

      esac

      #
      # load resources
      #

      if [ -f /usr/X11R6/lib/X11/Xmodmap ]; then
          xmodmap /usr/X11R6/lib/X11/Xmodmap
      fi

      if [ -f ~/.Xmodmap ]; then
          xmodmap ~/.Xmodmap
      fi

      if [ -f ~/.Xdefaults ]; then
          xrdb -merge ~/.Xdefaults
      fi

      if [ -f ~/.Xresources ]; then
          xrdb -merge ~/.Xresources
      fi
      #
      # finally start the window manager
      #
      exec $WINDOWMANAGER

## Att bygga och installera kdm

&kdm; är en del av KDE-projektet. De olika komponenterna i KDE-projektet är uppdelade i delar som kallas paket. &kdm; ingår som en del i paketet som heter kdebase. Du kan skaffa KDE:s källkod från olika CD-skivor med Linux- och BSD-distributioner, eller genom att ladda hem den från www.kde.org eller dess spegelplatser. Om du har ett för gammalt källkodsträd kan du använda en av KDE:s cvsup-servrar för att uppdatera det med användning av minimal nätverksbandbredd.

Innan du bygger kdebase, måste du ha byggt och installerat (i den här ordningen) version 2 av Qt-biblioteket och KDE-paketen kde-qt-addon, kdesupport och kdelibs.

För att kunna bygga något av det ovanstående, så måste du antingen ha X-Window systemet installerat, tillsammans med en C++ kompilator och GNU konfigureringsverktygen configure, automake och autoconf.

Om de föregående styckena ger intryck av att vara skrivna på ett främmande språk, så har du antingen råkat hamna i en mindre lämplig del av den här handboken, eller så har du just börjat med ett stort inlärningsäventyr.

Om du har lyckats uppfylla alla förutsättningar, är det inte troligt att du har några problem med att bygga och installera kdebase. &kdm; är då installerat i katalogen "`$KDEDIR/bin`".

`make `install`` skriver över din tidigare `kdmrc`.

## Övriga informationskällor

Eftersom &kdm; härrör från xdm, kan xdm-manualsidan ge användbar bakgrundsinformation. För problem relaterade till X, försök med manualsidorna för X och startx. Om du har frågor om &kdm; som inte besvaras av den här handboken, kan du dra nytta av det faktum att &kdm; tillhandahålls under villkoren i GNU Public License: genom att titta i källkoden.

## Tack till och licens

&kdm; utgår från, och innehåller kod från, xdm.

&kdm; 0.1 är skrivet av Matthias Ettrich. Alla senare versioner är skrivna av Steffen Hansen.

Xdm är Copyright (c) 1990, X-konsortiet.

Övriga delar av &kdm;-koden är copyright av upphovsmännen, och licenseras under villkoren i GNU GPL. Vem som helst får ändra &kdm; och distribuera resultatet igen, under förutsättning att upphovsmännens namn nämns.

&kdm; kräver Qt-biblioteket, som är Copyright Troll Tech AS.

Bidrag till dokumentation:

- Dokumentation skriven av Steffen Hansen stefh@dit.ou.dk

- Dokumentation utökad av Gregor Zumstein zumstein@ssd.ethz.ch. Senaste uppdatering 1998/07/09

- Dokumentation reviderad för KDE2 av Neal Crooknac@forth.org. Senaste uppdatering 2000/07/06

Dokumentation Copyright Steffen Hansen, Gregor Zumstein och Neal Crook.

Översättning Stefan Asserhäll stefan.asserhall@telia.com

&underFDL; &underGPL;