<chapter id="kdm-themes">
  <title
>Skapa teman för inloggningshanterarens välkomstruta</title>

  <para
>Det här avsnittet beskriver hur teman skapas för välkomstrutan med teman.Se installerade standardteman och teman från <ulink type="http" url="http://www.kde-look.org/index.php?xcontentmode=40"
>webbsidan med teman</ulink
> för exempel som innehåller skärmbilder. </para>

  <sect1 id="theme-overview">
    <title
>Översikt av teman</title>

    <para
>Inloggningshanterarens teman kan skapas genom att skapa en XML-filsom följer specifikationen i <filename
>$<envar
>KDEDIR</envar
>/share/apps/doc/kdm/greeter.dtd</filename
>. Temafiler lagras i katalogen <filename class="directory"
>$<envar
>KDEDIR</envar
>/share/apps/kdm/themes/<replaceable
>theme_name</replaceable
></filename
>. Temakatalogen ska innehålla en fil som heter <filename
>KdmGreeterTheme.desktop</filename
> som har ett format som liknar andra <filename class="extension"
>.desktop</filename
>-filer och ser ut så här: <programlisting
>[KdmGreeterTheme]
Greeter=circles.xml
Name=Circles
Description=Theme with blue circles
Author=Bond, James Bond
Copyright=(c) 2002 Bond, James Bond
Screenshot=screenshot.png
</programlisting>
    </para>

    <para
>Fälten <literal
>Name</literal
>, <literal
>Description</literal
>, <literal
>Author</literal
> och <literal
>Copyright</literal
> kan översättas precis som i andra <filename class="extension"
>.desktop</filename
>-filer. Alla filer som nämns ska vara i själva temakatalogen. Fältet <literal
>Screenshot</literal
> pekar på en fil som ska vara en 200x150 skärmbild av temat när det används (det är ok att inte ha en, men den gör det trevligare för användaren). Posten <literal
>Greeter</literal
> pekar på en XML-fil som innehåller temats beskrivning. </para>

    <!--
    <para>
      Once a theme is installed, it can be tested with the
      <command
>gdmthemetester</command
> program.  This program assumes that
      the X server supports a nested server command.  This command takes two
      arguments, first the environment that should be used.  The environment
      can be one of the following values: console, console-timed, flexi,
      remote-flexi, or xdmcp.  The &quot;console&quot; option tests the
      theme as it would be shown on an attached display.  The
      &quot;console-timed&quot; option tests the theme as it would be shown
      on an attached display with timed login enabled.  The &quot;flexi&quot;
      option tests the theme as it would be shown on an attached flexible
      display (such as started via Xnest).  Finally, the &quot;xdmcp&quot;
      option tests the theme as it would be shown for remote XDMCP 
      displays.  The second argument is the theme name.  For example, to 
      test how the circles theme would look in XDMP remote display mode,
      you would run the following command:
    </para>

<cmdsynopsis>
  <command
>gdmthemetester</command
> <arg
>xdmcp</arg
> <arg
><replaceable
>circles</replaceable
></arg>
</cmdsynopsis>

    <para>
      When developing a theme, make sure to test all the environments, and
      make sure to test how the caps lock warning looks by pressing the caps
      lock key.  Running <command
>gdmthemetester</command
> is also a good way
      to take screenshots of &kdm; themes.  Simply take a screenshot of the
      theme running in the nested display window.  This can be done in GNOME
      by focusing the nested login window and pressing Alt-PrintScreen.
    </para>
    -->

    <para
>När ett tema väl har testats fullständigt, skapa ett tar-arkiv som innehåller katalogen som den skulle installeras i katalogen <filename class="directory"
>$<envar
>KDEDIR</envar
>/share/apps/kdm/themes</filename
>. Det är standardformatet för att distribuera inloggningshanterarens teman. </para>
  </sect1>

  <sect1 id="theme-format">
    <title
>Detaljerad beskrivning av temats XML-format</title>

    <sect2 id="greeter-tag">
      <title
>Toppnivånod</title>

      <para
>Inloggningshanterarens teman är XML-filer med taggen &lt;greeter&gt; i roten. Toppnivånoden är en <link linkend="item-nodes"
>objektnod</link
> av typen <literal
>rect</literal
> med en implicit <link linkend="fixed-nodes"
>fast layout</link
>. </para>

      <!--
      <para>
        You may specify a Qt GUI style to
        be used with this theme by using the gui-style attribute in the
          greeter tag as in the following example.
 gui-style=&quot;Plastique&quot;
      </para>
      -->

<programlisting
>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE greeter SYSTEM "greeter.dtd"&gt;
&lt;greeter&gt;
[...]
&lt;/greeter&gt;
</programlisting>

      <para
>Inne i taggen greeter kan noder finnas som beskrivs i nästa avsnitt av dokumentet. Vissa av dessa noder är behållare (layoutnoder, objektnoder) som återigen kan innehålla andra noder. </para>
    </sect2>

    <sect2 id="item-nodes">
      <title
>Objektnoder</title>

      <para
>Ett tema för inloggningshanteraren skapas genom att ange en hierarki av objekt- och layoutnoder. Objektnoder kan ha följande värden på egenskapen <literal
>type</literal
>: </para>

      <variablelist>

        <varlistentry>
          <term
>button</term>
          <listitem>
            <para
>Ett knappfält. Fältet använder en Qt-knapp. </para>
            <para
>Det är också möjligt att få vilket annat objekt som helst att bete sig som en knapp genom att ange egenskapen <literal
>button</literal
> som <literal
>true</literal
>. Det är dock bättre att använda Qt-knappar i inloggningshanteraren eftersom de är tillgängliga för handikappade användare. </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>entry</term>
          <listitem>
            <para
