Linux:4 X Window System

From HandWiki

X Window System

The X Window System, commonly called X, is a graphical windowing interface that comes with all popular Linux distributions. X is available for many Unix-based operating systems; the version of X that runs on Linux systems with x86-based CPUs is called "XFree86." The current version of X is 11, Revision 6--or "X11R6."

All the command-line tools and most of the applications that you can run in the console can run in X; also available are numerous applications written specifically for X.

This chapter shows you how to get around in X: how to start it and stop it, run programs within it, manipulate windows, and customize X to your liking. See The Linux XFree86 HOWTO for information on installing X.

Running X

When you start X, you should see a mouse pointer appear on the screen as a large, black "X." If your X is configured to start any tools or applications, they should each start and appear in individual windows.

The root window is the background behind all of the other windows. It is usually set to a color, but you can change it. Each program or application in X runs in its own window. Each window has a decorative border on all four sides, called the window border; L-shaped corners, called frames; a top window bar, called the title bar, which displays the name of the window; and several title bar buttons on the left and right sides of the title bar.

The entire visible work area, including the root window and any other windows, is called the desktop. The box in the lower right-hand corner, called the pager, allows you to move about a large desktop.

A window manager controls the way windows look and are displayed--the window dressing, as it were--and can provide some additional menu or program management capabilities. There are many different window managers to choose from, with a variety of features and capabilities.

Window managers typically allow you to customize the colors and borders that are used to display a window, as well as the type and location of buttons that appear on the window. For example, in the image above, the clock image itself is the oclock program; the blue outline around it is the window border, as drawn by the fvwm2 window manager. With the afterstep window manager.


There are many window managers you can choose from, all different; instead of describing only one, or describing all of them only superficially, this chapter shows the basics of X, which are common to all window managers. I try to make no assumptions as to which window manager you are using; while the fvwm family of window managers has long been a popular choice on most Linux-based systems, today other window managers--including WindowMaker (the binary itself is called wmaker), Enlightenment, AfterStep, and others--have all gained in popularity.

And recently, desktop environments have become popular. These are a collection of applications that run on top of the window manager (and X), with the purpose of giving your X session a standardized "look and feel"; these suites normally come with a few basic tools such as clocks and file managers. The two popular ones are GNOME and KDE, and while they generate a lot of press these days because of their graphical nature, both are changing very quickly and at the time of this writing are not yet ready for widespread, general use (and they can cause your system to crash).

If you have a recent Linux distribution and chose the default install, chances are good that you have either GNOME or KDE installed, with either the fvwm2 or wmaker window manager assigned as the default. (While you can have more than one window manager installed on your system, you can only run one at a time.)

Starting X

There are two ways to start X. Some systems run the X Display Manager, xdm, when the system boots, at which point a graphical xdm login screen appears; you can use this to log in directly to an X session. On systems not running xdm, the virtual console reserved for X will be blank until you start X by running the startx command.

  • To start X from a virtual console, type:

    $ startx RET
  • To run startx and redirect its output to a log file, type:

    $ startx >$HOME/startx.log 2>&1 RET

Both of these examples start X on the seventh virtual console, regardless of which console you are at when you run the command--your console switches to X automatically. You can always switch to another console during your X session. The second example writes any error messages or output of startx to a file called `startx.log' in your home directory.

On some systems, X starts with 8-bit color depth by default. Use startx with the special `-bpp' option to specify the color depth. Follow the option with a number indicating the color depth to use, and precede the option with two hyphen characters (`--'), which tells startx to pass the options which follow it to the X server itself.

  • To start X from a virtual console, and specify 16-bit color depth, type:

    $ startx -- -bpp 16 RET

NOTE: If your system runs xdm, you can always switch to the seventh virtual console (or whichever console xdm is running on), and then log in at the xdm login screen.

Stopping X

To end an X session, you normally choose an exit X option from a menu in your window manager.

  • To end your X session if you are running the fvwm2 window manager, click the left mouse button in the root window to pull up the start menu, and then choose Really quit? from the Exit Fvwm submenu.
  • To end your X session if you are running the afterstep window manager, click the left mouse button in the root window to pull up the start menu, and then choose Really quit? from the Exit Fvwm submenu.

If you started your X session with startx, these commands will return you to a shell prompt in the virtual console where the command was typed. If, on the other hand, you started your X session by logging in to xdm on the seventh virtual console, you will be logged out of the X session and the xdm login screen will appear; you can then switch to another virtual console or log in to X again.

