<!--
     The FreeBSD Documentation Project
     The FreeBSD Simplified Chinese Project

     Original Revision: 1.165
     $FreeBSD$
-->

<chapter id="x11">
  <chapterinfo>
    <authorgroup>
      <author>
	<firstname>Ken</firstname>
	<surname>Tom</surname>
	<contrib>Updated for X.Org's X11 server by </contrib>
      </author>
      <author>
	<firstname>Marc</firstname>
	<surname>Fonvieille</surname>
      </author>
    </authorgroup>
  </chapterinfo>

  <title>X Window 系统</title>

  <sect1 id="x11-synopsis">
    <title>概述</title>

    <para>FreeBSD 使用 X11 来为用户提供功能强大的图形用户界面。
      X11 是一种开放源代码的 X Window 系统实现，
      它包括 <application>&xorg;</application> 和
      <application>&xfree86;</application>。 &os; 在包括
      &os;&nbsp;4.11-RELEASE 和 &os;&nbsp;5.2.1-RELEASE
      在内的版本之前， 都默认安装
      <application>&xfree86;</application>， 一种由 &xfree86; Project, Inc.
      发布的 X11 服务。 从 &os;&nbsp;5.3-RELEASE 开始，
      默认并且为官方支持的 X11 变成了
      <application>&xorg;</application>， 它是由  X.Org
      基金会开发的 X11 服务。</para>

    <para>这章将介绍 X11 的安装和配置， 并着重强调
      <application>&xorg;</application>。</para>

    <para>欲了解 X11 所支持的显示卡等硬件，
      请访问 <ulink
      url="http://www.x.org/">&xorg;</ulink> 或 <ulink
      url="http://www.XFree86.org/">&xfree86;</ulink> 的网站。</para>

    <para>在阅读完这一章后，您将会了解：</para>

    <itemizedlist>
      <listitem>
        <para>X 视窗系统的不同组件，它们是如何协同工作的。</para>
      </listitem>

      <listitem>
	<para>如何安装和配置 X11。</para>
      </listitem>

      <listitem>
        <para>如何安装和使用不同的窗口管理器。</para>
      </listitem>

      <listitem>
	<para>如何在 X11 中使用 &truetype; 字体。</para>
      </listitem>

      <listitem>
        <para>如何为您的系统设置图形登陆
          (<application>XDM</application>)。</para>
      </listitem>
    </itemizedlist>

    <para>在阅读这一章之前，您应该：</para>

    <itemizedlist>
      <listitem><para>知道如何安装额外的第三方应用程序(<xref linkend="ports">)。
      </para></listitem>
    </itemizedlist>

    <note>
      <para>这一章介绍了 <application>&xorg;</application> 和
	<application>&xfree86;</application> 两种 X11 服务的安装和配置。
	绝大多数时候， 配置文件、 命令句法是完全一样的。 当存在差异时，
	<application>&xorg;</application> 和
	<application>&xfree86;</application> 的写法都会有所体现。</para>
    </note>
  </sect1>

  <sect1 id="x-understanding">
    <title>理解 X</title>

    <para>对于那些熟悉其他图形环境，比如
       &microsoft.windows; 或者
      &macos; 的用户来说，第一次使用 X 可能会感觉很惊讶。</para>

    <para>尽管您不需要了解各种 X 组件的所有细节和它们是如何互相影响的；
      然而， 了解一些基本的知识可以让您很好地利用 X 的强大功能。</para>

    <sect2>
      <title>为什么要使用 X?</title>

      <para>X 不是第一个为 &unix; 而开发的视窗系统， 但它是最流行的。
        X 的原始开发团队在开发 X 之前就已经在另外一个视窗系统上工作了。
        那个系统的名字叫做
        <quote>W</quote> (就是 <quote>Window</quote>)。X 只是罗马字母中 W 后面
        的一个。</para>

      <para>X 可以被叫做 <quote>X</quote>, <quote>X Window 系统</quote>,
        <quote>X11</quote>, 等等。把 X11 称做
        <quote>X Windows</quote> 可能会冒犯某些人；
        查看 &man.X.7; 可以了解更多的信息。</para>
    </sect2>

    <sect2>
      <title>X 客户机/服务器模型</title>

      <para>X 一开始就是针对网络而设计的，所以
	采用了 <quote>client-server</quote> 模型。在 X 模型中，
	<quote>X server</quote> 运行在有键盘，显示器，鼠标的计算机上。
	服务器用来管理显示信息，处理来自键盘和鼠标的输入等。
	每一个 X 应用程序 (比如 <application>XTerm</application>, 或者
	<application>&netscape;</application>) 就是一个 <quote>client</quote>。
	一个 client 给服务器发送信息，如 <quote>Please draw a
	window at these coordinates</quote>, 然后服务器就返回处理信息，如
	<quote>The user just clicked on the OK
	button</quote>。</para>

      <para>如果您在只有一台计算机的家里或小型办公环境中使用 FreeBSD，您就
	需要在同一台计算机上运行 X server和 X client。然而，如果您有很多运行
	FreeBSD 的机器，您可以在您的桌面计算机上运行 X server，而在比较高档
	的服务器上运行 X 应用程序。在这样的环境中，X server 和 X client 之间的
	通信就可以通过网络来进行。</para>

      <para>这迷惑了一些人，因为 X 的术语和他们料想的有些不同。
	他们以为 <quote>X server</quote> 是运行在功能强大的大型机上的，而
	<quote>X client</quote> 是运行在他们桌面上的计算机上的。</para>

      <para>记住，X server 是有键盘和显示器的那台计算机，而
	 X client 是那些显示窗口的程序。</para>

      <para>并不需要 client 和 server 都运行在同一种操作系统上，或甚至运行在
	同一种类型的计算机上。在 &microsoft.windows; 或者 Apple 公司的 &macos; 上运行
	一个 X server 也是可以的，在它们上面也有很多免费的和商业化的应用程序。</para>

      <para>从 &os;&nbsp;5.3-RELEASE 开始， 随 &os; 一同安装的 X 服务改成了
	<application>&xorg;</application>，
        它的授权同 FreeBSD 的授权类似， 可以免费使用。
        此外， 也有一些针对 FreeBSD 的商业 X 服务器。</para>
    </sect2>

    <sect2>
      <title>窗口管理器</title>

      <para>X 的设计哲学很像 &unix; 的设计哲学，
        <quote>tools, not policy</quote>。这就意味着 X 不会试图去规定任务应该如何
        去完成，而是，只给用户提供一些工具，至于决定如何使用这些工具是用户自己的
        事情。</para>

      <para>这套哲学扩展了 X，它不会规定窗口在屏幕上应该是什么样子，要如何移动鼠标，
      什么键应该用来切换窗体 (比如，
        <keycombo action="simul">
          <keycap>Alt</keycap>
          <keycap>Tab</keycap>
        </keycombo>按键，在 &microsoft.windows; 环境中的作用), 每个窗口的工具条应该
        看起来像什么，他们是否应该有关闭按钮等等。</para>

      <para>实际上，X 行使了一种叫做
        <quote>窗口管理器</quote>的应用程序的职责。有很多这样的程序可用：
          <application>AfterStep</application>,
        <application>Blackbox</application>, <application>ctwm</application>,
        <application>Enlightenment</application>,
        <application>fvwm</application>, <application>Sawfish</application>,
        <application>twm</application>,
        <application>Window Maker</application>，等等。每一个窗口管理器
        都提供了不同的界面和观感；其中一些还支持
        <quote>虚拟桌面</quote>；有一些允许您可以定制一些键来管理您的桌面；
        一些有<quote>开始</quote>
        按钮，或者其他类似的设计；一些是 <quote>可定制主题的(themeable)</quote>，
        通过安装新的主题， 可以完全改变外观。 这些以及很多其他的窗口管理器，
        都可以在 Ports Collection 的
        <filename>x11-wm</filename> 分类目录里找到。</para>

      <para>另外，<application>KDE</application> 和
	<application>GNOME</application> 桌面环境都有他们自己的窗口管理器
	与桌面集成。</para>

      <para>每个窗口管理器也有不同的配置机制；有些需要手工来写配置文件，
       而另外一些则可以使用 GUI 工具来完成大部分的配置任务，至少
        (<application>Sawfish</application>) 有一个用 Lisp 语言来写的配置
        文件。</para>

      <note>
        <title>焦点策略</title>

        <para>窗口管理器的另一个特性是鼠标的 <quote>focus policy</quote>。
        每个窗口系统都需要有一个选择窗口的方法来接受键盘的输入信息，以及当前
        哪个窗口处于可用状态。</para>

        <para>您通常比较熟悉的是一个叫做 <quote>click-to-focus</quote> 的焦点策略。
          这是 &microsoft.windows; 使用的典型焦点策略，也就是您在一个窗口上点击
          一下鼠标，这个窗口就处于当前可用的状态。</para>

        <para>X 不支持一些特殊的焦点策略。而是，窗口管理器控制着在什么时候哪个窗口
        拥有焦点。不同的窗口管理器支持不同的焦点方案。它们都支持点击即获得焦点，
        而且它们中的大多数都支持好几种方案。</para>

        <para>最流行的焦点策略：</para>

        <variablelist>
          <varlistentry>
            <term>focus-follows-mouse</term>

            <listitem>
              <para>鼠标指示器下面的窗口就是获得焦点的窗口。这可以不是位于其他所有
              窗口顶部的窗口。您可以通过将鼠标移到另一个窗口就可以来改变焦点，您
              不需要在它上面点击。
              </para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>sloppy-focus</term>

            <listitem>
              <para>这种方式是对 focus-follows-mouse 策略的一个小小扩展。对于
              focus-follows-mouse， 如果您把鼠标移到了根窗口（或桌面背景）上，
              则所有的其它窗口都会失去焦点， 而相关的全部键盘输入也会丢失。
              对于 sloppy-focus，只有当指针在键入一个新窗口时，窗口
              焦点才会发生变化，当退出当前窗口时是不会变化的。
              </para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>click-to-focus</term>

            <listitem>
              <para>当前窗口由鼠标点击来选择。窗口被<quote>突出显示</quote> ，
              出现在所有其他窗口的前面。即使指针被移向了另一个窗口，所有的键盘输入
              仍会被这个窗口接收。
              </para>
            </listitem>
          </varlistentry>
        </variablelist>

        <para>许多窗口管理器支持其他的策略，与这些相比又有些变化。您可以看具体
        窗口管理器的文档。
        </para>
      </note>
    </sect2>

    <sect2>
      <title>窗口部件</title>

      <para>提供工具而非策略的 X 方法使得在每个应用程序屏幕上看到的窗口部件得到了
      大大的扩展。</para>

      <para><quote>Widget</quote> 只是针对用户接口中所有列举项目的一个术语，它
      可以用某种方法来点击或操作；如按钮，复选框，单选按钮，图标，列表框等等。
       &microsoft.windows; 把这些叫做<quote>控件</quote>。</para>

      <para>&microsoft.windows; 和苹果公司的 &macos; 都有一个严格的窗口部件策略。
      应用程序开发者被建议确保他们的应用程序共享一个普通的所见即所得的用户界面。
      对于 X，它并不要求一个特殊的图形风格或一套相结合的窗口部件集。</para>

      <para>这样的结果是您不能期望 X 应用程序只拥有一个普通的所见即所得的界面。
      有很多的流行的窗口部件集设置，包括来自于 MIT 的 Athena，
        <application>&motif;</application> (模仿
        &microsoft.windows; 的窗口风格， 所有部件都具有斜边和3种灰色度)，
        <application>OpenLook</application>，
        和其他一些窗口部件集。</para>

      <para>如今， 绝大多数比较新的 X 应用程序将使用一组新式的窗口设计，
        包括 <application>KDE</application> 所使用的 Qt，
        以及 <application>GNOME</application> 所使用的 GTK+。
        在这样一种窗口系统下，&unix; 桌面的一些所见即所得特性作了一些收敛，
        以使初学者感到更容易一些。</para>
    </sect2>
  </sect1>

  <sect1 id="x-install">
    <title>安装 X11</title>

    <para><application>&xorg;</application> 或
      <application>&xfree86;</application> 都可以在 &os; 上安装。
      从  &os;&nbsp;5.3-RELEASE 开始，
      <application>&xorg;</application> 成为了 &os;
      上的默认 X11 实现。 <application>&xorg;</application>
      是由 X.Org 基金会发行的开放源代码 X Window 系统实现中的 X 服务。
      <application>&xorg;</application> 基于
      <application>&xfree86&nbsp;4.4RC2</application> 和 X11R6.6 的代码。
      X.Org 基金会在 2004 年 4 月发行了 X11R6.7， 并在 2005 年 2 月发布了
      X11R6.8.2， 后者是可以从目前的 &os; Ports Collection 中获得的版本。</para>

    <para>如果需要从 Ports Collection 编译和安装 <application>&xorg;</application>：</para>

    <screen>&prompt.root; <userinput>cd /usr/ports/x11/xorg</userinput>
