Table of Contents
There are a few (meta)packages provided to ease installation.
Table 7.1. List of key (meta)packages for X Window
||I:50||56||X libraries, an X server, a set of fonts, and a group of basic X clients and utilities (metapackage)|
||V:31, I:56||276||full suits of the X server and its configuration|
||V:10, I:54||140||miscellaneous assortment of X clients|
||V:46, I:91||568||filesystem infrastructure for the X Window System|
||I:11||5008||miscellaneous documentation for the X.Org software suite|
||I:1.5||6504||X protocol, extension, and library technical specifications|
||V:29, I:57||1956||generate the Debian menu for all menu-aware applications|
Gtk+ frontend to
||I:54||76||convert the Debian menu structure to the freedesktop.org xdg menu structure|
||V:12, I:49||256||utilities to integrate desktop environment provided by the freedesktop.org|
||I:33||20||standard GNOME desktop environment (metapackage)|
||I:10||NOT_FOUND||core KDE desktop environment (metapackage)|
||I:5||48||Xfce lightweight desktop environment (metapackage)|
||I:1.8||36||LXDE lightweight desktop environment (metapackage)|
||V:1.1, I:3||4332||Fluxbox: package for highly configurable and low resource X window manager|
For the basics of X, refer to
X(7), the LDP XWindow-User-HOWTO.
Task menu may be out of sync with the latest package transition state under Debian
See Window Managers for X for the guide to the X window manager and the desktop environment.
Debian menu system provides a general interface for both text- and X-oriented programs with
update-menus(1) from the
menu package. Each package installs its menu data in the "
/usr/share/menu/" directory. See "
Each package which is compliant to Freedesktop.org's xdg menu system installs its menu data provided by "
*.desktop" under "
/usr/share/applications/". Modern desktop environments which are compliant to Freedesktop.org standard use these data to generate their menu using the
xdg-utils package. See "
In order to obtain access to the traditional Debian menu under GNOME desktop environment, you must install the
menu-xdg package, click "System" → "Preference" → "Main Menu", and check the box for "Debian".
You may need to do the similar for other modern desktop environments which are compliant to Freedesktop.org standard.
The X Window System is activated as a combination of the server and client programs. The meaning for the words server and client with respect to the words local and remote requires attention here.
Table 7.2. List of server/client terminology
|X server||a program run on a local host connected to the user's display and input devices.|
|X client||a program run on a remote host that processes data and talks to the X server.|
|application server||a program run on a remote host that processes data and talks to the clients.|
|application client||a program run on a local host connected to the user's display and input devices.|
xorg(1) for X server information.
X server (post-
The following (re)configures an X server by generating a new "
/etc/X11/xorg.conf" file using
# dpkg-reconfigure --priority=low x11-common # dpkg-reconfigure --priority=low xserver-xorg
If you have manually edited this "
/etc/X11/xorg.conf" file but would like it to be automatically updated again, run the following command.
# sudo dpkg-reconfigure -phigh xserver-xorg
Please check your X configuration with respect to the specification of your monitor carefully. For the large high resolution CRT monitor, it is a good idea to set the refresh rate as high as your monitor can handle (85 Hz is great, 75 Hz is OK) to reduce flicker. For the LCD monitor, slower standard refresh rate (60Hz) is usually fine due to its slow response.
Be careful not to use too high refresh rate which may cause fatal hardware failure of your monitor system.
There are several ways of getting the "X server" (display side) to accept connections from an "X client" (application side).
Table 7.3. List of connection methods to the X server
||V:10, I:54||140||checked||no||local connection via pipe|
||V:53, I:98||2076||checked||yes||remote network connection|
|GNOME display manager||
||V:30, I:43||15236||checked||no(XDMCP)||local connection via pipe|
|KDE display manager||
||V:10, I:13||4272||checked||no(XDMCP)||local connection via pipe|
|X display manager||
||V:0.8, I:2||688||checked||no(XDMCP)||local connection via pipe|
|WindowMaker display manager||
||V:23, I:84||1964||checked||no(XDMCP)||local connection via pipe|
|LTSP display manager||
||V:0.01, I:0.10||296||checked||yes||remote SSH network connection (thin client)|
Do not use remote TCP/IP connection over unsecured network for X connection unless you have very good reason such as use of encryption. A remote TCP/IP socket connection without encryption is prone to the eavesdropping attack and is disabled by default on the Debian system. Use "
You can dare to enable remote TCP/IP connection by setting "
LTSP stands for Linux Terminal Server Project.
The X Window System is usually started as an X session which is the combination of an X server and connecting X clients. For the normal desktop system, both of them are executed on a workstation.
The X session is started by the following.
startxcommand started from the command line
*dmstarted from the end of the start up script in "
?" corresponding to the runlevel) directory
The start up script for the display manager daemons checks the content of the "
See Section 8.3.5, “Specific locale only under X Window” for initial environment variables of the X display manager.
Essentially, all these programs execute the "
/etc/X11/Xsession" script. Then the "
/etc/X11/Xsession" script performs
run-parts(8) like action to execute scripts in the "
/etc/X11/Xsession.d/" directory. This is essentially an execution of a first program which is found in the following order with the
exec builtin command.
/etc/X11/Xsession" by the X display manager, if it is defined.
~/.xsession" or "
~/.Xsession" script, if it is defined.
/usr/bin/x-session-manager" command, if it is defined.
/usr/bin/x-window-manager" command, if it is defined.
/usr/bin/x-terminal-emulator" command, if it is defined.
This process is affected by the content of "
/etc/X11/Xsession.options". The exact programs to which these "
/usr/bin/x-*" commands point, are determined by the Debian alternative system and changed by "
update-alternatives --config x-session-manager", etc.
gdm(1) lets you select the session type (or desktop environment: Section 7.2, “Setting up desktop environment”), and language (or locale: Section 8.3, “The locale”) of the X session from its menu. It keeps the selected default value in "
~/.dmrc" as the following.
[Desktop] Session=default Language=ja_JP.UTF-8
On a system where "
/etc/X11/Xsession.options" contains a line "
allow-user-xsession" without preceding "
#" characters, any user who defines "
~/.xsession" or "
~/.Xsession" is able to customize the action of "
/etc/X11/Xsession" by completely overriding the system code. The last command in the "
~/.xsession" file should use form of "
exec some-window/session-manager" to start your favorite X window/session managers.
Here are new methods to customize the X session without completely overriding the system code as above.
gdmcan select a specific session and set it as the argument of "
~/.xsessionrc" file is executed as a part of start up process. (desktop independent)
~/.gnomerc" file is executed as a part of start up process. (GNOME desktop only)
~/.gnome2/session" file etc.
The use of "
ssh -X" enables a secure connection from a local X server to a remote application server.
X11Forwarding" entries to "
yes" in "
/etc/ssh/sshd_config" of the remote host, if you want to avoid "
-X" command-line option.
Start the X server on the local host.
xterm in the local host.
ssh(1) to establish a connection with the remote site as the following.
localname @ localhost $ ssh -q -X firstname.lastname@example.org Password:
Run an X application command, e.g. "
gimp", on the remote site as the following.
loginname @ remotehost $ gimp &
This method can display the output from a remote X client as if it were locally connected through a local UNIX domain socket.
Secure X terminal via the Internet, which displays remotely run entire X desktop environment, can easily achieved by using specialized package such as
ldm. Your local machine becomes a secure thin client to the remote application server connected via SSH.
If you want to add similar feature to your normal display manager
gdm, create executable shell script at "
/usr/local/bin/ssh-session" as the following.
#!/bin/sh -e # Based on gdm-ssh-session in gdm source (GPL) ZENITY=$(type -p zenity) TARGETHOST=$($ZENITY --width=600 \ --title "Host to connect to" --entry \ --text "Enter the name of the host you want to log in to as email@example.com:") TARGETSESSION=$($ZENITY --width=600 --height=400 \ --title "Remote session name" --list --radiolist --text "Select one" \ --column " " --column "Session" --column "description" --print-column 2 \ TRUE "/etc/X11/Xsession" "Debian" \ FALSE "/etc/X11/xinit/Xclients" "RH variants" \ FALSE "gnome-session" "GNOME session" \ FALSE "xterm" "Safe choice" \ FALSE "rxvt" "Safe choice" \ FALSE "gnome-terminal" "Safe choice") echo "Connecting to "$TARGETHOST" with $TARGETSESSION" /usr/bin/ssh -A -X -T -n "$TARGETHOST" "$TARGETSESSION" #SSH_ASKPASS=/usr/bin/ssh-askpass /usr/bin/ssh -A -X -T -n "$TARGETHOST" "$TARGETSESSION"
Add followings to "
[Desktop Entry] Encoding=UTF-8 Name=SSH Comment=This session logs you into a remote host using ssh Exec=/usr/local/bin/ssh-session Type=Application
The font configuration on Debian system can be summarized with historical perspective as follows.
Debian Font Manager (defome) was created to automate this font configuration by providing a Debian specific glue layer in 2000.
Fontconfig 2.0 was created to provide a distribution independent library for configuring and customizing font access in 2002.
lennyrelease, almost all programs which access font data seem to use this system.
Font supports on X Window System can be summarized as follows.
Legacy X server side font support system
Modern X client side font support system
fonts.conf(5) for its configuration.
Table 7.4. Table of packages to support X Window font systems
||V:32, I:70||472||X Window System font utility programs|
||V:43, I:75||148||Xft, a library that connects X applications with the FreeType font rasterization library|
||V:58, I:87||780||FreeType 2.0 font rasterization library|
||V:36, I:74||460||Fontconfig, a generic font configuration library — support binaries|
||V:21, I:82||416||Fontconfig, a generic font configuration library — configuration data|
||V:27, I:84||564||Debian Font Manager — automatic font configuration framework|
||I:41||156||TrueType and CID fonts configuration for X (with CJK support)|
You can check font configuration information by the following.
xset q" for core X11 font path
fc-match" for fontconfig font default
fc-list" for available fontconfig fonts
"The Penguin and Unicode" is a good overview of modern X Window System. Other documentations at http://unifont.org/ should provide good information on Unicode fonts, Unicode-enabled software, internationalization, and Unicode usability issues on free/libre/open source (FLOSS) operating systems.
You should rely on fontconfig infrastructure to configure fonts on the Debian system. Debian Font Manager (
There are 2 major types of computer fonts.
While scaling of bitmap fonts causes jugged image, scaling of outline/stroke fonts produces smooth image.
Bitmap fonts on the Debian system are usually provided by compressed X11 pcf bitmap font files having their file extension "
Outline fonts on the Debian system are provided by the following.
Table 7.5. Table of corresponding PostScript Type 1 fonts
|font package||popcon||size||sans-serif font||serif font||monospace font||source of font|
|gsfonts *||V:16, I:68||4792||Nimbus Sans L||Nimbus Roman No9 L||Nimbus Mono L||URW (Adobe compatible size)|
|gsfonts-x11 *||I:29||116||Nimbus Sans L||Nimbus Roman No9 L||Nimbus Mono L||X font support with PostScript Type 1 fonts.|
|t1-cyrillic *||I:1.9||4996||Free Helvetian||Free Times||Free Courier||URW extended (Adobe compatible size)|
|lmodern *||V:2, I:16||46180||LMSans*||LMRoman*||LMTypewriter*||scalable PostScript and OpenType fonts based on Computer Modern (from TeX)|
Table 7.6. Table of corresponding TrueType fonts
|font package||popcon||size||sans-serif font||serif font||monospace font||source of font|
|ttf-mscorefonts-installer *||I:11||196||Arial||Times New Roman||Courier New||Microsoft (Adobe compatible size) (This installs non-free data)|
|ttf-liberation *||I:40||1696||Liberation Sans||Liberation Serif||Liberation Mono||Liberation Fonts project (Microsoft compatible size)|
|ttf-freefont *||I:21||4232||FreeSans||FreeSerif||FreeMono||GNU freefont (Microsoft compatible size)|
|ttf-dejavu *||I:81||68||DejaVu Sans||DejaVu Serif||DejaVu Sans Mono||DejaVu, Bitstream Vera with Unicode coverage|
|ttf-dejavu-core *||I:58||2584||DejaVu Sans||DejaVu Serif||DejaVu Sans Mono||DejaVu, Bitstream Vera with Unicode coverage (sans, sans-bold, serif, serif-bold, mono, mono-bold)|
|ttf-dejavu-extra *||I:58||5768||N/A||N/A||N/A||DejaVu, Bitstream Vera with Unicode coverage (oblique, italic, bold-oblique, bold-italic, condensed)|
|ttf-unifont *||I:3||16060||N/A||N/A||unifont||GNU Unifont, with all printable character code in Unicode 5.1 Basic Multilingual Plane (BMP)|
aptitude(8) helps you find additional fonts easily.
Since Free fonts are sometimes limited, installing or sharing some commercial TrueType fonts is an option for a Debian users. In order to make this process easy for the user, some convenience packages have been created.
You'll have a really good selection of TrueType fonts at the expense of contaminating your Free system with non-Free fonts.
Here are some key points focused on fonts of CJK characters.
Table 7.7. Table of key words used in CJK font names to indicate font types
|font type||Japanese font name||Chinese font name||Korean font name|
|sans-serif||gothic, ゴチック hei,||gothic dodu||m, gulim, gothic|
|serif||mincho, 明朝 so||ng, ming ba||tang|
Font name such as "VL PGothic" with "P" is a proportional font which corresponds to the fixed width "VL Gothic" font.
For example, Shift_JIS code table comprises 7070 characters. They can be grouped as the following.
Double-byte characters occupy double width on console terminals which uses CJK fixed width fonts. In order to cope with such situation, Hanzi Bitmap Font (HBF) File with file extension "
.hbf" may be deployed for fonts containing single-byte and double-byte characters.
In order to cover complicated code space of characters, CID keyed PostScript Type 1 font is used with CMap files starting themselves with "
%!PS-Adobe-3.0 Resource-CMap". This is rarely used for normal X display but used for PDF rendering etc. (see Section 7.7.2, “X utility applications”).
The multiple glyphs are expected for some Unicode code points due to Han unification. One of the most annoying ones are "U+3001 IDEOGRAPHIC COMMA" and "U+3002 IDEOGRAPHIC FULL STOP" whose character positions differ among CJK countries. Configuring priority of Japanese centric fonts over Chinese ones using "
Here is a list of basic office applications (OO is OpenOffice.org).
Table 7.8. List of basic X office applications
||V:24, I:46||25020||OO||word processor|
||V:18, I:44||9052||OO||database management|
||V:21, I:45||8808||OO||vector graphics editor (draw)|
||V:19, I:45||1484||OO||mathematical equation/formula editor|
||V:4, I:7||8348||GNOME||word processor|
||V:11, I:48||13476||GTK||bitmap graphics editor (paint)|
||V:13, I:29||61584||GNOME||vector graphics editor (draw)|
||V:1.6, I:4||620||GNOME||flowchart and diagram editor|
||V:0.17, I:0.2||1412||GNOME||database management|
||V:0.8, I:6||7468||GNOME||project management|
||V:1.2, I:2||3568(*)||KDE||word processor|
||V:0.3, I:2||NOT_FOUND||KDE||database management|
||V:1.1, I:2||NOT_FOUND||KDE||flowchart and diagram editor|
||V:1.0, I:2||2576(*)||KDE||vector graphics editor (draw)|
||V:1.2, I:2||10068(*)||KDE||bitmap graphics editor (paint)|
||V:0.2, I:2||5212(*)||KDE||project management|
||V:1.0, I:2||2660(*)||KDE||graph and chart drawing program|
||V:0.9, I:1.7||NOT_FOUND||KDE||mathematical equation/formula editor|
||V:0.9, I:1.7||NOT_FOUND||KDE||business quality report generator|
Here is a list of basic utility applications which caught my eyes.
Table 7.9. List of basic X utility applications
||V:26, I:42||1032||GNOME||document(pdf) viewer|
||V:6, I:13||NOT_FOUND||KDE3||document(pdf) viewer|
||V:2, I:4||3312||KDE4||document(pdf) viewer|
||V:22, I:39||10264||GNOME||Personal information Management (groupware and email)|
||V:1.9, I:12||1328||KDE||Personal information Management (groupware and email)|
||V:0.6, I:3||26864||KDE||desktop page layout editor|
||V:0.16, I:0.8||1088||GNOME||label editor|
||V:0.06, I:0.4||2180||KDE||barcode and label printing application|
||V:0.8, I:2||5840||GNOME||personal accounting|
||V:0.09, I:0.4||896||GTK||personal accounting|
||V:0.2, I:0.9||9488||KDE||personal accounting|
||V:7, I:40||744||GTK||scanner frontend|
||V:1.1, I:10||NOT_FOUND||KDE||scanner frontend|
Installing softwares such as
xmodmap(1) is a utility for modifying keymaps and pointer button mappings in the X Window System.
To get the keycode, run
xev(1) in the X and press keys. To get the meaning of keysym, look into the MACRO definition in "
/usr/include/X11/keysymdef.h" file (
x11proto-core-dev package). All "
#define" statements in this file are named as "
XK_" prepended to keysym names.
Most traditional X client programs, such as
xterm(1), can be started with a set of standard command line options to specify geometry, font, and display.
They also use the X resource database to configure their appearance. The system-wide defaults of X resources are stored in "
/etc/X11/Xresources/*" and application defaults of them are stored in "
/etc/X11/app-defaults/*". Use these settings as the starting points.
~/.Xresources" file is used to store user resource specifications. This file is automatically merged into the default X resources upon login. To make changes to these settings and make them effective immediately, merge them into the database using the following command.
$ xrdb -merge ~/.Xresources
Learn everything about
xterm(1) at http://dickey.his.com/xterm/xterm.faq.html.
Never start the X display/session manager under the root account by typing in
Easy ways to run a particular X client, e.g. "
foo" as root is to use
sudo(8) etc. as the following.
$ sudo foo &
$ sudo -s # foo &
$ gksu foo &
$ ssh -X root@localhost # foo &
In order for the X client to connect to the X server, please note the following.
$XAUTHORITY" and "
$DISPLAY" environment variables must be copied to the new user's ones.
$XAUTHORITY" environment variable must be readable by the new user.
gksu package (popcon: V:26, I:51) is a specialized GTK+ GUI package for gaining the root privileges. It can be configured to use
sudo(8) as its backend depending on the "
/apps/gksu/sudo-mode" gconf key. You can edit gconf key using
gconf-editor(1) (menu: "Applications" → "System Tools" → "Configuration Editor").