<chapter id="kdm-themes">
  <title
>Crear temas de bienvenida para &kdm;</title>

  <para
>Esta sección describe la creación de temas para la pantalla de bienvenida. Por obtener ejemplos y capturas de pantalla, consulte los temas estándar instalados y los temas del <ulink type="http" url="http://www.kde-look.org/index.php?xcontentmode=40"
>sitio web de los temas</ulink
>. </para>

  <sect1 id="theme-overview">
    <title
>Visión general de los temas</title>

    <para
>Los temas de &kdm; se pueden crear a través de un archivo XML que siga las especificaciones de <filename
>$<envar
>KDEDIR</envar
>/share/apps/doc/kdm/greeter.dtd</filename
>. Estos archivos se guardan en la carpeta <filename class="directory"
>$<envar
>KDEDIR</envar
>/share/apps/kdm/themes/<replaceable
>nombre_tema</replaceable
></filename
>. La carpeta del tema debería contener un archivo llamado <filename
>KdmGreeterTheme.desktop</filename
> con un formato similar a otro <filename class="extension"
>.desktop</filename
> y con un aspecto similar a: <programlisting
>[KdmGreeterTheme]
Greeter=círculos.xml
Name=Círculos
Description=Tema con círculos azules
Author=Bond, James Bond
Copyright=(c) 2002 Bond, James Bond
Screenshot=captura.png
</programlisting>
    </para>

    <para
>Los campos <literal
>Nombre</literal
>, <literal
>Descripción</literal
>, <literal
>Autor</literal
> y <literal
>Copyright</literal
> pueden traducirse de la misma forma que en otros archivos <filename class="extension"
>.desktop</filename
>. Todos los archivos mencionados deberán incluirse en la carpeta del tema. El campo <literal
>Screenshot</literal
> apunta a un archivo que debería ser una captura de pantalla de 200x150 del tema en acción (también es correcto no tener ninguna, pero es más bonito para el usuario). La entrada <literal
>Greeter</literal
> apunta a un archivo XML que contiene la descripción del tema. </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
>Una vez que haya probado el tema, cree un archivo comprimido tar que contenga la carpeta tal y como debería instalarse en la carpeta <filename class="directory"
>$<envar
>KDEDIR</envar
>/share/apps/kdm/themes</filename
>. Este es el formato estándar para distribuir temas para &kdm;. </para>
  </sect1>

  <sect1 id="theme-format">
    <title
>Descripción detallada del formato XML del tema</title>

    <sect2 id="greeter-tag">
      <title
>Nodo de nivel superior</title>

      <para
>Los temas para &kdm; son archivos XML con la marca &lt;greeter&gt; en la raíz. El nodo del nivel superior es un <link linkend="item-nodes"
>nodo de elemento</link
> del tipo <literal
>rect</literal
> con una <link linkend="fixed-nodes"
>distribución fija</link
> implícita. </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
>Dentro de la marca greeter pueden encontrarse los nodos que describen las siguientes secciones de este documento. Algunos de estos nodos son contenedores (nodos de distribución, nodos de elementos) que pueden contener otros nodos. </para>
    </sect2>

    <sect2 id="item-nodes">
      <title
>Nodos de elementos</title>

      <para
>Un tema &kdm; se crea especificando una jerarquía de elemento y nodos de distribución. Los nodos de elemento pueden tener los siguientes valores para el atributo <literal
>type</literal
>: </para>

      <variablelist>

        <varlistentry>
          <term
>button</term>
          <listitem>
            <para
>Un campo de botón. Este campo utiliza un botón Qt. </para>
            <para
>También es posible hacer que cualquier otro elemento actúe como un botón estableciendo su atributo <literal
>button</literal
> a <literal
>true</literal
>. Sin embargo, es mejor utilizar botones Qt en los temas para &kdm; ya que son accesibles para los usuarios con discapacidades. </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>entrada</term>
          <listitem>
            <para
>Un elemento de entrada como un editor de línea o un desplegable. Tenga en cuenta que simplemente es un lugar para los elementos Qt.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>label</term>
          <listitem>
            <para
