LINUX.ORG.RU

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

 , , ,

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 ()
Последнее исправление: a1batross (всего исправлений: 3)

На фоне возможности включить в wine поддержку текущей темы gtk3 - выглядит слабо

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

Знаю, в 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)
Ответ на: комментарий от Skullnet

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

Поясни, не очень понял.

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

Если написать WINEPREFIX= а потом прогу, то тема не применится.

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

В приложениях принято писать WINEPREFIX=~/.wine wc-themegen

Да, хорошая идея, добавлю поддержку переменных окружения.

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

Думаю, там цвет фона в RGB должен быть 255, 255, 255, но он почему-то 255, 0, 0, после применения темы.

Skullnet ★★★★★
()

Правильный подоход это генерировать uxtheme-тему на основе GTK/чего-то еще насколько это возможно.

anonymous
()

Скомпилированный бинарник (amd64)

Почему в релизы на GitLab не добавил? Было бы удобнее, всё в одном месте.

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

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

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

Не нашёл, как это сделать. Возможно, с моим стартовым планом такие фичи вообще не предусмотрены.

meliafaro ★★★★★
() автор топика

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

mittorn ★★★★★
()

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

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

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

Я например в шоке от того, что кто то уже не знает, что темы оформления в винде и вайне это бородатый дефолт.

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

Нормально оно выглядит. Если цвета соответствуют, то разные виджеты это хорошо, а глаза уе не мозолят.

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

Поддержка новых тем в Wine сделана очень плохо, часть виджетов не отображаются или ведёт себя некорректно.

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

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

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

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

Да, именно это. Ну и понятно что работатьс гтк3 намного намного сложнее.

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

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

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

anonymous
()

адаптации темы Wine к текущей теме GTK3

Я в шоке...

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

OpeMPT

Wine

А он не жрет во время воспроизведение одно ядро процессора на 100%? А то я даже хотел баг-репорт написать.

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

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

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

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

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

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

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

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

дык в коде опции поменял - в ридми поправь :)

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

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

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

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

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

того же Qt

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

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

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

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

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

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

И это хорошо!

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

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

Я в глубоком ахуе от такой поделки... темы... Вайн... идиоты...

anonymous
()

Аффтар, кАнчай такое тут выкладывать, маме лучше покажи как ты можешь;)

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

А вдруг его мама ходит на ЛОР?

anonymous
()

Отличная штука, спасибо автору.

anonymous
()
Ответ на: комментарий от meliafaro
--highlight-color, -c COLOR - hilighted widgets background color
--contrast, -c VALUE - contrast value. May be from 0.1 to 2.0, 
sloan ★★
()

Всего один вопрос: где в этом интерфейсе найти кнопку «Запустить программу»? Ведь Wine вроде как для этого и предназначен.

Xintrea ★★★★★
()

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

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

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

meliafaro ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.