&prompt.root; <userinput>make install clean</userinput></screen>

    <note>
      <para>要完整地编译 <application>&xorg;</application> 则需要至少
	4&nbsp;GB 的剩余磁盘空间。</para>
    </note>

    <para>如果想从 Ports Collection 中编译和安装 <application>&xfree86;</application>：</para>

    <screen>&prompt.root; <userinput>cd /usr/ports/x11/XFree86-4</userinput>
&prompt.root; <userinput>make install clean</userinput></screen>

    <para>另外 X11 也可以直接从 package 来安装。
      我们提供了可以与 &man.pkg.add.1; 工具配合使用的 X11 安装包。
      如果从远程下载并安装时，
      &man.pkg.add.1; 请不要指定版本号。
      &man.pkg.add.1; 会自动地下载最新版本的安装包。</para>

    <para>想要从 package 安装
      <application>&xorg;</application>， 简单地输入下面的命令：</para>

    <screen>&prompt.root; <userinput>pkg_add -r xorg</userinput></screen>

    <para><application>&xfree86;&nbsp;4.X</application> 也可以用类似的办法安装：</para>

    <screen>&prompt.root; <userinput>pkg_add -r XFree86</userinput></screen>

    <note><para>上面的例子介绍了如何安装完整的
      X11 软件包， 包括服务器端，客户端，字体等等。
      此外， 也有一些单独的 X11 的 ports 和 packages.</para></note>

    <para>这一章余下的部分将会讲解如何配置
      X11, 以及如何设置一个高效的桌面环境。</para>

    <sect2 id="x-to-xorg">
      <title>从 <application>&xfree86;</application> 转移到
	<application>&xorg;</application></title>

      <para>任何 port 都一样，您应该检查
	<filename>/usr/ports/UPDATING</filename> 文件看看有哪些改变。
	这个文件中包含了把您的系统从
	<application>&xfree86;</application> 转换到
	<application>&xorg;</application> 的说明。</para>

      <para>在尝试任何转换之前请使用 <application>CVSup</application>
	来更新您的 ports tree。在转换您的 X11 安装前您还需要安装 <filename
	role="package">sysutils/portupgrade</filename>。</para>

      <para>在 <filename>/etc/make.conf</filename> 中您需要添加变量
	<literal>X_WINDOW_SYSTEM=xorg</literal>。
	这样做确保您的系统知道正在使用哪种 X11。
	旧的 <literal>XFREE86_VERSION</literal> 变量已经过时并被
	<literal>X_WINDOW_SYSTEM</literal> 变量所取代。</para>

      <para>然后，使用下面的命令：</para>

      <screen>&prompt.root; <userinput>pkg_delete -f /var/db/pkg/imake-4* /var/db/pkg/XFree86-*</userinput>
