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-файл, он может содержать любые инструкции. Всегда проверяйте содержимое чужих тем перед использованием.