Primeiro verifique Noções básicas sobre o ambiente de trabalho do linux
I have been a Linux user for years now, but I still struggle to understand how X compares with the software used for display on Windows and Mac systems.
I know it is a client/server based software, but what is particularly puzzling for me is how it works with widget toolkits to provide a display and how these interact with each other.
I mean, take the Cocoa framework of Mac: You have GnuStep, which is an open source implementation of that framework, but (from what I can guess), it runs on X, right? Yet I suppose that Mac does not use X.
Os toolkits (GTK, Qt ...) geralmente não interagem entre si - são apenas bibliotecas e, como tal (na maior parte), separados por processo. Eles naturalmente interagem com o servidor X - enviando comandos de desenho e lendo entradas. No entanto, alguns deles não estão limitados a um único back-end (X11) - por exemplo, o GTK, o Qt e o GNUstep também possuem sabores do MS Windows.
Os toolkits agem como uma camada API unificada acima da interface de desenho nativa - no caso do X11 eles traduzem requisição para desenhar um botão em uma série de objetos simples (retângulos, sombreados etc .; por exemplo em versões recentes do GTK. alcançado através de outra camada de abstração fornecida pelo Cairo ). No Windows ou Mac, eles têm a possibilidade de usar a API nativa para que, por exemplo, O "botão GTK" pode ser traduzido para "Botão do Windows" e, por exemplo, em um dispositivo framebuffer, ele seria traduzido diretamente para os pixels simples (provavelmente novamente por meio de um mecanismo de varredura como o Cairo). Por exemplo, o Qt tem cerca de 15 vários backends .
Se você está falando sobre os ambientes de área de trabalho se comunicando com aplicativos usando diferentes kits de ferramentas, essa é uma história totalmente diferente. Atualmente, o D-Bus é normalmente usado em uma sessão X, o que permite que não apenas aplicativos GUI enviem e recebam mensagens para / de outros aplicativos.
Are there any alternative options to Xorg on Linux? Can I run GnuStep, for example, with something else?
Uma alternativa (além daqueles mencionados por John Siu em sua resposta) pode ser Wayland . No entanto, não há muitos aplicativos que possam usá-lo nativamente .
Are window managers and desktop environments written specifically to work with X or can they work with other display software?
Na maioria das vezes, os gerenciadores de janelas só entendem o protocolo X e devem ser executados sob (ou acima, dependendo do lado que se olhe) o servidor X. Praticamente porque não há nada melhor (mesmo que existam coisas no X11 e suas implementações, isso poderia ser melhor).