&prompt.root; <userinput>cd /usr/ports/x11/xorg</userinput>
&prompt.root; <userinput>make install clean</userinput>
&prompt.root; <userinput>pkgdb -F</userinput></screen>

      <para>&man.pkgdb.1; 命令是
	<application>portupgrade</application> 软件的一部分，
	会更新各种软件包的依赖关系。</para>

      <note>
	<para>要联编完整的 <application>&xorg;</application>，
	  请确保至少有 4&nbsp;GB 的剩余磁盘空间。</para>
      </note>
    </sect2>
  </sect1>

  <sect1 id="x-config">
    <sect1info>
      <authorgroup>
        <author>
          <firstname>Christopher</firstname>
          <surname>Shumway</surname>
          <contrib>Contributed by </contrib>
          <!-- July 2001 -->
        </author>
      </authorgroup>
    </sect1info>
    <title>配置 X11</title>


    <indexterm><primary>&xfree86;&nbsp;4.X</primary></indexterm>
    <indexterm><primary>&xfree86;</primary></indexterm>
    <indexterm><primary>&xorg;</primary></indexterm>
    <indexterm><primary>X11</primary></indexterm>

    <sect2>
      <title>开始之前</title>

      <para>在配置 X11 之前，
        您需要了解所安装的系统的下列信息：</para>

      <itemizedlist>
        <listitem><para>显示器规格</para></listitem>
        <listitem><para>显示卡的芯片类型</para></listitem>
        <listitem><para>显示卡的显存容量</para></listitem>
      </itemizedlist>

      <indexterm><primary>水平刷新率</primary></indexterm>
      <indexterm><primary>垂直刷新率</primary></indexterm>

      <para>显示器的规格被 X11 用来决定显示的分辨率和刷新率。
        这些规格通常可以从显示器所带的文档中，
        以及制造商的网站找到。
        需要知道两个数字范围： 垂直刷新率和水平刷新率。</para>

      <para>显示卡的芯片类型将决定
        X11 使用什么模块来驱动图形硬件。
        绝大多数的硬件都能被自动检测，
        但是了解它在自动检测出错的时候还是很有用处的。</para>

      <para>显示卡的显存大小决定了系统支持的分辨率和颜色深度。
        了解这些限制非常重要。</para>

    </sect2>

    <sect2>
      <title>配置 X11</title>

      <para>配置 X11 需要几步。 第一步是以超级用户的身份建立初始的配置文件：</para>

      <screen>&prompt.root; <userinput>Xorg -configure</userinput></screen>

      <para>在使用 <application>&xfree86;</application>
	的情况下键入：</para>

      <screen>&prompt.root; <userinput>XFree86 -configure</userinput></screen>

      <para>这会在 <filename>/root</filename> 中生成一个叫做
	<filename>xorg.conf.new</filename> 的配置文件
	(无论您使用 &man.su.1; 或直接登录，
	都会改变默认的 <envar>$HOME</envar> 目录变量)。
	对于 <application>&xfree86;</application> 来说，
	配置文件的名字是 <filename>XF86Config.new</filename>。
	X11 程序将尝试探测系统中的图形硬件并写包含检测到的硬件的配置文件，
        以便加载正确的驱动程序。</para>

      <para>下一步是测试现存的配置文件，
        以确认 <application>&xorg;</application>
        能够同系统上的图形设备正常工作。
        要完成这个任务，只需：</para>

      <screen>&prompt.root; <userinput>Xorg -config xorg.conf.new</userinput></screen>

      <para><application>&xfree86;</application> 用户应：</para>

      <screen>&prompt.root; <userinput>XFree86 -xf86config XF86Config.new</userinput></screen>

      <para>如果用户看到一个黑灰的格子和一个 X 形的鼠标指针，那么配置就是成功
      的。要退出测试，只要同时键入
        <keycombo action="simul">
          <keycap>Ctrl</keycap>
          <keycap>Alt</keycap>
          <keycap>Backspace</keycap>
        </keycombo>。</para>

	<note><para>如果鼠标工作不正常， 则需要先配置它。
	  参见 &os; 安装一张中的 <xref linkend="mouse">。</para></note>

      <indexterm><primary>X11 调优</primary></indexterm>

      <para>接下来是调整 <filename>xorg.conf.new</filename> (或 <filename>XF86Config.new</filename>， 如果运行 <application>&xfree86;</application> 的话)
        配置文件并作测试。 用文本编辑器如
        &man.emacs.1; 或 &man.ee.1; 打开这个文件。 要做的第一件事是为当前系统的显示器设置刷新率。
        这些值包括垂直和水平的同步频率。 把它们加到
        <filename>xorg.conf.new</filename> 的
        <literal>"Monitor"</literal> 小节中：</para>

      <programlisting>Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "Monitor Model"
        HorizSync    30-107
        VertRefresh  48-120
EndSection</programlisting>

      <para><literal>HorizSync</literal> 和
        <literal>VertRefresh</literal> 在配置文件中可能没有。
        如果是这样的话， 就需要添加它们， 并在
        <literal>HorizSync</literal> 以及 <literal>VertRefresh</literal>
        后面设置合适的数值。 在上面的例子中， 给出了相应的显示其的参数。</para>

      <para>X 能够利用显示器所支持的 DPMS (能源之星) 功能。
        &man.xset.1; 程序可以控制超时时间， 并强制待机、挂起或关机。
        如果希望启用显示器的 DPMS 功能， 则需要把下面的设置添加到 monitor 节中：</para>

      <programlisting>
        Option       "DPMS"</programlisting>

      <indexterm>
        <primary><filename>xorg.conf</filename></primary>
      </indexterm>
      <indexterm>
        <primary><filename>XF86Config</filename></primary>
      </indexterm>

      <para>关闭 <filename>xorg.conf.new</filename> (或 <filename>XF86Config.new</filename>)
        之前还应该选择默认的分辨率和色深。
        这是在 <literal>"Screen"</literal> 小节中定义的：</para>

      <programlisting>Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        DefaultDepth 24
        SubSection "Display"
                Viewport  0 0
                Depth     24
                Modes     "1024x768"
        EndSubSection
EndSection</programlisting>

      <para><literal>DefaultDepth</literal> 关键字描述了要运行的默认色深。
        这可以通过 &man.Xorg.1; (或 &man.XFree86.1;) 的
        <option>-depth</option> 命令行开关来替代配置文件中的设置。
        <literal>Modes</literal> 关键字描述了给定颜色深度下屏幕的分辨率。
        需要说明的是， 目标系统的图形硬件只支持由 VESA 定义的标准模式。
        前面的例子中， 默认色深是使用 24位色。
        在采用这个色深时， 允许的分辨率是 1024x768。</para>

      <para>最后就是将配置文件存盘， 并使用前面介绍的测试模式测试一下。</para>

      <note>
	<para>在发现并解决问题的过程中可以帮助您的工具之一就是
	  X11 的日志文件，包含了与 X11 服务器相关的每个设备的信息。
	  <application>&xorg;</application> 日志的文件名是
	  <filename>/var/log/Xorg.0.log</filename> 这样的格式
	  (<application>&xfree86;</application> 日志文件名是
	  <filename>XFree86.0.log</filename> 这样的格式)。日志的准确的名字
	  可以从 <filename>Xorg.0.log</filename> 到
	  <filename>Xorg.8.log</filename> 等等。</para>
      </note>

      <para>如果一切准备停当， 就可以把配置文件放到公共的目录中了。
        您可以在 &man.Xorg.1; (或 &man.XFree86.1;) 里面找到具体位置。
	这个位置通常是 <filename>/etc/X11/xorg.conf</filename> 或
	<filename>/usr/X11R6/etc/X11/xorg.conf</filename> (对于
	<application>&xfree86;</application> 它应该是
        <filename>/etc/X11/XF86Config</filename> 或
        <filename>/usr/X11R6/etc/X11/XF86Config</filename>)。</para>

      <screen>&prompt.root; <userinput>cp xorg.conf.new /etc/X11/xorg.conf</userinput></screen>

      <para>For <application>&xfree86;</application>:</para>

      <screen>&prompt.root; <userinput>cp XF86Config.new /etc/X11/XF86Config</userinput></screen>

      <para>现在已经完成了 X11 的配置全过程。 为了使用 &man.startx.1; 来启动
        <application>&xfree86;&nbsp;4.X</application> 需要安装
        <filename role="package">x11/wrapper</filename> port。
	<application>&xorg;</application> 已经包含了 wrapper 代码，
	因此并不需要安装 wrapper port。
	X11 服务器也可以用
        &man.xdm.1; 来启动。</para>

      <note><para>有一个图形配置工具，
	&man.xorgcfg.1; (对于 <application>&xfree86;</application> 来说， 是 &man.xf86cfg.1;)，
	随 X11 软件包一同安装。 它可以通过选择合适的驱动和设置交互式地定义配置。
	这个程序可以从控制台通过命令 <command>xorgcfg -textmode</command> 来直接启动。
	与了解详情， 请参考 &man.xorgcfg.1; 和 &man.xf86cfg.1; 的联机手册。</para>

      <para>另外还有一个叫做 &man.xorgconfig.1; 的文本界面配置工具
	(对于 <application>&xfree86;</application> 是 &man.xf86config.1;)，
	这是一个控制台工具因此对用户显得不太友好，
	不过当其他工具无法工作时， 它仍然可能可以使用。</para></note>

    </sect2>

    <sect2>
      <title>高级配置主题</title>

      <sect3>
        <title>配置 &intel; i810 显示芯片组</title>

        <indexterm><primary>Intel i810 显示芯片</primary></indexterm>

        <para>配置Intel i810芯片组的显示卡需要有针对 X11
	的能够用来驱动显示卡的 <devicename>agpgart</devicename> AGP程序接口。
	自从发行版本 4.8-RELEASE 和 5.0-RELEASE 发行以来 &man.agp.4; 驱动程序就包含在
	  <filename>GENERIC</filename> 内核配置里面了。
	  在以前的发行版里，您必须要在您的内核配置文件里添加下面的一行：</para>

	<programlisting>device agp</programlisting>

	<para>然后重新编译一个新的内核。
	  或者，您可以在启动的时候使用 &man.loader.8; 自动加载
	   <filename>agp.ko</filename> 内核模块。
          简单的添加下面这行到
          <filename>/boot/loader.conf</filename> 文件里：</para>

        <programlisting>agp_load="YES"</programlisting>

        <para>接下来，如果您正在运行 FreeBSD&nbsp;4.X 或者更早的版本，
        需要创建一个设备节点作为程序接口。
          要创建 AGP 设备节点，在 <filename>/dev</filename> 下运行
          &man.MAKEDEV.8;：</para>

        <screen>&prompt.root; <userinput>cd /dev</userinput> &prompt.root; <userinput>sh MAKEDEV agpgart</userinput></screen>

	<note>
	  <para>FreeBSD&nbsp;5.X 和以后的版本会使用 &man.devfs.5; 来半透明的分配
	    设备节点，因此
	    &man.MAKEDEV.8; 这一步是不必要的。</para>
	</note>

        <para>这也适用于其他的图形卡硬件配置。
          注意如果系统没有将 &man.agp.4;
	  驱动程序编译进内核，尝试用 &man.kldload.8; 加载模块是无效的。
	  这个驱动程序必须编译进内核或者使用 <filename>/boot/loader.conf</filename>
	   在启动时加载进入内核。</para>

	<para>如果您正在使用 <application>&xfree86;&nbsp;4.1.0</application> (或者以后的
	版本) 并且出现了像 <literal>fbPictureInit</literal> 这样未解决的符号提示，
          试着在 X11 配置文件里的
           <literal>Driver "i810"</literal> 一行后面加入下面这行：</para>
        <programlisting>Option "NoDDC"</programlisting>
      </sect3>
    </sect2>
  </sect1>

  <sect1 id="x-fonts">
    <sect1info>
      <authorgroup>
        <author>
          <firstname>Murray</firstname>
          <surname>Stokely</surname>
          <contrib>Contributed by </contrib>
        </author>
      </authorgroup>
    </sect1info>
    <title>在 X11 中使用字体</title>

    <sect2 id="type1">
    <title>Type1 字体</title>
    <para>X11 使用的默认字体不是很理想。
    大型的字体显得参差不齐，看起来很不专业， 并且， 在
    <application>&netscape;</application> 中， 中的小字体简直难以看懂。
    有好几种免费、 高质量的字体可以很方便地用在 X11 中。 例如，URW字体集合
    (<filename role="package">x11-fonts/urwfonts</filename>) 就包括了高质量的
    标准 type1 字体 (<trademark class="registered">Times Roman</trademark>,
    <trademark class="registered">Helvetica</trademark>, <trademark class="registered">Palatino</trademark> 和其他一些).在 Freefont 集合中
    (<filename role="package">x11-fonts/freefonts</filename>) 也包括更多的字体，
    但它们中的绝大部分使用在图形软件中，如
     <application>Gimp</application>，在屏幕字体中使用并不完美。另外，
     只要花很少的功夫，可以将
    <application>&xfree86;</application> 配置成能使用
    &truetype; 字体：请参见后面的
    <link linkend="truetype">&truetype; 字体一节</link>。</para>

    <para>要安装上面的Type1字体，您只需要运行下面的命令：</para>

    <screen>&prompt.root; <userinput>cd /usr/ports/x11-fonts/urwfonts</userinput>
