LINUX.ORG.RU

wc-themegen, консольная утилита для автоматической подстройки темы Wine

 , , , ,


2

1

Год назад учил Си, осваивал GTK и в процессе писал враппер для Wine, упрощающий настройку многих утомительных действий. Сейчас дописывать проект нет ни времени, ни сил, но в нём была удобная функция адаптации темы Wine к текущей теме GTK3, которую я вынес в отдельную консольную утилиту. Знаю, в Wine-staging есть функция «мимикрии» под тему GTK, но сделано это очень криво, часть виджетов перестаёт отвечать или вообще отображаться, и это длится уже несколько лет, так что моё решение куда как более юзабельное, хотя и далеко не идеальное.

Утилита «вытаскивает» цвета из текущей темы GTK-3 и оптимально подстраивает их для использования с виджетами WinAPI. Алгоритм оптимизирован для использования как со светлыми, так и с тёмными темами. К сожалению, особенности тем а-ля «windows 95» не позволяют добиться современного плоского дизайна, в любом случае часть виджетов отображаются некорректно. Для придирчивых пользователей есть несколько ключей для более точной подстройки под себя.

Использование:

--prefix, -p $PATH - путь к префиксу

--not-run-winecfg, -w - не запускать Winecfg после применения темы

--loader-dir, -l $DIR - путь к произвольному загрузчику Wine, например, "/opt/wine-staging/bin"

--set-default, -d - отменить всё баловство с цветами и вернуть дефолт

--main-color, -m $COLOR - произвольный фоновый цвет виджетов, например, "#fa4500"

--highlight-color, -c $COLOR - цвет подсветки выделенных виджетов

--active-color, -a $COLOR - цвет заголовка активного окна

--inactive-color, -i $COLOR - цвет заголовка неактивного окна

--text-color, -t $COLOR - цвет текста

--contrast, -c $VALUE - настройка контрастности итоговой темы, от 0.1 до 2.0, по умолчанию 1.0

--help, -? - справка

Скомпилированный бинарник (amd64)
Скриншоты с несколькими известными темами

>>> Подробности

★★★★

Проверено: a1batross ()

Ответ на: комментарий от alexferman

Знаю, в Wine-staging есть функция «мимикрии» под тему GTK, но сделано это очень криво, часть виджетов перестаёт отвечать или вообще отображаться, и это длится уже несколько лет, так что моё решение куда как более юзабельное, хотя и далеко не идеальное.

Только в staging, и половина виджетов при этом пропадает. Нет, спасибо, уже насмотрелись всего этого, кушайте сами.

meliafaro ★★★★ ()
Последнее исправление: meliafaro (всего исправлений: 1)

--set-default, -d - отменить всё баловство с цветами и вернуть дефолт

Плз, пофикси, чтобы при запуске с этой опцией анлочило чекбокс с дефолтой поддержкой gtk тем.

Skullnet ★★ ()

Запустил OpeMPT и получил красный фон. (http://i.imgur.com/fCXpbh3.png)

Это не критичная ошибка, потому что ничего там нет, а после открытия файла он пропадает, но все равно репочу. (http://i.imgur.com/cfkvDxf.png)

Skullnet ★★ ()
Последнее исправление: Skullnet (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

Я писал этот проект, осваивая GTK и вообще практикуясь в сишечке. Алгоритм подстройки цветов так вообще был изначально питон-скриптом, я уже потом переписывал прототип на Си.

meliafaro ★★★★ ()

Лучше бы генератор темы в стиле winxp из gtk сделал. Классическая тема с подстроенными цветами выглядит убого - уж лучше дефолтную расцветку юзать - так оно просто выглядит как чужеродное приложение (и правильно делает)

mittorn ★★★★★ ()

К сожалению, особенности тем а-ля «windows 95» не позволяют добиться современного плоского дизайна

А по мне, так киллерфича. Вот если бы ещё импортировать потом тему из вайна обратно в гтк3, цены бы ему не было!

kirill_rrr ★★★★★ ()
Ответ на: комментарий от kirill_rrr

Вот если бы ещё импортировать потом тему из вайна обратно в гтк3, цены бы ему не было!

Ты имеешь в виду все эти объёмные кнопки я-ля Вин95? Это сильно сложнее: тема WinAPI описывается несколькими десятками переменных, тогда как темы GTK (или того же Qt, справедливости ради) целой простынёй CSS.

meliafaro ★★★★ ()
Ответ на: комментарий от RazrFalcon

Идеальная задача для питона

через несколько лет прога на питоне не будет работать из-за очередной поломки совместимости между версиями питона

anonymous ()
Ответ на: комментарий от gtk3

А он не жрет во время воспроизведение одно ядро процессора на 100%?

Да, есть такое. Говорят, что это из-за редактора паттернов.

А то я даже хотел баг-репорт написать.

Поддерживаю, чем больше напишут, тем лучше.

Skullnet ★★ ()
Ответ на: комментарий от mittorn

Сильно зависит от приложения. В Reaper или Guitar Pro 5 нормальная работа с такими темами невозможна, даже обычные кнопки пропадают. Год назад некоторые приложения вообще отказывались запускаться с включённой поддержкой тем GTK, как сейчас, не знаю.

meliafaro ★★★★ ()
Ответ на: комментарий от RazrFalcon

Идеальная задача для питона, но нет, будем жевать кактус.

для нормальной головы любая задача - идеальная

появление скриптовых ЯП и прочего шлака сильно испортило некогда приличное общество

sloan ()
Ответ на: комментарий от meliafaro

того же Qt

Ты о чём вообще? У Qt нет тем как явления. Есть модули для мимикрии под что-нибудь другое, и пару модулей со своими форматами тем (QtCurve и от кедерастов что-то). Есть ещё CSS-стили для QML, но они зашиваются в приложения разработчиками, а не применяются глобально.

anonymous ()
Ответ на: комментарий от mittorn

Есть старые цветовые схемы а-ля Вин95 (пример на скриншоте) - стабильно, но с их внешним видом ничего особенно не сделаешь, кроме самых базовых вещей вроде смены шрифта и цвета виджетов. Есть вроде как поддержка тем для ХР/Семёрки, но она работает некорректно, часть виджетов не отображается или не отвечает. Поддержка тем GTK - отдельный патч из состава Wine-staging, он работает как раз через новый движок тем со всеми присущему тому недостатками.

meliafaro ★★★★ ()
Ответ на: комментарий от TheAnonymous

Но ведь Win95-вырвиглазие немногим лучше. Настоящая сила в пиксмапных темах, а по канонам нынешних трендов они должны быть векторными и анимированными (чтоб у буржуев с HiDPI и тачскринами прилично выглядело), но где ж такое встретишь? :/

anonymous ()
Ответ на: комментарий от TheAnonymous

И это хорошо!

Хорошо - это когда хочешь - ставишь плоскую тему, хочешь - как в Вин95, хочешь вообще вырвиглаз какой-нибудь в духе местной галереи. И овцы целы, и пастуху земля пухом. А тут всё гвоздями прибито. Ладно, работает нормально, и на том спасибо.

meliafaro ★★★★ ()

Допилил ваши замечания и хотелки. Теперь в составе есть отдельная утилита wc-fast, которая применяет тему в префиксе, указанном в WINEPREFIX, и запускает Wine, передавая ему собственные аргументы и окружение. Загрузчик можно указать через переменную окружения WC_LOADER. Например:

WC_LOADER=/opt/wine-staging/bin/wine WINEPREFIX=~/temp_wineprefix wc-fast winecfg

Остальные замечания также пофиксил.
Ссылка на перекомпиллированные бинарники.

meliafaro ★★★★ ()