För att ge ett lite mer grundläggande svar, "X window System" är ett ramverk för grafiska användargränssnitt. Det har sedan länge använts i UNIX och VMS (och säkert en hel rad andra OS) när kraven på GUI i datorn kom upp. Ifrån början kördes det mest i något som kallades "X-terminaler". X-terminalerna var en slags väldigt enkla datorer som inte kunde köra annat än X Window System. De program man körde via dessa terminaler, kördes i själva verket i någon stordator som stod nere i någon källare någonstans. Oftast var det någon UNIX-variant som kördes på den stordatorn. Den datorn hade i sig själv ingen grafikhantering alls (såvida inte någon hade installerat X på den förstås). Programmen som kördes på den datorn, och behövde ett GUI, kallades för "X-klienter". De jobbade mot "X-servern", vilken var den där enkla terminalen som inte kunde något annat än att köra "X Window System". I praktiken innebar det att x-klienterna gick på den där stordatorn, och skickade kommandon via TCP/IP till dessa X-terminaler, för att tala om vilken grafik som skulle ritas upp. Här talar vi om grafik på en väldigt grundläggande nivå. Man förleds ju av namnet att jämföra med Windows. Men där fanns redan färdiga fönster, knappar, scrollbars, mm, inbyggt. I "X Windows System" fanns inte ens sådant från början. Där var man tvungen att lägga till något som kallas "fönsterhanterare", vilka i sig själva var en slags x-klienter. Som det fungerade på den tiden, kunde många användare via enkla x-terminaler, vilka skulle kunna sägas vara "tunna klienter" i någon mening, om man ska jämföra med moderna begrepp, tillsammans logga in på och använda gemensamt en stor och kraftfull dator. Det var tack vare nätverkskommunikationen via TCP/IP det gick att göra så.
Nästa steg blev att köra UNIX eller VMS på lokala datorer som användarna själva satt vid. Eftersom X redan fanns för GUI-program, fortsatte det att användas även då. Kommunikationen mellan x-klienterna, dvs de olika programmen, och x-servern, gick fortfarande via TCP/IP, trots att de båda typerna av program fanns på samma dator. En del skojade till det lite för andra genom att utnyttja detta faktum. Kände de till ip-adressen till kompisens dator, som ju också hade en x-server, kunde de själva ställa om en DISPLAY-variabel, vilken x-klienten använde för att veta vilken x-server som skulle användas. Även om x-klienten normalt använde den x-server som fanns lokalt, fanns det inget som hindrade den från att använda en annan tillgänglig x-server på nätverket. På så vis kunde en skämtare dra igång ett program som dök upp hos en intet ont anande kompis vid en helt annan dator.
Ovanstående teknik med x-klienter och x-servrar, var den vanliga på arbetsstationer som använde unix. När Linux dök upp, var det, som välkänt, så gott som UNIX det kunde vara, även om man kanske inte ville kalla det för unix. Men just för att det i praktiken var så likt, fortsatte man med samma system där. Med gui-programmen som via tcp/ip begärde fram grafik från x-servern. Som tidigare nämnt, var grafikhanteringen på en ytterst grundläggande nivå. Till och med fönsterhantering behövde läggas till för att man skulle kunna arbeta på ett smidigt sätt. Det hade redan förekommit en del olika fönsterhanterare, som såg lite olika ut beroende på vilka datorer det handlade om. Sun hade sin. SGI hade sin. Med linux på vanliga pc-datorer, började det tillkomma drösvis med nya fönsterhanterare, för alla hade sina egna idéer om hur en gui-miljö ska se ut. Det utvecklade sig senare till hela skrivbordssystem, vilka inte enbart placerade x-klienterna i fönster som man kan flytta runt på skärmen, utan dessutom bidrog med en massa extraprogram som mer eller mindre kunde samverka med varandra. Då fick vi se sådant som KDE och Gnome. Dessa kan kompileras och köras även på sun-stationer och andra unix-datorer, även om de är vanligast i linux.
Det har sedan länge funnits x-terminaler för både mac och windows i form av x-servrar som körs under respektive OS. Dessa har från början använts för att koppla upp sig mot en stordator som kör unix, för att kunna använda de program som finns där och kräver X för att ge användaren ett GUI.
Anledningen till att Apple numera inkluderar en x-server i Mac OS X, är att det systemet faktiskt är en unix-variant. Eftersom det är unix, ska man kunna kompilera och köra program som är gjorda för unix. Och kräver de ett gui, är det en x-server de förväntar sig ska finnas där. Därför är det bra att ha en x-server i macos x om man behöver kunna köra ett unix-program som kräver ett GUI.
De vanliga mac-programmen som använder GUI, är iofs en slags unix-program. De körs ju faktiskt i ett system som i grund och botten är unix. Men de brukar i allmänhet inte använda x-servern i Mac OS X. Eftersom de redan från början är gjorda för mac, är det helt enkelt smartare att använda den gui-miljö som är standard för mac. Den är i sig komplett med allt ett os av idag ska ha, som fönster, dialogrutor, mm, som vi tar för givet. Men ett program som GIMP, har ju egentligen gjorts helt utan tanke på Mac OS X. Tack vare den medföljande x-servern, har man lätt kunnat kompilera om det programmet för Mac OS X utan att behöva ändra särkilt mycket. Skulle man använda macens vanliga grafiksystem för att porta GIMP till mac, skulle man behöva ändra rätt mycket i koden. Men med x-servern är det alltså bara en fråga om att se till att nödvändiga bibliotek finns på datorn, och kompilera om GIMP, så funkar det. Iofs rätt annorlunda mot andra macprogram, men det funkar.