To exit X immediately and terminate all X processes, press the CTRL-ALT-BKSP combination (if your keyboard has two ALT and CTRL keys, press the left ones). You'll lose any unsaved application data, but this is useful when you cannot exit your X session normally--in the case of a system freeze or other problem.

  • To exit X immediately, type:

    CTRL-ALT-BKSP

Running a Program in X

Programs running in an X session are called X clients. (The X Window System itself is called the X server). To run a program in X, you start it as an X client--either by selecting it from a menu, or by typing the command to run in an xterm shell window. Most window managers have a "start menu" of some kind; it's usually accessed by clicking the left mouse button anywhere on the root window. To run an X client from the start menu, click the left mouse button to select the client's name from the submenus.

For example, to start a square-shaped, analog-face clock from the start menu, click the left mouse button on the root window to make the menu appear, and click the left mouse button through the application menus and on `Xclock (analog)'. This starts the xclock client, specifying the option to display an analog face.

You can also start a client by running it from a shell window--useful for starting a client that isn't on the menu, or for when you want to specify options or arguments. When you run an X client from a shell window, it opens in its own window; run the client in the background to free the shell prompt in the shell window .

  • To run a digital clock from a shell window, type:

    $ xclock -digital & RET

This command runs xclock in the background from a shell window; the `digital' option specifies a digital clock.

The following sections explain how to specify certain command-line options common to most X clients--such as window layout, colors, and fonts.

Specifying Window Size and Location

Specify a window's size and location by giving its window geometry with the `geometry' option. Four fields control the width and height of the windows, and the window's distance ("offset") from the edge of the screen. It is specified in the form:

-geometry WIDTHxHEIGHT+XOFF+YOFF

The values in these four fields are usually given in pixels, although some applications measure WIDTH and HEIGHT in characters. While you must give these values in order, you can omit either pair. For example, to specify just the size of the window, give values for WIDTH and HEIGHT only.

  • To start a small xclock, 48 pixels wide and 48 pixels high, type:

    $ xclock -geometry 48x48 RET
  • To start a large xclock, 480 pixels wide and 500 pixels high, type:

    $ xclock -geometry 480x500 RET
  • To start an xclock with a width of 48 pixels and the default height, type:

    $ xclock -geometry 48 RET
  • To start an xclock with a height of 48 pixels and the default width, type:

    $ xclock -geometry x48 RET

You can give positive or negative numbers for the XOFF and YOFF fields. Positive XOFF values specify a position from the left of the screen; negative values specify a position from the right. If YOFF is positive, it specifies a position from the top of the screen; if negative, it specifies a position from the bottom of the screen. When giving these offsets, you must specify values for both XOFF and YOFF.

To place the window in one of the four corners of the desktop, use zeroes for the appropriate XOFF and YOFF values, as follows:

XOFF AND YOFF VALUES - WINDOW POSITION

+0+0 - Upper left corner.

+0-0 - Lower left corner.

-0+0 - Upper right corner.

-0-0 - Lower right corner.

  • To start a default size xclock in the lower left-hand corner, type:

    $ xclock -geometry +0-0 RET

Or, to put it all together, you can specify the size and location of a window with one geometry line that includes all four values.

  • To start an xclock with a width of 120 pixels, a height of 100 pixels, an x offset of 250 pixels from the right side of the screen, and a y offset of 25 pixels from the top of the screen, type:

    $ xclock -geometry 120x100-250+25 RET


Specifying Window Colors

The window colors available in your X session depend on your display hardware and the X server that is running. The xcolors tool will show all colors available on your X server and the names used to specify them. (Color names are not case sensitive.)

  • To list the available colors, type:

    $ xcolors RET

Press Q to exit xcolors.

To specify a color to use for the window background, window border, and text or graphics in the window itself, give the color name as an argument to the appropriate option: `-bg' for background color, `-bd' for window border color, and `-fg' for foreground color.

  • To start an xclock with a light blue window background, type:

    $ xclock -bg lightblue RET

You can specify any combination of these attributes.

  • To start an xclock with a sea green window background and a turquoise window foreground, type:

    $ xclock -bg seagreen -fg turquoise RET

Specifying Window Font

