До недавнего времени я жил в своем уютненьком 32-битном мирке под Линуксом, вел там разработку PIM-менеджера MyTetra, и меня все устраивало. В конце концов, фреймверк Qt, на котором написана MyTetra - вполне себе кросс-платформенный. Тестированием, кроме как в KDE4 в 32-х битном Debian и в Windows 7 32/64 бит, я не занимался.
Но вот недавно я переехал на Debian 9 с архитектурой x86-64. Да, пакетов KDE4 в этом Дебиане уже нет. Майнтейнеры дистрибутива предлагают кушать KDE5. Поставил я эту пятую версию, и продержался на ней целых три дня. Теперь я точно знаю, что KDE скатился в сраное гуано. Версия 4 уже была малоюзабельным поделием, но я ее как-то докрутил, и даже сделал свою олд-стайловую тему Redmond-125, в общем, смог заставить себя пользоваться. Но пятая версия - это апофеоз глюков и странных дизайнерских решений. Кажется, что авторы KDE вообще забыли про то, что Desktop Enviroment - это повседневный инструмент, который должен четко и быстро работать, а не глючить и залипать на отрисовке. Вместо этого авторы KDE5 пилят какие-то свистоперделки, совершенно забив на базовую функциональность.
Помятуя, что один мой товарищ без ума от Linux Mint и MATE, я решил поставить эту MATE. И вроде бы все устраивало, но ровно до тех пор, пока я не запустил свою MyTetra. Пользоваться в GTK-окружении Qt-программой оказалось практически невозможным. Почему? А вот почему:
1. Разлезлась верстка элементов управления. Фирменные GTK-шные широченные отступы между кнопками превратили насыщенный интерфейс MyTetra в какую-то странную программу, у которой очень мало места непосредственно для текстовой информации. Не помогали даже кнопки сворачивания-разворачивания тулбаров - места для текста все равно осталось катастрофически мало. Большие вертикальные отступы в списках и дереве заставили меня раза в три больше крутить колесиком, чтобы добраться до нужного элемента. Это кошмар. Попытка подобрать GTK-тему ни к чему не привела: тем в MATE и GNOME дохренищща, но нет ни одной компактной. Точнее, попытки создать компактную тему есть, но они все недоделанные. То цвета сливаются, то границ не видно, то шрифты слипаются, и это все на обычных GTK-приложениях, о Qt я вообще не говорю.
2. В GTK-среде почему-то по-умолчанию активной кнопкой считается кнопка Cancel, а не ОК. В результате все мои моторные навыки не позволяли мне совершать основные действия с клавиатуры. Например, при создании записи можно нажать Ctrl+Enter, и запись будет записана. Записана она будет в Qt-based средах. А в GTK-based будет нажата отмена, и все что пользователь успел напечатать - улетучится. Мне говорили об этом пользователи, но я не мог толком понять при каких условиях это происходит. И вот, пожалуйста, - условием является запуск в GTK среде. В принципе, в исходниках исправляется это быстро, но сам факт...
3. По неизвестным мне причинам в MyTetra не отрисовываются надписи в центре области поиска. Специально для версии 1.42 я сделал несколько надписей, которые в зависимости от ситуации должны помогать пользоватлю понимать, как проходит поиск. В GTK эти надписи просто не отображаются. Это обычные QLabel, и что может глючить - ума не приложу.
Далее проблемы, обнаруженные в 64-битной сборке.
4. В области текста записи криво работают кнопки PgUp и PgDn. Вместо пролиствания одной высоты окна редактирования, происходит двойное пролистывание. Очень это дело неудобно: вместо того чтобы быстро подняться.опуститься к ближайшему тексту, "улетаешь" курсором далеко, и теряешься, ибо непонятно, где ты находишься.
5. Встроенный менеджер закачки, который используется для закачки картинок в текст и при прикреплении файлов из интернета, не качает данные с HTTPS-сайтов. Я сначала подумал, что виной тому просроченные сертификаты на сайтах, но нет: на 64-х битах используемые мной стандартные Network-объекты Qt тупят при работе с Secure-протоколом. На 32-х битах такой проблемы нет.
6. Запомненные координаты окна при каждом запуске съежжают на несколько пикселей. Тут надо разбираться, почему так. Видимо, это какое-то проявление новых оконных менеджеров, ведь раньше у меня такого не было ни в Linux, ни в Windows.
7. Ну, и как вишенка на торте, стандартный скрипт запуска MyTetra, не может запустить программу в 64-х битной среде. Проблема возникает в момент, когда запуск происходит не из каталога, где лежит скрипт запуска и бинарник. Например, при запуске с ярлыка. Пользователи мне об этом говорили, но я не мог поверить, что такая платформонезависимая вещь, как исполнение bash-скрипта, может отличаться для разных архитектур. Тем не менее, это так.
Отказаться от 64-х бит, в принципе, невозможно, да и ненужно. А вот от GTK я отказался с радостью, установив среду LxQt. Да, она немного глючноватая, да, в ней иногда пропадает рабочая панель в моменты, когда GTK-based софт пытается быстро переключить свои окна. Но по своей концепции это очень вменяемый проект, и я ему желаю всяческого дальнейшего развития.
А что же MyTetra? Ближайшая цель - это исправление косяков, которые вылезли в 64-х битах. Проблемы, возникающие в GTK-среде я тоже смогу скомпенсировать в Qt-коде, во всяком случае надеюсь на это. Плюс еще надо исправить несколько бажиков, которые проявились в версии 1.42.
Поэтому следующий выпуск MyTetra будет багфикс-релизом, это уже решено. Кроме того, новый релиз будет только под платформу x86-64, так как все последние версии Qt под Linux (и версия 5.9.x в том числе) давно уже выпускаются только в режиме 64-х бит.
Всем удачи, следите за новостями.