&prompt.root; <userinput>make install clean</userinput></screen>

    <para>freefont 或其他的字库和上面所说的大体类似。 为了让 X
      服务器能够检测到这些字体， 需要在
      X 服务器的配置文件 <filename>/etc/X11/</filename>
      (<application>&xorg;</application> 是 <filename>xorg.conf</filename> 而
      <application>&xfree86;</application> 则是 <filename>XF86Config</filename>)
      中增加下面的配置：</para>

      <programlisting>FontPath "/usr/X11R6/lib/X11/fonts/URW/"</programlisting>

      <para>或者，也可以在命令行运行：</para>

      <screen>&prompt.user; <userinput>xset fp+ /usr/X11R6/lib/X11/fonts/URW</userinput>
&prompt.user; <userinput>xset fp rehash</userinput></screen>

      <para>这样会起作用，但是当 X 会话结束后就会丢失，
    除非它被添加到启动文件 (<filename>~/.xinitrc</filename> 中，
    针对一个寻常的 <command>startx</command> 会话，或者当您通过一个类似
      <application>XDM</application> 的图形登陆管理器登陆时添加到
     <filename>~/.xsession</filename> 中)。
    第三种方法是使用新的
    <filename>/usr/X11R6/etc/fonts/local.conf</filename> 文件： 查看
     <link linkend="antialias">anti-aliasing</link> 章节。
    </para>
    </sect2>

    <sect2 id="truetype">
    <title>&truetype; 字体</title>

    <indexterm><primary>TrueType Fonts</primary></indexterm>
    <indexterm><primary>fonts</primary>
      <secondary>TrueType</secondary>
    </indexterm>

    <para><application>&xfree86;&nbsp;4.X</application> 和
    <application>&xorg;</application> 都已经内建了对
    &truetype; 字体的支持。有两个不同的模块能够启用这个功能。
    在这个例子中使用 freetype 这个模块，因为它与其他的字体描绘后端
    是兼容的。要启用 freetype 模块，只需要将下面这行添加到
    <filename>/etc/X11/XF86Config</filename> 文件的
    <literal>"Module"</literal> 部分。</para>

    <programlisting>Load "freetype"</programlisting>

    <para>对于 <application>&xfree86;&nbsp;3.3.X</application>，需要额外的
      &truetype; 字体服务器。
      <application>Xfstt</application> 通常被用于这个目的。
      要安装 <application>Xfstt</application>，
      只要简单的安装 port
      <filename role="package">x11-servers/Xfstt</filename>.</para>

    <para>现在，为 &truetype; 字体创建一个目录 (比如，
      <filename>/usr/X11R6/lib/X11/fonts/TrueType</filename>)
      然后把所有的 &truetype; 字体拷贝到这个目录。记住您不能直接从
       &macintosh; 计算机中提取 &truetype; 字体；
      能被 X11 使用的必须是
       &unix;/&ms-dos;/&windows; 格式的。
      一旦您已经拷贝了这些文件到这个目录，使用
      <application>ttmkfdir</application> 来创建一个
      <filename>fonts.dir</filename> 文件，以便让X字体引擎知道
      您已经安装了这些新文件。
      <command>ttmkfdir</command> 可以在 FreeBSD
      Ports Collection
      <filename role="package">x11-fonts/ttmkfdir</filename> 中找到。</para>

    <screen>&prompt.root; <userinput>cd /usr/X11R6/lib/X11/fonts/TrueType</userinput>
&prompt.root; <userinput>ttmkfdir &gt; fonts.dir</userinput></screen>

    <para>现在把 &truetype; 字体目录添加到字体路径中。
      这和上面 <link linkend="type1">Type1</link> 字体的步骤是一样的，
      那就是，使用</para>

    <screen>&prompt.user; <userinput>xset fp+ /usr/X11R6/lib/X11/fonts/TrueType</userinput>
