Basic Xorg-7 Software Introduction

Xorg is a freely redistributable, open-source implementation of the X Window System. This system provides a client/server interface between display hardware (the mouse, keyboard, and video displays) and the desktop environment, while also providing both the windowing infrastructure and a standardized application interface (API).

This section however doesn't install the Xorg server, but instead installs basic software that a lot of software depends on, including the Xorg server, compositors, and window managers/desktop environments, as well as xwayland — a necessary part of Wayland if you want to use Xorg only software. This includes Steam-1.0.0.81 and Wine-9.14.

Xorg Download and Installation Instructions

Xorg-7.0 introduced a completely auto-tooled, modular build system. With the new modular build system, it is no longer possible to download the entire package in a single file. In fact, there will be well over 100 packages that need to be fetched from the download location. To assist with such a large task, installing Wget-1.24.5 is strongly recommended for downloading the needed files. A complete wget file list is provided for each page that includes multiple packages.

Given the number of packages available, deciding which packages you need to install for your particular setup may seem a bit overwhelming at first. Take a look at this page and this thread to get an idea of what you will need. If you are unsure, you should install all packages at the cost of extra disk space.

[Note]

Note

Even if you intend to download only the necessary packages, you should download the wget file lists. The list of files are ordered by dependency, and the package versions listed in the files are known to work well with each other. Further, the wget file lists contain comments for specific packages that are deprecated or are not recommended to install. Newer packages are likely intended for the next release of Xorg and have already proved to be incompatible with current versions of software installed in GLFS. The installed size of Xorg can be reduced considerably by installing only the packages that you will need and use, however, the GLFS book cannot account for all dependencies and build options for the individual Xorg packages. The instructions assume that all packages have been built.

Additionally, because of the large number of repetitive commands, you are encouraged to partially automate the build. Instructions have been given that utilize the sudo package. It is recommended that you use the :NOPASSWD configuration option for the user that will be building the xorg packages. There are other accommodations in the off chance you didn't install it. You can use the su utility, invoking -c . This requires that you enter your password each time a package needs to get installed. The last accommodation is allow you to build and install each package as the root user. This is not recommended but is an option if you don't want to install sudo and don't want to type a password again and again.

Setting up the Xorg Build Environment

As with previous releases of the X Window System, it may be desirable to install Xorg into an alternate prefix. This is no longer common practice among Linux distributions. The common installation prefix for Xorg on Linux is /usr. There is no standard alternate prefix, nor is there any exception in the current revision of the Filesystem Hierarchy Standard for Release 7 of the X Window System. Alan Coopersmith of Sun Microsystems, once stated "At Sun, we were using /usr/X11 and plan to stick with it." Only the /opt/* prefix or the /usr prefix adhere to the current FHS guidelines.

The GLFS editors recommend using the /usr prefix.

Choose your installation prefix, and set the XORG_PREFIX variable with the following command:

export XORG_PREFIX="<PREFIX>"

Throughout these instructions, you will use the following configure switches for all of the packages. Create the XORG_CONFIG variable to use for this parameter substitution:

export XORG_CONFIG="--prefix=$XORG_PREFIX --sysconfdir=/etc \
    --localstatedir=/var --disable-static"
[Note]

Note

The instructions below modify the current user's Bash profile. If you plan on building the packages as the root user, become that user and run the following commands. If you want to install packages that use the above variables both as the root user and the regular user, run the following commands for both users.

Create an ~/xorg.sh configuration file containing these variables:

cat > ~/xorg.sh << EOF
XORG_PREFIX="$XORG_PREFIX"
XORG_CONFIG="--prefix=\$XORG_PREFIX --sysconfdir=/etc --localstatedir=/var --disable-static"
export XORG_PREFIX XORG_CONFIG
EOF
[Note]

Note

There is some confusion about the above 'here' document. The backslash in front of the dollar sign is correct. Bash will remove it when creating ~/xorg.sh. However, if you are creating the file with an editor, a copy and paste operation will not remove the backslash. It must then be removed manually.

Now ensure that it will be used in the Bash profile:

echo "source ~/xorg.sh" >> ~/.bash_profile

If you've installed sudo, ensure that XORG_PREFIX and XORG_CONFIG are available in the sudo environment. As the root user, run the following command:

cat > /etc/sudoers.d/xorg << EOF
Defaults env_keep += XORG_PREFIX
Defaults env_keep += XORG_CONFIG
EOF

If you are not using the standard Xorg prefix...

[Warning]

Warning

If you've decided to use the standard /usr prefix, you must omit the remainder of this page and continue at util-macros-1.20.1.

If you've decided to not use the standard prefix, be sure to add $XORG_PREFIX/bin to your PATH environment variable, and $XORG_PREFIX/lib/pkgconfig and $XORG_PREFIX/share/pkgconfig to your PKG_CONFIG_PATH variable. It is also helpful to specify additional search paths for gcc and an include directory for the aclocal program. Issue the following commands as the root user:

cat >> ~/xorg.sh << "EOF"

pathappend $XORG_PREFIX/bin             PATH
pathappend $XORG_PREFIX/lib/pkgconfig   PKG_CONFIG_PATH
pathappend $XORG_PREFIX/share/pkgconfig PKG_CONFIG_PATH

pathappend $XORG_PREFIX/lib             LIBRARY_PATH

# Uncomment the line below for multilib
#pathappend $XORG_PREFIX/lib32           LIBRARY_PATH
        
pathappend $XORG_PREFIX/include         C_INCLUDE_PATH
pathappend $XORG_PREFIX/include         CPLUS_INCLUDE_PATH

ACLOCAL="aclocal -I $XORG_PREFIX/share/aclocal"

export PATH PKG_CONFIG_PATH ACLOCAL LIBRARY_PATH C_INCLUDE_PATH CPLUS_INCLUDE_PATH
EOF

The script above needs to be activated. Normally it will be automatic at login, but to activate it now, run:

source ~/xorg.sh

You should also add $XORG_PREFIX/lib to the /etc/ld.so.conf file. As the root user, issue the following command:

echo "$XORG_PREFIX/lib" >> /etc/ld.so.conf

If you're doing multilib, issue the following command as the root user:

echo "$XORG_PREFIX/lib32" >> /etc/ld.so.conf

You should also modify /etc/man_db.conf, adding appropriate MANDATORY_MANPATH, MANPATH_MAP, and MANDB_MAP entries following the examples for /usr/X11R6. Issue the following command as the root user:

sed -e "s@X11R6/man@X11R6/share/man@g" \
    -e "s@/usr/X11R6@$XORG_PREFIX@g"   \
    -i /etc/man_db.conf

Some applications look for shared files in /usr/share/X11. Create a symbolic link to the proper location as the root user:

ln -svf $XORG_PREFIX/share/X11 /usr/share/X11

If building KDE, some cmake files look for Xorg in places other than $XORG_PREFIX. Allow cmake to find Xorg with:

ln -svf $XORG_PREFIX /usr/X11R6