>En grafisk inmatningskomponent som en radeditor eller kombinationsruta. Observera att det är endast en platsmarkör för grafiska Qt-komponenter.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>label</term>
          <listitem>
            <para
>En textetikett. Måste antingen innehålla en <link linkend="text-nodes"
>textnod</link
> eller en <link linkend="stock-nodes"
>standardnod</link
> för att ange texten. </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>list</term>
          <listitem>
            <para
>En grafisk komponent för att bläddra efter ansiktsbilder.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>pixmap</term>
          <listitem>
            <para
>En rastrerad bild med ett format som Qt stöder, t.ex. PNG, JPEG, Tiff, etc.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>rect</term>
          <listitem>
            <para
>En enkel rektangel.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>svg</term>
          <listitem>
            <para
>En vektorbild med SVG-format.</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para
>Till exempel: <programlisting>
&lt;item type=&quot;label&quot;&gt;
</programlisting
> Ett objekt som fungerar som en knapp: <programlisting
>&lt;item type=&quot;rect&quot; id=&quot;disconnect_button&quot; button=&quot;true&quot;&gt;.
</programlisting>
      </para>

      <para
>Normalt försvinner Inloggningshanterarens skärm efter behörighetskontrollen. Det kan orsaka flimmer mellan inloggningsskärmen och sessionen. Egenskapen <literal
>background</literal
> låter användare ange vilka element i temat som är bakgrundsbilden. När den används, får den Inloggningshanteraren att ta bort alla objekt som inte hör till bakgrunden och återge kvarstående bakgrundsobjekt på rotfönstret. Det kan användas för att skapa en jämn övergång mellan inloggningsskärmen och sessionen: <programlisting>
&lt;item type=&quot;rect&quot; background=&quot;true&quot;&gt;
  &lt;normal file="background.svg"/&gt;
  &lt;pos x=&quot;0&quot; y=&quot;0&quot; width=&quot;100%&quot; height=&quot;-75&quot;/&gt;
&lt;/item&gt;
</programlisting
> För att använda en annan bakgrund vid inloggningsövergången än den som används vid inloggning, ska temat ange två objektnoder (som till exempel kan innehålla punktavbildningar eller SVG-objekt). Objektet som motsvarar välkomstrutans bakgrund ska inte ha egenskapen <literal
>background</literal
>, medan objektet som motsvarar övergångsbakgrunden ska ha egenskapen <literal
>background</literal
>. Till exempel: <programlisting
>&lt;?xml version="1.0" encoding=&quot;UTF-8&quot;?&gt;
&lt;!DOCTYPE greeter SYSTEM &quot;greeter.dtd&quot;&gt;
&lt;greeter&gt;
  &lt;item type=&quot;rect&quot; background=&quot;true&quot;&gt;
    &lt;normal file="background_for_login.svg" element="background"/&gt;
    &lt;pos x=&quot;0&quot; y=&quot;0&quot; width=&quot;100%&quot; height=&quot;100%&quot;/&gt;
  &lt;/item&gt;
  &lt;item type=&quot;rect&quot;&gt;
    &lt;normal file="background_for_greeter.svg"/&gt;
    &lt;pos x=&quot;0&quot; y=&quot;0&quot; width=&quot;100%&quot; height=&quot;100%&quot;/&gt;
  &lt;/item&gt;
  [...]
&lt;/greeter&gt;
</programlisting>

      </para>

      <para
>För arrangemang med flera skärmar, kan teman också ange utseendet hos andra skärmar än den som välkomstrutan finns på, men oftast visas bara bakgrundsobjekt där. För att ange vilken eller vilka skärmar ett objekt ska visas på, kan egenskapen <literal
>screen</literal
> användas, med värdet ett av <literal
>greeter</literal
>, <literal
>other</literal
> eller <literal
>all</literal
>, vilket i tur och ordning betyder skärmen med välkomstrutan, alla skärmar utan välkomstruta eller alla skärmar. </para>

      <variablelist>
        <para
>Varje objekt kan ges ett namn via egenskapen <literal
>id</literal
>. Vissa sådana egenskaper känns igen av inloggningshanteraren, så att objekten får specialfunktioner: </para>

        <!--
        <varlistentry>
          <term
><literal
>list</literal
> items</term>
          <listitem>

            <para>
              List items by default display as lists, but the
              <literal
>combo=&quot;true&quot;</literal
> attribute can be used
              to specify combo box style (combo style supported since &kde; ).
              Some predefined lists may be included in a theme by using the
              following id values.  Customized lists may also be defined,
              which are explained below.
            </para>

            <segmentedlist>
              <?dbhtml list-presentation="table"?>
              <segtitle
>Id</segtitle
><segtitle
>Function</segtitle>

              <seglistitem>
                <seg
>session</seg>
                <seg
>A list of available sessions, which allows the user to
                  pick the session to use.  Supported since &kde; .</seg>
              </seglistitem>

              <seglistitem>
                <seg
>language</seg>
                <seg
>A list of available languages, which allows the user to
                  pick the language to use.  Supported since &kde; .</seg>
              </seglistitem>

            </segmentedlist>
          </listitem>
        </varlistentry>
        -->

        <varlistentry>
          <term
>Objekt <literal
>button</literal
> och objekt med egenskapen <literal
>button=&quot;true&quot;</literal
>.</term>

          <listitem>
            <para
>Knappar utlöser typiskt vissa åtgärder. Dessutom döljer inloggningshanteraren knappar vars åtgärder av någon anledning inte är tillgängliga. </para>

            <segmentedlist>
              <?dbhtml list-presentation="table"?>
              <segtitle
