Making Mac OS X Work Like X Windows?
X Fiend asks: "Is it possible to configure Mac OS X's window manager to run in a client-server mode like X Windows? I'd like to use my (rather anemic) iBook as an X Terminal, with apps running on my (manly dual-processor) desktop machine, but I don't want to have to use X Windows to do it- I want to use Mac OS X's native window manager. Any ideas?"
In theory, all IPC is done through Mach messages, whether the underlying transport is TCP/IP or shared memory.
In theory, you can intercept messages between two ports and run them through arbitrary filters.
Since the window server process is nothing but another port to Mach, you *should* be able to catch everything going to it, send it over the network and have it appear on another Window Server on another machine.
In practice there would be a lot of details to take care of like configuration and non-display. But the nature of Mach is that any IPC can be generalized to take place over any kind of network connection.
That's completely uninformative.
Apple Remote Desktop is a VNC or Timbuktu-like program, which pushes the (compressed) bitmap of a desktop to the client machine. While it can work for the situation the questioner asked about, it
(a) is not a truely native solution, in which the API calls are transmitted rather than the bitmap of the screen, and
(b) is geared towards education, where it can be used by a teacher to show a demonstration on a set of student computers.
It also costs $300.
NeXT's Display Postscript had the ability to run remotely, like X, but those hooks were abandoned when Apple converted the display model to Quartz/Display PDF.
four nine eighteen twenty-7 thirty-nine forty-7 fiftyeight sixty-nine seventy-9 eighty-8 one-hundred-and-nine one-twenty
Point b) is also very valid because it details what the intended purpose of different technologies is. Whereas X allows you to load JUST an application, such as eterm, on the remote machine, ARD forces the entire server screen buffer to be loaded...in its own window (blech!). X also lets you log into the server as any user and run programs, regardless of which user is currently logged into the GUI. ARD forces you to use the current user, and takes the machine over.
mithras was right in his analysis of the technology. ARD is to be used in labs, large deployments, etc to manage multiple machines (install files, mass reboot, system status, monitoring, etc), but is hardly a client-server ideal setup like X.
I had heard somewhere that rumors persist of the hooks still existing in OS X, but the APIs are secret. That's not fact though. I WISH Apple would produce a system like that, but I fear they will not. It might also be possible that because of how Display PDF works (creating a PDF for each screen element, then compositing them together), it is not possible to merely send the screen draw APIs. Maybe?
But if you're like me, and you WANT this capability, Tell Apple!
The OSX Window manager can be made to start without the finder by writing a shell script that , in one file, starts the window manger and then starts an application like the terminal. If you go into the console from the login window with ">console" and login as root, you can then start this shell script and will be blessed thereafter to be able to use MAC OSX without the rather slow finder.
Why do I write this? This simply illustrates that Apple has done quite a lot in order to hide the window manager, and a lot of other functionality, in the normal view and it is very possible that there are indeed hidden hooks in the window manager to get it to work over a network, such as the ability to create a seperate window from another machine, not just pushing bitmaps around. The technology is certainly there, with Remote Objects in Cocoa. I also don't think it has that much to do with Quartz, as quartz is simply the drawing system and the window manager is the system that actually manages all created windows. Quartz simply composits and draws them. The fact that 10.1 had the hack of enabling one to enable window buffer compression lends some support to this theory. In theory one would simply have to know whether the window manager could send and receive window objects across the network, or if window objects were confined to the local machine.