>Una marca de texto. Debe contener bien <link linkend="text-nodes"
>un nodo <literal
>text</literal
></link
> o <link linkend="stock-nodes"
>un nodo <literal
>stock</literal
></link
> para especificar el texto. </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>list</term>
          <listitem>
            <para
>Un componente de navegador de caras.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>pixmap</term>
          <listitem>
            <para
>Imagen de puntos en un formato que Qt soporte, &eg;, PNG, JPEG, Tiff, etc.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>rect</term>
          <listitem>
            <para
>Un rectángulo plano.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>svg</term>
          <listitem>
            <para
>Una imagen vectorial en formato SVG.</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para
>Por ejemplo: <programlisting>
&lt;item type=&quot;label&quot;&gt;
</programlisting
> Un elemento que actúa como botón: <programlisting
>&lt;item type=&quot;rect&quot; id=&quot;boton_desconectar&quot; button=&quot;true&quot;&gt;.
</programlisting>
      </para>

      <para
>De forma predeterminada, la pantalla de acceso &kdm; desaparecerá después de la autenticación. Esto puede dar como resultado un parpadeo entre la pantalla de identificación y la sesión. El atributo <literal
>background</literal
> permite a los usuario especificar qué elementos del tema constituyen el fondo de la imagen. Utilizarlo provocará que &kdm; elimine de la pantalla todos los elementos que no pertenezcan al fondo y represente los restantes elementos de <literal
>background</literal
> en la ventana de root. Se puede utilizar para crear una transición suave entre la pantalla de identificación y la sesión: <programlisting>
&lt;item type=&quot;rect&quot; background=&quot;true&quot;&gt;
  &lt;normal file="fondo.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
> Para utilizar un fondo diferente para la transición de acceso de la usada para la identificación, el tema debe especificar dos nodos de elementos (que pueden contener imágenes de mapas de puntos o svg, por ejemplo). El elemento que corresponde al fondo de bienvenida no debería tener la propiedad <literal
>background</literal
> mientras que el elemento que corresponde con el fondo de la transición debería incluir la propiedad <literal
>background</literal
>. Por ejemplo: <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="fondo_para_identificacion.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="fondo_de_bienvenida.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
>En las configuraciones de varias pantallas, los temas también pueden especificar la apariencia de otras pantallas además de la que contiene el mensaje de bienvenida, pero normalmente solo aparecerán elementos de segundo plano. Para especificar en qué pantallas deberá aparecer un elemento, se puede utilizar el atributo <literal
>screen</literal
> con alguno de estos valores: <literal
>greeter</literal
>, <literal
>other</literal
> o <literal
>all</literal
>, cuyo significado es: está activado el mensaje de bienvenida, todas las pantallas en las que no está activo y todas las pantallas, respectivamente. </para>

      <variablelist>
        <para
>Cada elemento puede tener un nombre a través del atributo <literal
>id</literal
>. &kdm; reconoce algunos identificadores para dar a estos elementos una función especial: </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
>Los elementos <literal
>button</literal
> y los elementos con el atributo <literal
>button=&quot;true&quot;</literal
>.</term>

          <listitem>
            <para
>Los botones suelen desencadenar ciertas acciones. Además, &kdm; ocultará los botones cuyas acciones no estén disponibles por alguna razón. </para>

            <segmentedlist>
              <?dbhtml list-presentation="table"?>
              <segtitle
>Id</segtitle
><segtitle
>Acción</segtitle>

              <seglistitem>
                <seg
>chooser_button</seg>
                <seg
>Ejecuta el selector XDMCP.</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
>Se desconecta de la sesión remota.</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
>Abre el menú de selección de tipo de sesión.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>system_button</seg>
                <seg
>Abre un menú capturar-todo con varias opciones y acciones, dependiendo de la configuración.</seg>
              </seglistitem>
            </segmentedlist>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>elementos <literal
>label</literal
></term>

          <listitem>
            <para
>&kdm; mostrará u ocultará estas etiquetas y establecerá su texto dependiendo del estado del diálogo de identificación. </para>

            <segmentedlist>
              <?dbhtml list-presentation="table"?>
              <segtitle
>Id</segtitle
><segtitle
>Función</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
>Muestra el mensaje <guilabel
>Inicio de sesión fallido</guilabel
>.</seg>
              </seglistitem>

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

        <varlistentry>
          <term
