Windows предоставляет вам единую реализацию единого рабочего стола поверх единой реализации единого API / фреймворка, и все это делает Microsoft.
В системах Unix вы получаете API / framework (X11 / X Window System), для которого существует несколько реализаций (Xorg, Xfree86), поверх которых вы получаете различные API / каркасы более высокого уровня (GTK+, Qt, ...) потому что raw X11 настолько примитивен, поверх которого вы получаете различные рабочие столы (Gnome, KDE, ...), все они сделаны разными людьми.
Кроме того, система X11 была разработана с нуля с учетом удаленного графического интерфейса пользователя - то есть локального компьютера, отображающего графический интерфейс удаленно работающего приложения, - который вводит понятия «X-сервер» и «X-клиент».
Затем существует номенклатура, которая "чувствует" неправильное решение для новичков: на вашем локальном компьютере запущен «X-сервер», предоставляющий службу "показ GUI", в то время как удаленный компьютер является «X-клиентом», использующим эти службы. на вашем компьютере для отображения графического интерфейса.
Ну, это краткий обзор; как только вы разобрались с этим, понимание любых статей / сообщений на форуме должно стать намного проще.
Изменить: Чтобы ответить на два первых комментария ОП.
Да, "X11" - это просто протокол, а Xorg / XFree86 - две реализации. На базовом уровне X11 предназначен только для рисования линий и точек, что не очень полезно, если вы хотите использовать графический интерфейс.
Вдобавок к протоколу X11, люди реализовали много вещей, и сделать сравнение 1:1 с Windows довольно сложно, потому что Microsoft никогда не заботилась об отделении. Кроме того, я не являюсь разработчиком типа GUI, т.е. мой реальный опыт работы с любой из систем минимален.
Внизу "оконный менеджер" предоставляет окно (управление границами, кнопки закрытия / минимизации / максимизации, изменение размера и т.д.) И предлагает "недвижимость" в окне для набора инструментов виджетов. Существует много оконных менеджеров, некоторые имитируют другие системы (Windows, MacOS, AmigaOS и т.д.), И они в основном взаимозаменяемы и прозрачны для остальной системы.
"Набор инструментов виджетов" предлагает вам кнопки, ползунки, текстовые поля и т.д. Для создания вашего графического интерфейса. Это то, что вы (как разработчик приложения) на самом деле получаете, "видя", с точки зрения API, и то, что определяет большую часть "внешнего вида" вашего приложения.
"Рабочий стол" создает несколько приложений поверх определенной комбинации наборов инструментов и оконных менеджеров виджетов, чтобы обеспечить единообразный внешний вид. Вам не нужно беспокоиться об этом, если вы на самом деле не хотите разрабатывать сам рабочий стол.
Рабочий стол "Gnome" использует набор инструментов виджетов "GTK+" поверх оконного менеджера "Metacity".
Рабочий стол "KDE" использует набор инструментов виджетов "Qt" поверх оконного менеджера "KWin".
Обратите внимание, что особенно эти два, GTK+ и Qt, развились далеко за пределы простых "наборов инструментов виджетов" в "рамки разработки приложений". Если вы хотите разрабатывать приложения с графическим интерфейсом для Linux, фактически вам нужно выбрать, какое из этих двух вы хотите использовать. Есть более широкий выбор, если вы хотите более "легкое" приложение (не нуждающееся в больших библиотечных зависимостях), но сегодня на большинстве систем уже установлены GTK+ и библиотеки Qt.
Вполне возможно использовать приложения Qt на рабочем столе Gnome или приложения GTK+ на рабочем столе KDE (так было не всегда), поэтому вам не нужно беспокоиться о совместимости. Учитывая выбор между двумя приложениями с сопоставимыми функциями, люди обычно предпочитают приложение, использующее "родные" виджеты своего рабочего стола, но я бы не стал беспокоиться об этом.
Другие, более важные пункты в выборе "набора инструментов виджетов": условия лицензирования, поддержка выбранного языка, кросс-платформенная совместимость.
Post Scriptum: Возвращаясь через несколько лет, я приобрел некоторый собственный опыт программирования GUI и понял, что в приведенном выше объяснении отсутствует одна вещь, если вы ищете совет "в какую сторону идти": wxWidgets. Это платформа, которая строится поверх того, что вы используете изначально, и позволяет прозрачно переносить разработку графического интерфейса, не жертвуя производительностью и не подключая какие-либо строки лицензирования. C++ API. Это путь, который я выбрал для своих нужд GUI, и я чувствовал, что его следует упомянуть для полноты.