본문 바로가기

My Mac Story

X11.app (XDarwin) on Mac OS X 10.5 (Leopard)

X11.app (XDarwin) on Mac OS X 10.5 (Leopard)

OS X 10.5 (Leopard) ships with an X11.app that is based on the X.org X11R7.2 release. Specifically, it is using Xserver-1.2 with a few libraries and other modules that were updated after the 7.2 katamari release.

The actual source used to build the 10.5.0 release is available on www.opensource.apple.com: X11server-46 X11libs-16 X11apps-13 X11proto-14 X11fonts-5

A xorg-server-1.2-apple git branch has been created to hold patches against X11.app / Xquartz.

Apple has a mailing list (x11-users, archives) for users to discuss X11 on OS X.

Pedro Massobrio created a FAQ about X11 on Leopard in the macosxhints.com forums. If you've just upgraded from Tiger and you're having problems this is a great place to start. Note that many of the problems described there are fixed in the updated Xquartz binaries linked below.

Here's a mailing list post on troubleshooting X protocol forwarding over SSH (i.e. ssh -X foo.bar or ssh -Y foo.bar)

Updated libX11 binary -- Gimp crash fix

libX11-1.1.2 contained a bug that causes Gimp (and anything else that uses gtk) to crash when calling XGetMotionEvents; this bug affected all platforms, and is documented here and here. An updated libX11.6.dylib (based on libX11-1.1.3) is available here.

Steps to install:

curl -LO http://people.freedesktop.org/~bbyer/x11app/libX11.6.dylib.bz2
bunzip2 libX11.6.dylib.bz2
sudo install -b libX11.6.dylib /usr/X11/lib

Updated Xquartz binaries

Updated binaries are available for Leopard; installing the latest of these will fix issues that have been discovered in X11.app since it was released.

The most recent version is 1.2a9. A list of changes is available here.

Binary installation

Quick binary link: http://people.freedesktop.org/~bbyer/x11app/xorg-server-1.2a9/Xquartz-1.2a9.bz2

Note: Before doing this for the first time, make a backup copy of the "real" /usr/X11/bin/Xquartz binary in case something breaks. (i.e. cp /usr/X11/bin/Xquartz ~/Documents/Xquartz-backup)

curl -LO http://people.freedesktop.org/~bbyer/x11app/xorg-server-1.2a9/Xquartz-1.2a9.bz2
bunzip2 Xquartz-1.2a9.bz2
sudo install -b Xquartz-1.2a9 /usr/X11/bin/Xquartz

Source installation

Prerequisite: install pkg-config

curl -LO http://people.freedesktop.org/~bbyer/x11app/xorg-server-1.2a9/xorg-server-1.2a9.tar.bz2
tar jxvf xorg-server-1.2a9.tar.bz2
curl -LO http://downloads.sourceforge.net/mesa3d/MesaLib-6.5.2.tar.bz2
tar jxvf MesaLib-6.5.2.tar.bz2
export ACLOCAL="aclocal -I /usr/X11/share/aclocal"
export PKG_CONFIG_PATH=/usr/X11/lib/pkgconfig
cd xorg-server-1.2a9
./configure --prefix=/usr/X11 --with-mesa-source=`pwd`/../Mesa-6.5.2
make
sudo cp /usr/X11/bin/Xquartz /usr/X11/bin/Xquartz.old
sudo cp hw/darwin/Xquartz /usr/X11/bin/
(optional:)
make clean
./configure --prefix=/usr/X11 --with-mesa-source=`pwd`/../Mesa-6.5.2 --disable-xdarwin --enable-xvfb --enable-kdrive
make
sudo install -b hw/vfb/Xvfb /usr/X11/bin/Xvfb
sudo install -b hw/kdrive/ephyr/Xephyr /usr/X11/bin/Xephyr

Participating in development

Development is currently performed using git, which is available from both Fink and MacPorts (where it is called 'git-core').