>Id</segtitle
><segtitle
>Åtgärd</segtitle>

              <seglistitem>
                <seg
>chooser_button</seg>
                <seg
>Kör XDMCP-väljaren.</seg>
              </seglistitem>

              <!--
              <seglistitem>
                <seg
>custom_cmd_button[0-9]</seg>
                <seg
>Runs the <filename
>n-th</filename
> custom command.</seg>
              </seglistitem>
              -->

              <seglistitem>
                <seg
>disconnect_button</seg>
                <seg
>Kopplar ner från en fjärrsession.</seg>
              </seglistitem>

              <!--
              <seglistitem>
                <seg
>language_button</seg>
                <seg
>Open the language selection menu.</seg>
              </seglistitem>
              -->

              <!--
              <seglistitem>
                <seg
>halt_button</seg>
                <seg
>Power off the system.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>reboot_button</seg>
                <seg
>Restart the system.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>suspend_button</seg>
                <seg
>Suspend the system.</seg>
              </seglistitem>
              -->

              <seglistitem>
                <seg
>session_button</seg>
                <seg
>Visar menyn för val av sessionstyp.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>system_button</seg>
                <seg
>Visar en meny som fångar allt med diverse alternativ och åtgärder, beroende på inställningarna.</seg>
              </seglistitem>
            </segmentedlist>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>Objekt <literal
>label</literal
></term>

          <listitem>
            <para
>Inloggningshanteraren visar eller döljer etiketterna och ställer in deras text beroende på inloggningsdialogrutans tillstånd. </para>

            <segmentedlist>
              <?dbhtml list-presentation="table"?>
              <segtitle
>Id</segtitle
><segtitle
>Funktion</segtitle>

              <!--
              <seglistitem>
                <seg
>pam-prompt</seg>
                <seg
>Label that displays the <acronym
>PAM</acronym
> prompt.
                  This is the prompt that <acronym
>PAM</acronym>
                  uses to ask for username, password, etc.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>pam-message</seg>
                <seg
>Label that displays the <acronym
>PAM</acronym
> message.
                  These are messages that <acronym
>PAM</acronym
>/&kdm; gives
                  about state of the account, help about the prompts and other
                  information.</seg>
              </seglistitem>
              -->

              <seglistitem>
                <seg
>pam-error</seg>
                <seg
>Det här visar meddelandet <guilabel
>Inloggningen misslyckades</guilabel
>.</seg>
              </seglistitem>

            </segmentedlist>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>Objekt inbäddade i grafiska komponenter</term>

          <listitem>
            <para
>Inloggningshanteraren inbäddar särskilda grafiska Qt-komponenter i dessa objekt. </para>

            <segmentedlist>
              <?dbhtml list-presentation="table"?>
              <segtitle
>Id</segtitle
><segtitle
>Funktion</segtitle>

              <seglistitem>
                <seg
>user-entry</seg>
                <seg
>Inmatningsfält använt för inmatning av användarnamn.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>pw-entry</seg>
                <seg
>Inmatningsfält för lösenordsinmatning.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>domain-entry</seg>
                <seg
>Vissa <quote
>konversationsinsticksprogram</quote
> använder fältet för att efterfråga ett domännamn. Om fältet finns, ska tillhörande omgivande objekt ha <link linkend="show-nodes"
>visningsnoder</link
> med typen <literal
>plugin-domain-entry</literal
>.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>talker</seg>
                <seg
>Objektet ska ha typen <literal
>rect</literal
>. Det representerar den <quote
>aktiva</quote
> delen av välkomstrutan: den innehåller objekten <literal
>label</literal
> och <literal
>entry</literal
> som rör behörighetskontrollprocessen. Om ett givet <quote
>konversationsinsticksprogram</quote
> inte kan passa ihop befintliga objekt med sitt behov, försöker det inbädda en sammansatt grafisk komponent med en egen layout i objektet, och överskrider på så sätt helt och hållet temats <quote
>talker</quote
>. Strängt taget behöver inte Inloggningshanterarens teman tillhandahålla någon egenkonstruerad <quote
>talker</quote
> alls, eftersom alla insticksprogram för behörighetskontroll i Inloggningshanteraren kan utnyttja <literal
>talker</literal
>-objektet. </seg>
              </seglistitem>

              <seglistitem>
                <seg
>userlist</seg>
                <seg
>Objektet måste ha typen <literal
>list</literal
>. Om funktionen med användarlista är aktiverad, inbäddar Inloggningshanteraren den grafiska användarlistan här. Annars är objektet dolt.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>xconsole</seg>
                <seg
>Objektet ska ha typen <literal
>rect</literal
>. Om den inbyggda funktionen <command
>xconsole</command
> är inkompilerad och aktiverad, inbäddar inloggningshanteraren terminalkomponenten här. Annars är objektet dolt.</seg>
              </seglistitem>

            </segmentedlist>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>Övriga objekt</term>

          <listitem>
            <para
>Inloggningshanteraren visar eller döljer objekten beroende på inställningarna och välkomstrutans aktuella tillstånd. Inloggningshanteraren tvingar inte på dem några typkrav, men oftast lämpar de sig för en viss typ. </para>

            <segmentedlist>
              <?dbhtml list-presentation="table"?>
              <segtitle
>Id</segtitle
><segtitle
>Visas bara när ...</segtitle>

              <seglistitem>
                <seg
>timed-label</seg>
                <seg
>... tidsbegränsad inloggning pågår.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>caps-lock-warning</seg>
                <seg
>... Caps Lock är aktivt.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>xauth-warning</seg>
                <seg
