aboutsummaryrefslogtreecommitdiff
path: root/en_US.ISO8859-1/books/handbook/x11/chapter.xml
diff options
context:
space:
mode:
Diffstat (limited to 'en_US.ISO8859-1/books/handbook/x11/chapter.xml')
-rw-r--r--en_US.ISO8859-1/books/handbook/x11/chapter.xml1743
1 files changed, 1743 insertions, 0 deletions
diff --git a/en_US.ISO8859-1/books/handbook/x11/chapter.xml b/en_US.ISO8859-1/books/handbook/x11/chapter.xml
new file mode 100644
index 0000000000..188155f246
--- /dev/null
+++ b/en_US.ISO8859-1/books/handbook/x11/chapter.xml
@@ -0,0 +1,1743 @@
+<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
+<!--
+ The FreeBSD Documentation Project
+
+ $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>The X Window System</title>
+
+ <sect1 id="x11-synopsis">
+ <title>Synopsis</title>
+
+ <para>FreeBSD uses X11 to provide users with
+ a powerful graphical user interface. X11
+ is a freely available version of the X Window System that
+ is implemented in <application>&xorg;</application>
+ (and other software
+ packages not discussed here).
+ The
+ default and official flavor of X11 in &os; is
+ <application>&xorg;</application>, the X11 server developed by
+ the X.Org Foundation under a license very similar to the one used
+ by &os;. Commercial X servers for &os; are also available.</para>
+
+ <para>For more information on the video hardware that X11
+ supports, check the <ulink
+ url="http://www.x.org/">&xorg;</ulink> web site.</para>
+
+ <para>After reading this chapter, you will know:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>The various components of the X Window System, and how they
+ interoperate.</para>
+ </listitem>
+
+ <listitem>
+ <para>How to install and configure X11.</para>
+ </listitem>
+
+ <listitem>
+ <para>How to install and use different window managers.</para>
+ </listitem>
+
+ <listitem>
+ <para>How to use &truetype; fonts in X11.</para>
+ </listitem>
+
+ <listitem>
+ <para>How to set up your system for graphical logins
+ (<application>XDM</application>).</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Before reading this chapter, you should:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Know how to install additional third-party
+ software (<xref linkend="ports"/>).</para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1 id="x-understanding">
+ <title>Understanding X</title>
+
+ <para>Using X for the first time can be somewhat of a shock to someone
+ familiar with other graphical environments, such as &microsoft.windows; or
+ &macos;.</para>
+
+ <para>While it is not necessary to understand all of the details of various
+ X components and how they interact, some basic knowledge makes
+ it possible to take advantage of X's strengths.</para>
+
+ <sect2>
+ <title>Why X?</title>
+
+ <para>X is not the first window system written for &unix;, but it is the
+ most popular of them. X's original development team had worked on another
+ window system prior to writing X. That system's name was
+ <quote>W</quote> (for <quote>Window</quote>). X was just the next
+ letter in the Roman alphabet.</para>
+
+ <para>X can be called <quote>X</quote>, <quote>X Window System</quote>,
+ <quote>X11</quote>, and a number of other terms. You may find
+ that using the term <quote>X Windows</quote> to describe X11
+ can be offensive to some people; for a bit more insight on
+ this, see &man.X.7;.</para>
+ </sect2>
+
+ <sect2>
+ <title>The X Client/Server Model</title>
+
+ <para>X was designed from the beginning to be network-centric, and
+ adopts a <quote>client-server</quote> model.</para>
+
+ <para>In the X model, the
+ <quote>X server</quote> runs on the computer that has the keyboard,
+ monitor, and mouse attached. The server's responsibility includes tasks such as managing
+ the display, handling input from the keyboard and mouse, and other
+ input or output devices (i.e., a <quote>tablet</quote> can be used as
+ an input device, and a video projector may be an alternative output
+ device).
+ Each X application (such as <application>XTerm</application>, or
+ <application>&netscape;</application>) is a <quote>client</quote>. A
+ client sends messages to the server such as <quote>Please draw a
+ window at these coordinates</quote>, and the server sends back
+ messages such as <quote>The user just clicked on the OK
+ button</quote>.</para>
+
+ <para>In a home or small
+ office environment, the X server and the X clients commonly run on
+ the same computer. However, it is perfectly possible to run the X
+ server on a less powerful desktop computer, and run X applications
+ (the clients) on, say, the powerful and expensive machine that serves
+ the office. In this scenario the communication between the X client
+ and server takes place over the network.</para>
+
+ <para>This confuses some people, because the X terminology is
+ exactly backward to what they expect. They expect the <quote>X
+ server</quote> to be the big powerful machine down the hall, and
+ the <quote>X client</quote> to be the machine on their desk.</para>
+
+ <para>It is important to remember that the X server is the machine with the monitor and
+ keyboard, and the X clients are the programs that display the
+ windows.</para>
+
+ <para>There is nothing in the protocol that forces the client and
+ server machines to be running the same operating system, or even to
+ be running on the same type of computer. It is certainly possible to
+ run an X server on &microsoft.windows; or Apple's &macos;, and there are
+ various free and commercial applications available that do exactly
+ that.</para>
+ </sect2>
+
+ <sect2>
+ <title>The Window Manager</title>
+
+ <para>The X design philosophy is much like the &unix; design philosophy,
+ <quote>tools, not policy</quote>. This means that X does not try to
+ dictate how a task is to be accomplished. Instead, tools are provided
+ to the user, and it is the user's responsibility to decide how to use
+ those tools.</para>
+
+ <para>This philosophy extends to X not dictating what windows should
+ look like on screen, how to move them around with the mouse, what
+ keystrokes should be used to move between windows (i.e.,
+ <keycombo action="simul">
+ <keycap>Alt</keycap>
+ <keycap>Tab</keycap>
+ </keycombo>, in the case of &microsoft.windows;), what the title bars
+ on each window should look like, whether or not they have close
+ buttons on them, and so on.</para>
+
+ <para>Instead, X delegates this responsibility to an application called
+ a <quote>Window Manager</quote>. There are dozens of window
+ managers available for X: <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>, and more. Each of these
+ window managers provides a different look and feel; some of them
+ support <quote>virtual desktops</quote>; some of them allow customized
+ keystrokes to manage the desktop; some have a <quote>Start</quote>
+ button or similar device; some are <quote>themeable</quote>, allowing
+ a complete change of look-and-feel by applying a new theme. These
+ window managers, and many more, are available in the
+ <filename>x11-wm</filename> category of the Ports Collection.</para>
+
+ <para>In addition, the <application>KDE</application> and
+ <application>GNOME</application> desktop environments both have their
+ own window managers which integrate with the desktop.</para>
+
+ <para>Each window manager also has a different configuration mechanism;
+ some expect configuration file written by hand, others feature
+ GUI tools for most of the configuration tasks; at least one
+ (<application>Sawfish</application>) has a configuration file written
+ in a dialect of the Lisp language.</para>
+
+ <note>
+ <title>Focus Policy</title>
+
+ <para>Another feature the window manager is responsible for is the
+ mouse <quote>focus policy</quote>. Every windowing system
+ needs some means of choosing a window to be actively receiving
+ keystrokes, and should visibly indicate which window is active as
+ well.</para>
+
+ <para>A familiar focus policy is called <quote>click-to-focus</quote>.
+ This is the model utilized by &microsoft.windows;, in which a window
+ becomes active upon receiving a mouse click.</para>
+
+ <para>X does not support any particular focus policy. Instead, the
+ window manager controls which window has the focus at any one time.
+ Different window managers will support different focus methods. All
+ of them support click to focus, and the majority of them support
+ several others.</para>
+
+ <para>The most popular focus policies are:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>focus-follows-mouse</term>
+
+ <listitem>
+ <para>The window that is under the mouse pointer is the
+ window that has the focus. This may not necessarily be
+ the window that is on top of all the other windows.
+ The focus is changed by pointing at another window, there
+ is no need to click in it as well.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>sloppy-focus</term>
+
+ <listitem>
+ <para>This policy is a small extension to focus-follows-mouse.
+ With focus-follows-mouse, if the mouse is moved over the
+ root window (or background) then no window has the focus,
+ and keystrokes are simply lost. With sloppy-focus, focus is
+ only changed when the cursor enters a new window, and not
+ when exiting the current window.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>click-to-focus</term>
+
+ <listitem>
+ <para>The active window is selected by mouse click. The
+ window may then be <quote>raised</quote>, and appear in
+ front of all other windows. All keystrokes will now be
+ directed to this window, even if the cursor is moved to
+ another window.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>Many window managers support other policies, as well as
+ variations on these. Be sure to consult the documentation for
+ the window manager itself.</para>
+ </note>
+ </sect2>
+
+ <sect2>
+ <title>Widgets</title>
+
+ <para>The X approach of providing tools and not policy extends to the
+ widgets seen on screen in each application.</para>
+
+ <para><quote>Widget</quote> is a term for all the items in the user
+ interface that can be clicked or manipulated in some way; buttons,
+ check boxes, radio buttons, icons, lists, and so on. &microsoft.windows;
+ calls these <quote>controls</quote>.</para>
+
+ <para>&microsoft.windows; and Apple's &macos; both have a very rigid widget
+ policy. Application developers are supposed to ensure that their
+ applications share a common look and feel. With X, it was not
+ considered sensible to mandate a particular graphical style, or set
+ of widgets to adhere to.</para>
+
+ <para>As a result, do not expect X applications to have a common
+ look and feel. There are several popular widget sets and
+ variations, including the original Athena widget set from MIT,
+ <application>&motif;</application> (on which the widget set in
+ &microsoft.windows; was modeled, all bevelled edges and three shades of
+ grey), <application>OpenLook</application>, and others.</para>
+
+ <para>Most newer X applications today will use a modern-looking widget
+ set, either Qt, used by <application>KDE</application>, or
+ GTK+, used by the
+ <application>GNOME</application>
+ project. In this respect, there is some convergence in
+ look-and-feel of the &unix; desktop, which certainly makes things
+ easier for the novice user.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="x-install">
+ <title>Installing X11</title>
+
+ <para><application>&xorg;</application> is the default X11
+ implementation for &os;. <application>&xorg;</application> is
+ the X server of the open source X Window System implementation released by the X.Org
+ Foundation. <application>&xorg;</application> is based on the code of
+ <application>&xfree86;&nbsp;4.4RC2</application> and X11R6.6.
+ The version of <application>&xorg;</application> currently
+ available in the &os; Ports Collection is &xorg.version;.</para>
+
+ <para>To build and install <application>&xorg;</application> from the
+ Ports Collection:</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/ports/x11/xorg</userinput>
+&prompt.root; <userinput>make install clean</userinput></screen>
+
+ <note>
+ <para>To build <application>&xorg;</application> in its
+ entirety, be sure to have at least 4&nbsp;GB of free space
+ available.</para>
+ </note>
+
+ <para>Alternatively, X11
+ can be installed directly from packages.
+ Binary packages to use with &man.pkg.add.1; tool are also available for
+ X11. When the remote fetching
+ feature of &man.pkg.add.1; is used, the version number of the
+ package must be removed. &man.pkg.add.1; will automatically fetch
+ the latest version of the application.</para>
+
+ <para>So to fetch and install the package of
+ <application>&xorg;</application>, simply type:</para>
+
+ <screen>&prompt.root; <userinput>pkg_add -r xorg</userinput></screen>
+
+ <note><para>The examples above will install the complete
+ X11 distribution including the
+ servers, clients, fonts etc. Separate packages and ports of X11
+ are also
+ available.</para>
+
+ <para>To install a minimal X11 distribution you can alternatively install
+ <filename role="package">x11/xorg-minimal</filename>.</para>
+ </note>
+
+ <para>The rest of this chapter will explain how to configure
+ X11, and how to set up a productive desktop
+ environment.</para>
+ </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 Configuration</title>
+
+
+ <indexterm><primary>&xorg;</primary></indexterm>
+ <indexterm><primary>X11</primary></indexterm>
+
+ <sect2>
+ <title>Before Starting</title>
+
+ <para>In most cases, X11 is self-configuring. Those with older
+ or unusual equipment may find it helpful to gather some
+ hardware information before beginning configuration.</para>
+
+ <itemizedlist>
+ <listitem><para>Monitor sync frequencies</para></listitem>
+ <listitem><para>Video card chipset</para></listitem>
+ <listitem><para>Video card memory</para></listitem>
+ </itemizedlist>
+
+ <indexterm>
+ <primary>horizontal sync frequency</primary>
+ </indexterm>
+ <indexterm>
+ <primary>horizontal scan rate</primary>
+ <see>horizontal sync frequency</see>
+ </indexterm>
+ <indexterm><primary>refresh rate</primary></indexterm>
+ <indexterm>
+ <primary>vertical sync frequency</primary>
+ <see>refresh rate</see>
+ </indexterm>
+ <indexterm>
+ <primary>vertical scan rate</primary>
+ <see>refresh rate</see>
+ </indexterm>
+
+ <para>Screen resolution and refresh rate are determined by the
+ monitor's horizontal and vertical sync frequencies. Almost
+ all monitors support electronic autodetection of these values.
+ A few monitors do not provide these values, and the
+ specifications must be determined from the printed manual
+ or manufacturer web site.</para>
+
+ <para>The video card chipset is also autodetected, and used to
+ select the proper video driver. It is beneficial for the user
+ to be aware of which chipset is installed for when
+ autodetection does not provide the desired result.</para>
+
+ <para>Video card memory determines the maximum resolution and
+ color depth which can be displayed.</para>
+ </sect2>
+
+ <sect2>
+ <title>Configuring X11</title>
+
+ <para><application>&xorg;</application>
+ uses <acronym>HAL</acronym> to autodetect keyboards and mice.
+ The <filename role="package">sysutils/hal</filename> and
+ <filename role="package">devel/dbus</filename> ports are installed
+ as dependencies of <filename role="package">x11/xorg</filename>, but
+ must be enabled by the following entries in the
+ <filename>/etc/rc.conf</filename> file:</para>
+
+ <programlisting>hald_enable="YES"
+dbus_enable="YES"</programlisting>
+
+ <para>These services should be started (either manually or by
+ rebooting) before further <application>&xorg;</application>
+ configuration or use is attempted.</para>
+
+ <para><application>&xorg;</application> can
+ often work without any further configuration steps by simply typing at
+ prompt:</para>
+
+ <screen>&prompt.user; <userinput>startx</userinput></screen>
+
+ <para>The automatic configuration may fail to work with some hardware,
+ or may not set things up quite as desired. In these cases, manual
+ configuration will be necessary.</para>
+
+ <note>
+ <para>Desktop environments like
+ <application>GNOME</application>,
+ <application>KDE</application> or
+ <application>Xfce</application> have tools allowing the user
+ to easily set the screen parameters such as the resolution.
+ So if the default configuration is not acceptable and you
+ planned to install a desktop environment then just continue
+ with the installation of the desktop environment and use the
+ appropriate screen settings tool.</para>
+ </note>
+
+ <para>Configuration of X11 is
+ a multi-step process. The first step is to build an initial
+ configuration file.
+ As the super user, simply
+ run:</para>
+
+ <screen>&prompt.root; <userinput>Xorg -configure</userinput></screen>
+
+ <para>This will generate an
+ X11 configuration skeleton file in the
+ <filename>/root</filename> directory called
+ <filename>xorg.conf.new</filename> (whether you &man.su.1; or
+ do a direct login affects the inherited supervisor
+ <envar>$HOME</envar> directory variable). The
+ X11 program will attempt to probe
+ the graphics hardware on the system and write a
+ configuration file to load the proper drivers for the detected
+ hardware on the target system.</para>
+
+ <para>The next step is to test the existing
+ configuration to verify that <application>&xorg;</application>
+ can work with the graphics
+ hardware on the target system. Type:</para>
+
+ <screen>&prompt.root; <userinput>Xorg -config xorg.conf.new -retro</userinput></screen>
+
+ <para>If a black and grey grid and an X mouse cursor appear,
+ the configuration was successful. To exit the test, switch to the
+ virtual console used to start it by pressing
+ <keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>Alt</keycap>
+ <keycap>F<replaceable>n</replaceable></keycap>
+ </keycombo> (<keycap>F1</keycap> for the first virtual console)
+ and press
+ <keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>C</keycap>
+ </keycombo>.</para>
+
+ <note>
+ <para>The
+ <keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>Alt</keycap>
+ <keycap>Backspace</keycap>
+ </keycombo> key combination may also be used to break out of
+ <application>&xorg;</application>. To enable it,
+ you can either type the following
+ command from any X terminal emulator:</para>
+
+ <screen>&prompt.user; <userinput>setxkbmap -option terminate:ctrl_alt_bksp</userinput></screen>
+
+ <para>or create a keyboard configuration file for
+ <application>hald</application> called
+ <filename>x11-input.fdi</filename> and saved in the
+ <filename
+ class="directory">/usr/local/etc/hal/fdi/policy</filename>
+ directory. This file should contain the following
+ lines:</para>
+
+ <programlisting>&lt;?xml version="1.0" encoding="iso-8859-1"?&gt;
+&lt;deviceinfo version="0.2"&gt;
+ &lt;device&gt;
+ &lt;match key="info.capabilities" contains="input.keyboard"&gt;
+ &lt;merge key="input.x11_options.XkbOptions" type="string"&gt;terminate:ctrl_alt_bksp&lt;/merge&gt;
+ &lt;/match&gt;
+ &lt;/device&gt;
+&lt;/deviceinfo&gt;</programlisting>
+
+ <para>You will have to reboot your machine to force
+ <application>hald</application> to read this file.</para>
+
+ <para>The following line will also have to be added to
+ <filename>xorg.conf.new</filename>, in the
+ <literal>ServerLayout</literal> or <literal>ServerFlags</literal>
+ section:</para>
+
+ <programlisting>Option "DontZap" "off"</programlisting>
+ </note>
+
+ <para>If the mouse does not work, you will need to first
+ configure it before proceeding. See <xref linkend="mouse"/>
+ in the &os; install chapter. In recent
+ <application>Xorg</application> versions,
+ the <literal>InputDevice</literal> sections in
+ <filename>xorg.conf</filename> are ignored in favor of the
+ autodetected devices. To restore the old behavior, add the
+ following line to the <literal>ServerLayout</literal> or
+ <literal>ServerFlags</literal> section of this file:</para>
+
+ <programlisting>Option "AutoAddDevices" "false"</programlisting>
+
+ <para>Input devices may then be configured as in previous versions,
+ along with any other options needed (e.g., keyboard layout
+ switching).</para>
+
+ <note>
+ <para>As previously explained
+ the <application>hald</application> daemon will, by default,
+ automatically detect your keyboard. There are chances that
+ your keyboard layout or model will not be correct, desktop
+ environments like <application>GNOME</application>,
+ <application>KDE</application> or
+ <application>Xfce</application> provide tools to configure
+ the keyboard. However, it is possible to set the keyboard
+ properties directly either with the help of the
+ &man.setxkbmap.1; utility or with a
+ <application>hald</application>'s configuration rule.</para>
+
+ <para>For example if one wants to use a PC 102 keys keyboard
+ coming with a french layout, we have to create a keyboard
+ configuration file for <application>hald</application>
+ called <filename>x11-input.fdi</filename> and saved in the
+ <filename
+ class="directory">/usr/local/etc/hal/fdi/policy</filename>
+ directory. This file should contain the following
+ lines:</para>
+
+ <programlisting>&lt;?xml version="1.0" encoding="iso-8859-1"?&gt;
+&lt;deviceinfo version="0.2"&gt;
+ &lt;device&gt;
+ &lt;match key="info.capabilities" contains="input.keyboard"&gt;
+ &lt;merge key="input.x11_options.XkbModel" type="string"&gt;pc102&lt;/merge&gt;
+ &lt;merge key="input.x11_options.XkbLayout" type="string"&gt;fr&lt;/merge&gt;
+ &lt;/match&gt;
+ &lt;/device&gt;
+&lt;/deviceinfo&gt;</programlisting>
+
+ <para>If this file already exists, just copy and add to your
+ file the lines regarding the keyboard configuration.</para>
+
+ <para>You will have to reboot your machine to force
+ <application>hald</application> to read this file.</para>
+
+ <para>It is possible to do the same configuration from an X
+ terminal or a script with this command line:</para>
+
+ <screen>&prompt.user; <userinput>setxkbmap -model pc102 -layout fr</userinput></screen>
+
+ <para>The
+ <filename>/usr/local/share/X11/xkb/rules/base.lst</filename>
+ file lists the various keyboard, layouts and options
+ available.</para>
+ </note>
+
+ <indexterm><primary>X11 tuning</primary></indexterm>
+
+ <para>The <filename>xorg.conf.new</filename>
+ configuration file may now be tuned to taste. Open the file in a text editor such
+ as &man.emacs.1; or &man.ee.1;. If the monitor is an older
+ or unusual model that does not support autodetection of
+ sync frequencies, those settings can
+ be added to <filename>xorg.conf.new</filename>
+ under the <literal>"Monitor"</literal> section:</para>
+
+ <programlisting>Section "Monitor"
+ Identifier "Monitor0"
+ VendorName "Monitor Vendor"
+ ModelName "Monitor Model"
+ HorizSync 30-107
+ VertRefresh 48-120
+EndSection</programlisting>
+
+ <para>Most monitors support sync frequency autodetection, making
+ manual entry of these values unnecessary. For the few
+ monitors that do not support autodetection, avoid potential
+ damage by only entering values provided by the
+ manufacturer.</para>
+
+ <para>X allows DPMS (Energy Star) features to be used with capable
+ monitors. The &man.xset.1; program controls the time-outs and can force
+ standby, suspend, or off modes. If you wish to enable DPMS features
+ for your monitor, you must add the following line to the monitor
+ section:</para>
+
+ <programlisting>
+ Option "DPMS"</programlisting>
+
+ <indexterm>
+ <primary><filename>xorg.conf</filename></primary>
+ </indexterm>
+
+ <para>While the <filename>xorg.conf.new</filename>
+ configuration file is still open in an editor, select
+ the default resolution and color depth desired. This is
+ defined in the <literal>"Screen"</literal> section:</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>The <literal>DefaultDepth</literal> keyword describes
+ the color depth to run at by default. This can be overridden
+ with the <option>-depth</option> command line switch to
+ &man.Xorg.1;.
+ The <literal>Modes</literal> keyword
+ describes the resolution to run at for the given color depth.
+ Note that only VESA standard modes are supported as defined by
+ the target system's graphics hardware.
+ In the example above, the default color depth is twenty-four
+ bits per pixel. At this color depth, the accepted resolution is
+ 1024 by 768
+ pixels.</para>
+
+ <para>Finally, write the configuration file and test it using
+ the test mode given above.</para>
+
+ <note>
+ <para>One of the tools available to assist you during
+ troubleshooting process are the X11 log files, which contain
+ information on each device that the X11 server attaches to.
+ <application>&xorg;</application> log file names are in the format
+ of <filename>/var/log/Xorg.0.log</filename>. The exact name
+ of the log can vary from <filename>Xorg.0.log</filename> to
+ <filename>Xorg.8.log</filename> and so forth.</para>
+ </note>
+
+ <para>If all is well, the configuration
+ file needs to be installed in a common location where
+ &man.Xorg.1; can find it.
+ This is typically <filename>/etc/X11/xorg.conf</filename> or
+ <filename>/usr/local/etc/X11/xorg.conf</filename>.</para>
+
+ <screen>&prompt.root; <userinput>cp xorg.conf.new /etc/X11/xorg.conf</userinput></screen>
+
+ <para>The X11 configuration process is now
+ complete. <application>&xorg;</application> may be now
+ started with the &man.startx.1; utility.
+ The X11 server may also be started with the use of
+ &man.xdm.1;.</para>
+ </sect2>
+
+ <sect2>
+ <title>Advanced Configuration Topics</title>
+
+ <sect3>
+ <title>Configuration with &intel; <literal>i810</literal> Graphics Chipsets</title>
+
+ <indexterm><primary>Intel i810 graphic chipset</primary></indexterm>
+
+ <para>Configuration with &intel; i810 integrated chipsets
+ requires the <devicename>agpgart</devicename>
+ AGP programming interface for X11
+ to drive the card. See the &man.agp.4; driver manual page
+ for more information.</para>
+
+ <para>This will allow configuration of the hardware as any other
+ graphics board. Note on systems without the &man.agp.4;
+ driver compiled in the kernel, trying to load the module
+ with &man.kldload.8; will not work. This driver has to be
+ in the kernel at boot time through being compiled in or
+ using <filename>/boot/loader.conf</filename>.</para>
+ </sect3>
+
+ <sect3>
+ <title>Adding a Widescreen Flatpanel to the Mix</title>
+
+ <indexterm><primary>widescreen flatpanel configuration</primary></indexterm>
+
+ <para>This section assumes a bit of advanced configuration knowledge.
+ If attempts to use the standard configuration tools above have not
+ resulted in a working configuration, there is information enough
+ in the log files to be of use in getting the setup working.
+ Use of a text editor will be necessary.</para>
+
+ <para>Current widescreen (WSXGA, WSXGA+, WUXGA, WXGA, WXGA+, et.al.)
+ formats support 16:10 and 10:9 formats or aspect ratios that can
+ be problematic. Examples of some common screen resolutions for
+ 16:10 aspect ratios are:</para>
+
+ <itemizedlist>
+ <listitem><para>2560x1600</para></listitem>
+ <listitem><para>1920x1200</para></listitem>
+ <listitem><para>1680x1050</para></listitem>
+ <listitem><para>1440x900</para></listitem>
+ <listitem><para>1280x800</para></listitem>
+ </itemizedlist>
+
+ <para>At some point, it will be as easy as adding one of these
+ resolutions as a possible <literal>Mode</literal> in the <literal>Section
+ "Screen"</literal> as such:</para>
+
+ <programlisting>Section "Screen"
+Identifier "Screen0"
+Device "Card0"
+Monitor "Monitor0"
+DefaultDepth 24
+SubSection "Display"
+ Viewport 0 0
+ Depth 24
+ Modes "1680x1050"
+EndSubSection
+EndSection</programlisting>
+
+ <para><application>&xorg;</application> is smart enough to pull the
+ resolution information from the widescreen via I2C/DDC information
+ so it knows what the monitor can handle as far as frequencies
+ and resolutions.</para>
+
+ <para>If those <literal>ModeLines</literal> do not exist in the drivers,
+ one might need to give <application>&xorg;</application> a little hint.
+ Using <filename>/var/log/Xorg.0.log</filename> one can extract
+ enough information to manually create a <literal>ModeLine</literal> that
+ will work. Simply look for information resembling this:</para>
+
+ <programlisting>(II) MGA(0): Supported additional Video Mode:
+(II) MGA(0): clock: 146.2 MHz Image Size: 433 x 271 mm
+(II) MGA(0): h_active: 1680 h_sync: 1784 h_sync_end 1960 h_blank_end 2240 h_border: 0
+(II) MGA(0): v_active: 1050 v_sync: 1053 v_sync_end 1059 v_blanking: 1089 v_border: 0
+(II) MGA(0): Ranges: V min: 48 V max: 85 Hz, H min: 30 H max: 94 kHz, PixClock max 170 MHz</programlisting>
+
+ <para>This information is called EDID information. Creating a
+ <literal>ModeLine</literal> from this is just a matter of putting the
+ numbers in the correct order:</para>
+
+ <programlisting>ModeLine &lt;name&gt; &lt;clock&gt; &lt;4 horiz. timings&gt; &lt;4 vert. timings&gt;</programlisting>
+
+ <para>So that the <literal>ModeLine</literal> in <literal>Section "Monitor"</literal>
+ for this example would look like this:</para>
+
+ <programlisting>Section "Monitor"
+Identifier "Monitor1"
+VendorName "Bigname"
+ModelName "BestModel"
+ModeLine "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089
+Option "DPMS"
+EndSection</programlisting>
+
+ <para>Now having completed these simple editing steps, X should start
+ on your new widescreen monitor.</para>
+ </sect3>
+ </sect2>
+ </sect1>
+
+ <sect1 id="x-fonts">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Murray</firstname>
+ <surname>Stokely</surname>
+ <contrib>Contributed by </contrib>
+ </author>
+ </authorgroup>
+ </sect1info>
+ <title>Using Fonts in X11</title>
+
+ <sect2 id="type1">
+ <title>Type1 Fonts</title>
+ <para>The default fonts that ship with
+ X11 are less than ideal for typical
+ desktop publishing applications. Large presentation fonts show up
+ jagged and unprofessional looking, and small fonts in
+ <application>&netscape;</application> are almost completely unintelligible.
+ However, there are several free, high quality Type1 (&postscript;) fonts
+ available which can be readily used
+ with X11. For instance, the URW font collection
+ (<filename role="package">x11-fonts/urwfonts</filename>) includes
+ high quality versions of standard type1 fonts (<trademark class="registered">Times Roman</trademark>,
+ <trademark class="registered">Helvetica</trademark>, <trademark class="registered">Palatino</trademark> and others). The Freefonts collection
+ (<filename role="package">x11-fonts/freefonts</filename>) includes
+ many more fonts, but most of them are intended for use in
+ graphics software such as the <application>Gimp</application>, and are not
+ complete enough to serve as screen fonts. In addition,
+ X11 can be configured to use
+ &truetype; fonts with a minimum of effort. For more details on
+ this, see the &man.X.7; manual page or the
+ <link linkend="truetype">section on &truetype; fonts</link>.</para>
+
+ <para>To install the above Type1 font collections from the
+ Ports Collection, run the following commands:</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/ports/x11-fonts/urwfonts</userinput>
+&prompt.root; <userinput>make install clean</userinput></screen>
+
+ <para>And likewise with the freefont or other collections. To have the X
+ server detect these fonts, add an appropriate line to the
+ X server configuration file (<filename>/etc/X11/xorg.conf</filename>),
+ which reads:</para>
+
+ <programlisting>FontPath "/usr/local/lib/X11/fonts/URW/"</programlisting>
+
+ <para>Alternatively, at the command line in the X session
+ run:</para>
+
+ <screen>&prompt.user; <userinput>xset fp+ /usr/local/lib/X11/fonts/URW</userinput>
+&prompt.user; <userinput>xset fp rehash</userinput></screen>
+
+ <para>This will work but will be lost when the X session is closed,
+ unless it is added to the startup file (<filename>~/.xinitrc</filename>
+ for a normal <command>startx</command> session,
+ or <filename>~/.xsession</filename> when logging in through a
+ graphical login manager like <application>XDM</application>).
+ A third way is to use the new
+ <filename>/usr/local/etc/fonts/local.conf</filename> file: see the
+ section on <link linkend="antialias">anti-aliasing</link>.</para>
+ </sect2>
+
+ <sect2 id="truetype">
+ <title>&truetype; Fonts</title>
+
+ <indexterm><primary>TrueType Fonts</primary></indexterm>
+ <indexterm><primary>fonts</primary>
+ <secondary>TrueType</secondary>
+ </indexterm>
+
+ <para><application>&xorg;</application> has built in support
+ for rendering &truetype; fonts. There are two different modules
+ that can enable this functionality. The freetype module is used
+ in this example because it is more consistent with the other font
+ rendering back-ends. To enable the freetype module just add the
+ following line to the <literal>"Module"</literal> section of the
+ <filename>/etc/X11/xorg.conf</filename> file.</para>
+
+ <programlisting>Load "freetype"</programlisting>
+
+ <para>Now make a directory for the &truetype; fonts (for example,
+ <filename>/usr/local/lib/X11/fonts/TrueType</filename>)
+ and copy all of the &truetype; fonts into this directory. Keep in
+ mind that &truetype; fonts cannot be directly taken from a
+ &macintosh;; they must be in &unix;/&ms-dos;/&windows; format for use by
+ X11. Once the files have been
+ copied into this directory, use
+ <application>ttmkfdir</application> to create a
+ <filename>fonts.dir</filename> file, so that the X font renderer
+ knows that these new files have been installed.
+ <command>ttmkfdir</command> is available from the FreeBSD
+ Ports Collection as
+ <filename role="package">x11-fonts/ttmkfdir</filename>.</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/local/lib/X11/fonts/TrueType</userinput>
+&prompt.root; <userinput>ttmkfdir -o fonts.dir</userinput></screen>
+
+ <para>Now add the &truetype; directory to the font
+ path. This is just the same as described above for <link
+ linkend="type1">Type1</link> fonts, that is, use</para>
+
+ <screen>&prompt.user; <userinput>xset fp+ /usr/local/lib/X11/fonts/TrueType</userinput>
+&prompt.user; <userinput>xset fp rehash</userinput></screen>
+
+ <para>or add a <literal>FontPath</literal> line to the
+ <filename>xorg.conf</filename> file.</para>
+
+ <para>That's it. Now <application>&netscape;</application>,
+ <application>Gimp</application>,
+ <application>&staroffice;</application>, and all of the other X
+ applications should now recognize the installed &truetype;
+ fonts. Extremely small fonts (as with text in a high resolution
+ display on a web page) and extremely large fonts (within
+ <application>&staroffice;</application>) will look much better
+ now.</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 Fonts</title>
+
+ <indexterm><primary>anti-aliased fonts</primary></indexterm>
+ <indexterm><primary>fonts</primary>
+ <secondary>anti-aliased</secondary></indexterm>
+
+ <para>All fonts in X11 that are found
+ in <filename>/usr/local/lib/X11/fonts/</filename> and
+ <filename>~/.fonts/</filename> are automatically
+ made available for anti-aliasing to Xft-aware applications.
+ Most recent applications are Xft-aware, including
+ <application>KDE</application>, <application>GNOME</application>, and
+ <application>Firefox</application>.</para>
+
+ <para>In order to control which fonts are anti-aliased, or to
+ configure anti-aliasing properties, create (or edit, if it
+ already exists) the file
+ <filename>/usr/local/etc/fonts/local.conf</filename>. Several
+ advanced features of the Xft font system can be tuned using
+ this file; this section describes only some simple
+ possibilities. For more details, please see
+ &man.fonts-conf.5;.</para>
+
+ <indexterm><primary>XML</primary></indexterm>
+
+ <para>This file must be in XML format. Pay careful attention to
+ case, and make sure all tags are properly closed. The file
+ begins with the usual XML header followed by a DOCTYPE
+ definition, and then the <literal>&lt;fontconfig&gt;</literal> tag:</para>
+
+ <programlisting>
+ &lt;?xml version="1.0"?&gt;
+ &lt;!DOCTYPE fontconfig SYSTEM "fonts.dtd"&gt;
+ &lt;fontconfig&gt;
+ </programlisting>
+
+ <para>As previously stated, all fonts in
+ <filename>/usr/local/lib/X11/fonts/</filename> as well as
+ <filename>~/.fonts/</filename> are already made available to
+ Xft-aware applications. If you wish to add another directory
+ outside of these two directory trees, add a line similar to the
+ following to
+ <filename>/usr/local/etc/fonts/local.conf</filename>:</para>
+
+ <programlisting>&lt;dir&gt;/path/to/my/fonts&lt;/dir&gt;</programlisting>
+
+ <para>After adding new fonts, and especially new font directories,
+ you should run the following command to rebuild the font
+ caches:</para>
+
+ <screen>&prompt.root; <userinput>fc-cache -f</userinput></screen>
+
+ <para>Anti-aliasing makes borders slightly fuzzy, which makes very
+ small text more readable and removes <quote>staircases</quote> from
+ large text, but can cause eyestrain if applied to normal text. To
+ exclude font sizes smaller than 14 point from anti-aliasing, include
+ these lines:</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>Spacing for some monospaced fonts may also be inappropriate
+ with anti-aliasing. This seems to be an issue with
+ <application>KDE</application>, in particular. One possible fix for
+ this is to force the spacing for such fonts to be 100. Add the
+ following lines:</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>(this aliases the other common names for fixed fonts as
+ <literal>"mono"</literal>), and then add:</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>Certain fonts, such as Helvetica, may have a problem when
+ anti-aliased. Usually this manifests itself as a font that
+ seems cut in half vertically. At worst, it may cause
+ applications to
+ crash. To avoid this, consider adding the following to
+ <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>Once you have finished editing
+ <filename>local.conf</filename> make sure you end the file
+ with the <literal>&lt;/fontconfig&gt;</literal> tag. Not doing this will cause
+ your changes to be ignored.</para>
+
+ <para>Finally, users can add their own settings via their personal
+ <filename>.fonts.conf</filename> files. To do this, each user should
+ simply create a <filename>~/.fonts.conf</filename>. This file must
+ also be in XML format.</para>
+
+ <indexterm><primary>LCD screen</primary></indexterm>
+ <indexterm><primary>Fonts</primary>
+ <secondary>LCD screen</secondary></indexterm>
+
+ <para>One last point: with an LCD screen, sub-pixel sampling may be
+ desired. This basically treats the (horizontally separated)
+ red, green and blue components separately to improve the horizontal
+ resolution; the results can be dramatic. To enable this, add the
+ line somewhere in the <filename>local.conf</filename> file:</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>Depending on the sort of display,
+ <literal>rgb</literal> may need to be changed to <literal>bgr</literal>,
+ <literal>vrgb</literal> or <literal>vbgr</literal>: experiment and
+ see which works best.</para>
+ </note>
+ </sect2>
+ </sect1>
+
+ <sect1 id="x-xdm">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Seth</firstname>
+ <surname>Kingsley</surname>
+ <contrib>Contributed by </contrib>
+ </author>
+ </authorgroup>
+ </sect1info>
+ <title>The X Display Manager</title>
+ <sect2>
+ <title>Overview</title>
+
+ <indexterm><primary>X Display Manager</primary></indexterm>
+ <para>The X Display Manager (<application>XDM</application>) is
+ an optional part of the X Window System that is used for login
+ session management. This is useful for several types of
+ situations, including minimal <quote>X Terminals</quote>,
+ desktops, and large network display
+ servers. Since the X Window System is network and protocol
+ independent, there are a wide variety of possible configurations
+ for running X clients and servers on different machines
+ connected by a network. <application>XDM</application> provides
+ a graphical interface for choosing which display server to
+ connect to, and entering authorization information such as a
+ login and password combination.</para>
+
+ <para>Think of <application>XDM</application> as
+ providing the same functionality to the user as the
+ &man.getty.8; utility (see <xref linkend="term-config"/> for
+ details). That is, it performs system logins to the display
+ being connected to and then runs a session manager on behalf of
+ the user (usually an X window
+ manager). <application>XDM</application> then waits for this
+ program to exit, signaling that the user is done and should be
+ logged out of the display. At this point,
+ <application>XDM</application> can display the login and display
+ chooser screens for the next user to login.</para>
+ </sect2>
+
+ <sect2>
+ <title>Using XDM</title>
+
+ <para>To start using <application>XDM</application>, install the
+ <filename role="package">x11/xdm</filename> port (it is not
+ installed by default in recent versions of
+ <application>&xorg;</application>).
+ The <application>XDM</application> daemon program may then be
+ found in <filename>/usr/local/bin/xdm</filename>. This program
+ can be run at any time as <username>root</username> and it will
+ start managing the X display on the local machine. If
+ <application>XDM</application> is to be run every
+ time the machine boots up, a convenient way to do this is by
+ adding an entry to <filename>/etc/ttys</filename>. For more
+ information about the format and usage of this file, see <xref
+ linkend="term-etcttys"/>. There is a line in the default
+ <filename>/etc/ttys</filename> file for running the
+ <application>XDM</application> daemon on a virtual terminal:</para>
+
+ <screen>ttyv8 "/usr/local/bin/xdm -nodaemon" xterm off secure</screen>
+
+ <para>By default this entry is disabled; in order to enable it
+ change field 5 from <literal>off</literal> to
+ <literal>on</literal> and restart &man.init.8; using the
+ directions in <xref linkend="term-hup"/>. The first field, the
+ name of the terminal this program will manage, is
+ <literal>ttyv8</literal>. This means that
+ <application>XDM</application> will start running on the 9th
+ virtual terminal.</para>
+ </sect2>
+
+ <sect2>
+ <title>Configuring XDM</title>
+
+ <para>The <application>XDM</application> configuration directory
+ is located in <filename>/usr/local/lib/X11/xdm</filename>. In
+ this directory there are several files used to change the
+ behavior and appearance of
+ <application>XDM</application>. Typically these files will
+ be found:</para>
+
+ <informaltable frame="none" pgwide="1">
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>File</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry><filename>Xaccess</filename></entry>
+ <entry>Client authorization ruleset.</entry>
+ </row>
+
+ <row>
+ <entry><filename>Xresources</filename></entry>
+ <entry>Default X resource values.</entry>
+ </row>
+
+ <row>
+ <entry><filename>Xservers</filename></entry>
+ <entry>List of remote and local displays to manage.</entry>
+ </row>
+
+ <row>
+ <entry><filename>Xsession</filename></entry>
+ <entry>Default session script for logins.</entry>
+ </row>
+
+ <row>
+ <entry><filename>Xsetup_</filename>*</entry>
+ <entry>Script to launch applications before the login
+ interface.</entry>
+ </row>
+
+ <row>
+ <entry><filename>xdm-config</filename></entry>
+ <entry>Global configuration for all displays running on
+ this machine.</entry>
+ </row>
+
+ <row>
+ <entry><filename>xdm-errors</filename></entry>
+ <entry>Errors generated by the server program.</entry>
+ </row>
+
+ <row>
+ <entry><filename>xdm-pid</filename></entry>
+ <entry>The process ID of the currently running XDM.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>Also in this directory are a few scripts and programs used
+ to set up the desktop when <application>XDM</application> is
+ running. The purpose of each of these files will be briefly
+ described. The exact syntax and usage of all of these files is
+ described in &man.xdm.1;.</para>
+
+ <para>The default configuration is a simple rectangular login
+ window with the hostname of the machine displayed at the top in
+ a large font and <quote>Login:</quote> and
+ <quote>Password:</quote> prompts below. This is a good starting
+ point for changing the look and feel of
+ <application>XDM</application> screens.</para>
+
+ <sect3>
+ <title>Xaccess</title>
+
+ <para>The protocol for connecting to
+ <application>XDM</application>-controlled displays is called
+ the X Display Manager Connection Protocol (XDMCP). This file
+ is a ruleset for controlling XDMCP connections from remote
+ machines. It is ignored unless the <filename>xdm-config</filename>
+ is changed to listen for remote connections. By default, it does
+ not allow any clients to connect.</para>
+ </sect3>
+
+ <sect3>
+ <title>Xresources</title>
+ <para>This is an application-defaults file for the display
+ chooser and login screens. In it, the appearance
+ of the login program can be modified. The format is identical
+ to the app-defaults file described in the
+ X11 documentation.</para>
+ </sect3>
+
+ <sect3>
+ <title>Xservers</title>
+ <para>This is a list of the remote displays the chooser should
+ provide as choices.</para>
+ </sect3>
+
+ <sect3>
+ <title>Xsession</title>
+ <para>This is the default session script for
+ <application>XDM</application> to run after a user has logged
+ in. Normally each user will have a customized session script
+ in <filename>~/.xsession</filename> that overrides this
+ script.</para>
+ </sect3>
+
+ <sect3>
+ <title>Xsetup_*</title>
+ <para>These will be run automatically before displaying the
+ chooser or login interfaces. There is a script for each
+ display being used, named <filename>Xsetup_</filename> followed
+ by the local display number (for instance
+ <filename>Xsetup_0</filename>). Typically these scripts will
+ run one or two programs in the background such as
+ <command>xconsole</command>.</para>
+ </sect3>
+
+ <sect3>
+ <title>xdm-config</title>
+ <para>This contains settings in the form of app-defaults
+ that are applicable to every display that this installation
+ manages.</para>
+ </sect3>
+
+ <sect3>
+ <title>xdm-errors</title>
+ <para>This contains the output of the X servers that
+ <application>XDM</application> is trying to run. If a display
+ that <application>XDM</application> is trying to start hangs
+ for some reason, this is a good place to look for error
+ messages. These messages are also written to the user's
+ <filename>~/.xsession-errors</filename> file on a per-session
+ basis.</para>
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>Running a Network Display Server</title>
+
+ <para>In order for other clients to connect to the display
+ server, you must edit the access control rules and enable the connection
+ listener. By default these are set to conservative values.
+ To make <application>XDM</application> listen for connections,
+ first comment out a line in the <filename>xdm-config</filename>
+ file:</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>and then restart <application>XDM</application>. Remember that
+ comments in app-defaults files begin with a <quote>!</quote>
+ character, not the usual <quote>#</quote>. More strict
+ access controls may be desired &mdash; look at the example
+ entries in <filename>Xaccess</filename>, and refer to the
+ &man.xdm.1; manual page for further information.</para>
+ </sect2>
+
+ <sect2>
+ <title>Replacements for XDM</title>
+
+ <para>Several replacements for the default
+ <application>XDM</application> program exist. One of them,
+ <application>KDM</application> (bundled with
+ <application>KDE</application>) is described later in this
+ chapter. The <application>KDM</application> display manager offers many visual
+ improvements and cosmetic frills, as well as the
+ functionality to allow users to choose their window manager
+ of choice at login time.</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>Desktop Environments</title>
+
+ <para>This section describes the different desktop environments
+ available for X on FreeBSD. A <quote>desktop environment</quote>
+ can mean anything ranging from a simple window manager to a
+ complete suite of desktop applications, such as
+ <application>KDE</application> or <application>GNOME</application>.</para>
+
+ <sect2 id="x11-wm-gnome">
+ <title>GNOME</title>
+
+ <sect3 id="x11-wm-gnome-about">
+ <title>About GNOME</title>
+
+ <indexterm><primary>GNOME</primary></indexterm>
+ <para><application>GNOME</application> is a user-friendly
+ desktop environment that enables users to easily use and
+ configure their computers. <application>GNOME</application>
+ includes a panel (for starting applications and displaying
+ status), a desktop (where data and applications can be
+ placed), a set of standard desktop tools and applications, and
+ a set of conventions that make it easy for applications to
+ cooperate and be consistent with each other. Users of other
+ operating systems or environments should feel right at home
+ using the powerful graphics-driven environment that
+ <application>GNOME</application> provides. More
+ information regarding <application>GNOME</application> on
+ FreeBSD can be found on the <ulink
+ url="http://www.FreeBSD.org/gnome">FreeBSD GNOME
+ Project</ulink>'s web site. The web site also contains fairly
+ comprehensive FAQs about installing, configuring, and managing
+ <application>GNOME</application>.</para>
+ </sect3>
+
+ <sect3 id="x11-wm-gnome-install">
+ <title>Installing GNOME</title>
+
+ <para>The software can be easily installed from a package or the
+ Ports Collection:</para>
+
+ <para>To install the <application>GNOME</application> package
+ from the network, simply type:</para>
+
+ <screen>&prompt.root; <userinput>pkg_add -r gnome2</userinput></screen>
+
+ <para>To build <application>GNOME</application> from source, use
+ the ports tree:</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/ports/x11/gnome2</userinput>
+&prompt.root; <userinput>make install clean</userinput></screen>
+
+ <para>For proper operation, <application>GNOME</application> requires
+ the <filename>/proc</filename> filesystem to be mounted. Add</para>
+
+ <programlisting>proc /proc procfs rw 0 0</programlisting>
+
+ <para>to <filename>/etc/fstab</filename> to mount
+ &man.procfs.5; automatically during
+ startup.</para>
+
+ <para>Once <application>GNOME</application> is installed,
+ the X server must be told to start
+ <application>GNOME</application> instead of a default window
+ manager.</para>
+
+ <para>The easiest way to start
+ <application>GNOME</application> is with
+ <application>GDM</application>, the GNOME Display Manager.
+ <application>GDM</application> is installed as part
+ of the <application>GNOME</application> desktop, although
+ it is disabled by default. It can be enabled by adding this
+ line to <filename>/etc/rc.conf</filename>:</para>
+
+ <programlisting>gdm_enable="YES"</programlisting>
+
+ <para>Once you have rebooted,
+ <application>GDM</application> will start automatically.</para>
+
+ <para>It is often desirable to start all
+ <application>GNOME</application> services together with
+ <application>GDM</application>. To achieve this, add the
+ following line to <filename>/etc/rc.conf</filename>:</para>
+
+ <programlisting>gnome_enable="YES"</programlisting>
+
+ <para><application>GNOME</application> may also be started
+ from the command-line by properly configuring a file named
+ <filename>.xinitrc</filename>.
+ If a custom <filename>.xinitrc</filename> is already in
+ place, simply replace the line that starts the current window
+ manager with one that starts
+ <application>/usr/local/bin/gnome-session</application> instead.
+ If nothing special has been done to the configuration file,
+ then it is enough simply to type:</para>
+
+ <screen>&prompt.user; <userinput>echo "/usr/local/bin/gnome-session" &gt; ~/.xinitrc</userinput></screen>
+
+ <para>Next, type <command>startx</command>, and the
+ <application>GNOME</application> desktop environment will be
+ started.</para>
+
+ <note><para>If an older display manager, like
+ <application>XDM</application>, is being used, this will not work.
+ Instead, create an executable <filename>.xsession</filename>
+ file with the same command in it. To do this, edit the file
+ and replace the existing window manager command with
+ <application>/usr/local/bin/gnome-session</application>:
+ </para></note>
+
+ <screen>&prompt.user; <userinput>echo "#!/bin/sh" &gt; ~/.xsession</userinput>
+&prompt.user; <userinput>echo "/usr/local/bin/gnome-session" &gt;&gt; ~/.xsession</userinput>
+&prompt.user; <userinput>chmod +x ~/.xsession</userinput></screen>
+
+ <para>Yet another option is to configure the display manager to
+ allow choosing the window manager at login time; the section on
+ <link linkend="x11-wm-kde-details">KDE details</link>
+ explains how to do this for <application>KDM</application>, the
+ display manager of <application>KDE</application>.</para>
+ </sect3>
+ </sect2>
+
+ <sect2 id="x11-wm-kde">
+ <title>KDE</title>
+
+ <indexterm><primary>KDE</primary></indexterm>
+ <sect3 id="x11-wm-kde-about">
+ <title>About KDE</title>
+
+ <para><application>KDE</application> is an easy to use
+ contemporary desktop environment. Some of the things that
+ <application>KDE</application> brings to the user are:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>A beautiful contemporary desktop</para>
+ </listitem>
+
+ <listitem>
+ <para>A desktop exhibiting complete network transparency</para>
+ </listitem>
+
+ <listitem>
+ <para>An integrated help system allowing for convenient,
+ consistent access to help on the use of the
+ <application>KDE</application> desktop and its
+ applications</para>
+ </listitem>
+
+ <listitem>
+ <para>Consistent look and feel of all
+ <application>KDE</application> applications</para>
+ </listitem>
+
+ <listitem>
+ <para>Standardized menu and toolbars, keybindings, color-schemes,
+ etc.</para>
+ </listitem>
+
+ <listitem>
+ <para>Internationalization: <application>KDE</application>
+ is available in more than 55 languages</para>
+ </listitem>
+
+ <listitem>
+ <para>Centralized, consistent, dialog-driven desktop
+ configuration</para>
+ </listitem>
+
+ <listitem>
+ <para>A great number of useful
+ <application>KDE</application> applications</para>
+ </listitem>
+ </itemizedlist>
+
+ <para><application>KDE</application> comes with a web browser called
+ <application>Konqueror</application>, which is
+ a solid competitor to other existing web browsers on &unix;
+ systems. More information on <application>KDE</application>
+ can be found on the <ulink url="http://www.kde.org/">KDE
+ website</ulink>. For FreeBSD specific information and
+ resources on <application>KDE</application>, consult
+ the <ulink url="http://freebsd.kde.org/">KDE/FreeBSD
+ initiative</ulink>'s website.</para>
+
+ <para>There are two versions of <application>KDE</application>
+ available on FreeBSD. Version 3 has been around for a long
+ time, and is still available in the Ports Collection though
+ it's now unmaintained and partially broken. Version 4 is
+ punctually updated and is the default choice for
+ <application>KDE</application> users. They can even be
+ installed side by side.</para>
+ </sect3>
+
+ <sect3 id="x11-wm-kde-install">
+ <title>Installing KDE</title>
+
+ <para>Just as with <application>GNOME</application> or any
+ other desktop environment, the software can be easily installed
+ from a package or the Ports Collection:</para>
+
+ <para>To install the <application>KDE 3</application> package
+ from the network, type:</para>
+
+ <screen>&prompt.root; <userinput>pkg_add -r kde</userinput></screen>
+
+ <para>To install the <application>KDE 4</application> package
+ from the network, type:</para>
+
+ <screen>&prompt.root; <userinput>pkg_add -r kde4</userinput></screen>
+
+ <para>&man.pkg.add.1; will automatically fetch the latest version
+ of the application.</para>
+
+ <para>To build <application>KDE 3</application> from source,
+ use the ports tree:</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/ports/x11/kde3</userinput>
+&prompt.root; <userinput>make install clean</userinput></screen>
+
+ <para>To build <application>KDE 4</application> from source,
+ use the ports tree:</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/ports/x11/kde4</userinput>
+&prompt.root; <userinput>make install clean</userinput></screen>
+
+ <para>After <application>KDE</application> has been installed,
+ the X server must be told to launch this application
+ instead of the default window manager. This is accomplished
+ by editing the <filename>.xinitrc</filename> file:</para>
+
+ <para>For <application>KDE 3</application>:</para>
+
+ <screen>&prompt.user; <userinput>echo "exec startkde" &gt; ~/.xinitrc</userinput></screen>
+
+ <para>For <application>KDE 4</application>:</para>
+
+ <screen>&prompt.user; <userinput>echo "exec /usr/local/kde4/bin/startkde" &gt; ~/.xinitrc</userinput></screen>
+
+ <para>Now, whenever the X Window System is invoked with
+ <command>startx</command>,
+ <application>KDE</application> will be the desktop.</para>
+
+ <para>If a display manager such as
+ <application>XDM</application> is being used, the
+ configuration is slightly different. Edit the
+ <filename>.xsession</filename> file instead. Instructions
+ for <application>KDM</application> are described later in
+ this chapter.</para>
+ </sect3>
+ </sect2>
+
+ <sect2 id="x11-wm-kde-details">
+ <title>More Details on KDE</title>
+
+ <para>Now that <application>KDE</application> is installed on
+ the system, most things can be discovered through the
+ help pages, or just by pointing and clicking at various menus.
+ &windows; or &mac; users will feel quite at home.</para>
+
+ <para>The best reference for <application>KDE</application> is
+ the on-line documentation. <application>KDE</application>
+ comes with its own web browser,
+ <application>Konqueror</application>, dozens of useful
+ applications, and extensive documentation. The remainder of
+ this section discusses the technical items that are
+ difficult to learn by random exploration.</para>
+
+ <sect3 id="x11-wm-kde-kdm">
+ <title>The KDE Display Manager</title>
+
+ <indexterm><primary>KDE</primary>
+ <secondary>display manager</secondary></indexterm>
+ <para>An administrator of a multi-user system may wish to have
+ a graphical login screen to welcome users.
+ <link linkend="x-xdm">XDM</link> can be
+ used, as described earlier. However,
+ <application>KDE</application> includes an
+ alternative, <application>KDM</application>, which is designed
+ to look more attractive and include more login-time options.
+ In particular, users can easily choose (via a menu) which
+ desktop environment (<application>KDE</application>,
+ <application>GNOME</application>, or something else) to run
+ after logging on.</para>
+
+ <para>To enable <application>KDM</application>, different files
+ need to be edited depending on the version of
+ <application>KDE</application>.</para>
+
+ <para>For <application>KDE 3</application>, the <literal>ttyv8</literal>
+ entry in <filename>/etc/ttys</filename> has to be adapted as
+ follows:</para>
+
+ <programlisting>ttyv8 "/usr/local/bin/kdm -nodaemon" xterm on secure</programlisting>
+
+ <para>For <application>KDE 4</application>, you have to mount
+ &man.procfs.5; and add the following line to
+ <filename>/etc/rc.conf</filename>:</para>
+
+ <programlisting>kdm4_enable="YES"</programlisting>
+ </sect3>
+
+ </sect2>
+
+ <sect2 id="x11-wm-xfce">
+ <title>Xfce</title>
+ <sect3 id="x11-wm-xfce-about">
+ <title>About Xfce</title>
+
+ <para><application>Xfce</application> is a desktop environment
+ based on the GTK+
+ toolkit used by <application>GNOME</application>, but is much
+ more lightweight and meant for those who want a simple,
+ efficient desktop which is nevertheless easy to use and
+ configure. Visually, it looks very much like
+ <application>CDE</application>, found on commercial &unix;
+ systems. Some of <application>Xfce</application>'s features
+ are:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>A simple, easy-to-handle desktop</para>
+ </listitem>
+
+ <listitem>
+ <para>Fully configurable via mouse, with drag and
+ drop, etc.</para>
+ </listitem>
+
+ <listitem>
+ <para>Main panel similar to <application>CDE</application>, with
+ menus, applets and applications launchers</para>
+ </listitem>
+
+ <listitem>
+ <para>Integrated window manager, file manager, sound manager,
+ <application>GNOME</application> compliance module, and more</para>
+ </listitem>
+
+ <listitem>
+ <para>Themeable (since it uses GTK+)</para>
+ </listitem>
+
+ <listitem>
+ <para>Fast, light and efficient: ideal for older/slower machines
+ or machines with memory limitations</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>More information on <application>Xfce</application>
+ can be found on the <ulink url="http://www.xfce.org/">Xfce
+ website</ulink>.</para>
+ </sect3>
+
+ <sect3 id="x11-wm-xfce-install">
+ <title>Installing Xfce</title>
+
+ <para>A binary package for <application>Xfce</application>
+ exists (at the time of writing). To install, simply type:</para>
+
+ <screen>&prompt.root; <userinput>pkg_add -r xfce4</userinput></screen>
+
+ <para>Alternatively, to build from source, use the
+ Ports Collection:</para>
+
+ <screen>&prompt.root; <userinput>cd /usr/ports/x11-wm/xfce4</userinput>
+&prompt.root; <userinput>make install clean</userinput></screen>
+
+ <para>Now, tell the X server to launch
+ <application>Xfce</application> the next time X is started.
+ Simply type this:</para>
+
+ <screen>&prompt.user; <userinput>echo "/usr/local/bin/startxfce4" &gt; ~/.xinitrc</userinput></screen>
+
+ <para>The next time X is started,
+ <application>Xfce</application> will be the desktop.
+ As before, if a display manager like
+ <application>XDM</application> is being used, create an
+ <filename>.xsession</filename>, as described in the
+ section on <link linkend="x11-wm-gnome">GNOME</link>, but
+ with the <filename>/usr/local/bin/startxfce4</filename>
+ command; or, configure the display manager to allow
+ choosing a desktop at login time, as explained in
+ the section on <link linkend="x11-wm-kde-kdm">kdm</link>.</para>
+ </sect3>
+ </sect2>
+ </sect1>
+
+</chapter>