Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
PortProtonQt
Удобный графический интерфейс для управления и запуска игр из PortProton, Steam и Epic Games Store. Оно объединяет библиотеки игр в единый центр для лёгкой навигации и организации. Лёгкая структура и кроссплатформенная поддержка обеспечивают цельный игровой опыт без необходимости использования нескольких лаунчеров. Интеграция с PortProton упрощает запуск Windows-игр на Linux с минимальной настройкой.
В планах
- Адаптировать структуру проекта для поддержки инструментов сборки
 - Добавить возможность управления с геймпада
 - Добавить возможность управления с тачскрина
 - Добавить возможность управления с мыши и клавиатуры
 - Добавить систему тем Документация
 - Вынести все константы, такие как уровень закругления карточек, в темы (частично выполнено)
 - Добавить метаданные для тем (скриншоты, описание, домашняя страница и автор)
 - Продумать систему вкладок вместо текущей
 - Добавить сессию Gamescope, аналогичную той, что используется в SteamOS
 - Разобраться почему теряется часть стилей в Gamescope
 - Разработать адаптивный дизайн (за эталон берётся Steam Deck с разрешением 1280×800)
 - Переделать скриншоты для соответствия гайдлайнам Flathub
 - Получать описания и названия игр из базы данных Steam
 - Получать обложки для игр из SteamGridDB или CDN Steam
 - Оптимизировать работу со Steam API для ускорения времени запуска
 - Улучшить функцию поиска в Steam API для исправления некорректного определения ID (например, Graven определялся как ENGRAVEN или GRAVENFALL, Spore — как SporeBound или Spore Valley)
 - Убрать логи Steam API в релизной версии, так как они замедляют выполнение кода
 - Решить проблему с ограничением Steam API в 50 тысяч игр за один запрос (иногда нужные игры не попадают в выборку и остаются без обложки)
 - Избавиться от вызовов yad
 - Реализовать собственный механизм запрета ухода в спящий режим вместо использования механизма PortProton (оставлено для PortProton 2.0)
 - Реализовать собственный системный трей вместо использования трея PortProton
 - Добавить экранную клавиатуру в поиск (реализация собственной клавиатуры слишком затратна, поэтому используется встроенная в DE клавиатура: Maliit в KDE, gjs-osk в GNOME, Squeekboard в Phosh, клавиатура SteamOS и т.д.)
 - Добавить сортировку карточек по различным критериям (доступны: по недавности, количеству наигранного времени, избранному или алфавиту)
 - Добавить индикацию запуска приложения
 - Достигнуть паритета функциональности с Ingame
 - Достигнуть паритета функциональности с PortProton
 - Добавить возможность изменения названия, описания и обложки через файлы 
.local/share/PortProtonQT/custom_data/exe_name/{desc,name,cover} - Добавить встроенное переопределение названия, описания и обложки, например, по пути 
portprotonqt/custom_dataДокументация - Добавить в карточку игры сведения о поддержке геймпада
 - Добавить в карточки данные с ProtonDB
 - Добавить в карточки данные с AreWeAntiCheatYet
 - Продублировать бейджи с карточки на страницу с деталями игры
 - Добавить парсинг ярлыков из Steam
 - Добавить парсинг ярлыков из EGS
 - Избавиться от бинарника legendary
 - Добавить запуск игр из EGS
 - Добавить скачивание игр из EGS
 - Добавить поддержку запуска сторонних игр из EGS
 - Добавить авторизацию в EGS через WebView вместо ручного ввода
 - Получать описания для игр из EGS через их API
 - Получать slug через GraphQL запрос
 - Добавить на карточку бейдж, указывающий, что игра из Steam
 - Добавить поддержку версий Steam для Flatpak и Snap
 - Отображать данные о самом последнем пользователе Steam, а не первом попавшемся
 - Исправить склонения в детальном выводе времени, например, не «3 часов назад», а «3 часа назад»
 - Добавить перевод через gettext Документация
 - Отображать описания игр и другие данные на языке системы
 - Добавить недокументированные параметры конфигурации в GUI (time_detail_level, games_sort_method, games_display_filter)
 - Добавить систему избранного для карточек
 - Заменить все 