>... &X-Server; inte kräver någon X-behörighetskontroll för att ansluta.</seg>
              </seglistitem>

              <!--
              <seglistitem>
                <seg
>pam-error-logo</seg>
                <seg
>... a pam-error message is being displayed.
                  This is useful for displaying an <guiicon
>Attention</guiicon>
                  icon, for example.</seg>
              </seglistitem>
              -->

              <seglistitem>
                <seg
>userlist-rect</seg>
                <seg
>... användarlistan är aktiverad. Genom att placera objektet <literal
>userlist</literal
> i detta, är det möjligt att skapa någonting som ser ut som en ram omkring listan och få den att bara visas när själva användarlistan visas.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>xconsole-rect</seg>
                <seg
>... den inbyggda terminalen <command
>xconsole</command
> är aktiverad. Jämförbar med <literal
>userlist-rect</literal
>.</seg>
              </seglistitem>

            </segmentedlist>
          </listitem>
        </varlistentry>

      </variablelist>

    </sect2>

    <sect2 id="layout-nodes">
      <title
>Noder med layoutinnehåll</title>

      <para
>Layoutnoder ingår inne i objektnoder, och innehåller själv objektnoder. Layoutnodens typ bestämmer hur ingående noder arrangeras. En objektnod kan innehålla en layoutnod av varje typ. </para>

      <sect3 id="box-nodes">
        <title
>Rutnoder</title>

        <para
>Rutnoder arrangerar automatiskt underliggande noder i en rad. De anges på följande sätt: <programlisting>
&lt;box orientation=&quot;<replaceable
>alignment</replaceable
>&quot; min-width=&quot;<replaceable
>num</replaceable
>&quot; min-height=&quot;<replaceable
>num</replaceable
>&quot;
    xpadding=&quot;<replaceable
>num</replaceable
>&quot; ypadding=&quot;<replaceable
>num</replaceable
>&quot; spacing=&quot;<replaceable
>num</replaceable
>&quot;
    homogeneous=&quot;<replaceable
>bool</replaceable
>&quot;&gt;
</programlisting
> Här betyder <replaceable
>num</replaceable
> antal bildpunkter, och <replaceable
>bool</replaceable
> betyder antingen <literal
>true</literal
> eller <literal
>false</literal
>. Värdet <replaceable
>alignment</replaceable
> kan antingen vara <literal
>horizontal</literal
> eller <literal
>vertical</literal
>. Om någon egenskap inte anges, får den värdet noll för tal, <literal
>false</literal
> för Booleska värden och <literal
>vertical</literal
> för orienteringen. </para>

        <para
>Mellanrummet (spacing) är avståndet mellan ingående objekt som ligger intill varandra. Utfyllnaden (padding) är rutans yttre marginal. Om rutan är homogen, tilldelas varje ingående objekt samma utrymme. </para>
      </sect3>

      <sect3 id="fixed-nodes">
        <title
>Fasta noder</title>

        <para
>Fasta noder är behållare vars underliggande objekt placeras ut på exakta koordinater. Behållarens storlek är den minsta rektangel som innehåller alla underliggande objekt. Fasta noder har inga extra egenskaper, så man använder bara: <programlisting>
&lt;fixed&gt;
</programlisting
> Därefter placeras andra objekt med lämpliga positionsnoder inne i den. </para>
      </sect3>

    </sect2>

    <sect2 id="position-nodes">
      <title
>Positionsnoder</title>

      <para
>Varje objekt kan ange sin position och storlek via noden <literal
>pos</literal
>. Till exempel: <programlisting
>&lt;pos x=&quot;0&quot; y=&quot;4&quot; width=&quot;100%&quot; height=&quot;100%&quot;/&gt;
</programlisting>
      </para>

      <para
>Om storleken inte anges, blir den objektets <quote
>naturliga</quote
> storlek, vilket kallas storlekstipset. Observera att alla objekt inte har användbara storlekstips. </para>

      <para
>Både position och storlek kan anges med procent, och beräknas i detta fall relativt till den omgivande behållarens storlek. För toppnivåobjekt är det procent av hela skärmen. Genom att lägga till cirkumflextecken (<literal
>^</literal
>) i storleksangivelsen är det möjligt att ändra den till att vara relativ i förhållande till det omgivande objektets omgivning, och så vidare. </para>

      <para
>Om objektet innehåller en ruta, kan bredd (<literal
>width</literal
>) och höjd (<literal
>height</literal
>) anges som <literal
>box</literal
>, för att ange att det är meningen att de ska vara rutans bredd och höjd, det vill säga objekten i rutan plus utfyllnaden. </para>

      <para
>Endera bredden (<literal
>width</literal
>) eller höjden (<literal
>height</literal
>) kan anges som <literal
>scale</literal
>, vilket betyder att den ska skalas enligt den andra dimensionens skala relativt dess storlekstips. Använd det för att automatiskt bevara proportionen hos skalade bilder. </para>

      <para
>Om egenskapen <literal
>expand</literal
> är angiven och har värdet <literal
>true</literal
>, expanderas objektet i den omgivande rutan så mycket som möjligt (det vill säga att det får större utrymme om det är tillgängligt). </para>

      <para
>Om bredden (<literal
>width</literal
>) eller höjden (<literal
>height</literal
>) är enkla tal, representerar ett negativt värde ett avstånd från i motsats till normalvärdet från vänsterkanten respektive överkanten. </para>

      <para
>I båda fallen är det möjligt att begränsa den slutliga storleken med egenskaperna <literal
>min-width</literal
>, <literal
>min-height</literal
>, <literal
>max-width</literal
> och <literal
>max-height</literal
> som kan anges på samma sätt som <literal
>width</literal
> och <literal
>height</literal
>. </para>

      <para
