История GTK и Qt
Идея разработки Qt появилась на свет в беседе двух друзей программистов Хаарварда Норда (Haarvard Nord) и Айрика Чеймб-Инга (Eirik Chambe-Eng) в далеком 1991 году. Буква «Q» была выбрана в качестве префикса классов, а буква «t», сокращение от toolkit, дополнила его до Qt. Вновь образованная компания по началу называлась «Quasar Technologies», затем сменила свое название на «Troll Tech», еще позже «Trolltech». Вскоре после заключения контракта с норвежской компанией «Metis» на разработку программного обеспечения на базе Qt, вышла его первая публичная версия с номером 0.90. Qt можно было использовать в разработках графических интерфейсов на разных платформах. С первого дня предусматривались две лицензии применения Qt: коммерческая лицензия и свободно распространяемая версия для разработок open source проектов. После покупки фирмой Nokia, компания еще раз сменила свое название на «Qt Software».
GTK (GTK+ как сокращение от GIMP ToolKit), изначально был частью графического редактора GIMP, созданного студентами Калифорнийского университета в Беркли Спенсером Кимбеллом (Spencer Kimball) и Питером Маттисом (Peter Mattis) в качестве дипломного проекта. Позже библиотека, написанная на языке Си стала независимой и приобрела свою популярность, которая существенно упрощает создание графических интерфейсов пользователя (GUI), предоставляя набор готовых компонентов (виджетов). Инструментарий GTK+ был выпущен 14 апреля 1998 года. GTK - это свободное программное обеспечение, распространяемое на условиях GNU LGPL. В отличие от Qt, разработчикам на GTK с самого начала была предоставлена возможность редактировать, изменять и распространять код. На основе GTK+ построены такие популярные рабочие окружения, как GNOME, XFCE, MATE, LXDE, CINNAMON.
Разница для конечного пользователя
Если с технической точки зрения разница есть и она достаточно существенная (GTK представляет из себя библиотеку для создания графических интерфейсов, а QT - это модульный фреймворк, включающий в себя инструментарий для гуи, мультимедиа, баз данных, сети), то с точки зрения пользователя приложения разница сводится лишь к визуальному оформлению той или иной аппликации.
Разница в стилях - это то, что прежде всего видит конечный пользователь и на что обращает свое внимание. Единый вид приложений, стилей оформления - это то, что всегда выгодно отличало Мак, делая пользовательскую среду монолитной.
В мире Линукс все гораздо печальней, и зачастую встречаешь мнения, что пользователи GNOME стараются обходить приложения Qt стороной, и наоборот те, кому симпатизирует KDE, предпочитают обходиться без GTK приложений в своей графической среде. Несмотря на то, что сегодня создано много различных тем, стилей, иконок, которые позволяют сделать внешний вид Qt и GTK практически идентичным, все это более походит на "сглаживание углов", но никак не на выработку единого стандарта. В будущем ситуация вряд ли изменится. GNOME продолжит развитие своего направления, которое на сегодня внешне выглядит элегантнее, но уступает возможностям Qt в создании сложных интерфейсов приложений.
Единый стиль интерфейсов Qt и GTK
В этом разделе попытаюсь показать на практике вариант приведения пользовательского интерфейса к единому виду, в котором использован "винегрет" из приложений, разработанных с использованием разных фреймворков. В качестве среды выбран нейтральный вариант на WM Qtile, который не имеет встроенной привязки к той или иной библиотеке. За основу стиля взят Gruvbox. Примерно так будут выглядеть интерфейсы различных приложений в стоке, развернутых на рабочем столе:
Стиль GTK определяется установленной единой темой окон и иконок Gruvbox, а также курсоров мыши Phinger Cursors. Qt приложения, при этом, используют системный вариант по-умолчанию. Можно воспользоваться встроенной поддержкой тем для каждого из Qt приложений, но в таком случае внешний вид будет разным даже среди них, не говоря об интеграции с GTK. Для vlc, скорее всего, даже не найдется ничего похожего на Gruvbox. Использование менеджера тем Kvantum позволит расширить вариативность в этом вопросе и подобрать наиболее близкий вариант, благо тем для него существует множество, НО как всегда есть "ложка дегтя". Во-первых, Kvantum не поддерживает управление шрифтами, иконками, курсорами мыши, во-вторых, тот же qbittorrent ни в какую у меня не хотел принимать тему, выбранную в Kvantum. Принудительно применить стиль Kvantum для всех Qt приложений можно, прописав следующую переменную в файл:
/etc/environment
----------------
QT_STYLE_OVERRIDE=kvantum
и после сохранения выполнив команду с правами суперпользователя:
# env-update
Итоговый стиль значков и приложений получился "ну так себе, сойдет":
На помощь менеджеру тем Kvantum приходят утилиты настойки qt5ct/qt6ct, в которых реализована поддержка цветовых схем и шрифтов и присутствует настройка тем иконок. Когда конфигурация внутри qt5ct выполнена, остается внести изменения в файл настроек переменных среды (можно, как показано выше в файл < /etc/environment >; можно в файл настроек qt5ct < /etc/env.d/98qt5ct >). Главное, не забыть закомментировать/удалить все ранее добавленные переменные, касающиеся стилей Qt. В итоге должна остаться только вот эта строчка в файле конфигурации:
/etc/environment (/etc/env.d/98qt5ct)
-------------------------------------
QT_QPA_PLATFORMTHEME=qt5ct
после сохранения не забыть выполнить команду с правами суперпользователя:
# env-update
проверка настроенных переменных окружения:
# printenv
Цветовой профиль Gruvbox также легко добавляется к qt5ct, для этого нужно создать файл конфигурации по адресу < /usr/share/qt5ct/gruvbox.conf > следующего содержания:
[ColorScheme]
active_colors=#ffebdbb2, #ff1d2021, #ffbdae93, #ffa89984, #ff3c3836, #ff504945, #ffebdbb2, #ffebdbb2, #ffebdbb2, #ff282828, #ff1d2021, #ff504945, #ff458588, #ff282828, #ff458588, #ffcc241d, #ff282828, #ffebdbb2, #ff1d2021, #ffebdbb2, #ffbdae93
disabled_colors=#ffbdae93, #ff1d2021, #ffbdae93, #ffa89984, #ff3c3836, #ff504945, #ffbdae93, #ffbdae93, #ffbdae93, #ff282828, #ff1d2021, #ff504945, #ff438184, #ff3c3836, #ff458588, #ffcc241d, #ff282828, #ffebdbb2, #ff1d2021, #ffebdbb2, #ffbdae93
inactive_colors=#ffebdbb2, #ff1d2021, #ffbdae93, #ffa89984, #ff3c3836, #ff504945, #ffebdbb2, #ffebdbb2, #ffebdbb2, #ff282828, #ff1d2021, #ff504945, #ff438184, #ffa89984, #ff458588, #ffcc241d, #ff282828, #ffebdbb2, #ff1d2021, #ffebdbb2, #ffbdae93
После перезагрузки, те же самые окна приложений на рабочем столе выглядят гораздо гармоничней. Да и в целом графический интерфейс преобразился и стал более монолитным (курсоры мыши, шрифты, диалоговые окна, значки, цвета):
В моем примере использован метод Kvantum + qt5ct/qt6ct. Ну и куда же без fastfetch, статья про который недавно выходила на ресурсе! Без него последний скриншот был бы просто невозможен:)
На самом деле вариантов приведения GTK и Qt к единому стилю куда больше; достаточно подробно и доступно они изложены в Arch Wiki. Какой из них выбрать именно вам? Каждый решает сам за себя. Кто-то вообще не парится и пользуется всем, как есть; кто-то просто старается не смешивать стили (например, вместо featherpad использует mousepad или наоборот), а кто-то выберет нечто среднее (например, ограничившись настройками менеджера тем Kvantum или только настройкой конфигурации qt5ct/qt6ct).
Кого заинтересует, упоминаемый в статье стиль Gruvbox, оставлю ссылки на ресурсы с ним (ну и для полноты картины на курсоры мыши):
Комментарии
09:57
Никогда не гнался к только GTK/Qt приложениям, т.к 2 лишние Qt библиотеки на ~30 мб ничего не сделают. А за единый стиль огромной спасибо прям, обязательно попробую причесать все "кутэшные" софтины, надеюсь получится :)
10:09
Информация важная.
Больше спасибо за проделанную работу.
10:21
Я отношусь к тем, кто "не парится", сразу вижу представителя из мира Qt, но ничего не предпринимаю, мне важнее, что приложение умеет. Например qbittorrent "нарушает" гармонию, можно было бы использовать trasmission или tixati, но нет, мой выбор - qbittorrent.
Хороший заход на fastfetch -). Ещё раз увидел, что выбор логотипа важен. Вон в Calculate очень гармонично Пингвин указывает, мол посмотрите, какие я темы выбрал на своём железе, а вспоминаю логотип ALT ... А картинок всяких *fetch полно в сети и они всякий раз напоминают про удачность того или иного логотипа.
12:09
12:41
19:11
19:45
20:14
А вообще, на КДЕ был свой набор иконок, записанный в файлике, сейчас в папке лежит набор с pling и look для Xfce и подобных. Больше как-то в сторону классических смотрю, вычурные (по типу buuf и Gant) сбиват с толку, поэтому придерживаюсь Tela, Qogir и подобных, те же Vertex однородно смотрятся. Yaru убунтовские имеет разные цвета папок, поэтому их можно подобрать под разные стили, однородно смотрется будет.
На КДЕ оч полюбились Neon Knights KDE, которые сами под цвет темы меняют цвет папок, в других ДЕ такого нет.
15:30
20:19
21:03
- плюс лишний пакет, не самый стабильный.
- минус быстродействие: его svg-тема накладывается бутербродом поверх скомпилированной темы и css-стиля.
- кавайный стиль, который голой правкой css стиля QT-шной темы не воссоздать
Cтиль вообще всех элементов приложений QT5 можно накорячись css-ом в qt5ct. (Будут несостыковки с Kate, systemsettings и другими мутантами, пользующими Plasma-элементы)
Для GTK4 - точно так же, стиль элементов целиком перелопачивается в gtk.css.
А вот нюансов навалом... начиная с доступных css-параметров, толщины пикселей, единиц измерения, до отображения стилей borders ...
21:15
21:16
21:22
22:04
22:03
09:23
11:54
https://pingvinus.ru/news/5125#c100992
Было бы интересно узнать, как и чем всё закончилось.
09:46
Как вы знаете, в этом DE есть хороший апплет погоды для панели. Но вот незадача: плохо отображает дату. Точнее отображает только среду, а остальные дни недели, как я понимаю, не влезают в строку из-за большего количества знаков. Вероятно, в конфиге задано какое-то количество символов в строке даты и все, что больше, игнорируется. Хотел отредактировать конфиг этого апплета, но что-то не нашел его нигде. Может кто-нибудь знает и подскажет, где он находится?
10:54
13:49
Добавлю: проблема переехала в Xubuntu 24.04. Пичаль.
17:32
https://postimg.cc/MnmFQrSZ
17:43
18:05
18:50
Правильно понял.
13:34
14:07
14:11
15:41
19:44
Ссылка:
https://cdimage.ubuntu.com/xubuntu/releases/24.04/release/
20:21
Правда преживаю по этому поводу!..
((
20:30
Контрабас не слышит скрипки.
Нет дирижера - не будет и оркестра!
21:21
Ну правда: в Винде своё фрэйворковое; в Линуксе - аж два фрэймворка. Ну как-то же живём?.. Вопрос в том, как жить будем дальше и чем это всё закончится?
А дальше "риторический" ответ:
https://www.youtube.com/watch?v=RqDubWl6NV0
22:04
https://postimg.cc/5HWQXP2N
https://postimg.cc/FY37XjVt
23:05
в глобальном смысле подчиняется qt5ct, без которого в любом случае "не торт" - шрифты, иконки... а вот тем для kvantum больше
23:19
Тут писали в ленте сайта, что в обновлении добавили
>> Поддержка тем оформления, файлы которых распределены по разным папкам.
https://pingvinus.ru/news/4213
Но это оказалась ерунда, которая не влияет на общий вид …
https://postimg.cc/mcr3LXXz
20:31
Нет, конечно, не верю я в это … Мало нам зоопарка дистрибутивов/платформ, давайте ещё ПО под два тулкита писать, чтоб число дистрибутивов помножить x2, а число проблем возвести в квадрат
21:18
+
Справедливо!
По этому и боль!...
17:36
Для всех окон настроил в picom.conf одинаковую прозрачность активного/пассивного режима, в настройках приложений убрал индивидуальные настройки. Короче заморочился так, что все тащу в один стиль, без исключений.
Вот только один вопрос появился, может кто подскажет. В tty появились проблемы с клавиатурой, точнее не все нажатия клавиш принимаются системой с первого раза (клавиатура исправна). Ввод имени пользователя, пароля... Причем системы такого поведения нет, может все работать, может тормозить (приходится по нескольку раз нажимать клавишу/и). Возможно глюк появился после очередного обновления ядра, но не точно. Linux 6.6.12-calculate
17:51
17:52
18:07
enable_fbc=0
18:08
23:15
пока принудительно переключился с libinput на evdev, прописал в make.conf
INPUT_DEVICES="evdev"
Пересобрал "мир"
Поправил конфигурацию клавиатуры в Х11
...
заметил, если принудительно включить/выключить numlock, то все после работает без задержек и глюков
08:49
Изменил задержку dracut в ожидании инициализации устройств вместо стандартных 180 сек.: rd.retry=40; отключил plymouth: rd.plymouth=0
Пересобрал initramfs и grub.cfg с новыми параметрами и все.
09:39
15:23
Проверил, это - он гадюка, по-умолчанию в Calculate этот параметр включен в строку GRUB_CMDLINE_LINUX, не помню уже когда и зачем его убрал. Но тогда у меня был lightdm в качестве менеджера входа, позже перешел на tty-login. Глюк заметил, когда добавил еще пользователя в систему с его wm qtile. Сильно не напрягало пока пользовался редко, а тут в связи с ежедневным использованием решил разобраться. Тестирую на виртуалке, а она у меня только на кальке настроена, совместное сосуществование Debian + Calculate KDE в UEFI-конфигурации. Вижу, что вяленый еще слишком сырой в дебушке с гномом. И решил пока не ломать маньку, в ней у меня гном отполирован и прекрасно работает на Х11.
17:49
17:56
20:27