Рейтинг:2

Как я могу вернуться от использования GTK 3 к GTK 2 на Kunbuntu 20.04?

флаг in

Я использую OpenCPN 5.2.4 с OpenGL (требуется для наложения радара на диаграммы) под Kubuntu 20.04. Отслеживаемая ошибка OpenCPN, связанная с использованием GTK3, не позволяет OpenCPN правильно масштабировать дисплей при использовании масштабирования дисплея (я использую 200% для масштабирования на 15,6-дюймовом дисплее 4k).

Временный обходной путь — использовать GTK2 вместо GTK3.

Мой вопрос: Как я могу вернуться к GTK2 в своей системе?

Любые подсказки о том, как действовать, будут очень признательны.

Системная информация:

  • Операционная система: Кубунту 20.04
  • Плазменная версия KDE: 5.18.5
  • Платформы KDE Версия: 5.68.0
  • Версия Qt: 5.12.8
  • Версия ядра: 5.4.0-77-универсальная
  • Тип ОС: 64-битная
  • Процессоры: 4 процессора Intel® Core™ i5-4570T с тактовой частотой 2,90 ГГц
  • OpenGL: 3.0 Меза 20.2.6

$ apt-cache политика opencpn 
опенспн: 
Установлено: 5.2.4.0-0~focal1 
Кандидат: 5.2.4.0-0~focal1 
Таблица версий:
 *** 5.2.4.0-0~фокус1 500 
500 пакетов ppa.launchpad.net/opencpn/opencpn/ubuntu focus/main amd64 
100 /var/lib/dpkg/status 5.0.0+dfsg-1 500 
500 пакетов nz.archive.ubuntu.com/ubuntu focus/universe amd64
guiverc avatar
флаг cn
Загрузите исходный код, убедитесь, что все вызовы GTK3 совместимы с GTK2, и настройте/перекодируйте те, которые используют функции GTK3, чтобы ограничить себя (и функциональность кода) совместимыми с GTK2 вызовами, а затем повторно скомпилируйте код.API-интерфейсы GTK3 и GTK2 различаются, поэтому вы не можете заменить GTK3 пакетами GTK2... все программы необходимо портировать, а это тяжелая работа (почему перенос MATE занял много времени, как и XFCE и т. д.... не говоря уже о GNOME )
guiverc avatar
флаг cn
Ваша альтернатива - создать программу, такую ​​​​как `wine`, которая перехватывает все вызовы GTK3 и пытается преобразовать их в вызовы GTK2 и вызывает библиотеки GTK2, чтобы делать то, что может делать GTK2... То, что она делает с различиями GTK2/GTK3, является трудным часть; он может либо проигнорировать это (что, вероятно, создаст segfaults или окажет *ненадежный* или *нестабильный* эффект на вызывающую программу, OpenCPN в вашем случае) и не будет очень надежным с нагрузкой постоянной и будущей настройки по мере изменения GTK3 происходить в будущем...
N0rbert avatar
флаг zw
Почему вы действительно думаете, что проблемы вызваны GTK2? Вероятно, вы используете нестандартную версию OpenCPN, репозиторий по умолчанию предоставляет [версию 5.0.0] (https://packages.ubuntu.com/focal/opencpn). Были ли у вас проблемы с OpenCPN при использовании более старых версий [от 2019 года] (https://changelogs.ubuntu.com/changelogs/pool/universe/o/opencpn/opencpn_5.0.0+dfsg-1/changelog), которые, вероятно, основаны на GTK2 ? Какой источник установки вы используете для OpenCPN? Что выводит `apt-cache policy opencpn`?
Sergio avatar
флаг in
Проблема связана с GTK3 (https://github.com/OpenCPN/OpenCPN/issues/1927#issuecomment-868587708). OpenCPN, репозиторий по умолчанию, предоставляет 5.2.4. политика apt-cache opencpn опенспн: Установлено: 5.2.4.0-0~focal1 Кандидат: 5.2.4.0-0~focal1 Таблица версий: *** 5.2.4.0-0~фокус1 500 500 http://ppa.launchpad.net/opencpn/opencpn/ubuntu focus/main amd64 Пакеты 100 /var/lib/dpkg/status 5.0.0+dfsg-1 500 500 http://nz.archive.ubuntu.com/ubuntu focus/universe Пакеты amd64
Рейтинг:1
флаг cn
  • скачать исходный код [к OpenCPN 5.2.4]
  • убедитесь, что все вызовы GTK3 совместимы с GTK2
  • настройте/перекодируйте те, которые используют функции GTK3, чтобы они были ограничены функциями GTK2 и выполняли вызовы GTK2
  • перекомпилировать код.

API GTK3 и GTK2 различаются, поэтому вы не можете заменить GTK3 пакетами GTK2 (на что, я подозреваю, вы надеялись).

Программы должны быть портированы, что требует большой работы (почему MATE потребовалось много времени для переноса, как и XFCE и т. д., не говоря уже о GNOME, когда он был перенесен с GTK2 на GTK3, а теперь в настоящее время переходит на GTK4)

Если было непонятно - работа, которую нужно сделать, делается в программе OpenCPN и OpenGL; т.е. программы конечного пользователя, которые в настоящее время вызывают GTK3, нуждаются в изменении.

В системе могут сосуществовать GTK3 и GTK2; например. мой лубунту озорной В системе установлены библиотеки Qt5, GTK3 и GTK2, и они будут счастливо сосуществовать.

  • хексчат (мой выбранный клиент IRC) вызывает библиотеки GTK2
  • жизнь & эволюция (мой выбранный RSS и MUA) вызов GTK3 libs
  • мой рабочий стол Lubuntu LXQt, это программы, например. перо вызывать библиотеки Qt5 точно так же, как ваш рабочий стол KDE (многие приложения KDE также нуждаются в KF5).

Это программа конечного пользователя, которую необходимо изменить. Вы можете установить весь набор/библиотеку GTK2 в своей системе, но если ничего не вызывается, она не будет использоваться.

Также обратите внимание: Масштабирование не существует в GTK2, поэтому я не понимаю, чего вы надеетесь достичь.

guiverc avatar
флаг cn
К вашему сведению: Почему выбранные мной приложения... Я был пользователем GNOME давным-давно (GTK2) дней, и некоторые приложения для конечных пользователей я просто не выкинул...
Sergio avatar
флаг in
Хорошо, это многое для меня проясняет. Похоже, мне придется подождать, пока разработчики OpenCPN исправят это в будущем выпуске. «Перекодировать» и «перекомпилировать», как это было предложено, намного выше моих компетенций. p.s.: Тем временем я застрял с миграцией системы и обновлением дисплея, которое OpenCPN не может обработать (Window to Kunbutu с 15,6-дюймовым дисплеем 4k, для которого требуется масштабирование 200%, чтобы его можно было использовать).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.