>Om <literal
>x</literal
> och <literal
>y</literal
> är enkla tal, representerar ett negativt värde ett avstånd från högerkanten respektive underkanten, i motsats till normalvärdet från vänsterkanten respektive överkanten. </para>

      <para
>Det är också möjligt att ange vilken punkt inne i objektet som positionen hänvisar till. Det kallas ankaret och kan antingen vara <literal
>c</literal
> för centrerad, eller ett av <literal
>n</literal
> (nord), <literal
>ne</literal
> (nordöst), <literal
>e</literal
> (öst), <literal
>se</literal
> (sydöst), <literal
>s</literal
> (syd), <literal
>sw</literal
> (sydväst), <literal
>w</literal
> (väst) och <literal
>nw</literal
> (nordväst) som står för de olika kanterna eller hörnen som motsvarar riktningarna på en topografisk karta. Förvalt värde är <literal
>nw</literal
>, vilket är det övre vänstra hörnet. Till exempel: <programlisting
>&lt;pos x=&quot;10%&quot; y=&quot;50%&quot; anchor=&quot;w&quot; width=&quot;80%&quot; height=&quot;95&quot;/&gt;
</programlisting>
      </para>

    </sect2>

    <sect2 id="show-nodes">
      <title
>Visningsnoder</title>

      <!-- not really implemented
      <para>
        Some items may only display in certain modes, like when doing a
        remote display.  Multiple values can be specified and must be
        separated with commas.  The following values are possible:
      </para>

      <para>
        <filename
>console</filename
> - In console mode.
      </para>
      <para>
        <filename
>console-fixed</filename
> - In console non-flexi mode.
      </para>
      <para>
        <filename
>console-flexi</filename
> - In console &amp; flexi mode.
      </para>
      <para>
        <filename
>flexi</filename
> - In flexi mode.
      </para>
      <para>
        <filename
>remote</filename
> - In remote mode.
      </para>
      <para>
        <filename
>remote-flexi</filename
> - In remote &amp; flexi mode.
      </para>

      <para>
        For example:
<programlisting
>
&lt;show modes=&quot;flexi,remote&quot;/&gt;
</programlisting>
      </para>
      -->

      <para
>Du kan specificera egenskapen <literal
>typ</literal
> för att ange att vissa objekt bara ska visas om typen är definierad. Om typen föregås av ett utropstecken (<literal
>!</literal
>) fås det omvända villkoret. Giltiga värden omfattar följande: </para>
        <segmentedlist>
          <?dbhtml list-presentation="table"?>
          <segtitle
>Typ</segtitle
><segtitle
>Visa om ...</segtitle>

          <seglistitem>
            <seg
><literal
>chooser</literal
></seg>
            <seg
>byte till fjärrlogin är tillåtet.</seg>
          </seglistitem>

          <!--
          <seglistitem>
            <seg
><literal
>custom_cmd[0-9]</literal
></seg>
            <seg
><literal
>n-th</literal
> CustomCommand is specified in
              the &kdm; configuration.</seg>
          </seglistitem>
          -->

          <seglistitem>
            <seg
><literal
>halt</literal
> och <literal
>reboot</literal
></seg>
            <seg
>avstängning av systemet är tillåten.</seg>
          </seglistitem>

          <!--
          <seglistitem>
            <seg
><literal
>suspend</literal
></seg>
            <seg
>suspending the system is permitted.</seg>
          </seglistitem>
          -->

          <seglistitem>
            <seg
><literal
>system</literal
></seg>
            <seg
>inget villkor (alltid på i inloggningshanteraren).</seg>
          </seglistitem>

          <!--
          <seglistitem>
            <seg
><literal
>timed</literal
></seg>
            <seg
>a timed login is being counted down.</seg>
          </seglistitem>
          -->

          <seglistitem>
            <seg
><literal
>plugin-</literal
><replaceable
>postnamn</replaceable
></seg>
            <seg
><quote
>konversationsinsticksprogrammet</quote
> tillhandahåller ett motsvarande inmatningsfält</seg>
          </seglistitem>

        </segmentedlist>


      <para
>Till exempel: <programlisting
>&lt;show type=&quot;chooser&quot;/&gt;
</programlisting>
      </para>

      <para
>Som alternativ kan man ange värden <literal
>min-screen-width</literal
> eller <literal
>min-screen-height</literal
> för att ange att vissa objekt bara ska visas om skärmupplösningen är minst den angivna storleken. Till exempel: <programlisting
>&lt;show min-screen-height=&quot;768&quot;/&gt;
</programlisting>
      </para>

    </sect2>

    <sect2 id="nor-act-pre-nodes">
      <title
>Normala, aktiva, förmarkerade noder</title>

      <para
>Utseendet för de flesta objekttyper kan parametriseras via följande taggar: </para>

      <variablelist>
        <varlistentry>
          <term
><literal
>normal</literal
></term>
          <listitem>
            <para
>Normalt tillstånd.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term
><literal
>prelight</literal
></term>
          <listitem>
            <para
>När musen hålls stilla över objektet.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term
><literal
>active</literal
></term>
          <listitem>
            <para
>När en musknapp klickas på objektet.</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <variablelist>

        <para
>Den exakta uppsättningen egenskaper beror på objekttypen: </para>

        <varlistentry>
          <term
><literal
>rect</literal
></term>
          <listitem>
            <para>
