This howto covers installing and setting up the old Xpmac X Server, which is based on the XSun X Server. It also has an modified version Matsubayashi Kohji's Xpmac wrapper script.

Note:The only people who should be using Xpmac is those who don't have an accelerated video driver -- such as atyfb, and are forced to use No Video Driver in BootX.

Getting the X Server

The latest (and quite likely the last ;) version of Xpmac can be downloaded from .

If you downloaded this file via. Netscape, it was already decompressed on the fly (Netscape does this to all .gz files). To test that it has done this, you can run file Xpmac.rev10.gz. If it tells you that it's compressed, then you need to uncompress it, if not, you don't have to.

If you downloaded it in another app, you may have to manually decompress it. You can do:

gzip -d Xpmac.rev10.gz

Installing Xpmac

You can move Xpmac to the /usr/X11R6/bin directory, by typing in (as root):

mv Xpmac.rev.10 /usr/X11R6/bin/Xpmac.bin

Setting up Xpmac

Xpmac is a very simple X Server, even with the optional Xpmac wrapper script explained below. It doesn't read XF86Config, so anything you put there won't be read.

Stopping gdm/kdm/xdm

Before you try it out for the first time, stop all desktop managers (aka graphical login screens). These could cause "X Respawning to Fast Errors" or a system that is unusable, due to a missing font path.

You can stop the desktop manager by:

/etc/init.d/gdm stop

If you are using KDM or XDM, stop that instead of gdm (which is default on most systems, that have GNOME installed).

Setting Xpmac as the Default X Server

On LinuxPPC and Yellow Dog Linux, /etc/X11/X is a link to your X Server. You can change it to Xpmac using this command:

ln -sf /usr/X11R6/bin/Xpmac /etc/X11/X

After making this change, make sure not to run XConfigurator or Xautoconfig. Both of these will change this link back to FBDev.

Debian users should edit the first line of /etc/X11/XServers to read /usr/X11R6/bin/Xpmac.

Creating Xpmac Wrapper

The Xpmac wrapper, as mentioned above, allows for a nice configuration file for Xpmac. Here is a slightly modified version of Matsubayashi Kohji's Xpmac wrapper.

#!/bin/bash
# wrapper script for Xpmac server
# written by MATSUBAYASHI 'Shaolin' Kohji 
# Parts by Andrew Arthur 


#
# load setting file for Xpmac if available
#
if [ -f /etc/X11/Xpmac.conf ] ; then
    . /etc/X11/Xpmac.conf
fi


#
# set up optional arguments for Xpmac
#

XPMAC_OPTIONS=""

[ "x$VMODE" != "x" ] && XPMAC_OPTIONS="$XPMAC_OPTIONS -mode $VMODE"
[ "x$CMODE" != "x" ] && XPMAC_OPTIONS="$XPMAC_OPTIONS -depth $CMODE"

case "x$VIDEO" in
    xtt128)
        XPMAC_OPTIONS="$XPMAC_OPTIONS -tt128"
        ;;
    xct6555)
        XPMAC_OPTIONS="$XPMAC_OPTIONS -ct6555"
        ;;
    xmach64)
        XPMAC_OPTIONS="$XPMAC_OPTIONS -mach64"
        ;;
    xnoaccel)
        XPMAC_OPTIONS="$XPMAC_OPTIONS -noaccel"
        ;;
    xnovideodriver)
        XPMAC_OPTIONS="$XPMAC_OPTIONS -novideodriver"
        ;;
    *)
        ;;
esac
    
if [ "x$FIX4MB" = "x1" ] ; then
    if [ `grep -c [Mm]atrox /proc/fb` -eq 0 ] ; then
        XPMAC_OPTIONS="$XPMAC_OPTIONS -fix4mb"
    fi
fi

[ "x$NOMACGAMMA" = "x1" ] && XPMAC_OPTIONS="$XPMAC_OPTIONS --nomacgamma"
[ "x$NOVTSWITCH" = "x1" ] && XPMAC_OPTIONS="$XPMAC_OPTIONS --novtswitch"


[ "x$KBDTYPE" != "x" ] && 
    XPMAC_OPTIONS="$XPMAC_OPTIONS -kbdtype $KBDTYPE"

[ "x$MIDDLEKEY" != "x" ] && 
    XPMAC_OPTIONS="$XPMAC_OPTIONS -middlekey $MIDDLEKEY"

[ "x$RIGHTKEY" != "x" ] && 
    XPMAC_OPTIONS="$XPMAC_OPTIONS -rightkey $RIGHTKEY"

[ "x$NOOPTIONMOUSE" = "x1" ] && 
    XPMAC_OPTIONS="$XPMAC_OPTIONS -nooptionmouse"

[ "x$NOOPTIONPOWER" = "x1" ] && 
    XPMAC_OPTIONS="$XPMAC_OPTIONS -nooptionpower"

[ "x$NOMONITORSLEEP" = "x1" ] && 
    XPMAC_OPTIONS="$XPMAC_OPTIONS -nomonitorsleep"

# Font Path Stuff

[ "x$FP1" != "x" ] && 
   XPMAC_FP=" -fp $FP1"
[ "x$FP2" != "x" ] && 
   XPMAC_FP="$XPMAC_FP,$FP2"