>Componentes de elementos empotrados</term>

          <listitem>
            <para
>&kdm; empotrará los componentes Qt particulares en estos elementos. </para>

            <segmentedlist>
              <?dbhtml list-presentation="table"?>
              <segtitle
>Id</segtitle
><segtitle
>Función</segtitle>

              <seglistitem>
                <seg
>user-entry</seg>
                <seg
>Campo para introducir el nombre del usuario.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>pw-entry</seg>
                <seg
>Campo para introducir la contraseña.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>domain-entry</seg>
                <seg
>Algunos complementos de «conversación» utilizan este campo para solicitar un nombre de dominio. Si este campo está presente, los elementos relacionados encerrados deberían tener <link linkend="show-nodes"
>mostrar nodos</link
> con el tipo <literal
>plugin-domain-entry</literal
>.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>talker</seg>
                <seg
>Este elemento debería ser del tipo <literal
>rect</literal
>. Representa el área «caliente» de la bienvenida: contiene los elementos <literal
>label</literal
> y <literal
>entry</literal
> que conciernen al proceso de identificación. Si un complemento de «conversación» no coincide con los elementos existentes que él necesita, intentará empotrar un componente complejo con su propia distribución en este elemento, es decir, sobrescribiría por completo el tema «talker». Hablando estrictamete, los temas de &kdm; no necesitan proporcionar su propio diseño de «talker», ya que todos los complementos de identificación de &kdm; pueden hacer uso del elemento <literal
>talker</literal
>. </seg>
              </seglistitem>

              <seglistitem>
                <seg
>userlist</seg>
                <seg
>Este elemento debe ser del tipo <literal
>list</literal
>. Si la característica de la lista de usuarios está activada, &kdm; empotrará aquí la lista de usuarios. Sino, este elemento se ocultará.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>xconsole</seg>
                <seg
>Este elemento debería ser del tipo <literal
>rect</literal
>. Si se utilizó y activó la característica de compilación <command
>xconsole</command
>, &kdm; empotrará aquí el componente de registro de la consola. Sino el elemento se ocultará.</seg>
              </seglistitem>

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

        <varlistentry>
          <term
>Otros elementos</term>

          <listitem>
            <para
>&kdm; mostrará u ocultará estos elementos dependiendo de la configuración y del estado actual de la bienvenida. &kdm; no impone el tipo de requisitos en ellos, pero suelen ser de un tipo particular. </para>

            <segmentedlist>
              <?dbhtml list-presentation="table"?>
              <segtitle
>Id</segtitle
><segtitle
>Mostrar solo cuando...</segtitle>

              <seglistitem>
                <seg
>timed-label</seg>
                <seg
>... el tiempo de acceso está en progreso.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>caps-lock-warning</seg>
                <seg
>... el bloqueo de mayúsculas esté activo.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>xauth-warning</seg>
                <seg
>... el &X-Server; no requiere autorización de conexión X.</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
>... la lista de usuarios está activa. Anidando los elementos <literal
>userlist</literal
> dentro de uno, es posible crear algo como un marco alrededor de la lista y hacer que se active solo cuando se muestre la lista.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>xconsole-rect</seg>
                <seg
>... crear <command
>xconsole</command
> está activada. Análogo a <literal
>userlist-rect</literal
>.</seg>
              </seglistitem>

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

      </variablelist>

    </sect2>

    <sect2 id="layout-nodes">
      <title
>Nodos contenedores de distribución</title>

      <para
>Los nodos de la distribución aparecerán dentro de los nodos del elemento y también contendrán los nodos del elemento. El tipo del nodo de la distribución determina la colocación de sus nodos hijo. Un nodo de elemento puede contener un nodo de distribución de cada tipo. </para>

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

        <para
>Los nodos box colocan automáticamente a sus en una fila. Se especifican de la siguiente forma: <programlisting>
&lt;box orientation=&quot;<replaceable
>alineación</replaceable
>&quot; min-width=&quot;<replaceable
>núm</replaceable
>&quot; min-height=&quot;<replaceable
>núm</replaceable
>&quot;
    xpadding=&quot;<replaceable