<programlisting
>&lt;normal color=&quot;#000000&quot; alpha=&quot;0.0&quot;/&gt;
</programlisting>
Endera av egenskaperna kan utelämnas, och i så fall används förvalt värde (exemplet motsvarar förvalda värden). <literal
>alpha</literal
> är ett flyttal mellan noll (genomskinligt) och ett (ogenomskinligt). <literal
>color</literal
> är ett nummertecken följt av ett hexadecimalt tal med sex siffror: formatet är <quote
><literal
>#</literal
><replaceable
>rrggbb</replaceable
></quote
>. Som alternativ kan <literal
>color</literal
> anges som ett hexadecimalt tal med åtta siffror. I detta fall är de två första siffrorna alfavärdet. </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
><literal
>label</literal
></term>
          <listitem>
            <para>
<programlisting
>&lt;normal color=&quot;#ffffff&quot; alpha=&quot;1.0&quot; font=&quot;Sans 14&quot;/&gt;
</programlisting>
<literal
>alpha</literal
> och <literal
>color</literal
> anges som för <quote
>rect</quote
>-objekt. </para>
            <para
><literal
>font</literal
> följer formatet <quote
><replaceable
>family-list</replaceable
>&nbsp;<replaceable
>style-options</replaceable
>&nbsp;<replaceable
>size</replaceable
></quote
>. Varje del är valfri. </para>
            <para
><replaceable
>family-list</replaceable
> är en lista av teckensnitt åtskilda med kommatecken som <quote
>helvetica</quote
>, <quote
>monospace</quote
>, etc. </para>
            <para
><replaceable
>style-options</replaceable
> är en lista med nyckelord åtskilda med mellanslag från kategorierna stil, grovlek och sträckning, som mest en från varje kategori. Stilen kan vara <literal
>normal</literal
>, <literal
>italic</literal
> eller <literal
>oblique</literal
>. Grovleken kan vara <literal
>ultra-light</literal
>, <literal
>light</literal
>, <literal
>medium</literal
>, <literal
>semi-bold</literal
>, <literal
>bold</literal
>, <literal
>ultra-bold</literal
> eller <literal
>heavy</literal
>. Tillåtna sträckningar omfattar <literal
>ultra-condensed</literal
>, <literal
>extra-condensed</literal
>, <literal
>condensed</literal
>, <literal
>semi-condensed</literal
>, <literal
>normal</literal
>, <literal
>semi-expanded</literal
>, <literal
>expanded</literal
>, <literal
>extra-expanded</literal
> och <literal
>ultra-expanded</literal
>. </para>
            <para
><replaceable
>size</replaceable
> är antingen ett flyttal som representerar storleken i punkter (1/72 tum) eller ett heltal följt av <literal
>px</literal
> som representerar storleken i bildpunkter. Punktstorlekar är att föredra, eftersom de är oberoende av skärmens upplösning. </para>
            <para
>Om någondera egenskap utelämnas, används värden från <link linkend="style-nodes"
>stilnoden</link
>. Om det inte ger någon specifikation av fönstertextfärgen, används vit. Standardteckensnittet är det som ställs in i &kdmrc;. </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
><literal
>pixmap</literal
></term>
          <term
><literal
>svg</literal
></term>
          <listitem>
            <para>
<programlisting
>&lt;normal file=&quot;picture.png&quot; tint=&quot;#dddddd&quot; alpha=&quot;1.0&quot;/&gt;
</programlisting>
            </para>

            <para
><literal
>file</literal
> anger filen som innehåller bilden. Relativa sökvägar är relativa i förhållande till temats katalog. </para>

            <para
><literal
>wallpaper</literal
> kan användas istället för <literal
>file</literal
> för att låta &kdm; söka efter bilder på de vanliga platserna för skrivbordsunderlägg i &kde;. Plasma-paket med skrivbordsunderlägg stöds. </para>

            <para
><literal
>element</literal
> anger elementidentifieraren i en SVG-fil. Om det är tomt, återges hela SVG-bilden. </para>

            <para
>För <literal
>pixmap</literal
>-noder, är det möjligt att tillhandahålla flera bilder, så att bilden med bäst kvalitet för en viss upplösning kan användas. Filnamn markerade med storlek har formatet <replaceable
>basnamn</replaceable
><literal
>-</literal
><replaceable
>bredd</replaceable
><literal
>x</literal
><replaceable
>höjd</replaceable
><literal
>.</literal
><replaceable
>filändelse</replaceable
>. Om en fil utan storleksmarkering finns och den inte är ett Plasma-paket med skrivbordsunderlägg, accepterar &kdm; bara att en given storlek stämmer perfekt, och återgår annars till originalfilen. Annars försöker det hitta en bild som hamnar närmast den begärda storleken, om ingen stämmer perfekt. </para>

            <!--
            <para>
              Note that an alternative image file can be specified using the
              <literal
>altfile</literal
><optional
><replaceable
>n</replaceable
></optional>
              attribute.  &kdm; will use the last valid image filename
              specified.  For example:
<programlisting
>
&lt;normal file=&quot;picture.png&quot; altfile1=&quot;distribution-blah-image.png&quot; altfile2=&quot;distribution-foo-image.png&quot;/&gt;
</programlisting>
              If <filename
>distribution-foo-image.png</filename
> is a valid
              image filename it will be used.
              Otherwise distribution-blah-image.png will be used if valid.
              This feature is supported since &kde; .
            </para>
            -->

            <para
><literal
>scalemode</literal
> anger hur storleken på bilder som inte motsvarar elementets storlek justeras. <literal
>free</literal
> (standardvärdet) betyder att helt enkelt skala bilden till rätt storlek, möjligen med förvrängning av dess proportion. De övriga två metoderna behåller bildens proportion: <literal
>fit</literal
> betyder att zooma bilden till den maximala storlek som får plats i elementets geometri. Bilden centreras. Återstående område hanteras inte av elementet, så det bör placeras ovanpå en fylld <literal
>rect</literal
>. <literal
>crop</literal
> betyder att zooma bilden till den minsta storlek som helt fyller elementets geometri. Bilden beskärs symmetriskt. </para>

            <para
