O Windows oferece a você uma única implementação de um único desktop sobre uma única implementação de uma única API / framework, tudo feito pela Microsoft.
Em sistemas Unix, você obtém uma API / framework (X11 / X Window System) para a qual existem múltiplas implementações (Xorg, Xfree86), sobre as quais você obtém vários frameworks / APIs de "nível superior" (GTK +, Qt, ...) porque o X11 bruto é tão primitivo, em cima do qual você obtém vários desktops (Gnome, KDE, ...), todos feitos por pessoas diferentes.
Além disso, o sistema X11 foi projetado desde o início com GUIs remotas em mente - ou seja, uma máquina lokal exibindo a interface gráfica de um aplicativo em execução remota - que introduz os conceitos de "X Server" e "X Client" .
Em seguida, há uma nomenclatura que "parece" a maneira errada para os recém-chegados: Sua máquina local está executando o "X Server" fornecendo o serviço "exibir uma GUI", enquanto a máquina remota é o "X Client" fazendo uso dos serviços em sua máquina para exibir a GUI.
Bem, essa é a visão geral rápida; uma vez que você tenha resolvido isso, entender quaisquer artigos / posts do fórum sobre o assunto deve se tornar muito mais fácil.
Edit: Para responder aos dois primeiros comentários do OP.
Sim, "X11" é meramente um protocolo, e Xorg / XFree86 são duas implementações. Em seu nível básico, o X11 é apenas sobre desenhar linhas e pontos, o que não é muito útil se você quiser fazer uma GUI.
No topo do protocolo X11, as pessoas implementaram muitas coisas, e é muito difícil fazer uma comparação 1: 1 com o Windows, porque a Microsoft nunca se preocupou em manter as coisas separadas. Também não sou um desenvolvedor do tipo GUI, ou seja, minha experiência real com o sistema qualquer é mínima.Na parte inferior, um "gerenciador de janelas" fornece uma janela (manipulando bordas, botões fechar / minimizar / maximizar, redimensionando etc.) e oferece o "espaço real" dentro da janela para o conjunto de ferramentas do widget. Existem muitos gerenciadores de janelas, alguns imitando outros sistemas (Windows, MacOS, AmigaOS, etc.), e eles são na maior parte intercambiáveis e transparentes para o sistema restante.
O "conjunto de ferramentas do widget" oferece botões, controles deslizantes, campos de texto etc. nos quais você pode construir sua GUI. Isso é o que você (como desenvolvedor de aplicativos) realmente consegue "ver", API e o que decide a maior parte da "aparência" do seu aplicativo.
Uma "área de trabalho" cria vários aplicativos sobre uma certa combinação de conjunto de ferramentas / gerenciador de janelas, a fim de fornecer uma aparência consistente & sentir. Você não precisa se preocupar com isso, a menos que realmente queira desenvolver a própria área de trabalho.
O desktop "Gnome" usa o conjunto de ferramentas do widget "GTK +" no topo do gerenciador de janelas "Metacity".
A área de trabalho "KDE" usa o conjunto de ferramentas do widget "Qt" no topo do gerenciador de janelas "KWin".
Note que especialmente esses dois, GTK + e Qt, evoluíram muito além de simples "conjuntos de ferramentas de widgets" em "estruturas de desenvolvimento de aplicativos". Se você deseja desenvolver aplicativos GUI para o Linux, efetivamente você tem que escolher qual desses dois você deseja usar. Há mais opções, se você quiser um aplicativo mais "leve" (não precisando das grandes dependências da biblioteca), mas hoje a maioria dos sistemas já tem bibliotecas GTK + e Qt instaladas.
É perfeitamente possível usar aplicativos Qt em uma área de trabalho Gnome ou aplicativos GTK + em uma área de trabalho KDE (nem sempre foi assim), então você não precisa se preocupar com compatibilidade. Dada a escolha entre dois aplicativos de funcionalidade comparável, as pessoas geralmente preferem o aplicativo usando os widgets "nativos" de sua área de trabalho, mas não me preocupo com isso.
Outros pontos importantes na escolha do "conjunto de ferramentas de widgets": termos de licenciamento, suporte para o idioma de sua escolha e compatibilidade entre plataformas.
Post Scriptum : voltando vários anos depois, eu peguei uma experiência de programação gráfica própria e percebi que uma coisa está faltando na explicação acima se você está procurando por um " qual caminho seguir "conselhos: wxWidgets . Esse é um framework que cria no topo do que você está usando nativamente, e permite o desenvolvimento de