>núm</replaceable
>&quot; ypadding=&quot;<replaceable
>núm</replaceable
>&quot; spacing=&quot;<replaceable
>núm</replaceable
>&quot;
    homogeneous=&quot;<replaceable
>lógico</replaceable
>&quot;&gt;
</programlisting
> Donde <replaceable
>núm</replaceable
> es el número de puntos y <replaceable
>lógico</replaceable
> significa <literal
>true</literal
> (verdadero) o <literal
>false</literal
> (falso). El valor <replaceable
>alineación</replaceable
> puede ser <literal
>horizontal</literal
> o <literal
>vertical</literal
>. Si deja cualquier atributo sin valor, el valor predeterminado será cero para los números, <literal
>false</literal
> (falso) para los lógicos y <literal
>vertical</literal
> para la alineación. </para>

        <para
>El espaciado es la distancia entre los elementos hijo vecinos. El relleno es el margen exterior de la caja. Si la caja es homogénea, el espacio entre los hijos será el mismo. </para>
      </sect3>

      <sect3 id="fixed-nodes">
        <title
>Nodos Fixed</title>

        <para
>Fixed es un contenedor que sitúa la distribución de los hijos dentro de unas coordenadas precisas. El tamaño de este contenedor es el rectángulo más pequeño que contenga a todos los hijos. Fixed no tiene más atributos y por eso se usa como: <programlisting>
&lt;fixed&gt;
</programlisting
> A continuación sitúe los otros elementos con los nodos de posición correcta dentro de él. </para>
      </sect3>

    </sect2>

    <sect2 id="position-nodes">
      <title
>Nodos de posición</title>

      <para
>Cada elemento puede especificar su posición y tamaño a través del nodo <literal
>pos</literal
>. Por ejemplo: <programlisting
>&lt;pos x=&quot;0&quot; y=&quot;4&quot; width=&quot;100%&quot; height=&quot;100%&quot;/&gt;
</programlisting>
      </para>

      <para
>Si no se especifica el tamaño, el tamaño será el «natural» del elemento, llamado tamaño de pista. Tenga en cuenta que no todos los elementos tienen un tamaño de pista práctico. </para>

      <para
>Tanto el tamaño como la posición se puede suministrar en porcentajes y se calcularán respecto el tamaño del contenedor que los encierra. Para los elementos de nivel superior es el porcentaje de la pantalla completa. Añadiendo circunflejos (<literal
>^</literal
>) a la especificación del tamaño es posible modificarlo para que sea relativo al tamaño de los elementos que encierra. </para>

      <para
>Si un elemento contiene una caja, <literal
>width</literal
> y <literal
>height</literal
> pueden especificarse para <literal
>box</literal
> identificando la anchura y altura de la caja, esto es, los elementos de la caja más el relleno. </para>

      <para
>Se puede especificar la escala (<literal
>scale</literal
>) de la anchura (<literal
>width</literal
>) y la altura (<literal
>height</literal
>) lo que escalaría la imagen de acuerdo a la dimensión de su tamaño de pista. Utilícelo para preservar la relación de aspecto de las imágenes que se escalan automáticamente. </para>

      <para
>Si el atributo <literal
>expand</literal
> está especificado como <literal
>true</literal
> (verdadero), este elemento se expandirá en la caja que lo encierra lo máximo posible (ocupará todo el espacio disponible). </para>

      <para
>Si <literal
>width</literal
> o <literal
>height</literal
> son un número plano, un valor negativo representa un desplazamiento respecto del tamaño del contenedor que lo encierra. Tenga en cuenta que es posible especificar un desplazamiento positivo escribiendo dos signos menos. </para>

      <para
>En cualquier caso es posible forzar el tamaño final de la imagen con los atributos <literal
>min-width</literal
>, <literal
>min-height</literal
>, <literal
>max-width</literal
> y <literal
>max-height</literal
> que se pueden especificar de la misma forma que <literal
>width</literal
> y <literal
>height</literal
>. </para>

      <para
>Si <literal
>x</literal
> o <literal
>y</literal
> son un número plano, un valor negativo representa un desplazamiento respecto al borde inferior derecho, mientras que el valor predeterminado es respecto al borde superior izquierdo. </para>

      <para