To get an X font name, use xfontsel. To specify a font for use in a window, use the `-fn' option followed by the X font name to use.

  • To start an xclock with a digital display, and specify that it use a 17-point Helvetica font for text, type:

    $ xclock -digital -fn -*-helvetica-*-r-*-*-17-*-*-*-*-*-*-* RET

This command starts an xclock that looks like this:

x-xclock-font


Specifying Additional Window Attributes

X applications often have up to three special menus with options for changing certain attributes. To see these menus, hold CTRL and click one of the three mouse buttons. The following table lists and describes various window attributes common to most X-aware applications.

WINDOW OPTIONS

DESCRIPTION

-bd color -bordercolor color


Use color for the window border color.

-bg color
-background color


Use color for the window background color.

-bw number
-borderwidth number


Specify the window border width in pixels.

-fg color
-foreground color


Use color for the window foreground text or graphics.

-fn font
-font font


Use font for the font to use.

-geometry geometry

Specify window geometry.

-iconic

Immediately iconify the program.

-title string

Use string for the window title.

Manipulating X Client Windows

Only one X client can accept keyboard and mouse input at a time, and that client is called the active client. To make a client active, move the mouse over the client's window. When a client is the active client, it is said to be "in focus." Depending on the window manager, the shape of the mouse pointer may change, or the window border and title bar of the active client may be different (a common default is steel blue for the active client color and gray for all other windows).

Each window has its own set of controls to manipulate that window. Here's how to perform basic window operations with the mouse.

Moving a Window

To move a window, click and hold the left mouse button on the window's title bar, then drag its window outline to a new position. When the outline is in place, release the left mouse button, and the window will move to the position held by the window outline.

Resizing a Window

To resize a window, click and hold the left mouse button on any one of the window's four frames, and move the mouse to shrink or grow the window outline. Release the left mouse button to resize the window to the size of the window outline.

Destroying a Window

To destroy a window and stop the program it displays, click the left mouse button on the `X' button in the upper right-hand corner of the title bar. This is useful for when the program running in the window has stopped responding. (Of course, if a program in a window has an option to stop it normally, you can always use it to stop the program and close its window.)

Minimizing a Window

To minimize a window, so that it disappears and an icon representing the running program is placed on the desktop, click the left mouse button on the `_' button in the upper right-hand corner of the title bar. This is also called iconifying a window.

Maximizing a Window

To maximize an icon to a window (or "deiconify" it), double-click the left mouse button on the icon name, directly beneath the icon itself. The icon will disappear and the window will return to its prior position.

Moving around the Desktop

Many window managers (including afterstep and fvwm2) allow you to use a virtual desktop, which lets you use more screen space than your monitor can display at one time. A virtual desktop can be larger than the display, in which case you can scroll though it with the mouse. The view which fills the display is called the viewport. When you move the mouse off the screen in a direction where the current (virtual) desktop extends, the view scrolls in that direction. Virtual desktops are useful for running many clients full screen at once, each in its own separate desktop.

Some configurations disallow scrolling between desktops; in that case, switch between them with a pager, which shows a miniature view of your virtual desktop, and allows you to switch between desktops. It is a sticky window (it "sticks to the glass" above all other windows), and is always in the lower right-hand corner of your screen, even when you scroll across a virtual desktop. Both your current desktop and active X client are highlighted in the pager.

The default fvwm2 virtual desktop size is nine desktops in a 3x3 grid.


In the preceding illustration, the current desktop is the second one in the top row. The first desktop contains two X client windows--a small one and a large one--but there are no windows in any other desktop (including the current one).

To switch to another desktop, click the left mouse button on its corresponding view in the pager, or use a keyboard shortcut. In fvwm2, the default keys for switching between desktops are ALT in conjunction with the arrow keys; in afterstep, use the CTRL key in place of ALT.

  • To switch to the desktop to the left of the current one while running fvw2, type ALT-{@leftarrow}. [GNU INFO BUG: any <> in the preceding line should be the <- and/or -> arrow keys.]
  • To switch to the desktop directly to the left of the current one while running afterstep, type CTRL-{@leftarrow}. [GNU INFO BUG: any <> in the preceding line should be the <- and/or -> arrow keys.]


Running a Shell in X

Use xterm to run a shell in a window. You can run commands in an xterm window just as you would in a virtual console; a shell in an xterm acts the same as a shell in a virtual console. Unlike a shell in a console, you can cut and paste text from an xterm to another X client.

To scroll through text that has scrolled past the top of the screen, type Shift-PgUp. The number of lines you can scroll back to depends on the value of the scrollback buffer, specified with the `-sl' option; its default value is 64.

There are many options for controlling xterm's emulation characteristics; consult the xterm man page for a complete listing .

NOTE: xterm is probably the most popular terminal emulator X client, but it is not the only one; others to choose from include wterm and rxvt, all with their own special features--try them all to find one you like.

Configuring X

There are some aspects of X that people usually want to configure right away. This section discusses some of the most popular, including changing the video mode, automatically running clients at startup, and choosing a window manager. You'll find more information on this subject in both The X Window User HOWTO and The Configuration HOWTO.

Switching between Video Modes

