Contents
The X Window System (X11) is the de facto standard for graphical user interfaces in UNIX. X is network-based, enabling applications started on one host to be displayed on another host connected over any kind of network (LAN or Internet). This chapter describes the setup and optimization of the X Window System environment, and provides background information about the use of fonts in SUSE Linux Enterprise®.
![]() | IBM System z: Configuring the Graphical User Interface |
|---|---|
IBM System z do not have any input and output devices supported by X.Org. Therefore, none of the configuration procedures described in this section apply. More relevant information for IBM System z can be found in Section 8.6, “Network Devices”. | |
By default, the X Window System is configured with the SaX2 interface, described in Section 8.14, “SaX2”. Alternatively it can be configured manually by editing the its configuration files.
![]() | Faulty X Configurations can Damage Your Hardware |
|---|---|
Be very careful when configuring your X Window System. Never start the X Window System until the configuration is finished. A misconfigured system can cause irreparable damage to your hardware (this applies especially to fixed-frequency monitors). The creators of this book and SUSE Linux Enterprise cannot be held responsible for any resulting damage. This information has been carefully researched, but this does not guarantee that all methods presented here are correct and cannot damage your hardware. | |
The command sax2
creates the /etc/X11/xorg.conf file. This is the primary
configuration file of the X Window System. Find
all the settings here concerning your graphics card, mouse, and monitor.
![]() | Using X -configure |
|---|---|
Use X -configure to configure your X setup if previous tries with SUSE Linux Enterprise's SaX2 have failed. If your setup involves proprietary binary-only drivers, X -configure cannot work. | |
The following sections describe the structure of the configuration file
/etc/X11/xorg.conf. It consists of several sections,
each one dealing with a certain aspect of the configuration. Each section
starts with the keyword Section <designation>
and ends with EndSection. The following convention
applies to all sections:
Section "designation" entry 1 entry 2 entry n EndSection
The section types available are listed in Table 26.1, “Sections in /etc/X11/xorg.conf”.
Table 26.1. Sections in /etc/X11/xorg.conf¶
Monitor, Device, and
Screen are explained in more detail.
Further information about the other sections can be found in
the manual pages of X.Org and
xorg.conf.
There can be several different Monitor
and Device sections in
xorg.conf. Even multiple
Screen sections are possible.
The ServerLayout
section determines which of these sections is used.
The screen section combines a monitor with a device section and determines the resolution and color depth to use. A screen section might resemble Example 26.1, “Screen Section of the File /etc/X11/xorg.conf”.
Example 26.1. Screen Section of the File /etc/X11/xorg.conf¶
Section "Screen"DefaultDepth 16
SubSection "Display"
Depth 16
Modes "1152x864" "1024x768" "800x600"
Virtual 1152x864
EndSubSection SubSection "Display" Depth 24 Modes "1280x1024" EndSubSection SubSection "Display" Depth 32 Modes "640x480" EndSubSection SubSection "Display" Depth 8 Modes "1280x1024" EndSubSection Device "Device[0]" Identifier "Screen[0]"
Monitor "Monitor[0]" EndSection
A device section describes a specific graphics card. You can have as many
device entries in xorg.conf as you like, provided
their names are differentiated using the keyword
Identifier. If you have more than
one graphics card installed, the sections are simply numbered in
order. The first one is called Device[0], the second
one Device[1], and so on. The following
file shows an excerpt from the Device
section of a computer with a Matrox Millennium PCI graphics card (as
configured by SaX2):
Section "Device" BoardName "MGA2064W" BusID "0:19:0"Driver "mga"
Identifier "Device[0]" VendorName "Matrox" Option "sw_cursor" EndSection
The behavior of the X server or of the driver can also be influenced through
additional options. An example of this is the option
sw_cursor, which is set in the device section. This
deactivates the hardware mouse cursor and depicts the mouse cursor using
software. Depending on the driver module, there are various options
available, which can be found in the description files of the driver modules
in the directory
/usr/share/doc/.
Generally valid options can also be found in the manual pages
(man package_namexorg.conf,
man X.Org, and
man 4 chips).
If the graphics card has multiple video connectors, it is possible to configure the different devices of this single card as one single view. Use SaX2 to set up your graphics interface this way.
Like the Device sections, the
Monitor and Modes sections
describe one monitor each. The configuration file
/etc/X11/xorg.conf can contain as many
Monitor sections as desired. Each
Monitor section references a
Modes section with the line
UseModes if available. If no
Modes section is available for the
Monitor section, the X server calculates
appropriate values from the general synchronization values. The server layout
section specifies which Monitor section is
relevant.
Monitor definitions should only be set by experienced users. The
modelines are an important part of the
Monitor sections.
Modelines set horizontal and vertical timings for the respective
resolution. The monitor properties, especially
the allowed frequencies, are stored in the Monitor
section.
![]() | |
Unless you have in-depth knowledge of monitor and graphics card functions, do not change the modelines, because this could severely damage your monitor. | |
Those who try to develop their own monitor descriptions should be
very familiar with the documentation in
/usr/X11R6/lib/X11/doc/ (the package
xorg-x11-doc must be installed).
Manual specification of modelines is rarely required today. If you are using a modern multisync monitor, the allowed frequencies and optimal resolutions can, as a rule, be read directly from the monitor by the X server via DDC, as described in the SaX2 configuration section. If this is not possible for some reason, use one of the VESA modes included in the X server. This will work with almost all graphics card and monitor combinations.
The installation of additional fonts in SUSE Linux Enterprise is very easy. Simply copy
the fonts to any directory located in the X11 font path (see
Section 26.2.1, “X11 Core Fonts”). The installation
directory should be a subdirectory of the
directories configured in /etc/fonts/fonts.conf (see
Section 26.2.2, “Xft”) or included into
this file with /etc/fonts/suse-font-dirs.conf.
The following is an excerpt from
/etc/fonts/suse-font-dirs.conf. This file is
included into the configuration, because it is linked into the
directory /etc/fonts/conf.d which is included
by /etc/fonts/fonts.conf. In this directory,
all files or symbolic links starting with a
two digit number are loaded by fontconfig. For a
more detailed explanation of this functionality, have a look at
/etc/fonts/conf.d/README.
<!-- Font directory list --> <dir>/usr/share/fonts</dir> <dir>/usr/X11R6/lib/X11/fonts</dir> <dir>/opt/kde3/share/fonts</dir> <dir>/usr/local/share/fonts</dir> <dir>~/.fonts</dir> <dir>~/.fonts/kde-override</dir> <include ignore_missing="yes">suse-font-dirs.conf</include>
/etc/fonts/suse-font-dirs.conf is automatically
generated to pull in fonts that ship with (mostly third party) applications
like LibreOffice, Java or Adobe Acrobat Reader. Some typical entries of
/etc/fonts/suse-font-dirs.conf would look like the
following:
<dir>/usr/lib/ooo-2.0/share/fonts</dir> <dir>/usr/lib/ooo-2.0/share/fonts/truetype</dir> <dir>/usr/lib/jvm/java-1.5.0-sun-1.5.0_update10/jre/lib/fonts</dir> <dir>/usr/X11R6/lib/Acrobat7/Resource/Font</dir> <dir>/usr/X11R6/lib/Acrobat7/Resource/Font/PFM</dir>
To install additional fonts systemwide, manually copy the font files to a
suitable directory (as root), such
as /usr/share/fonts/truetype. Alternatively, the task
can be performed with the KDE font installer in the KDE Control Center. The
result is the same.
Instead of copying the actual fonts, you can also create symbolic links. For
example, you may want to do this if you have licensed fonts on a mounted
Windows partition and want to use them. Subsequently, run
SuSEconfig --module fonts
.
SuSEconfig --module fonts executes the
script /usr/sbin/fonts-config, which handles the font
configuration. For more information on this script, refer to its manual page
(man fonts-config ).
The procedure is the same for bitmap fonts, TrueType and OpenType fonts, and Type1 (PostScript) fonts. All these font types can be installed into any directory.
X.Org contains two completely different font systems: the old and the newly designed system. The following sections briefly describe these two systems.
Today, the X11 core font system supports not only bitmap fonts but also scalable fonts, like Type1 fonts, TrueType, and OpenType fonts. Scalable fonts are only supported without antialiasing and subpixel rendering and the loading of large scalable fonts with glyphs for many languages may take a long time. Unicode fonts are also supported, but their use may be slow and require more memory.
The X11 core font system has a few inherent weaknesses. It is outdated and can no longer be extended in a meaningful way. Although it must be retained for reasons of backward compatibility, the more modern Xft and fontconfig system should be used if at all possible.
For its operation, the X server needs to know which fonts are available and
where in the system it can find them. This is handled by a
FontPath variable, which contains the path to all valid
system font directories. In each of these directories, a file named
fonts.dir lists the available fonts in this directory.
The FontPath is generated by the X server at start-up.
It searches for a valid fonts.dir file in each of the
FontPath entries in the configuration file
/etc/X11/xorg.conf. These entries are found in the
Files section. Display the actual
FontPath with
xset q. This path may also be
changed at runtime with xset. To add an additional path,
use xset +fp <path>. To
remove an unwanted path, use xset -fp
<path>.
If the X server is already active, newly installed fonts in mounted
directories can be made available with the command
xset fp rehash. This command is
executed by SuSEconfig --module
fonts. Because the command xset needs access
to the running X server, this only works if
SuSEconfig --module fonts is
started from a shell that has access to the running X server. The
easiest way to achieve this is to assume
root permissions by
entering su and the root password.
su transfers the access permissions of the
user who started the X server to the root shell.
To check if the fonts were installed correctly and are
available by way of the X11 core font system, use the command
xlsfonts to list all available fonts.
By default, SUSE Linux Enterprise uses UTF-8 locales. Therefore, Unicode fonts
should be preferred (font names ending with iso10646-1
in xlsfonts output). All available Unicode fonts can be
listed with xlsfonts | grep
iso10646-1. Nearly all Unicode fonts available in SUSE Linux Enterprise
contain at least the glyphs needed for European languages (formerly encoded
as iso-8859-*).
From the outset, the programmers of Xft made sure that scalable fonts including antialiasing are supported well. If Xft is used, the fonts are rendered by the application using the fonts, not by the X server as in the X11 core font system. In this way, the respective application has access to the actual font files and full control of how the glyphs are rendered. This constitutes the basis for the correct display of text in a number of languages. Direct access to the font files is very useful for embedding fonts for printing to make sure that the printout looks the same as the screen output.
In SUSE Linux Enterprise, the two desktop environments KDE and GNOME, Mozilla, and many other applications already use Xft by default. Xft is already used by more applications than the old X11 core font system.
Xft uses the fontconfig library for finding fonts and influencing how
they are rendered. The properties of fontconfig are controlled by the
global configuration file /etc/fonts/fonts.conf and
the user-specific configuration file ~/.fonts.conf.
Each of these fontconfig configuration files must begin with
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig>
and end with
</fontconfig>
To add directories to search for fonts, append lines such as the following:
<dir>/usr/local/share/fonts/</dir>
However, this is usually not necessary. By default, the user-specific
directory ~/.fonts is already entered in
/etc/fonts/fonts.conf. Accordingly, all you need to do
to install additional fonts is to copy them to
~/.fonts.
You can also insert rules that influence the appearance of the fonts. For example, enter
<match target="font"> <edit name="antialias" mode="assign"> <bool>false</bool> </edit> </match>
to disable antialiasing for all fonts or
<match target="font"> <test name="family"> <string>Luxi Mono</string> <string>Luxi Sans</string> </test> <edit name="antialias" mode="assign"> <bool>false</bool> </edit> </match>
to disable antialiasing for specific fonts.
By default, most applications use the font names
sans-serif (or the equivalent
sans), serif, or
monospace. These are not real fonts
but only aliases that are resolved to a suitable font,
depending on the language setting.
Users can easily add rules to
~/.fonts.conf to
resolve these aliases to their favorite fonts:
<alias> <family>sans-serif</family> <prefer> <family>FreeSans</family> </prefer> </alias> <alias> <family>serif</family> <prefer> <family>FreeSerif</family> </prefer> </alias> <alias> <family>monospace</family> <prefer> <family>FreeMono</family> </prefer> </alias>
Because nearly all applications use these aliases by default, this affects almost the entire system. Thus, you can easily use your favorite fonts almost everywhere without having to modify the font settings in the individual applications.
Use the command fc-list to find out which fonts
are installed and available for use. For instance, the command
fc-list returns a list of all fonts. To find out which
of the available scalable fonts (:scalable=true) contain
all glyphs required for Hebrew (:lang=he), their font
names (family), their style (style),
their weight (weight), and the name of the files
containing the fonts, enter the following command:
fc-list ":lang=he:scalable=true" family style weight
The output of this command could look like the following:
FreeSansBold.ttf: FreeSans:style=Bold:weight=200 FreeMonoBoldOblique.ttf: FreeMono:style=BoldOblique:weight=200 FreeSerif.ttf: FreeSerif:style=Medium:weight=80 FreeSerifBoldItalic.ttf: FreeSerif:style=BoldItalic:weight=200 FreeSansOblique.ttf: FreeSans:style=Oblique:weight=80 FreeSerifItalic.ttf: FreeSerif:style=Italic:weight=80 FreeMonoOblique.ttf: FreeMono:style=Oblique:weight=80 FreeMono.ttf: FreeMono:style=Medium:weight=80 FreeSans.ttf: FreeSans:style=Medium:weight=80 FreeSerifBold.ttf: FreeSerif:style=Bold:weight=200 FreeSansBoldOblique.ttf: FreeSans:style=BoldOblique:weight=200 FreeMonoBold.ttf: FreeMono:style=Bold:weight=200
Important parameters that can be queried with fc-list:
Table 26.2. Parameters of fc-list ¶
|
Parameter |
Meaning and Possible Values |
|---|---|
|
|
Name of the font family, for example, |
|
|
The manufacturer of the font, for example,
|
|
|
The font style, such as |
|
|
The language that the font supports, for example,
|
|
|
The font weight, such as |
|
|
The slant, usually |
|
|
The name of the file containing the font. |
|
|
|
|
|
|
|
|
|
|
|
Font size in pixels. In connection with fc-list, this option only makes sense for bitmap fonts. |
Install the packages xorg-x11-doc and howtoenh to get more in-depth information on
X11. More information on the X11 development can be found on the project's
home page at http://www.x.org.