>También es posible especificar una posición dentro del elemento. Es lo que se llama ancla y puede ser <literal
>c</literal
> para centrar o uno de los siguientes: <literal
>n</literal
>, <literal
>ne</literal
>, <literal
>e</literal
>, <literal
>se</literal
>, <literal
>s</literal
>, <literal
>sw</literal
>, <literal
>w</literal
> y <literal
>nw</literal
> que se corresponden con los diferentes bordes/esquinas correspondientes a un mapa topográfico. El valor predeterminado es <literal
>nw</literal
>, que se refiere a la esquina superior izquierda. Por ejemplo: <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
>Nodos mostrar</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
>Puede especificar el atributo del <literal
>tipo</literal
> para indicar si un determinado elemento solo debería mostrarse si el tipo es el definido. Prefijar el tipo con un signo de exclamación (<literal
>!</literal
>) invierte la condición. Los valores válidos incluidos son los siguientes: </para>
        <segmentedlist>
          <?dbhtml list-presentation="table"?>
          <segtitle
>Tipo</segtitle
><segtitle
>Mostrar si...</segtitle>

          <seglistitem>
            <seg
><literal
>chooser</literal
></seg>
            <seg
>está permitido cambiar a la identificación remota.</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
> y <literal
>reboot</literal
></seg>
            <seg
>está permitido apagar el sitema.</seg>
          </seglistitem>

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

          <seglistitem>
            <seg
><literal
>system</literal
></seg>
            <seg
>sin condición (se establece siempre en &kdm;).</seg>
          </seglistitem>

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

          <seglistitem>
            <seg
><literal
>plugin-</literal
><replaceable
>nombre-entrada</replaceable
></seg>
            <seg
>El complemento de «conversión» incluye el correspondiente campo de entrada.</seg>
          </seglistitem>

        </segmentedlist>


      <para
>Por ejemplo: <programlisting
>&lt;show type=&quot;chooser&quot;/&gt;
</programlisting>
      </para>

      <para
>También puede especificar un valor <literal
>min-screen-width</literal
> o <literal
>min-screen-height</literal
> para indicar que un determinado elemento debería mostrarse solo si la resolución de la pantalla es al menos del tamaño especificado. Por ejemplo: <programlisting
>&lt;show min-screen-height=&quot;768&quot;/&gt;
</programlisting>
      </para>

    </sect2>

    <sect2 id="nor-act-pre-nodes">
      <title
>Nodos normal/activo/iluminado</title>

      <para
>El aspecto de la mayor parte de los tipos de elementos puede parametrizarse a través de las siguientes marcas: </para>

      <variablelist>
        <varlistentry>
          <term
><literal
>normal</literal
></term>
          <listitem>
            <para
>Estado normal.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term
><literal
>prelight</literal
></term>
          <listitem>
            <para
>Cuando el ratón se mantiene sobre el elemento.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term
><literal
>active</literal
></term>
          <listitem>
            <para
>Cuando se pulsa un botón del ratón sobre el elemento.</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <variablelist>

        <para
>El conjunto exacto de valores para los atributos depende del tipo de elemento: </para>

        <varlistentry>
          <term
><literal
>rect</literal
></term>
          <listitem>
            <para>
<programlisting
>&lt;normal color=&quot;#000000&quot; alpha=&quot;0.0&quot;/&gt;
</programlisting>
Se puede omitir cualquier atributo, en cuyo caso se utilizará el valor predeterminado (el ejemplo representa los predeterminados). <literal
>alpha</literal
> es un número de coma flotante entre cero (transparente) y uno (opaco). <literal
>color</literal
> es una almohadilla seguida por un número de seis dígitos hexadecimales. El formato es «<literal
>#</literal
><replaceable
>rrvva</replaceable
>». El <literal
>color</literal
> también puede especificarse como un número hexadecimal de ocho dígitos, en el que los dos primero dígitos forman el valor alfa. </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
> y <literal
>color</literal
> son los mismos que para los elementos «rect». </para>
            <para
