[devel] gtk engines smooth

Вячеслав Вячеслав
Вт Сен 7 00:31:10 MSD 2004


On Пнд, 2004-09-06 at 21:20 +0700, Alexey Morozov wrote:
> > Кроме того, надо вообще что-то сделать с размещением по пакетам
> > библиотек прорисовки и тем для gtk1 и gtk2. У нас 2 версии gtk и очень
> > желательно, чтобы темы для обеих были одинаковы. При выборе
> > темы gtk2 пишется ~/.gtkrc с той же темой для gtk1, поэтому если
> > собирать одноименные темы gtk1 и gtk2 вместе в одни и те же пакеты
> > переключение будет прозрачно синхронизировано.
> В один и тот же пакет темы для разных версий GTK? 
> Движок (engine) того же smooth'а потянет за собой GTK соответствующей
> версии, что, вообще-то, нежелательно. 
Именно. Над этим я думал три дня и ничего лучшего не выдумал. Все
остальные варианты оказываются сложнее для упаковки и установки. 

Вот они:
1) gtk-themes-* в котором все библиотеки и gtkrc файлы тем
для gtk1 и gtk2. Недостаток - двойная зависимость. Достоинство -
простота установки и гарантированная синхронность переключения.
Сборка gtk1 части тем может быть отключена 1 переменной в spec. Я также
думаю над возможностью искусственно отключить зависимоcти таких пакетов
от gtk (Autoreq = 0) или заставить оба gtk предоставлять общее
одинаковое имя и требовать уже его. 

2) gtk1-themes-* + gtk2-themes-* Для установки темы для всей рабочей
среды нужны _оба_ пакета и поэтому gnome-themes-* требует их вместе. Это
значит, что двойная зависимость никуда не делась! Чтобы избавиться от
нее нужны условные зависимости типа "ЕСЛИ УСТАНОВЛЕН GTK1, ТО
ВИРТУАЛЬНЫЙ ПАКЕТ Х ТРЕБУЕТ ПАКЕТ Y, А В ПРОТИВНОМ СЛУЧАЕ - НЕ ТРЕБУЕТ"
Я не согласен отказаться от зависимости на все темы в вершинных пакетах
типа gnome-themes или kde-themes, потому что это лишает смысла такие
пакеты и всю затею.

3) gtk-engine-* + gtk-themes или gtk1/2-engine-* + gtk1/2-themes -
CСчитаю это напрасным умножением пакетов так как с точки зрения
пользователя устанавливающего темы существование engines - лишняя
головная боль. Все модули прорисовки имеют в комплекте как минимум 1
стандартную тему. Дополнительных тем может быть много из других
источников. Проще всего оказывается свалить всю гору исходных пакетов в
общем srpm и на выходе получать один пакет, где все лежит по
полочкам. Spec получается несложный (исключение - smooth, потому что
какой-то мудрец додумался приделать automake к десятку файлов gtkrc) 


> Удобство переключения, это,
> конечно, круто, но, во-первых, есть вопросы относительно того, всегда ли
> такая синхронность нужна, 
Она нужна до тех пор, пока в Сизифе есть gtk1. Поскольку он уходящее
явление, то следует максимально упрощать всю сопутствующую
инфраструктуру и не городить лишних пакетов. Собирать все с ним
связанное я хочу в ifdef с возможностью легко отключить сборку.

> а, во-вторых, породит вопли вида:
> захотел поставить smooth, получил две версии библиотеки => зависимости в
> ALT убитые.
Я отчасти согласен, но это неверный вывод. gtk1 сам по себе невелик на
фоне всего, что неизбежно будет стоять в системе с графическим
интерфейсом, и почти наверняка понадобится для вещей типа usbview или
*drake. Кроме того, зависимость на gtk можно вообще убрать.
Пакеты icon-themes тоже можно поставить "в пустоту".

> Если же речь о виртуальном пакете
> 
> gtk-themes-smooth, который будет требовать gtk-engines-smooth и
> gtk-themes-smooth обеих версий, то я не против.
См. вариант 2. Можно и так, но тогда будет вместо одного толстого пакета
орда мелких. Я как раз и хочу уменьшить этот эффект. 

Идея в том, чтобы переключение темы оказывало единообразное действие на
все установленные программы (или максимальное их число). С какой стати
пользователей, желающих просто сделать сменить надоевшее оформление,
должны волновать различия версий gtk и вообще существование разных
библиотек? В форточках интерфейс тоже не только на MFC бывает, но
выглядит и управляется одинаково и это плюс, который следует перенять.


> > Цель изменений - уменьшение количества мелких пакетов тем с
> > потенциальных сотен до единиц при сохранении возможности поставить
> > темы gtk отдельно от тем gnome и избавлении от ручного подбора множества
> > мелких пакетов для сбора цельной темы, включающей много элементов.
> Цель благая. Как закончите, пришлите, пожалуйста, спек, я окончательно
> махну рукой :-)
Хорошо. Это нужно сделать завтра, потому что за него цепляется целый
паровозик.
-- 
Вячеслав Диконов <sdiconov на mail.ru>




Подробная информация о списке рассылки Devel