Boris Yumankulov 768d437dda
All checks were successful
Code and build check / Check code (push) Successful in 1m20s
Code and build check / Build with uv (push) Successful in 46s
feat: optimize get_egs_game_description_async to minimize API requests and handle DNS failures
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-06-03 20:48:41 +05:00
2025-06-01 15:21:32 +05:00
2025-06-01 15:21:32 +05:00
2025-06-01 15:21:32 +05:00
2025-06-03 14:29:37 +05:00
2025-06-01 09:57:02 +00:00
2025-06-01 15:21:32 +05:00
2025-06-03 14:27:19 +05:00
2025-06-01 15:21:32 +05:00

PortProtonQt

Современный, удобный графический интерфейс, написанный с использованием PySide6(Qt6) и предназначенный для упрощения управления и запуска игр на различных платформах, включая PortProton, Steam и Epic Games Store.

В планах

  • Адаптировать структуру проекта для поддержки инструментов сборки
  • Добавить возможность управление с геймпада
  • Добавить возможность управление с тачскрина
  • Добавить возможность управление с мыши и клавиатуры
  • Добавить систему тем Документация
  • Вынести все константы такие как уровень закругления карточек в темы (Частично вынесено)
  • Добавить метадату для тем (скришоты, описание, домащняя страница и автор)
  • Продумать систему вкладок вместо той что есть сейчас
  • Добавить Gamescope сессию на подобие той что есть в SteamOS
  • Написать адаптивный дизайн (За эталон берём SteamDeck с разрешением 1280х800)
  • Брать описание и названия игр с базы данных Steam
  • Брать обложки для игр со SteamGridDB или CDN Steam
  • Оптимизировать работу со SteamApi что бы ускорить время запуска
  • Улучшить функцию поиска SteamApi что бы исправить некорректное определение ID (Graven определается как ENGRAVEN или GRAVENFALL, Spore определается как SporeBound или Spore Valley)
  • Убрать логи со SteamApi в релизной версии потому что логи замедляют код
  • Что-то придумать с ограничением SteamApi в 50 тысяч игр за один запрос (иногда туда не попадают нужные игры и остаются без обложки)
  • Избавится от любого вызова yad
  • Написать свою реализацию запрета ухода в сон, а не использовать ту что в PortProton (Оставим это PortProton 2.0)
  • Написать свою реализацию трея, а не использовать ту что в PortProton
  • Добавить в поиск экранную клавиатуру (Реализовавывать собственную клавиатуру слишком затратно, лучше положится на встроенную в DE клавиатуру malit в KDE, gjs-osk в GNOME,Squeekboard в phosh, стимовская в SteamOS и так далее)
  • Добавить сортировку карточек по различным критериям (сейчас есть: недавние, кол-во наиграного времени, избранное или по алфавиту)
  • Добавить индикацию запуска приложения
  • Достичь паритета функционала с Ingame
  • Достичь паритета функционала с PortProton
  • Добавить возможность изменения названия, описания и обложки через файлы .local/share/PortProtonQT/custom_data/exe_name/{desc,name,cover}
  • Добавить встроенное переопределение имени, описания и обложки, например по пути portprotonqt/custom_data Документация
  • Добавить в карточку игры сведения о поддержке геймадов
  • Добавить в карточки данные с ProtonDB
  • Добавить в карточки данные с Are We Anti-Cheat Yet?
  • Продублировать бейджы с карточки на страницу с деталями игрыы
  • Добавить парсинг ярлыков со Steam
  • Добавить парсинг ярлыков с EGS
  • Избавится от бинарника legendary
  • Добавить запуск и скачивание игр с EGS
  • Добавить авторизацию в EGS через WebView, а не вручную
  • Брать описания для игр с EGS из их api
  • Брать slug через Graphql запрос
  • Добавить на карточку бейдж того что игра со стима
  • Добавить поддержку Flatpak и Snap версии Steam
  • Выводить данные о самом недавнем пользователе 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)

Установка (debug)

uv python install 3.10
uv sync
source .venv/bin/activate

Запуск производится по команде 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

Авторы

Warning

Проект находится на стадии WIP (work in progress) корректная работоспособность не гарантирована

Warning

Будьте осторожны! Если вы берёте тему не из официального репозитория или надёжного источника, убедитесь, что в её файле styles.py нет вредоносного или нежелательного кода. Поскольку styles.py — это обычный Python-файл, он может содержать любые инструкции. Всегда проверяйте содержимое чужих тем перед использованием.

Description
Is a project aimed at , providing a modern, user-friendly GUI for managing and launching games from multiple platforms, including PortProton, Steam, Epic Games Store (EGS) and more
Readme GPL-3.0 11 MiB
Languages
Python 99.6%
Shell 0.4%