A video mode is a display resolution, given in pixels, such as 640x480. An X server can switch between the video modes allowed by your hardware and set up by the administrator; it is not uncommon for a machine running X to offer several video modes, so that 640x480, 800x600, and 1024x768 display resolutions are possible.

To switch to another video mode, use the + and - keys on the numeric keypad with the left CTRL and ALT keys. The + key switches to the next mode with a lower resolution, and the - key switches to the next mode with a higher resolution.

  • To switch to the next-lowest video mode, type:

    CTRL-ALT-+
  • To switch to the next-highest video mode, type:

    CTRL-ALT--

Type either of the above key combinations repeatedly to cycle through all available modes.

Running X Clients Automatically

The `.xsession' file, a hidden file in your home directory, specifies the clients that are automatically run when your X session first starts. It is just a shell script, usually containing a list of clients to run. You can edit your `.xsession' file in a text editor, and if this file doesn't exist, you can create it.

Clients start in the order in which they are listed, and the last line should specify the window manager to use. The following example `.xsession' file starts an xterm with a black background and white text, puts an `oclock' (a round clock) window in the upper left-hand corner, starts the Emacs text editor, and then starts the fvwm2 window manager:

#! /bin/sh
#
# A sample .xsession file.

xterm -bg black -fg white &
oclock -geometry +0+0 &
emacs &
exec /usr/bin/X11/fvwm2


All clients start as background jobs, with the exception of the window manager on the last line, because when this file runs, the X session is running in the foreground. Always put an ampersand (`&') character at the end of any command line you put in your `.xsession' file, except for the line giving the window manager on the last line.

Changing the Root Window Parameters

By default, the root window background is painted gray with a weaved pattern. To draw these patterns, X tiles the root window with a bitmap, which is a black-and-white image stored in a special file format. X comes with some bitmaps installed in the `/usr/X11R6/include/bitmaps/' directory; the default bitmap file is `root_weave' (you can make your own patterns with the bitmap tool.

Use xsetroot to change the color and bitmap pattern in the root window.

To change the color, use the `-solid' option, and give the name of the color to use as an argument. (Use xcolors to get a list of possible color names.

  • To change the root window color to blue violet, type:

    $ xsetroot -solid blueviolet RET

To change the root window pattern, use the `-bitmap' option, and give the name of the bitmap file to use.

  • To tile the root window with a star pattern, type:

    $ xsetroot -bitmap /usr/X11R6/include/bitmaps/star RET

When specifying a pattern, use the `-fg' and `-bg' options to specify the foreground and background colors.

  • To tile the root window with a light slate gray star pattern on a black background, type (all on one line):

    $ xsetroot -fg slategray2 -bg black -bitmap
    /usr/X11R6/include/bitmaps/star RET 

Use xsetroot with the special `-gray' option to change the root window to a shade of gray designed to be easy on the eyes, with no pattern.

  • To make the root window a gray color with no pattern, type:

    $ xsetroot -gray RET

NOTE: You can also put an image in the window (although this consumes memory that could be spared for a memory-hogging Web browser instead.

Choosing a Window Manager

Yes, there are many window managers to choose from. Some people like the flashiness of Enlightenment, running with KDE or GNOME, while others prefer the spartan wm2---the choice is yours.

The following table describes some of the more popular window managers currently available.

WINDOW MANAGER - DESCRIPTION

9wm - is a simple window manager inspired by AT&T's Plan 9 window manager--it does not use title bars or icons. It should appeal to those who like the wily text editor. {@sf{Debian}}: `9wm' {@sf{WWW}}: ftp://ftp.cs.su.oz.au/dhog/9wm/

afterstep - AfterStep is inspired by the look and feel of the NeXTSTEP interface. {@sf{Debian}}: `afterstep' {@sf{WWW}}: http://www.afterstep.org/

enlightenment - Enlightenment is a graphics-intensive window manager that uses desktop "themes" for decorating the various controls of the X session. {@sf{Debian}}: `enlightenment' {@sf{WWW}}: http://www.enlightenment.org/

fvwm95 - makes X look like a certain proprietary, corporate OS from circa 1995. {@sf{Debian}}: `fvwm95' {@sf{WWW}}: http://www.foxproject.org/xclass/fvwm95.html

twm - The Tab Window Manager is an older, simple window manager that is available on almost every system. (It's also sometimes called Tom's Window Manager, named after its primary author, Tom LaStrange.) {@sf{Debian}}: `twm'

wm2 - is a minimalist, configuration-free window manager. {@sf{Debian}}: `wm2' {@sf{WWW}}: http://www.all-day-breakfast.com/wm2/