git-clone git://anongit.freedesktop.org/git/xorg/xserver.git
cd xserver
git checkout -b my-xorg-server-1.2-apple origin/xorg-server-1.2-apple
export ACLOCAL="aclocal -I /usr/X11/share/aclocal"
export PKG_CONFIG_PATH=/usr/X11/lib/pkgconfig
./autogen.sh --prefix=/usr/X11 --with-mesa-source=/path/to/Mesa-6.5.2

Patches may be attached to bug reports on bugs.freedesktop.org, sent to X11-users or emailed directly to me (bbyer at apple dot com)

See XDarwin TODO for a list of known bugs, workarounds, and other useful information.


The info below is all out of date, please fix me! The prerequisites for X11 can be built out of MacPorts, but you must build the xserver yourself using the above directions.

Pre-built Binaries for OS X 10.4

I've put together a binary installation package of X11R7.2 for Mac OS X 10.4. At the moment, the package contains most of the X11R7.2 release's proto headers, libraries and the X server, all built for ppc and i386.

The package will install all of the files in /usr/X11, so as to coexist with the files in /usr/X11R6 as distributed with 10.4. Most users will find this most useful if they already have X11.app installed, as this package does not yet include any applications; it can use the ones in /usr/X11R6, or I can bundle them in a future package if there is interest. (The only way to get Apple's quartz-wm is from the OS X install disk.)

The installer is located here: http://people.freedesktop.org/~bbyer/Xorg-X11R7.2.dmg

After installing the package, you may run the new X.org version as / usr/X11/X11.app.

The included version of the Xquartz server is mostly feature complete; the only feature missing from it but found in the XFree86 Xquartz is fullscreen support, which I am currently working on (but would welcome any help!). All of the X.org bug fixes from the past few years have been included, as well as a handful of bugs. Please feel free to send me as many patches as you'd like :)

Source tarballs for XDarwin in X11R7.2

Building this package is fairly difficult; I recommend you try the binaries I have provided, and rebuild individual pieces as needed from source. To facilitate this, the above installer is merely a combination of these tarballs:

http://people.freedesktop.org/~bbyer/binaries/X11R72-proto-10.4.tar.bz2

http://people.freedesktop.org/~bbyer/binaries/X11R72-libs-10.4.tar.bz2

http://people.freedesktop.org/~bbyer/binaries/X11R72-fonts-10.4.tar.bz2

http://people.freedesktop.org/~bbyer/binaries/X11R72-server-10.4.tar.bz2

The packages were built with only slight patches to most modules, with the exception of the X server, which is fairly heavily patched.

Complete archives of the sources for those, as well as the rest of the modules, are available:

http://people.freedesktop.org/~bbyer/sources/X11proto-13.tar.bz2

http://people.freedesktop.org/~bbyer/sources/X11libs-15.tar.bz2

http://people.freedesktop.org/~bbyer/sources/X11apps-11.tar.bz2

http://people.freedesktop.org/~bbyer/sources/X11server-40t.tar.bz2

http://people.freedesktop.org/~bbyer/sources/X11misc-6.tar.bz2

In each, you'll find the original tarballs, patches, and configure script parameters, as well as a build script which may or may not be very helpful outside of my build environment. Of these, X11server is the easiest to build, as it's only one module! It also could use the most work, so that'd be a good starting place!

Building using MacPorts

Here's how to build the modular X.org tree on OS X using MacPorts files I made. Feel free to annotate this page with any suggestions.

You will need to install Xcode >= v2.1; this is available (with free registration) from http://developer.apple.com/tools/download/

Download and install MacPorts: http://svn.macports.org/repository/macports/downloads/MacPorts-1.5.0/

Install git, as well as some recent versions of development tools: (one hour on my G4 eMac)

  • sudo port install pkgconfig automake autoconf libtool git-core

Install X.org libraries: (45 minutes)

  • sudo port install xorg-proto xorg-libX11 xorg-libxkbfile xorg-libXfont xorg-libfontenc

Get X server source from git and build it: see above instructions.