Skip to content

WindowServer

Austin edited this page Nov 1, 2026 · 28 revisions

Reimplementation (PPC): In Progress (2027-10-31) 92% competed.

image

This screenshot is a test app WindowServerTester that runs a modified WindowServer that runs in RAM. This tool is being used to test future features (like transparent windows). The fake windows you see rendered in the window demonstrate transparent compositing of windows. The next step is to build a version of AppKit and our AppKitTester that send all drawing to WindowServerNew and have it appear in that embedded WindowServer view.

Dependencies

#include <mach/mach_init.h>
#include <mach/message.h>
#include <dirent.h>
#include <math.h>
#include <setjmp.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

Testing Mode

You will see #if defined(WindowServerTesting) throughout the source code to signify areas where we can launch a separate WindowServer process to test connections. #if defined(WindowServerTesting) is also used in AppKit to ensure that we connect to the new WindowServerNew instead of WindowServer process.

In the testing mode, drawing is sent to a region of private memory, instead of accessing framebuffer and driver state, and will not display on screen. Testing functions are added to extract the produced image for verification.

Required Goal

  • Any ABI breaking feature is gated through defined(DistributionRhapsodyOS) to ensure it runs as expected under vanilla Mac OS X Server 1.2v3. New features should strongly not rely on that and should instead aim to ABI/API compliant.

Upgrades In Progress

  1. Transparent Window Compositing
  2. The ability to have windows move in tandem with other windows (i.e the new NSDrawers and attached Modals in AppKit.framework)
  3. Antialiased Drawing & Text
  4. Transparent Text Drawing

Future Goals

  1. Compatibility with both Mac OS X 10.4 while maintaining Rhapsody OS, RhapsodiOS and OpenNext
    • PDF Style Commands (for compatibility with Mac OS X 10+), PPC, Intel, ARM

Clone this wiki locally