Xi Graphics deXtop CDE Version 3.0 on Linux Slackware 13.37 64bit

Revision 1.05


Before we start
Extraction of deXtop parts
Installation of the X11 client 32bit libraries
The case of libXm
Post-install configuration


Suggestions contained later in this document are for information only. Using this information is at your own risk. No guarantees are made on the stability and the usability of CDE on Linux. DeXtop CDE is commercial software from Xi Graphics and it is not available for free. You must have a valid license to use it. The author isn't, in any way, responsible for physical, financial, or any other type of damage caused by following the suggestions in this document.

When CDE is running, some components use TCP or UDP sockets (XDMCP for dtlogin, RPC services, ...). Vulnerabilities of these components can have been discovered in the past and because of the end of support for this product, they can be subject to exploit.


The goal of this document is to try to make deXtop CDE, the XiG version of Common Desktop Environment, available on a modern 64bit Linux distribution, without using the X server packaged on the media distribution. XiG deXtop is no longer supported for a while and the X server on the CD-ROM is an old version that doesn't support modern graphic hardware found on today's computers, and is not really a good candidate for an optimal integration on a recent Linux distribution.

We will try to install CDE as a window manager, used with the standard X server included in the Slackware 13.37 distribution. We choose a 64bit distribution with a 2.6 Linux kernel to show that it is possible to run an "old" software like XiG deXtop in a real (without virtualization) 64bit environment and that it is also possible not to be stuck in the 32bit world just because of a window manager.

Before we start

We need a functional Slackware distribution. Detail about installation of the distribution is not part of this document. A working X server (XOrg) has to be present on the system.

The Slackware distributions are pure 64bit and cannot, out of the box, compile nor run 32bit software. We need a multilib-enabled distribution. All the libraries that will be necessary have to be converted by convertpkg-compat32 before being installed on the 64bit distribution. More information on multilib Slackware distribution is available on http://alien.slackbook.org/dokuwiki/doku.php?id=slackware:multilib.

The terminal component (dtterm) present in CDE uses pseudo-terminals. Support for them has to be enabled and a recompilation of the kernel must be done if legacy pseudo terminal support is disabled.

Extraction of deXtop parts

As explained above, X server shipped with XiG deXtop is not suitable for actual hardware and modern distributions. It is not possible to use the conventional installation software.  The parts of the media distribution have to be extracted in a temporary directory (we choose /tmp/cde-data), partially and manually installed in /usr directory.

Extraction of the main packages :

mkdir /tmp/cde-data
cd /tmp/cde-data
find /mnt/cdrom/Linux/packages -name archive -exec tar xf {} \;

Extraction of the patches :

for i in /mnt/cdrom/DEX*
tar xf $i

After the extraction, the CDE component must be copied in the /usr/dt directory :

cp -a /tmp/cde-data/usr/dt /usr

Installation of the X11 client 32bit libraries

In this step, we will install the client X11 libraries from the 32bit distribution DVD. All the packages must be "converted" by convertpkg-compat32 before their installation on the system. The required libraries can be found by calling the ldd command on a CDE component (/usr/dt/bin/dtwm for example). All the links to shared objects (with the exception of libXm) must be valid.

# ldd /usr/dt/bin/dtwm
linux-gate.so.1 => (0xf7711000)
libDtPrint.so.2 => /usr/dt/lib/libDtPrint.so.2 (0xf76fe000)
libDtHelp.so.2 => /usr/dt/lib/libDtHelp.so.2 (0xf7649000)
libDtWidget.so.2 => /usr/dt/lib/libDtWidget.so.2 (0xf7611000)
libDtSvc.so.2 => /usr/dt/lib/libDtSvc.so.2 (0xf75a6000)
libtt.so.2 => /usr/dt/lib/libtt.so.2 (0xf7468000)
libXm.so.2 => not found
libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0xf71cb000)
libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0xf71c3000)
libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0xf71ac000)
libXp.so.6 => /usr/X11R6/lib/libXp.so.6 (0xf71a4000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0xf7195000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0xf707a000)
libm.so.6 => /lib/libm.so.6 (0xf703b000)
libdl.so.2 => /lib/libdl.so.2 (0xf7037000)
libc.so.6 => /lib/libc.so.6 (0xf6ed4000)
libuuid.so.1 => /lib/libuuid.so.1 (0xf6ecf000)
libxcb.so.1 => /usr/X11R6/lib/libxcb.so.1 (0xf6eb7000)
libXau.so.6 => /usr/X11R6/lib/libXau.so.6 (0xf6eb4000)
/lib/ld-linux.so.2 (0xf7712000)
libXdmcp.so.6 => /usr/X11R6/lib/libXdmcp.so.6 (0xf6eaf000)

On Slackware 13.37, these libraries had to be installed :

The case of libXm

The Motif 2 libraries from the XiG X server will be used for the link to libXm.so.2 . These libraries are in /tmp/cde-data/usr/X11R6/lib ( libXm.*, libUil.* , libMrm.*). Some symbols are missing if we try to use the libraries :

So we will recreate these missing symbols in libXm with two C files.

xsetlocale.c :

#include <locale.h>

char *_Xsetlocale (int category,char *name)
return setlocale (category,name);

curmax.c :

int _Xlcmbcurmax()
return 1;

They are compiled by :

gcc -m32 -c xsetlocale.c
gcc -m32 -c curmax.c

Original objects are extracted from libXm.a and placed in a temporary directory (we choose /tmp/cde-lib/Xm) :

mkdir /tmp/cde-lib
mkdir /tmp/cde-lib/Xm
ar x /tmp/cde-data/usr/X11R6/lib/libXm.a