&prompt.user; <userinput>xset fp rehash</userinput></screen>

    <para>或者把 <literal>FontPath</literal> 这行加到
       <filename>xorg.conf</filename> (或 <filename>XF86Config</filename>) 文件中。</para>

      <para>就是这样。现在 <application>&netscape;</application>,
        <application>Gimp</application>,
        <application>&staroffice;</application> 和其他所有的 X 应用程序
        应该可以认出安装的 &truetype;
        字体。一些很小的字体(如在 Web 页面上高分辨率显示的文本)
        和一些很大的字体(在
        <application>&staroffice;</application> 下) 现在看起来已经很好了。

        </para>
    </sect2>

    <sect2 id="antialias">
    <sect2info>
      <authorgroup>
        <author>
          <firstname>Joe Marcus</firstname>
          <surname>Clarke</surname>
          <contrib>Updated by </contrib>
          <!-- May 2003 -->
        </author>
      </authorgroup>
    </sect2info>
    <title>Anti-Aliased 字体</title>

    <indexterm><primary>anti-aliased fonts</primary></indexterm>
    <indexterm><primary>fonts</primary>
      <secondary>anti-aliased</secondary></indexterm>

    <para>X11 从 <application>&xfree86;</application> 4.0.2 开始支持字体的反走样。
      但是， 字体配置在
      <application>&xfree86;</application> 4.3.0 之前是非常繁琐的。
      从 <application>&xfree86;</application> 4.3.0 开始，
      对于所有支持 Xft 的应用程序， 所有放到 X11
      <filename>/usr/X11R6/lib/X11/fonts/</filename> 和
      <filename>~/.fonts/</filename> 中的字体都自动地被加入反走样支持。
      并不是所有的应用程序都支持 Xft， 但已经有相当多的程序提供 Xft 支持了。
      支持 Xft 的应用程序包括 Qt 2.3 以及更高版本
      (用以开发 <application>KDE</application> 桌面的工具包)、
      GTK+ 2.0 和更高版本 (用于开发
      <application>GNOME</application> 桌面的工具包)， 以及
      <application>Mozilla</application> 1.2 和更高版本。
    </para>

    <para>要控制哪些字体是 anti-aliased，或者配置 anti-aliased 特性，
      创建(或者编辑，如果文件已经存在的话)文件
      <filename>/usr/X11R6/etc/fonts/local.conf</filename>。Xft 字体系统的几个
      高级特性都可以使用这个文件来调节；
      这一部分只描述几种最简单的情况。要了解更多的细节，请查看
      &man.fonts-conf.5;.</para>

    <indexterm><primary>XML</primary></indexterm>

    <para>这个文件一定是 XML 格式的。注意确保所有的标签都完全的关闭掉。
      这个文件以一个很普通的 XML 头开始， 后跟一个 DOCTYPE 定义，
      接下来是 <literal>&lt;fontconfig&gt;</literal> 标签：</para>

    <programlisting>
      &lt;?xml version="1.0"?&gt;
      &lt;!DOCTYPE fontconfig SYSTEM "fonts.dtd"&gt;
      &lt;fontconfig&gt;
    </programlisting>

    <para>像前面所做的那样，在
      <filename>/usr/X11R6/lib/X11/fonts/</filename> 和
      <filename>~/.fonts/</filename> 目录下的所有字体已经可以被支持 Xft 的
      应用程序使用了。如果您想添加这两个目录以外的其他路径，
      简单的添加下面这行到
      <filename>/usr/X11R6/etc/fonts/local.conf</filename>文件中：</para>

    <programlisting>&lt;dir&gt;/path/to/my/fonts&lt;/dir&gt;</programlisting>

    <para>添加了新的字体，尤其是添加了新的字体目录后，
      您应该运行下面的命令重建字体缓存：</para>

    <screen>&prompt.root; <userinput>fc-cache -f</userinput></screen>

    <para>Anti-aliasing 会让字体边缘有些模糊，这样增加了非常小的文本的可读性，
      并从大文本字体中删除 <quote>锯齿</quote>。
      但如果使用普通的文本， 则可能引起眼疲劳。
      要禁止 14磅 以下字体的反走样， 需要增加如下配置：</para>

      <programlisting>        &lt;match target="font"&gt;
            &lt;test name="size" compare="less"&gt;
                &lt;double&gt;14&lt;/double&gt;
            &lt;/test&gt;
            &lt;edit name="antialias" mode="assign"&gt;
                &lt;bool&gt;false&lt;/bool&gt;
            &lt;/edit&gt;
        &lt;/match&gt;
        &lt;match target="font"&gt;
            &lt;test name="pixelsize" compare="less" qual="any"&gt;
                &lt;double&gt;14&lt;/double&gt;
            &lt;/test&gt;
            &lt;edit mode="assign" name="antialias"&gt;
                &lt;bool&gt;false&lt;/bool&gt;
            &lt;/edit&gt;
        &lt;/match&gt;</programlisting>

    <indexterm><primary>fonts</primary>
      <secondary>spacing</secondary></indexterm>

    <para>用 anti-aliasing 来间隔一些等宽字体也是不适当的。
      这似乎是 <application>KDE</application> 的一个问题。
      要修复这个问题需要确保每个字体之间的间距保持在100。
      加入下面这些行：</para>

     <programlisting>       &lt;match target="pattern" name="family"&gt;
           &lt;test qual="any" name="family"&gt;
               &lt;string&gt;fixed&lt;/string&gt;
           &lt;/test&gt;
           &lt;edit name="family" mode="assign"&gt;
               &lt;string&gt;mono&lt;/string&gt;
           &lt;/edit&gt;
        &lt;/match&gt;
        &lt;match target="pattern" name="family"&gt;
            &lt;test qual="any" name="family"&gt;
                &lt;string&gt;console&lt;/string&gt;
            &lt;/test&gt;
            &lt;edit name="family" mode="assign"&gt;
                &lt;string&gt;mono&lt;/string&gt;
            &lt;/edit&gt;
        &lt;/match&gt;</programlisting>

      <para>(这里把其他普通的修复的字体作为
        <literal>"mono"</literal>)，然后加入：</para>

      <programlisting>         &lt;match target="pattern" name="family"&gt;
             &lt;test qual="any" name="family"&gt;
                 &lt;string&gt;mono&lt;/string&gt;
             &lt;/test&gt;
             &lt;edit name="spacing" mode="assign"&gt;
                 &lt;int&gt;100&lt;/int&gt;
             &lt;/edit&gt;
         &lt;/match&gt;      </programlisting>

      <para>某些字体，比如 Helvetica，当 anti-aliased 的时候可能存在问题。
	通常的表现为字体本身似乎被垂直的切成两半。
	糟糕的时候，还可能导致应用程序比如
	 <application>Mozilla</application> 崩溃。
	为了避免这样的现象，考虑添加下面几行到
	<filename>local.conf</filename>文件里面：</para>

      <programlisting>         &lt;match target="pattern" name="family"&gt;
             &lt;test qual="any" name="family"&gt;
                 &lt;string&gt;Helvetica&lt;/string&gt;
             &lt;/test&gt;
             &lt;edit name="family" mode="assign"&gt;
                 &lt;string&gt;sans-serif&lt;/string&gt;
             &lt;/edit&gt;
         &lt;/match&gt;        </programlisting>

      <para>一旦您完成对
        <filename>local.conf</filename> 文件的编辑，确保您使用了
        <literal>&lt;/fontconfig&gt;</literal> 标签来结束文件。
        不这样做将会导致您的更改被忽略。</para>

       <para>X11 默认的字库当使用反走样时会比较难看。
         更好的字库可以在
	 <filename role="package">x11-fonts/bitstream-vera</filename>
	 port 中找到。 这个 port 会创建一个
	 <filename>/usr/X11R6/etc/fonts/local.conf</filename> 文件，
	 如果这个文件不存在的话。 反之，
	 port 将创建 <filename>/usr/X11R6/etc/fonts/local.conf-vera
	 </filename> 文件。 将其内容合并到
	 <filename>/usr/X11R6/etc/fonts/local.conf</filename> 中，
	 则 Bitstream 字体将自动地代替默认的
	 X11 Serif， Sans Serif， 以及单倍距字体。</para>

       <para>最后，用户可以通过他们个人的
        <filename>.fonts.conf</filename> 文件来添加自己的设定。
        要完成此项工作， 用户只需简单地创建
	<filename>~/.fonts.conf</filename> 并添加相关配置。
	此文件也必须是 XML 格式的。</para>

       <indexterm><primary>LCD screen</primary></indexterm>
       <indexterm><primary>Fonts</primary>
         <secondary>LCD screen</secondary></indexterm>

       <para>最后：对于LCD屏幕， 可能希望使用子像素的取样。 简单而言，
        这是通过分别控制 (水平方向分开的) 红、绿、蓝 像素，
        来改善水平分辨率； 这样做的效果一般会非常明显。
        要启用它， 只需在
         <filename>local.conf</filename> 文件的某个地方加入：</para>

       <programlisting>
         &lt;match target="font"&gt;
             &lt;test qual="all" name="rgba"&gt;
                 &lt;const&gt;unknown&lt;/const&gt;
             &lt;/test&gt;
             &lt;edit name="rgba" mode="assign"&gt;
                 &lt;const&gt;rgb&lt;/const&gt;
             &lt;/edit&gt;
         &lt;/match&gt;
       </programlisting>

       <note><para>依赖于显示器的种类，
	 <literal>rgb</literal> 可能需要被更改为 <literal>bgr</literal>,
	 <literal>vrgb</literal> 或 <literal>vbgr</literal>：实验一下
	 看看那个更好。</para></note>

       <indexterm>
	 <primary>Mozilla</primary>
         <secondary>disabling anti-aliased fonts</secondary>
       </indexterm>

       <para>Anti-aliasing 在您下次启动系统时就能用了。
	 然而，注意您的程序必须知道如何使用它。现在，Qt 工具包做到了，
         所以整个 <application>KDE</application> 环境能够使用
          anti-aliased 字体 (查看 <application>KDE</application> 上的
	  <xref linkend="x11-wm-kde-antialias"> 了解细节)。
	 通过 <quote>Font</quote> capplet (参见 <xref
         linkend="x11-wm-gnome-antialias"> 以了解进一步的细节)，
         GTK+ 和 <application>GNOME</application> 也可以使用 anti-aliasing。
         默认情况下，
         <application>Mozilla</application> 1.2 以及更高版本都会自动的使用
         anti-aliasing。要禁用它，使用 <makevar>-DWITHOUT_XFT</makevar> 选项
	 重新编译 <application>Mozilla</application>。</para>
    </sect2>
  </sect1>

  <sect1 id="x-xdm">
    <sect1info>
      <authorgroup>
        <author>
          <firstname>Seth</firstname>
          <surname>Kingsley</surname>
          <contrib>Contributed by </contrib>
        </author>
      </authorgroup>
    </sect1info>
    <title>X 显示管理器</title>
    <sect2>
      <title>概要</title>

      <indexterm><primary>X Display Manager</primary></indexterm>
      <para>X 显示管理器(<application>XDM</application>)
        是一个X视窗系统用于进行登陆会话管理的可选项。
        这个可以应用于多种情况下，包括小
         <quote>X Terminals</quote>，
        桌面，大网络显示服务器。既然 X 视窗系统不受网络和协议的限制，
        那对于通过网络连接起来的运行 X 客户端和服务器端的不同机器，
        就会有很多的可配置项。
        <application>XDM</application>
        提供了一个选择要连接到哪个显示服务器的图形接口，
        只要键入如登陆用户名和密码这样的验证信息。</para>

      <para>您也可以把 <application>XDM</application> 想象成与
        &man.getty.8 工具一样(see <xref linkend="term-config"> for
          details)。为用户提供了同样功能。它可以完成系统的登陆任务，
          然后为用户运行一个会话管理器
          (通常是一个 X 视窗管理器)。接下来 <application>XDM</application>
	  就等待这个程序退出，发出信号用户已经登陆完成，应当退出屏幕。
          这时，
          <application>XDM</application>
          就可以为下一个登陆用户显示登陆和可选择屏幕。</para>
    </sect2>

    <sect2>
      <title>使用 XDM</title>

      <para><application>XDM</application> 精灵程序在
         <filename>/usr/X11R6/bin/xdm</filename> 中。您可以在任何时候
	用 <username>root</username> 来运行这个程序，
        在本地机器上，它将启动管理X的画面。如果要
        <application>XDM</application> 每次机器一启动就开始运行，
        一个简单的办法是在 <filename>/etc/ttys</filename> 中加入一个记录。
        有关这个文件的更多的格式和使用方法，可以看看 <xref
        linkend="term-etcttys">。在默认的
        <filename>/etc/ttys</filename> 文件中用于运行
        <application>XDM</application> 守护程序的一行是这样的：</para>

      <screen>ttyv8   "/usr/X11R6/bin/xdm -nodaemon"  xterm   off secure</screen>

      <para>默认情况下，这个记录是关闭的，要启用它，
        您需要把第5部分的 <literal>off</literal> 改为
        <literal>on</literal> 然后按照 <xref linkend="term-hup"> 的指导
	重新启动 &man.init.8;。第一部分，这个程序将管理的终端名称是
        <literal>ttyv8</literal>。这意味着
        <application>XDM</application> 将运行在第9个虚拟终端上。</para>
    </sect2>

    <sect2>
      <title>配置 XDM</title>

      <para><application>XDM</application> 的配置目录是在
         <filename>/usr/X11R6/lib/X11/xdm</filename>中。在这个目录中，
        您会看到几个用来改变
        <application>XDM</application> 行为和外观的文件。您会找到这些文件：</para>

        <informaltable frame="none" pgwide="1">
          <tgroup cols="2">
            <thead>
              <row>
                <entry>文件</entry>
                <entry>描述</entry>
              </row>
            </thead>

            <tbody>
              <row>
                <entry><filename>Xaccess</filename></entry>
                <entry>客户端授权规则。</entry>
              </row>

              <row>
                <entry><filename>Xresources</filename></entry>
                <entry>默认的X资源值。</entry>
              </row>

              <row>
                <entry><filename>Xservers</filename></entry>
                <entry>远程和本地显示管理列表。</entry>
              </row>

              <row>
                <entry><filename>Xsession</filename></entry>
                <entry>用于登陆的默认的会话脚本。</entry>
              </row>

              <row>
                <entry><filename>Xsetup_</filename>*</entry>
                <entry>登陆之前用于加载应用程序的脚本。</entry>
              </row>

              <row>
                <entry><filename>xdm-config</filename></entry>
                <entry>运行在这台机器上的所有显示的全局配置。</entry>
              </row>

              <row>
                <entry><filename>xdm-errors</filename></entry>
                <entry>服务器程序产生的错误。</entry>
              </row>

              <row>
                <entry><filename>xdm-pid</filename></entry>
                <entry>当前运行的 XDM 的进程 ID。</entry>
              </row>
            </tbody>
          </tgroup>
        </informaltable>

      <para>当 <application>XDM</application> 运行时，
        在这个目录中有几个脚本和程序可以用来设置桌面。
        这些文件中的每一个的用法都将被简要地描述。
        这些文件的更详细的语法和用法在
         &man.xdm.1; 中将有详细描述。</para>

      <para>默认的配置是一个矩形的登陆窗口，上面有机器的名称，
        <quote>Login:</quote> 和
        <quote>Password:</quote>。如果您想设计您自己个性化的
        <application>XDM</application> 屏幕，这是一个很好的起点。</para>

      <sect3>
        <title>Xaccess</title>

        <para>连接到
          <application>XDM</application> 的用来控制显示的协议
	  叫做 X 显示管理连接协议(XDMCP)。
          这个文件是一个用来控制来自远程机器的XDMCP连接。默认的，
	  它允许任何客户端连接，但那没有用，除非
           <filename>xdm-config</filename>
          被修改成用于侦听远程连接。</para>
      </sect3>

      <sect3>
        <title>Xresources</title>
        <para>这是一个默认的用来显示选项和登陆屏幕的应用程序文件。这
	  就是您能够定制登陆程序的外观的地方。这个格式与
          X11 文档中描述的默认应用
	  程序文件是一样的。</para>
      </sect3>

      <sect3>
        <title>Xservers</title>
        <para>这是一个选择者应当提供的作为可选的远程显示列表。
          </para>
      </sect3>

      <sect3>
        <title>Xsession</title>
        <para>这是一个用户登陆后针对
          <application>XDM</application> 的默认会话脚本。通常，在
           <filename>~/.xsession</filename>
          中每个用户将有一个可定制的会话脚本。</para>
      </sect3>

      <sect3>
        <title>Xsetup_*</title>
        <para>在显示选择者或登陆接口之前，这些将被自动运行。
	  这是一个每个显示都要用到的脚本，叫做
           <filename>Xsetup_</filename>，
          后面会跟一个本地显示的数字(比如
          <filename>Xsetup_0</filename>)。典型的，这些脚本将在后台
          (如 <command>xconsole</command>)运行一个或两个程序。</para>
      </sect3>

      <sect3>
        <title>xdm-config</title>
        <para>此文件以应用程序默认值的形式，
          提供了在安装时所使用的普适的显示设置。</para>
      </sect3>

      <sect3>
        <title>xdm-errors</title>
        <para>这个文件包含了
          <application>XDM</application> 正设法运行的的 X 服务器 的输出。
          如果 <application>XDM</application> 正设法运行的显示由于某种原因被挂起，
          那这是一个寻找错误信息的好地方。
	  这些信息会在每一个会话的基础上被写到用户的
	  <filename>~/.xsession-errors</filename>
          文件中。</para>
      </sect3>
    </sect2>

    <sect2>
      <title>运行一个网络显示服务器</title>

      <para>对于其他客户端来说，为了连接到显示服务器，您将必须编辑访问控制规则，
        然后启用连接侦听。默认的这些被设置成比较保守的值。
        要让<application>XDM</application>能侦听连接，先要在
        <filename>xdm-config</filename>
        文件中注释掉一行：</para>

      <screen>! SECURITY: do not listen for XDMCP or Chooser requests ! Comment out this line if you want to manage X terminals with xdm