[ "x$FP3" != "x" ] && 
   XPMAC_FP="$XPMAC_FP,$FP3"
[ "x$FP4" != "x" ] && 
   XPMAC_FP="$XPMAC_FP,$FP4"
[ "x$FP5" != "x" ] && 
   XPMAC_FP="$XPMAC_FP,$FP5"
[ "x$FP6" != "x" ] && 
   XPMAC_FP="$XPMAC_FP,$FP6"
[ "x$FP7" != "x" ] && 
   XPMAC_FP="$XPMAC_FP,$FP7"
[ "x$FP8" != "x" ] && 
   XPMAC_FP="$XPMAC_FP,$FP8"
[ "x$FP9" != "x" ] && 
   XPMAC_FP="$XPMAC_FP,$FB9"
[ "x$FP10" != "x" ] && 
   XPMAC_FP="$XPMAC_FP,$fp2"


XPMAC_OPTIONS="$XPMAC_OPTIONS $XPMAC_FP"


# finally, execute Xpmac binary itself
#
exec /usr/X11R6/bin/Xpmac.bin $XPMAC_OPTIONS $*

# wrapper script ends here

Paste that script into a file in /usr/X11R6/bin, called Xpmac.

Next you need to create an /etc/X11/Xpmac.conf. This is a sample one, with explanations in it on what to change. It is different from the orginal version, as this one supports font paths.

#
# Sample config file for Xpmac server
# MATSUBAYASHI 'Shaolin' Kohji 
# Parts by Andrew Arthur 
#


# *************************************************************
#  VIDEO SECTION.
# *************************************************************


##
##  specify video mode (1-20)
##     number denotes either of the following resolutions:
#
#    1   512 x  386  60Hz (interlaced, NTSC)
#    2   512 x  386  60Hz
#    3   640 x  480  50Hz (interlaced, PAL)
#    4   640 x  480  60Hz (interlaced, NTSC)
#    5   640 x  480  60Hz
#    6   640 x  480  67Hz
#    7   640 x  870  75Hz (portrait)
#    8   768 x  576  50Hz (interlaced, PAL)
#    9   800 x  600  56Hz
#   10   800 x  600  60Hz
#   11   800 x  600  72Hz
#   12   800 x  600  75Hz
#   13   832 x  624  75Hz
#   14  1024 x  768  60Hz
#   15  1024 x  768  72Hz
#   16  1024 x  768  75Hz
#   17  1024 x  768  75Hz
#   18  1152 x  870  75Hz
#   19  1280 x  960  75Hz
#   20  1280 x 1024  75Hz

# VMODE=20


##
## specify video depth
##    currently 8, 16, 24 is available
##    (setting the value to 32 is equivalent to 24)

# CMODE=24

##
## specify font path
##    if you don't want Xpmac's hard coded font
##    path, you need to change this.
##  
##    if you use this script, you must set FP1
##    before other ones. font paths are concatanated
##    together from top to bottom.


# FP1="/usr/X11R6/lib/X11/fonts/misc:unscaled"
# FP2="/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
# FP3="unix/:7101"
# FP4="/usr/X11R6/lib/X11/fonts/Speedo"
# FP5="/usr/X11R6/lib/X11/fonts/Type1"
# FP6="/usr/X11R6/lib/X11/fonts/freefont"
# FP7="/usr/X11R6/lib/X11/fonts/sharefont"
# FP8="/usr/X11R6/lib/X11/fonts/uwm"
# FP9="/usr/X11R6/lib/X11/fonts/75dpi"
# FP10="/usr/X11R6/lib/X11/fonts/misc"


##
## specify hardware acceleration
##    it is not always required, but try this
##    if your video card is not automatically detected
##
##    currently the following options are available:
#
#  tt128                enforce TwinTurbo128 acceleration without video driver
#  ct6555               enforce C&T 6555x acclerelation without video driver
#  mach64               encofce mach64 acceleration without video driver
#  noaccel              disable hardware acceleration
#  novideodriver        same as mach64

# VIDEO=mach64


##
## other video options (uncomment appropriate lines if necessary)
##

# Process 4MB WRAM bank boundary for Matrox MGA2x64.
# Don't use this when matroxfb is running!

# FIX4MB=1


# turn off Macintosh gamma correction

# NOMACGAMMA=1


# turn off virtual terminal switching

# NOVTSWITCH=1


# *************************************************************
#  KEYBOARD SECTION.
# *************************************************************


##
## specify keyboard type
##    the following keymaps are currently available:
##    if you use ASCII keyboard, it probably need not to be specified
#
#  "../jp(mac_adb)"     ADB JIS keybaord
#  "../jp(mac_usb)"     USB JIS keyboard

# KBDTYPE="../jp(mac_adb)"


##
## other keyboard options (uncomment appropriate lines if necessary)
##

# decimal keycode for middle/right mouse buttons emulation
# some examples are shown here - use showkey(1) or xev(1) for other keys
#
# MIDDLE BUTTON        RIGHT BUTTON
# -------------------+--------------------
#  F1          - 130   F2           - 128
#  1           -  26    2           -  27
#  1 (numeric) -  91    2 (numeric) -  92

MIDDLEKEY=130
RIGHTKEY=128


# if you don't want these keys above with