Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
PortProtonQt
Удобный графический интерфейс для управления и запуска игр из PortProton, Steam и Epic Games Store. Оно объединяет библиотеки игр в единый центр для лёгкой навигации и организации. Лёгкая структура и кроссплатформенная поддержка обеспечивают цельный игровой опыт без необходимости использования нескольких лаунчеров. Интеграция с PortProton упрощает запуск Windows-игр на Linux с минимальной настройкой.
В планах
- Адаптировать структуру проекта для поддержки инструментов сборки
- Добавить возможность управления с геймпада
- Добавить возможность управления с тачскрина
- Добавить возможность управления с мыши и клавиатуры
- Добавить систему тем Документация
- Вынести все константы, такие как уровень закругления карточек, в темы (частично выполнено)
- Добавить метаданные для тем (скриншоты, описание, домашняя страница и автор)
- Продумать систему вкладок вместо текущей
- Добавить сессию Gamescope, аналогичную той, что используется в SteamOS
- Разработать адаптивный дизайн (за эталон берётся 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 через 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
Warning
Проект находится на стадии WIP (work in progress) корректная работоспособность не гарантирована
Warning
Будьте осторожны! Если вы берёте тему не из официального репозитория или надёжного источника, убедитесь, что в её файле
styles.py
нет вредоносного или нежелательного кода. Посколькуstyles.py
— это обычный Python-файл, он может содержать любые инструкции. Всегда проверяйте содержимое чужих тем перед использованием.