DisplayManager.requestPort:     0</screen>

      <para>然后重新启动<application>XDM</application>。
        记住默认应用程序文件的注释以<quote>!</quote>
        字母开始，不是<quote>#</quote>。
        您需要设置严格的访问控制。看看在
        <filename>Xaccess</filename>文件中的实例记录，可以参考
        &man.xdm.1; 的联机手册。</para>
    </sect2>

     <sect2>
        <title>替换 XDM</title>

        <para>有几个替换默认
          <application>XDM</application>程序的方案。它们是，
          上一节已经描述过的<application>kdm</application> (与
          <application>KDE</application>捆绑在一起)。
          <application>kdm</application> 提供了许多视觉上的改进和局部的修饰，
          同样能让用户在启动时能选择他们喜欢的窗口管理器。</para>
     </sect2>
  </sect1>

  <sect1 id="x11-wm">
    <sect1info>
      <authorgroup>
        <author>
          <firstname>Valentino</firstname>
          <surname>Vaschetto</surname>
          <contrib>Contributed by </contrib>
        </author>
        <!-- June 2001 -->
      </authorgroup>
    </sect1info>

    <title>桌面环境</title>

    <para>这节描述了 FreeBSD 上用于 X 的不同桌面环境。
      <quote>桌面环境</quote>
      可能仅仅是一个简单的窗口管理器，
      也可能是一个像
      <application>KDE</application> 或者 <application>GNOME</application>这样的完整桌面应用程序套件。
    </para>

    <sect2 id="x11-wm-gnome">
      <title>GNOME</title>

      <sect3 id="x11-wm-gnome-about">
        <title>有关 GNOME</title>

        <indexterm><primary>GNOME</primary></indexterm>
        <para><application>GNOME</application> 是一个用户界面友好的桌面环境，
          能够使用户很容易地使用和配置他们的计算机。
          <application>GNOME</application>
          包括一个面板(用来启动应用程序和显示状态)，
          一个桌面(存放数据和应用程序的地方)，
          一套标准的桌面工具和应用程序，
          和一套与其他人相互协同工作的协议集。
          其他操作系统的用户在使用
          <application>GNOME</application>提供的强大的图形驱动环境时会觉得很好。
	  更多的关于 FreeBSD 上 <application>GNOME</application> 的信息
	  可以在 <ulink
	  url="http://www.FreeBSD.org/gnome">FreeBSD GNOME
	  Project</ulink>的网页上找到。</para>
      </sect3>

      <sect3 id="x11-wm-gnome-install">
        <title>安装 GNOME</title>

        <para>安装
          <application>GNOME</application>的最简单的方法是
	  <xref linkend="default-desktop"> 第&nbsp;2 章描述的在FreeBSD安装过程中通过
          <quote>Desktop Configuration</quote>菜单来进行。
          它们也可以很容易地从一个package或Ports Collection安装：</para>

        <para>要从网络安装<application>GNOME</application>，
          只要键入：</para>

        <screen>&prompt.root; <userinput>pkg_add -r gnome2</userinput></screen>

        <para>从源代码编译<application>GNOME</application>，可以使用
          ports树：</para>

        <screen>&prompt.root; <userinput>cd /usr/ports/x11/gnome2</userinput> &prompt.root; <userinput>make install clean</userinput></screen>

        <para>一旦<application>GNOME</application>被安装好，
          X Server必须被告知启动
          <application>GNOME</application>以代替默认的窗口管理器。
          如果在适当的位置已经定制好了文件<filename>.xinitrc</filename>，
          简单地将启动当前窗口管理器的那行替换为
          <application>/usr/X11R6/bin/gnome-session</application>。
          如果没有对配置文件做过什么特殊的改动， 只需简单地键入：</para>

        <screen>&prompt.user; <userinput>echo "/usr/X11R6/bin/gnome-session" &gt; ~/.xinitrc</userinput></screen>

        <para>接着，键入<command>startx</command>，
          <application>GNOME</application>桌面环境就启动了。</para>

        <note><para>如果已经使用了一个像
          <application>XDM</application>这样的显示管理器，就不能这样做。
          而是，用同样的命令创建一个可执行文件<filename>.xsession</filename>。
          要这样做，需要先编辑文件，然后用
          <application>/usr/X11R6/bin/gnome-session</application>替换已存在的窗口管理命令：
          </para></note>

        <screen>&prompt.user; <userinput>echo "#!/bin/sh" > ~/.xsession</userinput> &prompt.user; <userinput>echo "/usr/X11R6/bin/gnome-session" >> ~/.xsession</userinput> &prompt.user; <userinput>chmod +x ~/.xsession</userinput></screen>

        <para>另一个选项是在登陆时配置显示管理器允许您选择窗口管理器；有关
          <link linkend="x11-wm-kde-details">KDE 细节</link>
          会解释如何使用<application>kdm</application>，
          <application>KDE</application>显示管理器来做。</para>
      </sect3>

      <sect3 id="x11-wm-gnome-antialias">
        <title>在GNOME上使用Anti-aliased字体</title>

        <indexterm><primary>GNOME</primary>
          <secondary>anti-aliased fonts</secondary></indexterm>
	<para>X11 通过<quote>RENDER</quote>扩展来支持 anti-aliasing。
	  GTK+ 2.0 以及更高的版本(被
	  <application>GNOME</application>使用的工具包)可以使用这个功能。
	  配置 anti-aliasing 在
	  <xref linkend="antialias">描述。所以，使用最近的软件，
	  anti-aliasing 可以应用在
	  <application>GNOME</application>桌面环境中。只需要依次选择
	  <menuchoice>
	    <guimenu>应用程序</guimenu>
	    <guisubmenu>桌面首选项</guisubmenu>
	    <guimenuitem>字体</guimenuitem></menuchoice>，然后选上
	  <guibutton>最佳形状</guibutton>，
	  <guibutton>最佳对比度</guibutton>，或者
	  <guibutton>像素圆滑(LCD)</guibutton>。对于
	  GTK+ 应用程序，它们不是
	  <application>GNOME</application> 桌面的一部分，在启动程序前需要设置
	  环境变量<varname>GDK_USE_XFT</varname>的值为
	  <literal>1</literal>。</para>
      </sect3>
    </sect2>

    <sect2 id="x11-wm-kde">
      <title>KDE</title>

      <indexterm><primary>KDE</primary></indexterm>
      <sect3 id="x11-wm-kde-about">
        <title>有关 KDE</title>

        <para><application>KDE</application> 是一个容易使用的现代桌面环境。
          <application>KDE</application> 有很多很好的特性：</para>

        <itemizedlist>
          <listitem>
	    <para>一个美丽的现代的桌面。</para>
	  </listitem>

          <listitem>
	    <para>一个集合了完美网络环境的桌面。</para>
	  </listitem>

          <listitem>
	    <para>一个集成的允许您方便，高效地帮助您使用
	      <application>KDE</application> 桌面和它的应用程序的帮助系统。</para>
	  </listitem>

          <listitem>
	    <para>所有的<application>KDE</application>应用程序具有一致的所见即所得界面。</para>
	  </listitem>

          <listitem>
	    <para>标准的菜单和工具栏，键盘布局，颜色配置等。</para>
	  </listitem>

          <listitem>
	    <para>国际化：<application>KDE</application>
              可以使用超过40种语言。</para>
	  </listitem>

          <listitem>
	    <para>集中的一致化的桌面驱动配置。</para>
	  </listitem>

          <listitem>
	    <para>许多有用的
              <application>KDE</application>应用程序。</para>
	  </listitem>
        </itemizedlist>

        <para><application>KDE</application> 中有一个基于
          <application>KDE</application> 的
          <quote>KParts</quote> 技术的办公套件， 它提供了电子表格、
          幻灯片、 日程管理， 以及新闻组阅读器等软件。
          <application>KDE</application> 还附带了一个叫做
          <application>Konqueror</application> 的 web 浏览器，
          是为其他运行于 &unix; 系统上的 web 浏览器的强大竞争对手。
          关于 <application>KDE</application> 的更多详情可以在
          <ulink url="http://www.kde.org/">KDE
          网站</ulink> 上找到。 要了解 FreeBSD 专属的
	  <application>KDE</application> 信息和资源， 请参考
	  <ulink url="http://freebsd.kde.org/">FreeBSD-KDE
	  团队</ulink> 的网站。</para>
      </sect3>

      <sect3 id="x11-wm-kde-install">
        <title>安装 KDE</title>

        <para>与 <application>GNOME</application> 或其他桌面环境一样，安装
          <application>KDE</application> 的最容易的方法是通过
          <xref linkend="default-desktop"> 第 2 章所描绘的 FreeBSD 安装过程的
	  <quote>Desktop Configuration</quote> 菜单来安装。
	  另外，它也可以很容易地从packages或Ports Collection安装：</para>

        <para>要从网络安装 <application>KDE</application> 只需要：</para>

        <screen>&prompt.root; <userinput>pkg_add -r kde</userinput></screen>

	<para>&man.pkg.add.1; 就会自动的下载最新版本的应用程序。</para>

        <para>要从源代码编译 <application>KDE</application>，
          可以使用 ports 树：</para>

        <screen>&prompt.root; <userinput>cd /usr/ports/x11/kde3</userinput> &prompt.root; <userinput>make install clean</userinput></screen>

        <para><application>KDE</application> 安装完成后，
          X server必须被告知启动这个应用程序以代替默认的窗口管理器。
          这可以通过编辑 <filename>.xinitrc</filename> 文件来完成：</para>

        <screen>&prompt.user; <userinput>echo "exec startkde" &gt; ~/.xinitrc</userinput></screen>

	<para>现在，无论您什么时候用
	  <command>startx</command>进入 X 视窗系统，
          <application>KDE</application> 就将成为您的桌面环境。</para>

        <para>如果使用一个像
          <application>XDM</application>这样的显示管理器，
          那配置文件可能有点不同。需要编辑一个
          <filename>.xsession</filename> 文件，有关
          <application>kdm</application> 的用法会在这章的后面介绍。</para>
      </sect3>
    </sect2>

    <sect2 id="x11-wm-kde-details">
        <title>有关 KDE 的更多细节</title>

        <para>现在 <application>KDE</application> 已经被安装在系统中了。
          通过帮助页面或点击多个菜单可以发现很多东西。
          &windows; 或 &mac; 用户会有回到家的感觉。</para>

        <para>有关 <application>KDE</application> 的最好的参考资料是
          它的在线文档。<application>KDE</application>
          拥有它自己的 web 浏览器
          <application>Konqueror</application>，
          还有很多其他的应用程序和丰富文档。
          这节的余下部分将讨论一些很难用走马观花的方法来学习的技术项目。</para>

      <sect3 id="x11-wm-kde-kdm">
        <title>KDE 显示管理器</title>

        <indexterm><primary>KDE</primary>
          <secondary>display manager</secondary></indexterm>
        <para>一个多用户系统的系统管理员可能希望给用户提供一个图形化的登陆界面，
          像前面描述的一样，可以使用 <link linkend="x-xdm">xdm</link>。
          然而，
          <application>KDE</application> 提供了另一种选择，
          <application>kdm</application>，
          它看起来很吸引人，还包含很多登陆选项。
          特别的，用户可以很容易地(通过一个菜单) 选择登陆后使用哪个桌面环境
          (<application>KDE</application>，
          <application>GNOME</application>或其他)。</para>

        <para>首先，以 <username>root</username> 用户身份运行 <application>KDE</application>
          控制面板，<command>kcontrol</command>。
          通常情况下，以 <username>root</username> 身份运行 X 环境是很不安全的。
          您应当以普通用户来使用窗口管理器，
          打开一个终端窗口(例如
          <filename>xterm</filename> 或者 <application>KDE</application> 的
          <filename>konsole</filename>)，用 <userinput>su</userinput> 来切换成
	  <username>root</username>(这个用户必须首先在 <filename>/etc/group</filename>
          的 <groupname>wheel</groupname> 组里)，然后再键入
          <userinput>kcontrol</userinput>。</para>

	<para>点击左边标记
	  <guibutton>系统</guibutton>的图标，然后选择<guibutton>登陆管理器
	  </guibutton>。在右面，有几个配置选项，
          <application>KDE</application> 手册会解释的更加详细一些。
          点击右边的<guibutton>会话</guibutton>。
          点击<guibutton>新类型</guibutton>来添加几个窗口管理器或桌面环境。
          这些只是标签，所以它们用
          <application>KDE</application>或
          <application>GNOME</application>要比用
          <application>startkde</application>或者
          <application>gnome-session</application>来得好。
          也可以是<literal>failsafe</literal>。</para>

        <para>也可以用同样方法定制其他菜单，它们主要是起修饰和自我解释用的。
          完成之后，键入<guibutton>Apply</guibutton>按钮，退出控制中心。</para>

        <para>要确信<application>kdm</application>理解标签
          (<application>KDE</application>，
          <application>GNOME</application>等)的意思，需要编辑一些
          <link linkend="x-xdm">xdm</link>用的文件。
          <note><para>在<application>KDE 2.2</application>中，这有些变化：
            <application>kdm</application>现在使用它自己的配置文件。
            请看看<application>KDE 2.2</application>的文档。</para>
          </note>
          在一个终端窗口，作为<username>root</username>用户，要编辑
          <filename>/usr/X11R6/lib/X11/xdm/Xsession</filename>文件，
          中间有一部分是这样的：</para>

	<screen>case $# in
