> А почему выбрано именно такое решение?Которое именно?
Почему Гном на GTK? Ну так исторически сложилось.
Почему GTK использует для тем CSS?
gtkrc-формат в GTK2 был неудобен. Вся функциональность была реализована в отдельных движках — внешних модулях на C или еще на чем, которые самостоятельно рисовали элементы. Они могли показать наружу настройки, а в gtkrc-теме описывалось, фактически, какой элемент каким движком (либо без движка, см. тему Raleigh) рисовать и с какими настройками.
Для GTK3 справедливо решили, что такая система неудобна, и лучше использовать что-нибудь постандартнее. Например, CSS. Ну так и сделали. Правда, работа была совершенно огромная, и ее делали очень постепенно, версию за версией. Поэтому все ругались, что темы ломаются. Последнее такое крупное изменение было в GTK 3.20, где отрисовку виджетов полностью отделили от них самих. Элементы задают несколько css-нодов, а уж как они отображаются, определяется целиком и полностью через CSS. В итоге темы стало НАМНОГО проще писать и у них стало НАМНОГО больше возможностей.
Почему GNOME Shell не использует GTK, а использует Clutter?
Потому что через Clutter у них отрисовка идет с аппаратным ускорением (а тут отрисовка достаточно сложная, чтобы без него все люто тормозило). А в GTK на тот момент этого не было.
Почему он не на голом Clutter, а со своей надстройкой St?
Потому что Clutter — это не интерфейсный тулкит, а, по сути, движок. Он умеет рисовать через OpenGL и передавать события. А рисовать конкретно кнопочки и т.д. нет. Можно, например, реализовать на нем виджет CoverFlow и встроить его в GTK-приложение, он для таких вещей делался.
Поэтому St — реализация тулкита на Clutter. Всякие кнопочки, свитчи и т.д. Базовая реализация CSS-стилей тоже там.
Почему CSS?
Учитывая, что тулкит свой, то у них уже существующих решений не было. Потому выбрали удобный и стандартный вариант. Просто-напросто. :)