dervart e1e3092870
All checks were successful
Code and build check / Check code (pull_request) Successful in 1m38s
Code and build check / Build with uv (pull_request) Successful in 50s
feat(dialogs): rewrite Preview widget
2025-07-01 00:13:08 +07:00
2025-06-22 13:27:30 +00:00
2025-06-01 15:21:32 +05:00
2025-06-01 15:21:32 +05:00
2025-06-29 23:25:27 +05:00
2025-06-01 09:57:02 +00:00
2025-06-15 17:17:50 +05:00
2025-06-27 14:20:58 +05:00
2025-06-23 12:13:56 +05:00
2025-06-20 22:41:01 +05:00

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

Description
This application provides a sleek, intuitive graphical interface for managing and launching games from PortProton, Steam, and Epic Games Store. It consolidates your game libraries into a single, user-friendly hub for seamless navigation and organization. Its lightweight structure and cross-platform support deliver a cohesive gaming experience, eliminating the need for multiple launchers. Unique PortProton integration enhances Linux gaming, enabling effortless play of Windows-based titles with minimal setup
Readme GPL-3.0 99 MiB
Languages
Python 99.7%
Shell 0.3%