<timmoore88_gmail.com>, based on bug report by Brandon S Allbery <allbery.b@gmail.com>. Other edits added to fix wording in old section and correct indentation in programlisting elements (content, in this case). PR: 193612 Submitted by: Brandon S Allbery <allbery.b@gmail.com> Sponsored by: iXsystems Differential Revision: https://reviews.freebsd.org/D7841
2149 lines
77 KiB
XML
2149 lines
77 KiB
XML
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!--
|
|
The FreeBSD Documentation Project
|
|
|
|
$FreeBSD$
|
|
-->
|
|
<chapter xmlns="http://docbook.org/ns/docbook"
|
|
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
|
xml: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 xml:id="x11-synopsis">
|
|
<title>Synopsis</title>
|
|
|
|
<para>An installation of &os; using
|
|
<application>bsdinstall</application> does not automatically
|
|
install a graphical user interface. This chapter describes how
|
|
to install and configure <application>&xorg;</application>,
|
|
which provides the open source X Window System used to provide a
|
|
graphical environment. It then describes how to find and
|
|
install a desktop environment or window manager.</para>
|
|
|
|
<note>
|
|
<para>Users who prefer an installation method that automatically
|
|
configures the <application>&xorg;</application> and offers a
|
|
choice of window managers during installation should refer to
|
|
the <link xlink:href="http://www.pcbsd.org/">pcbsd.org</link>
|
|
website.</para>
|
|
</note>
|
|
|
|
<para>For more information on the video hardware that
|
|
<application>&xorg;</application> supports, refer to the <link
|
|
xlink:href="http://www.x.org/">x.org</link> website.</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
|
|
<application>&xorg;</application>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>How to install and configure several window managers
|
|
and desktop environments.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>How to use &truetype; fonts in
|
|
<application>&xorg;</application>.</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 as described in <xref linkend="ports"/>.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="x-understanding">
|
|
<title>Terminology</title>
|
|
|
|
<para>While it is not necessary to understand all of the details
|
|
of the various components in the X Window System and how they
|
|
interact, some basic knowledge of these components can be
|
|
useful.</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>X server</term>
|
|
|
|
<listitem>
|
|
<para>X was designed from the beginning to be
|
|
network-centric, and adopts a <quote>client-server</quote>
|
|
model. In this 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 handling input or output from other devices
|
|
such as a tablet or a video projector. 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>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>X client</term>
|
|
|
|
<listitem>
|
|
<para>Each X application, such as
|
|
<application>XTerm</application> or
|
|
<application>Firefox</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. It
|
|
is also possible to run the X server on a less powerful
|
|
computer and to run the X applications on a more powerful
|
|
system. In this scenario, the communication between the X
|
|
client and server takes place over the network.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>window manager</term>
|
|
|
|
<listitem>
|
|
<para>X does not dictate what windows should look like
|
|
on-screen, how to move them around with the mouse, which
|
|
keystrokes should be used to move between windows, what
|
|
the title bars on each window should look like, whether or
|
|
not they have close buttons on them, and so on. Instead,
|
|
X delegates this responsibility to a separate window
|
|
manager application. There are <link
|
|
xlink:href="http://xwinman.org/">dozens of window
|
|
managers</link> available. Each window manager provides
|
|
a different look and feel: some support virtual desktops,
|
|
some allow customized keystrokes to manage the desktop,
|
|
some have a <quote>Start</quote> button, and some are
|
|
themeable, allowing a complete change of the desktop's
|
|
look-and-feel. Window managers are available in the
|
|
<filename>x11-wm</filename> category of the Ports
|
|
Collection.</para>
|
|
|
|
<para>Each window manager uses a different configuration
|
|
mechanism. Some expect configuration file written by hand
|
|
while others provide graphical tools for most
|
|
configuration tasks.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>desktop environment</term>
|
|
|
|
<listitem>
|
|
<para><application>KDE</application> and
|
|
<application>GNOME</application> are considered to be
|
|
desktop environments as they include an entire suite of
|
|
applications for performing common desktop tasks. These
|
|
may include office suites, web browsers, and games.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>focus policy</term>
|
|
|
|
<listitem>
|
|
<para>The window manager is responsible for the mouse focus
|
|
policy. This policy provides some means for choosing
|
|
which window is actively receiving keystrokes and it
|
|
should also visibly indicate which window is currently
|
|
active.</para>
|
|
|
|
<para>One focus policy is called
|
|
<quote>click-to-focus</quote>. In this model, a window
|
|
becomes active upon receiving a mouse click. In the
|
|
<quote>focus-follows-mouse</quote> policy, the window that
|
|
is under the mouse pointer has focus and the focus is
|
|
changed by pointing at another window. If the mouse is
|
|
over the root window, then this window is focused. In the
|
|
<quote>sloppy-focus</quote> model, if the mouse is moved
|
|
over the root window, the most recently used window still
|
|
has the focus. With sloppy-focus, focus is only changed
|
|
when the cursor enters a new window, and not when exiting
|
|
the current window. In the <quote>click-to-focus</quote>
|
|
policy, the active window is selected by mouse click. The
|
|
window may then be raised 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>
|
|
|
|
<para>Different window managers support different focus
|
|
models. All of them support click-to-focus, and the
|
|
majority of them also support other policies. Consult the
|
|
documentation for the window manager to determine which
|
|
focus models are available.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>widgets</term>
|
|
|
|
<listitem>
|
|
<para>Widget is a term for all of the items in the user
|
|
interface that can be clicked or manipulated in some way.
|
|
This includes buttons, check boxes, radio buttons, icons,
|
|
and lists. A widget toolkit is a set of widgets used to
|
|
create graphical applications. There are several popular
|
|
widget toolkits, including Qt, used by
|
|
<application>KDE</application>, and GTK+, used by
|
|
<application>GNOME</application>. As a result,
|
|
applications will have a different look and feel,
|
|
depending upon which widget toolkit was used to create the
|
|
application.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="x-install">
|
|
<title>Installing <application>&xorg;</application></title>
|
|
|
|
<para>On &os;, <application>&xorg;</application> can be installed
|
|
as a package or port.</para>
|
|
|
|
<para>To build and install from the Ports Collection:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /usr/ports/x11/xorg</userinput>
|
|
&prompt.root; <userinput>make install clean</userinput></screen>
|
|
|
|
<para>The binary package can be installed more quickly but with
|
|
fewer options for customization:</para>
|
|
|
|
<screen>&prompt.root; <userinput>pkg install xorg</userinput></screen>
|
|
|
|
<para>Either of these installations results in the complete
|
|
<application>&xorg;</application> system being installed. This
|
|
is the best option for most users.</para>
|
|
|
|
<para>A smaller version of the X system suitable for experienced
|
|
users is available in <package>x11/xorg-minimal</package>. Most
|
|
of the documents, libraries, and applications will not be
|
|
installed. Some applications require these additional
|
|
components to function.</para>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="x-config">
|
|
<title><application>&xorg;</application> Configuration</title>
|
|
|
|
<info>
|
|
<author>
|
|
<personname>
|
|
<firstname>Warren</firstname>
|
|
<surname>Block</surname>
|
|
</personname>
|
|
<contrib>Originally contributed by</contrib>
|
|
</author>
|
|
</info>
|
|
|
|
<indexterm><primary>&xorg;</primary></indexterm>
|
|
<indexterm><primary><application>&xorg;</application></primary></indexterm>
|
|
|
|
<sect2 xml:id="x-config-quick-start">
|
|
<title>Quick Start</title>
|
|
|
|
<para><application>&xorg;</application> supports most common
|
|
video cards, keyboards, and pointing devices. These devices
|
|
are automatically detected and do not require any manual
|
|
configuration.</para>
|
|
|
|
<procedure>
|
|
<step>
|
|
<para>If <application>&xorg;</application> has been used on
|
|
this computer before, move or remove any existing
|
|
configuration files:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mv /etc/X11/xorg.conf ~/xorg.conf.etc</userinput>
|
|
&prompt.root; <userinput>mv /usr/local/etc/X11/xorg.conf ~/xorg.conf.localetc</userinput></screen>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Add the user who will run
|
|
<application>&xorg;</application> to the
|
|
<literal>video</literal> or
|
|
<literal>wheel</literal> group to enable 3D acceleration
|
|
when available. To add user
|
|
<replaceable>jru</replaceable> to whichever group is
|
|
available:</para>
|
|
|
|
<screen>&prompt.root; <userinput>pw groupmod video -m <replaceable>jru</replaceable> || pw groupmod wheel -m <replaceable>jru</replaceable></userinput></screen>
|
|
</step>
|
|
|
|
<step>
|
|
<para>The <acronym>TWM</acronym> window manager is included
|
|
by default. It is started when
|
|
<application>&xorg;</application> starts:</para>
|
|
|
|
<screen>&prompt.user; <userinput>startx</userinput></screen>
|
|
</step>
|
|
|
|
<step>
|
|
<para>On some older versions of &os;, the system console
|
|
must be set to &man.vt.4; before switching back to the
|
|
text console will work properly. See
|
|
<xref linkend="x-config-kms"/>.</para>
|
|
</step>
|
|
</procedure>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="x-config-user-group">
|
|
<title>User Group for Accelerated Video</title>
|
|
|
|
<para>Access to <filename>/dev/dri</filename> is needed to allow
|
|
3D acceleration on video cards. It is usually simplest to add
|
|
the user who will be running X to either the
|
|
<literal>video</literal> or <literal>wheel</literal> group.
|
|
Here, &man.pw.8; is used to add user
|
|
<replaceable>slurms</replaceable> to the
|
|
<literal>video</literal> group, or to the
|
|
<literal>wheel</literal> group if there is no
|
|
<literal>video</literal> group:</para>
|
|
|
|
<screen>&prompt.root; <userinput>pw groupmod video -m <replaceable>slurms</replaceable> || pw groupmod wheel -m <replaceable>slurms</replaceable></userinput></screen>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="x-config-kms">
|
|
<title>Kernel Mode Setting (<acronym>KMS</acronym>)</title>
|
|
|
|
<para>When the computer switches from displaying the console to
|
|
a higher screen resolution for X, it must set the video
|
|
output <emphasis>mode</emphasis>. Recent versions of
|
|
<acronym>&xorg;</acronym> use a system inside the kernel to do
|
|
these mode changes more efficiently. Older versions of &os;
|
|
use &man.sc.4;, which is not aware of the
|
|
<acronym>KMS</acronym> system. The end result is that after
|
|
closing X, the system console is blank, even though it is
|
|
still working. The newer &man.vt.4; console avoids this
|
|
problem.</para>
|
|
|
|
<para>Add this line to <filename>/boot/loader.conf</filename>
|
|
to enable &man.vt.4;:</para>
|
|
|
|
<programlisting>kern.vty=vt</programlisting>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="x-config-files">
|
|
<title>Configuration Files</title>
|
|
|
|
<sect3 xml:id="x-config-files-directory">
|
|
<title>Directory</title>
|
|
|
|
<para><application>&xorg;</application> looks in several
|
|
directories for configuration files.
|
|
<filename>/usr/local/etc/X11/</filename> is the recommended
|
|
directory for these files on &os;. Using this directory
|
|
helps keep application files separate from operating system
|
|
files.</para>
|
|
|
|
<para>Storing configuration files in the legacy
|
|
<filename>/etc/X11/</filename> still works. However, this
|
|
mixes application files with the base &os; files and is not
|
|
recommended.</para>
|
|
</sect3>
|
|
|
|
<sect3 xml:id="x-config-files-single-or-multi">
|
|
<title>Single or Multiple Files</title>
|
|
|
|
<para>It is easier to use multiple files that each configure a
|
|
specific setting than the traditional single
|
|
<filename>xorg.conf</filename>. These files are stored in
|
|
the <filename>xorg.conf.d/</filename> subdirectory of the
|
|
main configuration file directory. The full path is
|
|
typically
|
|
<filename>/usr/local/etc/X11/xorg.conf.d/</filename>.</para>
|
|
|
|
<para>Examples of these files are shown later in this
|
|
section.</para>
|
|
|
|
<para>The traditional single <filename>xorg.conf</filename>
|
|
still works, but is neither as clear nor as flexible as
|
|
multiple files in the <filename>xorg.conf.d/</filename>
|
|
subdirectory.</para>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="x-config-video-cards">
|
|
<title>Video Cards</title>
|
|
|
|
<variablelist>
|
|
<varlistentry xml:id="x-config-video-cards-intel">
|
|
<term>&intel;</term>
|
|
|
|
<listitem>
|
|
<para>3D acceleration is supported on most &intel;
|
|
graphics up to Ivy Bridge (HD Graphics 2500, 4000, and
|
|
P4000), including Iron Lake (HD Graphics) and
|
|
Sandy Bridge (HD Graphics 2000).</para>
|
|
|
|
<para>Driver name: <literal>intel</literal></para>
|
|
|
|
<para>For reference, see <link
|
|
xlink:href="https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units"/>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry xml:id="x-config-video-cards-radeon">
|
|
<term>&amd; Radeon</term>
|
|
|
|
<listitem>
|
|
<para>2D and 3D acceleration is supported on Radeon
|
|
cards up to and including the HD6000 series.</para>
|
|
|
|
<para>Driver name: <literal>radeon</literal></para>
|
|
|
|
<para>For reference, see <link
|
|
xlink:href="https://en.wikipedia.org/wiki/List_of_AMD_graphics_processing_units"/>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry xml:id="x-config-video-cards-nvidia">
|
|
<term>NVIDIA</term>
|
|
|
|
<listitem>
|
|
<para>Several NVIDIA drivers are available in the
|
|
<filename>x11</filename> category of the Ports
|
|
Collection. Install the driver that matches the video
|
|
card.</para>
|
|
|
|
<para>For reference, see <link
|
|
xlink:href="https://en.wikipedia.org/wiki/List_of_Nvidia_graphics_processing_units"/>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry xml:id="x-config-video-cards-hybrid">
|
|
<term>Hybrid Combination Graphics</term>
|
|
|
|
<listitem>
|
|
<para>Some notebook computers add additional graphics
|
|
processing units to those built into the chipset or
|
|
processor. <emphasis>Optimus</emphasis> combines
|
|
&intel; and NVIDIA hardware.
|
|
<emphasis>Switchable Graphics</emphasis> or
|
|
<emphasis>Hybrid Graphics</emphasis> are a combination
|
|
of an &intel; or &amd; processor and an &amd; Radeon
|
|
<acronym>GPU</acronym>.</para>
|
|
|
|
<para>Implementations of these hybrid graphics systems
|
|
vary, and <application>&xorg;</application> on &os; is
|
|
not able to drive all versions of them.</para>
|
|
|
|
<para>Some computers provide a <acronym>BIOS</acronym>
|
|
option to disable one of the graphics adapters or select
|
|
a <emphasis>discrete</emphasis> mode which can be used
|
|
with one of the standard video card drivers. For
|
|
example, it is sometimes possible to disable the NVIDIA
|
|
<acronym>GPU</acronym> in an Optimus system. The
|
|
&intel; video can then be used with an &intel;
|
|
driver.</para>
|
|
|
|
<para><acronym>BIOS</acronym> settings depend on the model
|
|
of computer. In some situations, both
|
|
<acronym>GPU</acronym>s can be left enabled, but
|
|
creating a configuration file that only uses the main
|
|
<acronym>GPU</acronym> in the <literal>Device</literal>
|
|
section is enough to make such a system
|
|
functional.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry xml:id="x-config-video-cards-other">
|
|
<term>Other Video Cards</term>
|
|
|
|
<listitem>
|
|
<para>Drivers for some less-common video cards can be
|
|
found in the <filename>x11-drivers</filename> directory
|
|
of the Ports Collection.</para>
|
|
|
|
<para>Cards that are not supported by a specific driver
|
|
might still be usable with the
|
|
<package>x11-drivers/xf86-video-vesa</package> driver.
|
|
This driver is installed by <package>x11/xorg</package>.
|
|
It can also be installed manually as
|
|
<package>x11-drivers/xf86-video-vesa</package>.
|
|
<application>&xorg;</application> attempts to use this
|
|
driver when a specific driver is not found for the video
|
|
card.</para>
|
|
|
|
<para><package>x11-drivers/xf86-video-scfb</package> is a
|
|
similar nonspecialized video driver that works on many
|
|
<acronym>UEFI</acronym> and &arm; computers.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry xml:id="x-config-video-cards-file">
|
|
<term>Setting the Video Driver in a File</term>
|
|
|
|
<listitem>
|
|
<para>To set the &intel; driver in a configuration
|
|
file:</para>
|
|
|
|
<example xml:id="x-config-video-cards-file-intel">
|
|
<title>Select &intel; Video Driver in a File</title>
|
|
|
|
<para><filename>/usr/local/etc/X11/xorg.conf.d/driver-intel.conf</filename></para>
|
|
|
|
<programlisting>Section "Device"
|
|
Identifier "Card0"
|
|
Driver "intel"
|
|
# BusID "PCI:1:0:0"
|
|
EndSection</programlisting>
|
|
|
|
<para>If more than one video card is present, the
|
|
<literal>BusID</literal> identifier can be uncommented
|
|
and set to select the desired card. A list of video
|
|
card bus <acronym>ID</acronym>s can be displayed with
|
|
<command>pciconf -lv | grep -B3
|
|
display</command>.</para>
|
|
</example>
|
|
|
|
<para>To set the Radeon driver in a configuration
|
|
file:</para>
|
|
|
|
<example xml:id="x-config-video-cards-file-radeon">
|
|
<title>Select Radeon Video Driver in a File</title>
|
|
|
|
<para><filename>/usr/local/etc/X11/xorg.conf.d/driver-radeon.conf</filename></para>
|
|
|
|
<programlisting>Section "Device"
|
|
Identifier "Card0"
|
|
Driver "radeon"
|
|
EndSection</programlisting>
|
|
</example>
|
|
|
|
<para>To set the <acronym>VESA</acronym> driver in a
|
|
configuration file:</para>
|
|
|
|
<example xml:id="x-config-video-cards-file-vesa">
|
|
<title>Select <acronym>VESA</acronym> Video Driver in a
|
|
File</title>
|
|
|
|
<para><filename>/usr/local/etc/X11/xorg.conf.d/driver-vesa.conf</filename></para>
|
|
|
|
<programlisting>Section "Device"
|
|
Identifier "Card0"
|
|
Driver "vesa"
|
|
EndSection</programlisting>
|
|
</example>
|
|
|
|
<para>To set the <literal>scfb</literal> driver for use
|
|
with a <acronym>UEFI</acronym> or &arm; computer:</para>
|
|
|
|
<example xml:id="x-config-video-cards-file-scfb">
|
|
<title>Select <literal>scfb</literal> Video Driver in a
|
|
File</title>
|
|
|
|
<para><filename>/usr/local/etc/X11/xorg.conf.d/driver-scfb.conf</filename></para>
|
|
|
|
<programlisting>Section "Device"
|
|
Identifier "Card0"
|
|
Driver "scfb"
|
|
EndSection</programlisting>
|
|
</example>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="x-config-monitors">
|
|
<title>Monitors</title>
|
|
|
|
<para>Almost all monitors support the Extended Display
|
|
Identification Data standard (<acronym>EDID</acronym>).
|
|
<application>&xorg;</application> uses <acronym>EDID</acronym>
|
|
to communicate with the monitor and detect the supported
|
|
resolutions and refresh rates. Then it selects the most
|
|
appropriate combination of settings to use with that
|
|
monitor.</para>
|
|
|
|
<para>Other resolutions supported by the monitor can be
|
|
chosen by setting the desired resolution in configuration
|
|
files, or after the X server has been started with
|
|
&man.xrandr.1;.</para>
|
|
|
|
<variablelist>
|
|
<varlistentry xml:id="x-config-monitors-xrandr">
|
|
<term>Using &man.xrandr.1;</term>
|
|
|
|
<listitem>
|
|
<para>Run &man.xrandr.1; without any parameters to see a
|
|
list of video outputs and detected monitor modes:</para>
|
|
|
|
<screen>&prompt.user; <userinput>xrandr</userinput>
|
|
Screen 0: minimum 320 x 200, current 3000 x 1920, maximum 8192 x 8192
|
|
DVI-0 connected primary 1920x1200+1080+0 (normal left inverted right x axis y axis) 495mm x 310mm
|
|
1920x1200 59.95*+
|
|
1600x1200 60.00
|
|
1280x1024 85.02 75.02 60.02
|
|
1280x960 60.00
|
|
1152x864 75.00
|
|
1024x768 85.00 75.08 70.07 60.00
|
|
832x624 74.55
|
|
800x600 75.00 60.32
|
|
640x480 75.00 60.00
|
|
720x400 70.08
|
|
DisplayPort-0 disconnected (normal left inverted right x axis y axis)
|
|
HDMI-0 disconnected (normal left inverted right x axis y axis)</screen>
|
|
|
|
<para>This shows that the <literal>DVI-0</literal> output
|
|
is being used to display a screen resolution of
|
|
1920x1200 pixels at a refresh rate of about 60 Hz.
|
|
Monitors are not attached to the
|
|
<literal>DisplayPort-0</literal> and
|
|
<literal>HDMI-0</literal> connectors.</para>
|
|
|
|
<para>Any of the other display modes can be selected with
|
|
&man.xrandr.1;. For example, to switch to 1280x1024 at
|
|
60 Hz:</para>
|
|
|
|
<screen>&prompt.user; <userinput>xrandr --mode 1280x1024 --rate 60</userinput></screen>
|
|
|
|
<para>A common task is using the external video output on
|
|
a notebook computer for a video projector.</para>
|
|
|
|
<para>The type and quantity of output connectors varies
|
|
between devices, and the name given to each output
|
|
varies from driver to driver. What one driver calls
|
|
<literal>HDMI-1</literal>, another might call
|
|
<literal>HDMI1</literal>. So the first step is to run
|
|
&man.xrandr.1; to list all the available
|
|
outputs:</para>
|
|
|
|
<screen>&prompt.user; <userinput>xrandr</userinput>
|
|
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192
|
|
LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 193mm
|
|
1366x768 60.04*+
|
|
1024x768 60.00
|
|
800x600 60.32 56.25
|
|
640x480 59.94
|
|
VGA1 connected (normal left inverted right x axis y axis)
|
|
1280x1024 60.02 + 75.02
|
|
1280x960 60.00
|
|
1152x864 75.00
|
|
1024x768 75.08 70.07 60.00
|
|
832x624 74.55
|
|
800x600 72.19 75.00 60.32 56.25
|
|
640x480 75.00 72.81 66.67 60.00
|
|
720x400 70.08
|
|
HDMI1 disconnected (normal left inverted right x axis y axis)
|
|
DP1 disconnected (normal left inverted right x axis y axis)</screen>
|
|
|
|
<para>Four outputs were found: the built-in panel
|
|
<literal>LVDS1</literal>, and external
|
|
<literal>VGA1</literal>, <literal>HDMI1</literal>, and
|
|
<literal>DP1</literal> connectors.</para>
|
|
|
|
<para>The projector has been connected to the
|
|
<literal>VGA1</literal> output. &man.xrandr.1; is now
|
|
used to set that output to the native resolution of the
|
|
projector and add the additional space to the right side
|
|
of the desktop:</para>
|
|
|
|
<screen>&prompt.user; <userinput>xrandr --output VGA1 --auto --right-of LVDS1</userinput></screen>
|
|
|
|
<para><literal>--auto</literal> chooses the resolution and
|
|
refresh rate detected by <acronym>EDID</acronym>. If
|
|
the resolution is not correctly detected, a fixed value
|
|
can be given with <literal>--mode</literal> instead of
|
|
the <literal>--auto</literal> statement. For example,
|
|
most projectors can be used with a 1024x768 resolution,
|
|
which is set with
|
|
<literal>--mode 1024x768</literal>.</para>
|
|
|
|
<para>&man.xrandr.1; is often run from
|
|
<filename>.xinitrc</filename> to set the appropriate
|
|
mode when X starts.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry xml:id="x-config-monitors-files">
|
|
<term>Setting Monitor Resolution in a File</term>
|
|
|
|
<listitem>
|
|
<para>To set a screen resolution of 1024x768 in a
|
|
configuration file:</para>
|
|
|
|
<example>
|
|
<title>Set Screen Resolution in a File</title>
|
|
|
|
<para><filename>/usr/local/etc/X11/xorg.conf.d/screen-resolution.conf</filename></para>
|
|
|
|
<programlisting>Section "Screen"
|
|
Identifier "Screen0"
|
|
Device "Card0"
|
|
SubSection "Display"
|
|
Modes "1024x768"
|
|
EndSubSection
|
|
EndSection</programlisting>
|
|
</example>
|
|
|
|
<para>The few monitors that do not have
|
|
<acronym>EDID</acronym> can be configured by setting
|
|
<literal>HorizSync</literal> and
|
|
<literal>VertRefresh</literal> to the range of
|
|
frequencies supported by the monitor.</para>
|
|
|
|
<example>
|
|
<title>Manually Setting Monitor Frequencies</title>
|
|
|
|
<para><filename>/usr/local/etc/X11/xorg.conf.d/monitor0-freq.conf</filename></para>
|
|
|
|
<programlisting>Section "Monitor"
|
|
Identifier "Monitor0"
|
|
HorizSync 30-83 # kHz
|
|
VertRefresh 50-76 # Hz
|
|
EndSection</programlisting>
|
|
</example>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="x-config-input">
|
|
<title>Input Devices</title>
|
|
|
|
<sect3 xml:id="x-config-input-keyboard">
|
|
<title>Keyboards</title>
|
|
|
|
<variablelist>
|
|
<varlistentry xml:id="x-config-input-keyboard-layout">
|
|
<term>Keyboard Layout</term>
|
|
|
|
<listitem>
|
|
<para>The standardized location of keys on a keyboard
|
|
is called a <emphasis>layout</emphasis>. Layouts and
|
|
other adjustable parameters are listed in
|
|
&man.xkeyboard-config.7;.</para>
|
|
|
|
<para>A United States layout is the default. To select
|
|
an alternate layout, set the
|
|
<literal>XkbLayout</literal> and
|
|
<literal>XkbVariant</literal> options in an
|
|
<literal>InputClass</literal>. This will be applied
|
|
to all input devices that match the class.</para>
|
|
|
|
<para>This example selects a French keyboard layout with
|
|
the <literal>oss</literal> variant.</para>
|
|
|
|
<example>
|
|
<title>Setting a Keyboard Layout</title>
|
|
|
|
<para><filename>/usr/local/etc/X11/xorg.conf.d/keyboard-fr-oss.conf</filename></para>
|
|
|
|
<programlisting>Section "InputClass"
|
|
Identifier "KeyboardDefaults"
|
|
Driver "keyboard"
|
|
MatchIsKeyboard "on"
|
|
Option "XkbLayout" "fr"
|
|
Option "XkbVariant" "oss"
|
|
EndSection</programlisting>
|
|
</example>
|
|
|
|
<example>
|
|
<title>Setting Multiple Keyboard Layouts</title>
|
|
|
|
<para>Set United States, Spanish, and Ukrainian
|
|
keyboard layouts. Cycle through these layouts by
|
|
pressing
|
|
<keycombo action="simul">
|
|
<keycap>Alt</keycap>
|
|
<keycap>Shift</keycap>
|
|
</keycombo>. <package>x11/xxkb</package> or
|
|
<package>x11/sbxkb</package> can be used for
|
|
improved layout switching control and
|
|
current layout indicators.</para>
|
|
|
|
<para><filename>/usr/local/etc/X11/xorg.conf.d/kbd-layout-multi.conf</filename></para>
|
|
|
|
<programlisting>Section "InputClass"
|
|
Identifier "All Keyboards"
|
|
MatchIsKeyboard "yes"
|
|
Option "XkbLayout" "us, es, ua"
|
|
EndSection</programlisting>
|
|
</example>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry xml:id="x-config-input-keyboard-zap">
|
|
<term>Closing <application>&xorg;</application> From the
|
|
Keyboard</term>
|
|
|
|
<listitem>
|
|
<para>X can be closed with a combination of keys.
|
|
By default, that key combination is not set because it
|
|
conflicts with keyboard commands for some
|
|
applications. Enabling this option requires changes
|
|
to the keyboard <literal>InputDevice</literal>
|
|
section:</para>
|
|
|
|
<example>
|
|
<title>Enabling Keyboard Exit from X</title>
|
|
|
|
<para><filename>/usr/local/etc/X11/xorg.conf.d/keyboard-zap.conf</filename></para>
|
|
|
|
<programlisting>Section "InputClass"
|
|
Identifier "KeyboardDefaults"
|
|
Driver "keyboard"
|
|
MatchIsKeyboard "on"
|
|
Option "XkbOptions" "terminate:ctrl_alt_bksp"
|
|
EndSection</programlisting>
|
|
</example>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
|
|
<sect3 xml:id="x11-input-mice">
|
|
<title>Mice and Pointing Devices</title>
|
|
|
|
<para>Many mouse parameters can be adjusted with configuration
|
|
options. See &man.mousedrv.4x; for a full list.</para>
|
|
|
|
<variablelist>
|
|
<varlistentry xml:id="x11-input-mice-buttons">
|
|
<term>Mouse Buttons</term>
|
|
|
|
<listitem>
|
|
<para>The number of buttons on a mouse can be set in the
|
|
mouse <literal>InputDevice</literal> section of
|
|
<filename>xorg.conf</filename>. To set the number of
|
|
buttons to 7:</para>
|
|
|
|
<example>
|
|
<title>Setting the Number of Mouse Buttons</title>
|
|
|
|
<para><filename>/usr/local/etc/X11/xorg.conf.d/mouse0-buttons.conf</filename></para>
|
|
|
|
<programlisting>Section "InputDevice"
|
|
Identifier "Mouse0"
|
|
Option "Buttons" "7"
|
|
EndSection</programlisting>
|
|
</example>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="x-config-manual-configuration">
|
|
<title>Manual Configuration</title>
|
|
|
|
<para>In some cases, <application>&xorg;</application>
|
|
autoconfiguration does not work with particular hardware, or a
|
|
different configuration is desired. For these cases, a custom
|
|
configuration file can be created.</para>
|
|
|
|
<para>A configuration file can be generated by
|
|
<application>&xorg;</application> based on the detected
|
|
hardware. This file is often a useful starting point for
|
|
custom configurations.</para>
|
|
|
|
<para>Generating an <filename>xorg.conf</filename>:</para>
|
|
|
|
<screen>&prompt.root; <userinput>Xorg -configure</userinput></screen>
|
|
|
|
<para>The configuration file is saved to
|
|
<filename>/root/xorg.conf.new</filename>. Make any changes
|
|
desired, then test that file with:</para>
|
|
|
|
<screen>&prompt.root; <userinput>Xorg -config /root/xorg.conf.new</userinput></screen>
|
|
|
|
<para>After the new configuration has been adjusted and tested,
|
|
it can be split into smaller files in the normal location,
|
|
<filename>/usr/local/etc/X11/xorg.conf.d/</filename>.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="x-fonts">
|
|
<!--
|
|
<sect1info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Murray</firstname>
|
|
<surname>Stokely</surname>
|
|
<contrib>Contributed by </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</sect1info>
|
|
-->
|
|
<title>Using Fonts in <application>&xorg;</application></title>
|
|
|
|
<sect2 xml:id="type1">
|
|
<title>Type1 Fonts</title>
|
|
|
|
<para>The default fonts that ship with
|
|
<application>&xorg;</application> are less than ideal for
|
|
typical desktop publishing applications. Large presentation
|
|
fonts show up jagged and unprofessional looking, and small
|
|
fonts are almost completely unintelligible. However, there
|
|
are several free, high quality Type1 (&postscript;) fonts
|
|
available which can be readily used with
|
|
<application>&xorg;</application>. For instance, the URW font
|
|
collection (<package>x11-fonts/urwfonts</package>) 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 (<package>x11-fonts/freefonts</package>)
|
|
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,
|
|
<application>&xorg;</application> 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 <xref
|
|
linkend="truetype"/>.</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/share/fonts/urwfonts/"</programlisting>
|
|
|
|
<para>Alternatively, at the command line in the X session
|
|
run:</para>
|
|
|
|
<screen>&prompt.user; <userinput>xset fp+ /usr/local/share/fonts/urwfonts</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> as
|
|
demonstrated in <xref linkend="antialias"/>.</para>
|
|
</sect2>
|
|
|
|
<sect2 xml: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 <filename>/etc/X11/xorg.conf</filename>.</para>
|
|
|
|
<programlisting>Load "freetype"</programlisting>
|
|
|
|
<para>Now make a directory for the &truetype; fonts (for
|
|
example, <filename>/usr/local/share/fonts/TrueType</filename>)
|
|
and copy all of the &truetype; fonts into this directory.
|
|
Keep in mind that &truetype; fonts cannot be directly taken
|
|
from an &apple; &mac;; they must be in
|
|
&unix;/&ms-dos;/&windows; format for use by
|
|
<application>&xorg;</application>. Once the files have been
|
|
copied into this directory, use
|
|
<application>mkfontdir</application> to create a
|
|
<filename>fonts.dir</filename>, so that the X font renderer
|
|
knows that these new files have been installed.
|
|
<command>mkfontdir</command> can be installed as a
|
|
package:</para>
|
|
|
|
<screen>&prompt.root; <userinput>pkg install mkfontdir</userinput></screen>
|
|
|
|
<para>Then create an index of X font files in a
|
|
directory:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /usr/local/share/fonts/TrueType</userinput>
|
|
&prompt.root; <userinput>mkfontdir</userinput></screen>
|
|
|
|
<para>Now add the &truetype; directory to the font path. This
|
|
is just the same as described in <xref
|
|
linkend="type1"/>:</para>
|
|
|
|
<screen>&prompt.user; <userinput>xset fp+ /usr/local/share/fonts/TrueType</userinput>
|
|
&prompt.user; <userinput>xset fp rehash</userinput></screen>
|
|
|
|
<para>or add a <literal>FontPath</literal> line to
|
|
<filename>xorg.conf</filename>.</para>
|
|
|
|
<para>Now <application>Gimp</application>,
|
|
<application>Apache OpenOffice</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 xml:id="antialias">
|
|
<!--
|
|
<sect2info>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Joe Marcus</firstname>
|
|
<surname>Clarke</surname>
|
|
<contrib>Updated in May 2003 by</contrib>
|
|
</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 <application>&xorg;</application> that are
|
|
found in <filename>/usr/local/share/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>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><fontconfig></literal>
|
|
tag:</para>
|
|
|
|
<programlisting><?xml version="1.0"?>
|
|
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
|
|
<fontconfig></programlisting>
|
|
|
|
<para>As previously stated, all fonts in
|
|
<filename>/usr/local/share/fonts/</filename> as well as
|
|
<filename>~/.fonts/</filename> are already made available to
|
|
Xft-aware applications. To add another directory
|
|
outside of these two directory trees, add a line like
|
|
this to
|
|
<filename>/usr/local/etc/fonts/local.conf</filename>:</para>
|
|
|
|
<programlisting><dir>/path/to/my/fonts</dir></programlisting>
|
|
|
|
<para>After adding new fonts, and especially new font
|
|
directories, 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> <match target="font">
|
|
<test name="size" compare="less">
|
|
<double>14</double>
|
|
</test>
|
|
<edit name="antialias" mode="assign">
|
|
<bool>false</bool>
|
|
</edit>
|
|
</match>
|
|
<match target="font">
|
|
<test name="pixelsize" compare="less" qual="any">
|
|
<double>14</double>
|
|
</test>
|
|
<edit mode="assign" name="antialias">
|
|
<bool>false</bool>
|
|
</edit>
|
|
</match></programlisting>
|
|
|
|
<indexterm>
|
|
<primary>fonts</primary>
|
|
<secondary>spacing</secondary>
|
|
</indexterm>
|
|
|
|
<para>Spacing for some monospaced fonts might also be
|
|
inappropriate with anti-aliasing. This seems to be an issue
|
|
with <application>KDE</application>, in particular. One
|
|
possible fix is to force the spacing for such fonts
|
|
to be 100. Add these lines:</para>
|
|
|
|
<programlisting> <match target="pattern" name="family">
|
|
<test qual="any" name="family">
|
|
<string>fixed</string>
|
|
</test>
|
|
<edit name="family" mode="assign">
|
|
<string>mono</string>
|
|
</edit>
|
|
</match>
|
|
<match target="pattern" name="family">
|
|
<test qual="any" name="family">
|
|
<string>console</string>
|
|
</test>
|
|
<edit name="family" mode="assign">
|
|
<string>mono</string>
|
|
</edit>
|
|
</match></programlisting>
|
|
|
|
<para>(this aliases the other common names for fixed fonts as
|
|
<literal>"mono"</literal>), and then add:</para>
|
|
|
|
<programlisting> <match target="pattern" name="family">
|
|
<test qual="any" name="family">
|
|
<string>mono</string>
|
|
</test>
|
|
<edit name="spacing" mode="assign">
|
|
<int>100</int>
|
|
</edit>
|
|
</match> </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> <match target="pattern" name="family">
|
|
<test qual="any" name="family">
|
|
<string>Helvetica</string>
|
|
</test>
|
|
<edit name="family" mode="assign">
|
|
<string>sans-serif</string>
|
|
</edit>
|
|
</match> </programlisting>
|
|
|
|
<para>After editing
|
|
<filename>local.conf</filename>, make certain to end the file
|
|
with the <literal></fontconfig></literal> tag. Not
|
|
doing this will cause changes to be ignored.</para>
|
|
|
|
<para>Users can add personalized settings by creating their own
|
|
<filename>~/.config/fontconfig/fonts.conf</filename>. This
|
|
file uses the same <acronym>XML</acronym> format described
|
|
above.</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
|
|
<filename>local.conf</filename>:</para>
|
|
|
|
<programlisting> <match target="font">
|
|
<test qual="all" name="rgba">
|
|
<const>unknown</const>
|
|
</test>
|
|
<edit name="rgba" mode="assign">
|
|
<const>rgb</const>
|
|
</edit>
|
|
</match></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 xml:id="x-xdm">
|
|
<info>
|
|
<title>The X Display Manager</title>
|
|
|
|
<authorgroup>
|
|
<author>
|
|
<personname>
|
|
<firstname>Seth</firstname>
|
|
<surname>Kingsley</surname>
|
|
</personname>
|
|
<contrib>Contributed by </contrib>
|
|
</author>
|
|
</authorgroup>
|
|
</info>
|
|
|
|
<indexterm><primary>X Display Manager</primary></indexterm>
|
|
<para><application>&xorg;</application> provides an X Display
|
|
Manager, <application>XDM</application>, which can be used for
|
|
login session management. <application>XDM</application>
|
|
provides a graphical interface for choosing which display server
|
|
to connect to and for entering authorization information such as
|
|
a login and password combination.</para>
|
|
|
|
<para>This section demonstrates how to configure the X Display
|
|
Manager on &os;. Some desktop environments provide their own
|
|
graphical login manager. Refer to <xref
|
|
linkend="x11-wm-gnome"/> for instructions on how to configure
|
|
the GNOME Display Manager and <xref linkend="x11-wm-kde"/> for
|
|
instructions on how to configure the KDE Display Manager.</para>
|
|
|
|
<sect2>
|
|
<title>Configuring <application>XDM</application></title>
|
|
|
|
<para>To install <application>XDM</application>, use the
|
|
<package>x11/xdm</package> package or port. Once installed,
|
|
<application>XDM</application> can be configured to run when
|
|
the machine boots up by editing this entry in
|
|
<filename>/etc/ttys</filename>:</para>
|
|
|
|
<screen>ttyv8 "/usr/local/bin/xdm -nodaemon" xterm off secure</screen>
|
|
|
|
<para>Change the <literal>off</literal> to <literal>on</literal>
|
|
and save the edit. The <literal>ttyv8</literal> in this entry
|
|
indicates that <application>XDM</application> will run on the
|
|
ninth virtual terminal.</para>
|
|
|
|
<para>The <application>XDM</application> configuration directory
|
|
is located in <filename>/usr/local/lib/X11/xdm</filename>.
|
|
This directory contains several files used to change the
|
|
behavior and appearance of <application>XDM</application>, as
|
|
well as a few scripts and programs used to set up the desktop
|
|
when <application>XDM</application> is running. <xref
|
|
linkend="xdm-config-files"/> summarizes the function of each
|
|
of these files. The exact syntax and usage of these files is
|
|
described in &man.xdm.1;.</para>
|
|
|
|
<table frame="none" pgwide="1" xml:id="xdm-config-files">
|
|
<title>XDM Configuration Files</title>
|
|
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>File</entry>
|
|
<entry>Description</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><filename>Xaccess</filename></entry>
|
|
<entry>The protocol for connecting to
|
|
<application>XDM</application> is called the X Display
|
|
Manager Connection Protocol (<acronym>XDMCP</acronym>)
|
|
This file is a client authorization ruleset for
|
|
controlling <acronym>XDMCP</acronym> connections from
|
|
remote machines. By default, this file does not allow
|
|
any remote clients to connect.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><filename>Xresources</filename></entry>
|
|
<entry>This file controls the look and feel of the
|
|
<application>XDM</application> display chooser and
|
|
login screens. 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. The format of this file is identical
|
|
to the app-defaults file described in the
|
|
<application>&xorg;</application>
|
|
documentation.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><filename>Xservers</filename></entry>
|
|
<entry>The list of local and remote displays the chooser
|
|
should provide as login choices.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><filename>Xsession</filename></entry>
|
|
<entry>Default session script for logins which is run by
|
|
<application>XDM</application> after a user has logged
|
|
in. Normally each user will have a customized session
|
|
script in <filename>~/.xsession</filename> that
|
|
overrides this script</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><filename>Xsetup_</filename>*</entry>
|
|
<entry>Script to automatically launch applications
|
|
before displaying the chooser or login interfaces.
|
|
There is a script for each display being used, named
|
|
<filename>Xsetup_*</filename>, where
|
|
<literal>*</literal> is the local display number.
|
|
Typically these scripts run one or two programs in the
|
|
background such as
|
|
<command>xconsole</command>.</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>Contains errors generated by the server program.
|
|
If a display that <application>XDM</application> is
|
|
trying to start hangs, look at this file for error
|
|
messages. These messages are also written to the
|
|
user's <filename>~/.xsession-errors</filename> on a
|
|
per-session basis.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><filename>xdm-pid</filename></entry>
|
|
<entry>The running process <acronym>ID</acronym> of
|
|
<application>XDM</application>.</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Configuring Remote Access</title>
|
|
|
|
<para>By default, only users on the same system can login using
|
|
<application>XDM</application>. To enable users on other
|
|
systems to connect to the display server, edit the access
|
|
control rules and enable the connection listener.</para>
|
|
|
|
<para>To configure <application>XDM</application> to listen for
|
|
any remote connection, comment out the
|
|
<literal>DisplayManager.requestPort</literal> line in
|
|
<filename>/usr/local/lib/X11/xdm/xdm-config</filename> by
|
|
putting a <literal>!</literal> in front of it:</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>Save the edits and restart <application>XDM</application>.
|
|
To restrict remote access, look at the example entries in
|
|
<filename>/usr/local/lib/X11/xdm/Xaccess</filename> and refer
|
|
to &man.xdm.1; for further information.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="x11-wm">
|
|
<info>
|
|
<title>Desktop Environments</title>
|
|
|
|
<authorgroup>
|
|
<author>
|
|
<personname>
|
|
<firstname>Valentino</firstname>
|
|
<surname>Vaschetto</surname>
|
|
</personname>
|
|
<contrib>Contributed by </contrib>
|
|
<!-- in June 2001 -->
|
|
</author>
|
|
</authorgroup>
|
|
</info>
|
|
|
|
<para>This section describes how to install three popular desktop
|
|
environments on a &os; system. A desktop environment can range
|
|
from a simple window manager to a complete suite of desktop
|
|
applications. Over a hundred desktop environments are available
|
|
in the <filename>x11-wm</filename> category of the Ports
|
|
Collection.</para>
|
|
|
|
<sect2 xml:id="x11-wm-gnome">
|
|
<title>GNOME</title>
|
|
|
|
<indexterm><primary>GNOME</primary></indexterm>
|
|
<para><application>GNOME</application> is a user-friendly
|
|
desktop environment. It includes a panel for starting
|
|
applications and displaying status, a desktop, a set of tools
|
|
and applications, and a set of conventions that make it easy
|
|
for applications to cooperate and be consistent with each
|
|
other. More information regarding
|
|
<application>GNOME</application> on &os; can be found at <link
|
|
xlink:href="http://www.FreeBSD.org/gnome">http://www.FreeBSD.org/gnome</link>.
|
|
That web site contains additional documentation about
|
|
installing, configuring, and managing
|
|
<application>GNOME</application> on &os;.</para>
|
|
|
|
<para>This desktop environment can be installed from a
|
|
package:</para>
|
|
|
|
<screen>&prompt.root; <userinput>pkg install gnome3</userinput></screen>
|
|
|
|
<para>To instead build <application>GNOME</application> from
|
|
ports, use the following command.
|
|
<application>GNOME</application> is a large application and
|
|
will take some time to compile, even on a fast
|
|
computer.</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /usr/ports/x11/gnome3</userinput>
|
|
&prompt.root; <userinput>make install clean</userinput></screen>
|
|
|
|
<para><application>GNOME</application>
|
|
requires <filename>/proc</filename> to be mounted. Add this
|
|
line to <filename>/etc/fstab</filename> to mount this file
|
|
system automatically during system startup:</para>
|
|
|
|
<programlisting>proc /proc procfs rw 0 0</programlisting>
|
|
|
|
<para><application>GNOME</application> uses
|
|
<application>D-Bus</application> and
|
|
<application>HAL</application> for a message bus and hardware
|
|
abstraction. These applications are automatically installed
|
|
as dependencies of <application>GNOME</application>. Enable
|
|
them in <filename>/etc/rc.conf</filename> so they will be
|
|
started when the system boots:</para>
|
|
|
|
<programlisting>dbus_enable="YES"
|
|
hald_enable="YES"</programlisting>
|
|
|
|
<para>After installation,
|
|
configure <application>&xorg;</application> to start
|
|
<application>GNOME</application>. The easiest way to do this
|
|
is to enable the GNOME Display Manager,
|
|
<application>GDM</application>, which is installed as part of
|
|
the <application>GNOME</application> package or port. It can
|
|
be enabled by adding this line to
|
|
<filename>/etc/rc.conf</filename>:</para>
|
|
|
|
<programlisting>gdm_enable="YES"</programlisting>
|
|
|
|
<para>It is often desirable to also start all
|
|
<application>GNOME</application> services. To achieve this,
|
|
add a second line to <filename>/etc/rc.conf</filename>:</para>
|
|
|
|
<programlisting>gnome_enable="YES"</programlisting>
|
|
|
|
<para><application>GDM</application> will start
|
|
automatically when the system boots.</para>
|
|
|
|
<para>A second method for starting
|
|
<application>GNOME</application> is to type
|
|
<command>startx</command> from the command-line after
|
|
configuring <filename>~/.xinitrc</filename>. If this file
|
|
already exists, replace the line that starts the current
|
|
window manager with one that starts
|
|
<filename>/usr/local/bin/gnome-session</filename>. If this
|
|
file does not exist, create it with this command:</para>
|
|
|
|
<screen>&prompt.user; <userinput>echo "exec /usr/local/bin/gnome-session" > ~/.xinitrc</userinput></screen>
|
|
|
|
<para>A third method is to use <application>XDM</application> as
|
|
the display manager. In this case, create an executable
|
|
<filename>~/.xsession</filename>:</para>
|
|
|
|
<screen>&prompt.user; <userinput>echo "#!/bin/sh" > ~/.xsession</userinput>
|
|
&prompt.user; <userinput>echo "exec /usr/local/bin/gnome-session" >> ~/.xsession</userinput>
|
|
&prompt.user; <userinput>chmod +x ~/.xsession</userinput></screen>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="x11-wm-kde">
|
|
<title>KDE</title>
|
|
|
|
<indexterm><primary>KDE</primary></indexterm>
|
|
|
|
<para><application>KDE</application> is another easy-to-use
|
|
desktop environment. This desktop provides a suite of
|
|
applications with a consistent look and feel, a standardized
|
|
menu and toolbars, keybindings, color-schemes,
|
|
internationalization, and a centralized, dialog-driven desktop
|
|
configuration. More information on
|
|
<application>KDE</application> can be found at <link
|
|
xlink:href="http://www.kde.org/">http://www.kde.org/</link>.
|
|
For &os;-specific information, consult <link
|
|
xlink:href="http://freebsd.kde.org/">http://freebsd.kde.org</link>.</para>
|
|
|
|
<para>To install the <application>KDE</application> package,
|
|
type:</para>
|
|
|
|
<screen>&prompt.root; <userinput>pkg install x11/kde4</userinput></screen>
|
|
|
|
<para>To instead build the <application>KDE</application> port,
|
|
use the following command. Installing the port will provide a
|
|
menu for selecting which components to install.
|
|
<application>KDE</application> is a large application and will
|
|
take some time to compile, even on a fast computer.</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /usr/ports/x11/kde4</userinput>
|
|
&prompt.root; <userinput>make install clean</userinput></screen>
|
|
|
|
<indexterm>
|
|
<primary>KDE</primary>
|
|
<secondary>display manager</secondary>
|
|
</indexterm>
|
|
|
|
<para><application>KDE</application> requires
|
|
<filename>/proc</filename> to be mounted. Add this line to
|
|
<filename>/etc/fstab</filename> to mount this file system
|
|
automatically during system startup:</para>
|
|
|
|
<programlisting>proc /proc procfs rw 0 0</programlisting>
|
|
|
|
<para><application>KDE</application> uses
|
|
<application>D-Bus</application> and
|
|
<application>HAL</application> for a message bus and hardware
|
|
abstraction. These applications are automatically installed
|
|
as dependencies of <application>KDE</application>. Enable
|
|
them in <filename>/etc/rc.conf</filename> so they will be
|
|
started when the system boots:</para>
|
|
|
|
<programlisting>dbus_enable="YES"
|
|
hald_enable="YES"</programlisting>
|
|
|
|
<para>The installation of <application>KDE</application>
|
|
includes the KDE Display Manager,
|
|
<application>KDM</application>. To enable this display
|
|
manager, add this line to
|
|
<filename>/etc/rc.conf</filename>:</para>
|
|
|
|
<programlisting>kdm4_enable="YES"</programlisting>
|
|
|
|
<para>A second method for launching
|
|
<application>KDE</application> is to type
|
|
<command>startx</command> from the command line. For this to
|
|
work, the following line is needed in
|
|
<filename>~/.xinitrc</filename>:</para>
|
|
|
|
<programlisting>exec /usr/local/bin/startkde</programlisting>
|
|
|
|
<para>A third method for starting <application>KDE</application>
|
|
is through <application>XDM</application>. To do so, create
|
|
an executable <filename>~/.xsession</filename> as
|
|
follows:</para>
|
|
|
|
<screen>&prompt.user; <userinput>echo "#!/bin/sh" > ~/.xsession</userinput>
|
|
&prompt.user; <userinput>echo "exec /usr/local/bin/startkde" >> ~/.xsession</userinput>
|
|
&prompt.user; <userinput>chmod +x ~/.xsession</userinput></screen>
|
|
|
|
<para>Once <application>KDE</application> is started, refer to
|
|
its built-in help system for more information on how to use
|
|
its various menus and applications.</para>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="x11-wm-xfce">
|
|
<title>Xfce</title>
|
|
|
|
<para><application>Xfce</application> is a desktop environment
|
|
based on the GTK+ toolkit used by
|
|
<application>GNOME</application>. However, it is more
|
|
lightweight and provides a simple, efficient, easy-to-use
|
|
desktop. It is fully configurable, has a main panel with
|
|
menus, applets, and application launchers, provides a file
|
|
manager and sound manager, and is themeable. Since it is
|
|
fast, light, and efficient, it is ideal for older or slower
|
|
machines with memory limitations. More information on
|
|
<application>Xfce</application> can be found at <link
|
|
xlink:href="http://www.xfce.org/">http://www.xfce.org</link>.</para>
|
|
|
|
<para>To install the <application>Xfce</application>
|
|
package:</para>
|
|
|
|
<screen>&prompt.root; <userinput>pkg install xfce</userinput></screen>
|
|
|
|
<para>Alternatively, to build the port:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /usr/ports/x11-wm/xfce4</userinput>
|
|
&prompt.root; <userinput>make install clean</userinput></screen>
|
|
|
|
<para>Unlike <application>GNOME</application> or
|
|
<application>KDE</application>,
|
|
<application>Xfce</application> does not provide its own login
|
|
manager. In order to start <application>Xfce</application>
|
|
from the command line by typing <command>startx</command>,
|
|
first add its entry to <filename>~/.xinitrc</filename>:</para>
|
|
|
|
<screen>&prompt.user; <userinput>echo "exec /usr/local/bin/startxfce4 --with-ck-launch" > ~/.xinitrc</userinput></screen>
|
|
|
|
<para>An alternate method is to use
|
|
<application>XDM</application>. To configure this method,
|
|
create an executable <filename>~/.xsession</filename>:</para>
|
|
|
|
<screen>&prompt.user; <userinput>echo "#!/bin/sh" > ~/.xsession</userinput>
|
|
&prompt.user; <userinput>echo "exec /usr/local/bin/startxfce4 --with-ck-launch" >> ~/.xsession</userinput>
|
|
&prompt.user; <userinput>chmod +x ~/.xsession</userinput></screen>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="x-compiz-fusion">
|
|
<title>Installing Compiz Fusion</title>
|
|
|
|
<para>One way to make using a desktop
|
|
computer more pleasant is with nice 3D effects.</para>
|
|
|
|
<para>Installing the <application>Compiz Fusion</application>
|
|
package is easy, but configuring it requires a few steps that
|
|
are not described in the port's documentation.</para>
|
|
|
|
<sect2 xml:id="x-compiz-video-card">
|
|
<title>Setting up the &os; nVidia Driver</title>
|
|
|
|
<para>Desktop effects can cause quite a load on the graphics
|
|
card. For an nVidia-based graphics card, the proprietary
|
|
driver is required for good performance. Users of other
|
|
graphics cards can skip this section and continue with the
|
|
<filename>xorg.conf</filename> configuration.</para>
|
|
|
|
<para>To determine which nVidia driver is needed see the <link
|
|
xlink:href="&url.books.faq;/x.html#idp59950544">FAQ question
|
|
on the subject</link>.</para>
|
|
|
|
<para>Having determined the correct driver to use for your card,
|
|
installation is as simple as installing any other
|
|
package.</para>
|
|
|
|
<para>For example, to install the latest driver:</para>
|
|
|
|
<screen>&prompt.root; <userinput>pkg install x11/nvidia-driver</userinput></screen>
|
|
|
|
<para>The driver will create a kernel module, which needs to be
|
|
loaded at system startup. Add the following line to
|
|
<filename>/boot/loader.conf</filename>:</para>
|
|
|
|
<programlisting>nvidia_load="YES"</programlisting>
|
|
|
|
<note>
|
|
<para>To immediately load the kernel module into the running
|
|
kernel by issuing a command like <command>kldload
|
|
nvidia</command>, however it has been noted that the some
|
|
versions of <application>&xorg;</application> will not
|
|
function properly if the driver is not loaded at boot time.
|
|
After editing <filename>/boot/loader.conf</filename>, a
|
|
reboot is recommended.</para>
|
|
</note>
|
|
|
|
<para>With the kernel module loaded, you normally only need to
|
|
change a single line in <filename>xorg.conf</filename>
|
|
to enable the proprietary driver:</para>
|
|
|
|
<para>Find the following line in
|
|
<filename>/etc/X11/xorg.conf</filename>:</para>
|
|
|
|
<programlisting>Driver "nv"</programlisting>
|
|
|
|
<para>and change it to:</para>
|
|
|
|
<programlisting>Driver "nvidia"</programlisting>
|
|
|
|
<para>Start the GUI as usual, and you should be greeted by the
|
|
nVidia splash. Everything should work as usual.</para>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="xorg-configuration">
|
|
<title>Configuring xorg.conf for Desktop Effects</title>
|
|
|
|
<para>To enable <application>Compiz Fusion</application>,
|
|
<filename>/etc/X11/xorg.conf</filename> needs to be
|
|
modified:</para>
|
|
|
|
<para>Add the following section to enable composite
|
|
effects:</para>
|
|
|
|
<programlisting>Section "Extensions"
|
|
Option "Composite" "Enable"
|
|
EndSection</programlisting>
|
|
|
|
<para>Locate the <quote>Screen</quote> section which should look
|
|
similar to the one below:</para>
|
|
|
|
<programlisting>Section "Screen"
|
|
Identifier "Screen0"
|
|
Device "Card0"
|
|
Monitor "Monitor0"
|
|
...</programlisting>
|
|
|
|
<para>and add the following two lines (after
|
|
<quote>Monitor</quote> will do):</para>
|
|
|
|
<programlisting>DefaultDepth 24
|
|
Option "AddARGBGLXVisuals" "True"</programlisting>
|
|
|
|
<para>Locate the <quote>Subsection</quote> that refers to the
|
|
screen resolution that you wish to use. For example, if you
|
|
wish to use 1280x1024, locate the section that follows. If
|
|
the desired resolution does not appear in any subsection, you
|
|
may add the relevant entry by hand:</para>
|
|
|
|
<programlisting>SubSection "Display"
|
|
Viewport 0 0
|
|
Modes "1280x1024"
|
|
EndSubSection</programlisting>
|
|
|
|
<para>A color depth of 24 bits is needed for desktop
|
|
composition, change the above subsection to:</para>
|
|
|
|
<programlisting>SubSection "Display"
|
|
Viewport 0 0
|
|
Depth 24
|
|
Modes "1280x1024"
|
|
EndSubSection</programlisting>
|
|
|
|
<para>Finally, confirm that the <quote>glx</quote> and
|
|
<quote>extmod</quote> modules are loaded in the
|
|
<quote>Module</quote> section:</para>
|
|
|
|
<programlisting>Section "Module"
|
|
Load "extmod"
|
|
Load "glx"
|
|
...</programlisting>
|
|
|
|
<para>The preceding can be done automatically with
|
|
<package>x11/nvidia-xconfig</package> by running (as
|
|
root):</para>
|
|
|
|
<screen>&prompt.root; <userinput>nvidia-xconfig --add-argb-glx-visuals</userinput>
|
|
&prompt.root; <userinput>nvidia-xconfig --composite</userinput>
|
|
&prompt.root; <userinput>nvidia-xconfig --depth=24</userinput></screen>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="compiz-fusion">
|
|
<title>Installing and Configuring Compiz Fusion</title>
|
|
|
|
<para>Installing <application>Compiz Fusion</application>
|
|
is as simple as any other package:</para>
|
|
|
|
<screen>&prompt.root; <userinput>pkg install x11-wm/compiz-fusion</userinput></screen>
|
|
|
|
<para>When the installation is finished, start your graphic
|
|
desktop and at a terminal, enter the following commands (as a
|
|
normal user):</para>
|
|
|
|
<screen>&prompt.user; <userinput>compiz --replace --sm-disable --ignore-desktop-hints ccp &</userinput>
|
|
&prompt.user; <userinput>emerald --replace &</userinput></screen>
|
|
|
|
<para>Your screen will flicker for a few seconds, as your window
|
|
manager (e.g. <application>Metacity</application> if you are
|
|
using <application>GNOME</application>) is replaced by
|
|
<application>Compiz Fusion</application>.
|
|
<application>Emerald</application> takes care of the window
|
|
decorations (i.e. close, minimize, maximize buttons, title
|
|
bars and so on).</para>
|
|
|
|
<para>You may convert this to a trivial script and have it run
|
|
at startup automatically (e.g. by adding to
|
|
<quote>Sessions</quote> in a <application>GNOME</application>
|
|
desktop):</para>
|
|
|
|
<programlisting>#! /bin/sh
|
|
compiz --replace --sm-disable --ignore-desktop-hints ccp &
|
|
emerald --replace &</programlisting>
|
|
|
|
<para>Save this in your home directory as, for example,
|
|
<filename>start-compiz</filename> and make it
|
|
executable:</para>
|
|
|
|
<screen>&prompt.user; <userinput>chmod +x ~/start-compiz</userinput></screen>
|
|
|
|
<para>Then use the GUI to add it to <guimenuitem>Startup
|
|
Programs</guimenuitem> (located in
|
|
<guimenuitem>System</guimenuitem>,
|
|
<guimenuitem>Preferences</guimenuitem>,
|
|
<guimenuitem>Sessions</guimenuitem> on a
|
|
<application>GNOME</application> desktop).</para>
|
|
|
|
<para>To actually select all the desired effects and their
|
|
settings, execute (again as a normal user) the
|
|
<application>Compiz Config Settings Manager</application>:</para>
|
|
|
|
<screen>&prompt.user; <userinput>ccsm</userinput></screen>
|
|
|
|
<note>
|
|
<para>In <application>GNOME</application>, this can also be
|
|
found in the <guimenuitem>System</guimenuitem>,
|
|
<guimenuitem>Preferences</guimenuitem> menu.</para>
|
|
</note>
|
|
|
|
<para>If you have selected <quote>gconf support</quote> during
|
|
the build, you will also be able to view these settings using
|
|
<command>gconf-editor</command> under
|
|
<literal>apps/compiz</literal>.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="x11-understanding">
|
|
|
|
<title>Troubleshooting</title>
|
|
|
|
<para>If the mouse does not work, you will need to first configure
|
|
it before proceeding.
|
|
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>/usr/local/etc/hal/fdi/policy</filename>
|
|
directory. This file should contain the following
|
|
lines:</para>
|
|
|
|
<programlisting><?xml version="1.0" encoding="iso-8859-1"?>
|
|
<deviceinfo version="0.2">
|
|
<device>
|
|
<match key="info.capabilities" contains="input.keyboard">
|
|
<merge key="input.x11_options.XkbModel" type="string">pc102</merge>
|
|
<merge key="input.x11_options.XkbLayout" type="string">fr</merge>
|
|
</match>
|
|
</device>
|
|
</deviceinfo></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><filename>/usr/local/share/X11/xkb/rules/base.lst</filename>
|
|
lists the various keyboard, layouts and options
|
|
available.</para>
|
|
</note>
|
|
|
|
<indexterm><primary><application>&xorg;</application>
|
|
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
|
|
<application>&xorg;</application> log files, which contain
|
|
information on each device that the
|
|
<application>&xorg;</application> 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 <application>&xorg;</application> configuration
|
|
process is now complete. <application>&xorg;</application>
|
|
may be now started with the &man.startx.1; utility. The
|
|
<application>&xorg;</application> server may also be started
|
|
with the use of &man.xdm.1;.</para>
|
|
|
|
<sect2>
|
|
<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 <filename>agpgart</filename> AGP programming
|
|
interface for <application>&xorg;</application> 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>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<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 <name> <clock> <4 horiz. timings> <4 vert. timings></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>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="compiz-troubleshooting">
|
|
<title>Troubleshooting Compiz Fusion</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question xml:id="no-decorations">
|
|
<para>I have installed
|
|
<application>Compiz Fusion</application>, and
|
|
after running the commands you mention, my windows are
|
|
left without title bars and buttons. What is
|
|
wrong?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You are probably missing a setting in
|
|
<filename>/etc/X11/xorg.conf</filename>. Review this
|
|
file carefully and check especially the
|
|
<literal>DefaultDepth</literal> and
|
|
<literal>AddARGBGLXVisuals</literal>
|
|
directives.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="xorg-crash">
|
|
<para>When I run the command to start
|
|
<application>Compiz Fusion</application>, the X
|
|
server crashes and I am back at the console. What is
|
|
wrong?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If you check
|
|
<filename>/var/log/Xorg.0.log</filename>, you
|
|
will probably find error messages during the X
|
|
startup. The most common would be:</para>
|
|
|
|
<screen>(EE) NVIDIA(0): Failed to initialize the GLX module; please check in your X
|
|
(EE) NVIDIA(0): log file that the GLX module has been loaded in your X
|
|
(EE) NVIDIA(0): server, and that the module is the NVIDIA GLX module. If
|
|
(EE) NVIDIA(0): you continue to encounter problems, Please try
|
|
(EE) NVIDIA(0): reinstalling the NVIDIA driver.</screen>
|
|
|
|
<para>This is usually the case when you upgrade
|
|
<application>&xorg;</application>. You will need to
|
|
reinstall the <package>x11/nvidia-driver</package>
|
|
package so glx is built again.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</sect2>
|
|
</sect1>
|
|
</chapter>
|