><literal
>tint</literal
> och <literal
>alpha</literal
> bildar en färgspecifikation som i <literal
>rect</literal
>-objekt. Varje bildpunkt i bilden multipliceras med färgen komponent för komponent. </para>
          </listitem>
        </varlistentry>

      </variablelist>

    </sect2>

    <sect2 id="style-nodes">
      <title
>Stilnoder för grafiska komponenter</title>

      <para
>Den här taggen gör det möjligt att ändra utseende på etiketter och grafiska Qt-komponenter inbäddade i temat, t.ex. radeditorer, knappar eller användarlistan. Stilinställningarna ärvs av underliggande objekt, men kan individuellt överskridas. Standardvärden hämtas från &kdmrc;. </para>

      <para
>Egenskapen <literal
>font</literal
> definierar teckensnittet för alla grafiska komponenter. För komponenter med en inmatningsfunktion kan den överskridas med egenskapen <literal
>edit-font</literal
>. Teckensnitt anges på samma sätt som för <link linkend="nor-act-pre-nodes"
>normala, aktiva, och förmarkerade noder</link
>. </para>

      <para
>Oftast försöker temagränssnittet på alla sätt ta bort eventuella ramar från grafiska Qt-komponenter, så att de sömlöst smälter in i temat. I fall då det inte är önskvärt, kan egenskapen <literal
>frame</literal
> anges som <literal
>true</literal
>. </para>

      <para
>Egenskapen <literal
>guistyle</literal
> kan användas för att överskrida Qt:s grafiska gränssnittsstil för inbäddade grafiska komponenter. Standardvärdet anges av <option
>GUIStyle</option
> i &kdmrc; </para>

      <para
>Det är möjligt att ange nästan hela paletten för grafiska komponenter som är dokumenterad på <ulink type="http" url="http://doc.trolltech.com/4.3/qpalette.html"
>Trolltechs hemsida</ulink
>. Egenskapernas namn sätts samman från en omfattning, en färgroll och ett suffix. Möjliga omfattningar är, i ökande prioritetsordning: <literal
>all-</literal
> för alla färggrupper, ingen omfattning för aktiva och inaktiva färggrupper, och <literal
>active-</literal
>, <literal
>inactive-</literal
> eller <literal
>disabled-</literal
> för respektive färggrupp. Färgroller som stöds är <literal
>window</literal
>, <literal
>window-text</literal
>, <literal
>base</literal
>, <literal
>alternate-base</literal
>, <literal
>text</literal
>, <literal
>bright-text</literal
>, <literal
>highlight</literal
>, <literal
>highlighted-text</literal
>, <literal
>button</literal
> och <literal
>button-text</literal
>. Suffixet kan vara <literal
>-color</literal
> eller <literal
>-alpha</literal
> med respektive betydelse som för <link linkend="nor-act-pre-nodes"
>normala, aktiva, och förmarkerade noder</link
>. </para>

      <para
>Som ett alternativ till att ange paletten på plats, kan egenskapen <literal
>colorscheme</literal
> användas för att läsa in ett fullständigt färgschema i &kde;. Standardvärdet anges av <option
>ColorScheme</option
> i &kdmrc;. Enskilda specifikationer av <literal
>färg</literal
> överskrider färgerna i schemat. </para>

      <para
>Exempel: <programlisting
>&lt;style edit-font=&quot;Comic 16&quot; text-color=&quot;#dddddd&quot; frame=&quot;true&quot;/&gt;
</programlisting>
      </para>
    </sect2>

    <sect2 id="color-nodes">
      <title
>Färgnoder för ansiktsbildbläddraren</title>

      <para
>Färgnoder tillåter att objektens bakgrundsfärger överskrids i ansiktsbildbläddraren. <literal
>labelcolor</literal
> och <literal
>altlabelcolor</literal
> motsvarar i stort sett <literal
>all-base-color</literal
> respektive <literal
>all-alternate-base-color</literal
> i <link linkend="style-nodes"
>stilnoder</link
>. Om bara <literal
>labelcolor</literal
> anges, inaktiveras alternerande objektbakgrunder. </para>

      <para>
<programlisting
>&lt;color labelcolor=&quot;#80ffffff&quot; altlabelcolor=&quot;#80f0f0f0&quot;/&gt;
</programlisting>
      </para>
    </sect2>

    <sect2 id="text-nodes">
      <title
>Textnoder</title>

      <para
>Texttaggar används av etiketter. De kan användas för att visa översatt text enligt följande (om egenskapen <literal
>xml:lang</literal
> utelämnas, antas att POSIX ska gälla): <programlisting
>&lt;text xml:lang=&quot;fr&quot;&gt;Option&lt;/text&gt;
</programlisting>
      </para>

      <!--
      <para>
        You can include pango markup in the text nodes for labels, however
        you must encode it.  So for example to have the label of
        &quot;foo&lt;sup&gt;bar&lt;/sup&gt;&quot;, you must type:
<programlisting
>
&lt;text&gt;&quot;foo&lt;sup&gt;bar&lt;/sup&gt;&quot;&lt;/text&gt;
</programlisting>
      </para>
      -->

      <para
>Textnoder kan innehålla vissa speciella teckenföljder, som översätts på följande sätt: </para>

      <segmentedlist>
        <?dbhtml list-presentation="table"?>
        <segtitle