><literal
>font</literal
> sigue el formato «<replaceable
>lista-familia</replaceable
>&nbsp;<replaceable
>opciones-estilo</replaceable
>&nbsp;<replaceable
>tamaño</replaceable
>». Cada parte es opcional. </para>
            <para
><replaceable
>lista-familia</replaceable
> es una lista de familias de tipos de letra separada por comas como «helvetica», «monospace», etc. </para>
            <para
><replaceable
>opciones-estilo</replaceable
> es una lista de estilos de categorías, peso y estirar. Para cada categoría al menos una. El estilo puede ser <literal
>normal</literal
> (normal), <literal
>italic</literal
> (cursiva) u <literal
>oblique</literal
> (oblicua). El peso puede ser <literal
>ultra-light</literal
> (muy pesado), <literal
>light</literal
> (ligero), <literal
>medium</literal
> (medio), <literal
>semi-bold</literal
> (semi-negrita), <literal
>bold</literal
> (negrita), <literal
>ultra-bold</literal
> (muy negrita) o <literal
>heavy</literal
> (pesada). Se permite la compresión <literal
>ultra-condensed</literal
> (muy condensada), <literal
>extra-condensed</literal
> (extra-condensada), <literal
>condensed</literal
> (condensada), <literal
>semi-condensed</literal
> (semicondensada), <literal
>normal</literal
> (normal), <literal
>semi-expanded</literal
> (semi-expandida), <literal
>expanded</literal
> (expandida), <literal
>extra-expanded</literal
> (extra-expandida) y <literal
>ultra-expanded</literal
> (ultra-expandida). </para>
            <para
><replaceable
>tamaño</replaceable
> es cualquier número de coma flotante que represente el tamaño en puntos (1/72 pulgadas) o un entero seguido de <literal
>px</literal
> que represente el tamaño en puntos. El tamaño de los puntos es preferible, ya que es independiente de la resolución de la pantalla. </para>
            <para
>Si cualquier atributo se queda fuera, se utilizarán los valores del <link linkend="style-nodes"
>nodo de estilo</link
>. Sino se ha especificado color del texto de la ventana se utilizará el blanco. El tipo de letra predeterminado es el configurado en &kdmrc;. </para>
          </listitem>
        </varlistentry>

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

            <para
><literal
>file</literal
> especifica el archivo que contiene la imagen. Los nombres de ruta relativos son relativos a la carpeta del tema. </para>

            <para
>Se puede utilizar <literal
>wallpaper</literal
> en lugar de <literal
>file</literal
> para que &kdm; busque imágenes en las ubicaciones habituales para los fondos de pantalla de &kde;. Se admiten los paquetes de fondos de pantalla de Plasma. </para>

            <para
><literal
>element</literal
> especifia el identificador del elemento de un archivo SVG. Si está vacío, se representará la imagen completa. </para>

            <para
>Para los nodos <literal
>pixmap</literal
>, se puede proporcionar varias imágenes, de manera que se pueda utilizar la imagen de mejor calidad para una resolución determinada. Los nombres de archivo etiquetados con un tamaño tienen el formato <replaceable
>nombrebase</replaceable
><literal
>-</literal
><replaceable
>anchura</replaceable
><literal
>x</literal
><replaceable
>altura</replaceable
><literal
>.</literal
><replaceable
>extensión</replaceable
>. Si existe el archivo no etiquetado con el tamaño y no es un paquete de de fondo de pantalla de Plasma, &kdm; solo aceptará una coincidencia perfecta para un tamaño determinado y si no la hay, utilizará el archivo original. En otro caso, intentará encontrar una imagen cuyas dimensiones sean lo más parecidas posible al tamaño que se necesite si no se encuentra una coincidencia perfecta. </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
>El <literal
>scalemode</literal
> especifica como ajustar el tamaño de las imágenes que no caben en el tamaño del elemento. El atributo <literal
>fre</literal
> (el predeterminado) significa que simplemente se adapte la imagen al tamaño adecuado, posiblemente distorsionando la proporción del aspecto. Los otros dos modos mantienen la proporción del aspecto: <literal
>fit</literal
> significa aumentar la imagen hasta el tamaño máximo que quepa en la geometría del elemento. La imagen quedará centrada. El espacio restante no se rellenará con este elemento, por lo que se debería colocar encima de un <literal
>rect</literal
> coloreado. El atributo <literal
>crop</literal
> significa agrandar la imagen hasta el tamaño mínimo que rellene completamente la geometría del elemento. La imagen se colocará de manera simétrica. </para>

            <para