1)
        case $1 in
        failsafe)
                exec xterm -geometry 80x24-0-0
                ;;
        esac
esac</screen>

        <para>需要在这部分加几行。
          假定使用的标签是<quote>KDE</quote>和
          <quote>GNOME</quote>，
          就像下面这样：</para>

	<screen>case $# in
1)
        case $1 in
        kde)
                exec /usr/local/bin/startkde
                ;;
        GNOME)
                exec /usr/X11R6/bin/gnome-session
                ;;
        failsafe)
                exec xterm -geometry 80x24-0-0
                ;;
        esac
esac</screen>

        <para>为了加上<application>KDE</application>
          的登陆桌面背景，
          需要在
          <filename>/usr/X11R6/lib/X11/xdm/Xsetup_0</filename>中加入下面这行：</para>

        <screen>/usr/local/bin/krootimage</screen>

        <para>现在，确信<application>kdm</application>在
          <filename>/etc/ttys</filename>中列出来了，并且将被启动。
          要这样做，只要跟着先前有关
          <link linkend="x-xdm">XDM</link>用法，用
          <command>/usr/X11R6/bin/xdm</command>
          程序的用法替换<command>/usr/local/bin/kdm</command>的用法就可以了。</para>
      </sect3>

      <sect3 id="x11-wm-kde-antialias">
        <title>Anti-aliased字体</title>

        <indexterm><primary>KDE</primary>
          <secondary>anti-aliased fonts</secondary></indexterm>
        <para>X11 通过它的
	  <quote>RENDER</quote>扩展来支持anti-aliasing，从2.3版本开始，
	  Qt (被<application>KDE</application>使用的工具包)也支持
	  这个扩展。在有关anti-aliasing X11字体的<xref
          linkend="antialias">节描述到了如何配置这些。
          所以，对于现在的软件，anti-aliasing也可以用在
          <application>KDE</application>桌面上。只需要到KDE
	  菜单，到
	  <menuchoice>
	    <guimenu>Preferences</guimenu>
	    <guisubmenu>Look and Feel</guisubmenu>
	    <guimenuitem>Fonts</guimenuitem></menuchoice>，然后点击
          <guibutton>Use Anti-Aliasing for Fonts and Icons</guibutton>。
          对于一个不是
	  <application>KDE</application>的一部分的Qt应用程序，环境变量
	  <varname>QT_XFT</varname>需要在启动程序前被设置成<literal>true</literal>。</para>

       </sect3>
     </sect2>

     <sect2 id="x11-wm-xfce">
         <title>XFce</title>
       <sect3 id="x11-wm-xfce-about">
         <title>有关XFce</title>

        <para><application>XFce</application>是以被<application>GNOME</application>
          使用的 GTK+ 工具包为基础的桌面环境，
          但是更加轻巧，适合于那些需要一个易于使用和配置并且简单而高效的桌面的人。
          看起来，它非常像使用在商业&unix;系统上的
          <application>CDE</application>环境。
          <application>XFce</application>的主要特性有下面这些：</para>

         <itemizedlist>
           <listitem>
	     <para>一个简单，易于使用的桌面。</para>
           </listitem>

           <listitem>
	     <para>完全通过鼠标的拖动和按键来控制等。</para>
           </listitem>

           <listitem>
	     <para>与<application>CDE</application>
	       相似的主面板，菜单，applets和应用launchers。</para>
           </listitem>

           <listitem>
	     <para>集成的窗口管理器，文件管理器，声音管理器，
	       <application>GNOME</application>应用模块，和其他一些。</para>
           </listitem>

           <listitem>
	     <para>可配置界面的主题。(因为它使用GTK+)</para>
           </listitem>

           <listitem>
	     <para>快速，轻便，高效：对于比较老的/旧的机器或带有很少内存的机器仍然很理想。</para>
           </listitem>
         </itemizedlist>

         <para>更多有关<application>XFce</application>
          的信息可以参考<ulink url="http://www.xfce.org/">XFce
            网站</ulink>。</para>
       </sect3>

       <sect3 id="x11-wm-xfce-install">
         <title>安装XFce</title>

        <para>有一个二进制的<application>XFce</application>
          软件包存在(在写作的时候)。要安装的话，执行下面的命令：</para>

        <screen>&prompt.root; <userinput>pkg_add -r xfce4</userinput></screen>

        <para>另外，要从源代码建立，使用Ports Collection：</para>

        <screen>&prompt.root; <userinput>cd /usr/ports/x11-wm/xfce4</userinput>
&prompt.root; <userinput>make install clean</userinput></screen>

        <para>现在，要告诉X服务器在下次X启动时执行
         <application>XFce</application>。
         只要执行下面的命令：</para>

        <screen>&prompt.user; <userinput>echo "/usr/X11R6/bin/startxfce4" &gt; ~/.xinitrc</userinput></screen>

        <para>接下来就是启动 X，
          <application>XFce</application>将成为您的桌面。
          与以前一样，如果使用像
          <filename>XDM</filename> 这样的显示管理器，需要创建一个
          <filename>.xsession</filename>文件，就像有关
          <link linkend="x11-wm-gnome">GNOME</link> 的那节描述的，
          使用<filename>/usr/X11R6/bin/startxfce4</filename>
          命令，或者，配置显示管理器允许在启动时选择一个桌面，
          就像有关<link linkend="x11-wm-kde-kdm">kdm</link>的那节描述的。</para>
      </sect3>
    </sect2>
  </sect1>

</chapter>

<!--
     Local Variables:
     mode: sgml
     sgml-declaration: "../chapter.decl"
     sgml-indent-data: t
     sgml-omittag: nil
     sgml-always-quote-attributes: t
     sgml-parent-document: ("../book.sgml" "part" "chapter")
     End:
-->