printнаlogging - Привести все логи к единому языку
 - Уменьшить количество подстановок в переводах
 - Стилизовать все элементы без стилей (QMessageBox, QSlider, QDialog)
 - Убрать жёсткую привязку путей к стрелочкам QComboBox в 
styles.py - Исправить частичное применение тем на лету
 - Исправить наложение подписей скриншотов при первом перелистывании в полноэкранном режиме
 - Добавить поддержку GOG (?)
 - Определиться с названием (PortProtonQt или PortProtonQT или вообще третий вариант)
 - Добавить данные с HowLongToBeat на страницу с деталями игры (?)
 - Добавить виброотдачу на геймпаде при запуске игры
 - Исправить некорректную работу слайдера увеличения размера карточек(Последствия регрессии после этого коммита
 - Исправить баг с наложением карточек друг на друга при изменении фильтра отображения (Последствия регрессии после этого коммита)
 - Скопировать логику управления с D-pad на стрелки с клавиатуры
 - Доделать светлую тему
 - Добавить подсказки к управлению с геймпада
 - Добавить загрузку звуков в темы например для добавления звука запуска в тему и тд
 - Добавить миниатюры к выбору файлов в диалоге добавления игры
 - Добавить быстрый доступ к смонтированным дискам к выбору файлов в диалоге добавления игры
 
Установка (devel)
uv python install 3.10
uv sync
source .venv/bin/activate
Запуск производится по команде portprotonqt
Установка (release)
Выберите подходящий пакет для вашей системы или AppImage.
Запуск производится по команде portprotonqt или по ярлыку в меню
Разработка
В проект встроен линтер (ruff), статический анализатор (pyright) и проверка lock файла, если эти проверки не пройдут PR не будет принят, поэтому перед коммитом введите такую команду
uv python install 3.10
uv sync --all-extras --dev
source .venv/bin/activate
pre-commit install
pre-commit сам запустится при коммите, если вы хотите запустить его вручную введите команду
pre-commit run --all-files
Авторы
- Boria138 - Основной разработчик
 - BlackSnaker - Автор идеи, а так же начальной реализации проекта
 - Mikhail Tergoev (Castro-Fidel) - Автор оригинального проекта PortProton
 
Контрибьюторы
Мы благодарим всех, кто внёс вклад в развитие PortProtonQt, включая тех, кто участвует через коммиты, а также тех, кто помогает другими способами (тестирование, идеи, переводы, документация и т.д.). Полный список участников, можно найти в списке активности репозитория. Дополнительные участники также перечислены в файле CHANGELOG.md. Если вы внесли вклад, но не указаны, свяжитесь с основными разработчиками, чтобы мы могли вас отметить!
Зависимости и лицензии
PortProtonQt использует код и зависимости от следующих проектов:
- Legendary — инструмент для работы с Epic Games Store, лицензия GPL-3.0.
 - Icoextract — библиотека для извлечения иконок, лицензия MIT.
 - PortProton 2.0 — библиотека для взаимодействия с PortProton, лицензия MIT.
 
Полный текст лицензий см. в файлах LICENSE, LICENSE-icoextract, LICENSE-portproton, LICENSE-legendary.
Warning
Проект находится на стадии WIP (work in progress) корректная работоспособность не гарантирована
Warning
Будьте осторожны! Если вы берёте тему не из официального репозитория или надёжного источника, убедитесь, что в её файле
styles.pyнет вредоносного или нежелательного кода. Посколькуstyles.py— это обычный Python-файл, он может содержать любые инструкции. Всегда проверяйте содержимое чужих тем перед использованием.