><literal
>tint</literal
> y <literal
>alpha</literal
> componen una especificación de color como en los elementos <literal
>rect</literal
>. Cada punto de las imágenes se multiplica con este componente de color. </para>
          </listitem>
        </varlistentry>

      </variablelist>

    </sect2>

    <sect2 id="style-nodes">
      <title
>Nodos de estilo de componentes</title>

      <para
>Esta marca hace posible cambiar el aspecto de las etiquetas y componentes Qt integrados en el tema, p. ej., edición de líneas, botones o la lista de usuarios. Los elementos hijo heredan la configuración del estilo, pero pueden sobrescribirla individualmente. Los valores predeterminados los toman de &kdmrc;. </para>

      <para
>El atributo <literal
>font</literal
> define el tipo de letra para todos los componentes. Para los componentes que tengan un función de entrada puede ser sobrescrito con el atributo <literal
>edit-font</literal
>. Los tipos de letra se especifican de la misma forma que en los Fonts are specified the same way as in <link linkend="nor-act-pre-nodes"
>nodos normal/activo/iluminado</link
>. </para>

      <para
>Normalmente, el motor de temas intenta eliminar cualquier marco de los componentes Qt, por eso el tema se muestra suavizado. En aquellos casos en que no sea esto lo que se desea, el valor del atributo <literal
>frame</literal
> se puede cambiar a <literal
>true</literal
> (verdadero). </para>

      <para
>El atributo <literal
>guistyle</literal
> se puede utilizar para reemplazar los elementos gráficos empotrados. El valor predeterminado viene dado por la opción <option
>GUIStyle</option
> en &kdmrc;. </para>

      <para
>Es posible especificar prácticamente la paleta completa para los componentes tal y como se documenta en el <ulink type="http" url="http://doc.trolltech.com/4.3/qpalette.html"
>sitio de Trolltech</ulink
>. Los nombres de los atributos se componen de un ámbito, un papel de color y un sufijo. Los posibles ámbitos son -en orden de prioridad creciente- <literal
>all-</literal
> para todos los grupos de color, no teniendo ámbito para los grupos de color; y <literal
>active-</literal
>, <literal
>inactive-</literal
> y <literal
>disabled-</literal
> para el respectivo grupo de color. Los roles de color soportados son <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
> y <literal
>button-text</literal
>. El sufijo puede ser <literal
>-color</literal
> o <literal
>-alpha</literal
> con el significado equivalente a los <link linkend="nor-act-pre-nodes"
>nodos normal/activo/iluminado</link
>. </para>

      <para
>Como alternativa a especificar la paleta, se puede utilizar el atributo <literal
>colorscheme</literal
> para cargar una combinación de colores de &kde; completa. El valor predeterminado viene dado por la opción <option
>ColorScheme</option
> en &kdmrc;. Las especificaciones individuales de <literal
>color</literal
> reemplazarán lo colores de la combinación de colores. </para>

      <para
>Ejemplo: <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
>Nodos de color del navegador de caras</title>

      <para
>Los nodos de color permiten sobrescribir el color del fondo de los elementos en el navegador de caras. <literal
>labelcolor</literal
> y <literal
>altlabelcolor</literal
> son esencialmente equivalentes a <literal
>all-base-color</literal
> respecto de <literal
>all-alternate-base-color</literal
> en <link linkend="style-nodes"
>los nodos de estilo</link
>. Si solo se especifica <literal
>labelcolor</literal
> se desactivan los demás elementos del fondo. </para>

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

    <sect2 id="text-nodes">
      <title
>Nodos de texto</title>

      <para
>Las marcas de texto las utilizan las etiquetas. Puede usarse para mostar texto localizado (si se omite el atributo <literal
>xml:lang</literal
>, se asume el POSIX local): <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
>Los nodos de texto pueden contener las siguientes secuencias de caracteres especiales que se traducirán de la siguiente forma: </para>

      <segmentedlist>
        <?dbhtml list-presentation="table"?>
        <segtitle