Our new objects are added :

cd /tmp/cde-lib
cp xsetlocale.o Xm
cp curmax.o Xm

The static and dynamic libraries are recreated ( note the link with libXss for the dynamic library) :

ar rcs libXm.a Xm/*.o
gcc -m32 -shared -o libXm.so.2.1 Xm/*.o -lXss

Our new version of libXm is copied into /usr/dt/lib, and the symlinks are made on the fly.

cp libXm.a libXm.so.2.1 /usr/dt/lib/
ln -sf /usr/dt/lib/libXm.so.2.1 /usr/dt/lib/libXm.so.2
ln -sf /usr/dt/lib/libXm.so.2.1 /usr/dt/lib/libXm.so

The rest of Motif 2 libraries (libMrm and libUil) are copied in /usr/dt/lib

cd /tmp/cde-data/usr/X11R6/lib
cp -a libUil.* libMrm.* /usr/dt/lib/

Post-install configuration

Convention for CDE configuration is to copy configuration files from /usr/dt to /etc/dt and do modifications only on the files in /etc/dt. So we need to copy the required files to /etc/dt.

mkdir /etc/dt
chown bin.bin /etc/dt
cp -a /usr/dt/config /usr/dt/appconfig /usr/dt/app-defaults /etc/dt

Configuration for dtterm

Add, at the end of /etc/termcap, the content of /usr/dt/config/dtterm.termcap.

cat /usr/dt/config/dtterm.termcap >> /etc/termcap

To avoid the problem of CR/LF in dtterm, which makes a staircase effect with the lines, we add, at the end of /etc/dt/config/Xstartup (before exit instruction) :

for i in tty console ptmx
stty opost > /dev/$i

French characters

You can use the French locale provided by CDE. With this setting, characters like é, ë, ... will work out of the box. If you prefer using C locale, you have to add a file (named, for example, 0070.dtlang) in directory /etc/dt/config/Xsession.d :

export LC_CTYPE

This file must be executable.

chown bin.bin 0070.dtlang
chmod a+x 0070.dtlang

French characters will be available in CDE applications even in C locale.

RPC services

CDE is a network environment and it uses RPC services. RPC daemon (rpc.portmap) must be running, otherwise CDE will freeze after the login procedure. XiG deXtop provides two RPC daemons in /usr/dt/bin :

Obviously, CDE can work without the ToolTalk RPC server so we didn't register it in /etc/rpc and /etc/inetd.conf. If you don't plan to use the calendar, no need to either register rpc.cmsd.


We took some fonts from a Sun Workstation which makes CDE looks better. These fonts are listed below (in bold) :

# ls -al /usr/share/fonts/
drwxr-xr-x 15 root root  2048 Feb 27 09:47 ./
drwxr-xr-x 105 root root 2048 Aug 12 2010  ../
drwxr-xr-x 2 root root  90112 Feb 23 11:01 100dpi/
drwxr-xr-x 2 root root  90112 Feb 23 11:01 75dpi/
drwxr-xr-x 4 root bin    2048 Aug 18 2008  F3/
drwxr-xr-x 2 root bin   16384 Aug 18 2008  F3bitmaps/
drwxr-xr-x 2 root root   2048 Nov 16 2010  OTF/
drwxr-xr-x 2 root root   2048 Nov 16 2010  Speedo/
drwxr-xr-x 2 root root   6144 Apr 20 2009  TTF/
drwxr-xr-x 2 root root   2048 Nov 16 2010  Type1/
drwxr-xr-x 2 root bin    2048 Aug 18 2008  Type3/
drwxr-xr-x 2 root root   6144 Feb 23 11:01 cyrillic/
drwxr-xr-x 3 root root   2048 Nov 13 2010  encodings/
drwxr-xr-x 2 root root  20480 Feb 23 11:01 misc/
drwxr-xr-x 2 root root   2048 Nov 13 2010  util/

These fonts can be added in the X Server configuration to be available to local connections.

Font server

Dtlogin can handle remote connections with XDMCP. You can add a font server (xfs) to export fonts to the remote X terminals. The configuration file of the font server is /etc/X11/fs/config. In this file, the catalogue option must include fonts installed in /usr/share/fonts.

The font server must be loaded by the system startup scripts (/etc/rc.d/rc.local for example).

To use the font server with remote connections, add the following (in bold) at the end of /etc/dt/config/Xsetup :

    if [ "$DTXSERVERLOCATION" != "remote" ]; then
      for i in misc 75dpi 100dpi Speedo Type1 PJE
         if [ -f $FONTLIB/$i/fonts.dir ];  then
             if [ ! -z "$fontpath" ]; then

      if [ ! -z "$fontpath" ]; then
        $XDIR/xset fp+ $fontpath
        HOSTNAME=$(hostname -f)
        $XDIR/xset fp+ "tcp/${HOSTNAME}:7100"

Using dtlogin

To use dtlogin when the system starts, replace the x1 line in /etc/inittab :

# Runlevel 4 also starts /etc/rc.d/rc.4 to run a display manager for X.
# Display managers are preferred in this order: gdm, kdm, xdm
x1:4:respawn:/usr/dt/bin/dtlogin -nodaemon


Some screenshots of XiG deXtop.



CDE Screenshot : Dtlogin


Desktop after login

CDE Screenshot : First login CDE Screenshot : Desktop
CDE Screenshot : Applications CDE Screenshot : Display info
CDE Screenshot : Glxinfo CDE Screenshot : Firefox
CDE Screenshot : Screen saver settings CDE Screenshot : Linux version

Valid HTML 4.01 Transitional