>Sekvens</segtitle
><segtitle
>Expanderas till</segtitle>

        <seglistitem>
          <seg
>%%</seg>
          <seg
>Ett bokstavligt %-tecken</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%c</seg>
          <seg
>Nuvarande datum och tid</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%d</seg>
          <seg
>Skärmnamn (miljövariabeln <envar
>DISPLAY</envar
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%h</seg>
          <seg
>Värddatornamn (utmatningen från <function
>gethostname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%m</seg>
          <seg
>Datornamn (<structfield
>machine</structfield
>, en del av utmatningen från <function
>uname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%n</seg>
          <seg
>Nodnamn (<structfield
>nodename</structfield
>, en del av utmatningen från <function
>uname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%o</seg>
          <seg
>Domännamn (utmatningen från <function
>getdomainname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%r</seg>
          <seg
>Utgåvenamn (<structfield
>release</structfield
>, en del av utmatningen från <function
>uname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%s</seg>
          <seg
>Systemnamn (<structfield
>sysname</structfield
>, en del av utmatningen från <function
>uname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%t</seg>
          <seg
>Återstående antal sekunder till tidsbegränsad inloggning utförs, samt den lämpliga i18n-pluralformen av <quote
>sekund</quote
></seg>
        </seglistitem>

        <seglistitem>
          <seg
>%u</seg>
          <seg
>Användarnamn för tidsbegränsad inloggning</seg>
        </seglistitem>

        <!-- Need to switch to richtext painting for this purpose.
        <seglistitem>
          <seg
>\n</seg>
          <seg
>Newline</seg>
        </seglistitem>
        -->

        <seglistitem>
          <seg
>_</seg>
          <seg
>Orsakar följande tecken att vara en snabbtangent</seg>
        </seglistitem>

      </segmentedlist>

      <para
><literal
>%t</literal
> och <literal
>%u</literal
> är bara avsedda att användas internt för att visa meddelandet för <literal
>timed-label</literal
>, som automatiskt uppdateras varje sekund. </para>
    </sect2>

    <sect2 id="stock-nodes">
      <title
>Standardnoder</title>

      <para
>Vissa vanliga översatta etiketter kan anges via standardtaggar. Taggen <literal
>text</literal
> ignoreras om taggen <literal
>stock</literal
> används. Man bör verkligen använda standardetiketterna istället för att läga in alla översättningar i temat. Det resulterar i snabbare laddningstider och troligtvis bättre översättningar. Följande värden är möjliga: </para>

      <segmentedlist>
        <?dbhtml list-presentation="table"?>
        <segtitle
>Typ</segtitle
><segtitle
>Expanderas till</segtitle>

        <!--
        <seglistitem>
          <seg
>ok</seg>
          <seg
><quote
>_OK</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>cancel</seg>
          <seg
>_Cancel</seg>
        </seglistitem>
        <seglistitem>
          <seg
>options</seg>
          <seg
>_Options</seg>
        </seglistitem>
        <seglistitem>
          <seg
>custom_cmd[0-9]</seg>
          <seg
>Obtained from the config file.</seg>
        </seglistitem>
        -->
        <seglistitem>
          <seg
>caps-lock-warning</seg>
          <seg
><quote
>Caps Lock är aktivt</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>chooser</seg>
          <seg
><quote
>_XDMCP-väljare</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>quit</seg>
          <seg
><quote
>_Avsluta</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>disconnect</seg>
          <seg
><quote
>Koppla n_er</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>halt</seg>
          <seg
><quote
>S_täng av</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>language</seg>
          <seg
><quote
>S_pråk</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>login</seg>
          <seg
><quote
>In_loggning</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>session</seg>
          <seg
><quote
>T_yp av session</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>reboot</seg>
          <seg
><quote
>Starta _om</quote
></seg>
        </seglistitem>
        <!--
        <seglistitem>
          <seg
>suspend</seg>
          <seg
><quote
>Sus_pend</quote
></seg>
        </seglistitem>
        -->
        <seglistitem>
          <seg
>system</seg>
          <seg
><quote
>_Meny</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>timed-label</seg>
          <seg
><quote
>Användaren %u loggar in om %t</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>domain-label</seg>
          <seg
><quote
>_Domän:</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>username-label</seg>
          <seg
><quote
>An_vändarnamn:</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>password-label</seg>
          <seg
><quote
>_Lösenord:</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>welcome-label</seg>
          <seg
><quote
>Välkommen till %h</quote
></seg>
        </seglistitem>

      </segmentedlist>

      <para
>Till exempel: <programlisting
>&lt;stock type=&quot;welcome-label&quot;/&gt;
</programlisting>
      </para>
    </sect2>

    <sect2 id="buddy-nodes">
      <title
>Kompisnoder</title>

      <para
>Objekt som inte direkt orsakar en åtgärd kan tilldelas en kompis. Kompisen ges inmatningsfokus när objektet aktiveras (klickas på, eller snabbtangenten används för en <literal
>label</literal
>). </para>

      <para
>Kompisen refereras till med identifikationen i egenskapen <literal
>idref</literal
>. Uppenbarligen måste den ges en identifikation. Ett exempel: <programlisting
>&lt;item type=&quot;label&quot;&gt;
  &lt;stock type=&quot;username-label&quot;/&gt;
  &lt;buddy idref=&quot;user-entry&quot;/&gt;
  [...]
&lt;/item&gt;
[...]
&lt;item type=&quot;entry&quot; id=&quot;user-entry&quot;&gt;
  [...]
&lt;/item&gt;
</programlisting>
      </para>
    </sect2>

  </sect1>

</chapter>