>Secuencia</segtitle
><segtitle
>Expansión</segtitle>

        <seglistitem>
          <seg
>%%</seg>
          <seg
>El caracter %</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%c</seg>
          <seg
>Reloj de pared con la hora y la fecha</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%d</seg>
          <seg
>Nombre de la pantalla (variable de entorno <envar
>DISPLAY</envar
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%h</seg>
          <seg
>Nombre del servidor (salida de <function
>gethostname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%m</seg>
          <seg
>Nombre de la máquina (salida de <structfield
>machine</structfield
> como parte de <function
>uname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%n</seg>
          <seg
>Nombre del nodo (salida de <structfield
>nodename</structfield
> como parte de <function
>uname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%o</seg>
          <seg
>Nombre de dominio (salida de <function
>getdomainname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%r</seg>
          <seg
>Nombre de la versión (salida de <structfield
>release</structfield
> como parte de <function
>uname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%s</seg>
          <seg
>Nombre del sistema (salida de <structfield
>sysname</structfield
> como parte de <function
>uname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%t</seg>
          <seg
>Número de segundos restantes hasta que se realice el acceso, más la forma i18n apropiada del plural de «segundo»</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%u</seg>
          <seg
>Nombre de usuario para la identificación temporizada</seg>
        </seglistitem>

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

        <seglistitem>
          <seg
>_</seg>
          <seg
>Hace que el siguiente caracter sea un acelerador</seg>
        </seglistitem>

      </segmentedlist>

      <para
><literal
>%t</literal
> y <literal
>%u</literal
> solo se pretenden utilizar internamente para mostrar el mensaje <literal
>timed-label</literal
>, que se actualiza automáticamente cada segundo. </para>
    </sect2>

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

      <para
>Algunas etiquetas localizadas comunes pueden especificarse a través de la marca stock. La marca <literal
>text</literal
> se ignora si se utiliza la marca <literal
>stock</literal
>. No debería utilizar las etiquetas stock más que para situar las traducciones en los temas. Esto conduce a tiempos de carga más reducidos y mejores traducciones. Son válidos los siguientes valores: </para>

      <segmentedlist>
        <?dbhtml list-presentation="table"?>
        <segtitle
>Tipo</segtitle
><segtitle
>Expansión</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
>Bloqueo de mayúsculas activado</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>chooser</seg>
          <seg
><quote
>Selecto_r de XDMCP</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>quit</seg>
          <seg
><quote
>_Salir</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>disconnect</seg>
          <seg
><quote
>Descon_ectar</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>halt</seg>
          <seg
><quote
>Apa_gar</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>language</seg>
          <seg
><quote
>Idi_oma</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>login</seg>
          <seg
><quote
>_Iniciar sesión</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>session</seg>
          <seg
><quote
>_Tipo de sesión</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>reboot</seg>
          <seg
><quote
>Re_iniciar</quote
></seg>
        </seglistitem>
        <!--
        <seglistitem>
          <seg
>suspend</seg>
          <seg
><quote
>Sus_pend</quote
></seg>
        </seglistitem>
        -->
        <seglistitem>
          <seg
>system</seg>
          <seg
><quote
>_Menú</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>timed-label</seg>
          <seg
><quote
>El usuario %u se identificará en %t</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>domain-label</seg>
          <seg
><quote
>_Dominio:</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>username-label</seg>
          <seg
><quote
>Nombre_usuario:</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>password-label</seg>
          <seg
><quote
>_Contraseña:</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>welcome-label</seg>
          <seg
><quote
>Bienvenido a %h</quote
></seg>
        </seglistitem>

      </segmentedlist>

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

    <sect2 id="buddy-nodes">
      <title
>Nodos Buddy</title>

      <para
>Los elementos que no provocan directamente una acción pueden asignarse como buddy. El buddy da una entrada cuando se activa el elemento (se pulsa sobre él o el acelerador <literal
>label</literal
>). </para>

      <para
>El buddy se referencia con el identificador a través del atributo <literal
>idref</literal
>. Obviamente, se le debe dar un id. Ejemplo: <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>
