112 lines
10 KiB
Markdown
112 lines
10 KiB
Markdown
<div align="center">
|
||
<img src="https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/theme_logo.svg" width="64">
|
||
<h1 align="center">PortProtonQt</h1>
|
||
<p align="center">Удобный графический интерфейс для управления и запуска игр из PortProton, Steam и Epic Games Store. Оно объединяет библиотеки игр в единый центр для лёгкой навигации и организации. Лёгкая структура и кроссплатформенная поддержка обеспечивают цельный игровой опыт без необходимости использования нескольких лаунчеров. Интеграция с PortProton упрощает запуск Windows-игр на Linux с минимальной настройкой.</p>
|
||
</div>
|
||
|
||
|
||
## В планах
|
||
|
||
- [X] Адаптировать структуру проекта для поддержки инструментов сборки
|
||
- [X] Добавить возможность управления с геймпада
|
||
- [ ] Добавить возможность управления с тачскрина
|
||
- [X] Добавить возможность управления с мыши и клавиатуры
|
||
- [X] Добавить систему тем [Документация](documentation/theme_guide)
|
||
- [X] Вынести все константы, такие как уровень закругления карточек, в темы (частично выполнено)
|
||
- [X] Добавить метаданные для тем (скриншоты, описание, домашняя страница и автор)
|
||
- [ ] Продумать систему вкладок вместо текущей
|
||
- [ ] Добавить сессию Gamescope, аналогичную той, что используется в SteamOS
|
||
- [ ] Разработать адаптивный дизайн (за эталон берётся Steam Deck с разрешением 1280×800)
|
||
- [ ] Переделать скриншоты для соответствия [гайдлайнам Flathub](https://docs.flathub.org/docs/for-app-authors/metainfo-guidelines/quality-guidelines#screenshots)
|
||
- [X] Получать описания и названия игр из базы данных Steam
|
||
- [X] Получать обложки для игр из SteamGridDB или CDN Steam
|
||
- [X] Оптимизировать работу со Steam API для ускорения времени запуска
|
||
- [X] Улучшить функцию поиска в Steam API для исправления некорректного определения ID (например, Graven определялся как ENGRAVEN или GRAVENFALL, Spore — как SporeBound или Spore Valley)
|
||
- [ ] Убрать логи Steam API в релизной версии, так как они замедляют выполнение кода
|
||
- [X] Решить проблему с ограничением Steam API в 50 тысяч игр за один запрос (иногда нужные игры не попадают в выборку и остаются без обложки)
|
||
- [X] Избавиться от вызовов yad
|
||
- [X] Реализовать собственный механизм запрета ухода в спящий режим вместо использования механизма PortProton (оставлено для [PortProton 2.0](https://github.com/Castro-Fidel/PortProton_2.0))
|
||
- [X] Реализовать собственный системный трей вместо использования трея PortProton
|
||
- [X] Добавить экранную клавиатуру в поиск (реализация собственной клавиатуры слишком затратна, поэтому используется встроенная в DE клавиатура: Maliit в KDE, gjs-osk в GNOME, Squeekboard в Phosh, клавиатура SteamOS и т.д.)
|
||
- [X] Добавить сортировку карточек по различным критериям (доступны: по недавности, количеству наигранного времени, избранному или алфавиту)
|
||
- [X] Добавить индикацию запуска приложения
|
||
- [X] Достигнуть паритета функциональности с Ingame
|
||
- [ ] Достигнуть паритета функциональности с PortProton
|
||
- [X] Добавить возможность изменения названия, описания и обложки через файлы `.local/share/PortProtonQT/custom_data/exe_name/{desc,name,cover}`
|
||
- [X] Добавить встроенное переопределение названия, описания и обложки, например, по пути `portprotonqt/custom_data` [Документация](documentation/metadata_override/)
|
||
- [X] Добавить в карточку игры сведения о поддержке геймпада
|
||
- [X] Добавить в карточки данные с ProtonDB
|
||
- [X] Добавить в карточки данные с AreWeAntiCheatYet
|
||
- [X] Продублировать бейджи с карточки на страницу с деталями игры
|
||
- [X] Добавить парсинг ярлыков из Steam
|
||
- [X] Добавить парсинг ярлыков из EGS (скрыто для переработки)
|
||
- [ ] Избавиться от бинарника legendary
|
||
- [ ] Добавить запуск и скачивание игр из EGS
|
||
- [ ] Добавить авторизацию в EGS через WebView вместо ручного ввода
|
||
- [X] Получать описания для игр из EGS через их [API](https://store-content.ak.epicgames.com/api)
|
||
- [X] Получать slug через GraphQL [запрос](https://launcher.store.epicgames.com/graphql)
|
||
- [X] Добавить на карточку бейдж, указывающий, что игра из Steam
|
||
- [X] Добавить поддержку версий Steam для Flatpak и Snap
|
||
- [X] Отображать данные о самом последнем пользователе Steam, а не первом попавшемся
|
||
- [X] Исправить склонения в детальном выводе времени, например, не «3 часов назад», а «3 часа назад»
|
||
- [X] Добавить перевод через gettext [Документация](documentation/localization_guide)
|
||
- [X] Отображать описания игр и другие данные на языке системы
|
||
- [X] Добавить недокументированные параметры конфигурации в GUI (time_detail_level, games_sort_method, games_display_filter)
|
||
- [X] Добавить систему избранного для карточек
|
||
- [X] Заменить все `print` на `logging`
|
||
- [ ] Привести все логи к единому языку
|
||
- [X] Стилизовать все элементы без стилей (QMessageBox, QSlider, QDialog)
|
||
- [X] Убрать жёсткую привязку путей к стрелочкам QComboBox в `styles.py`
|
||
- [X] Исправить частичное применение тем на лету
|
||
- [X] Исправить наложение подписей скриншотов при первом перелистывании в полноэкранном режиме
|
||
- [ ] Добавить поддержку GOG (?)
|
||
- [X] Определиться с названием (PortProtonQt или PortProtonQT или вообще третий вариант)
|
||
- [ ] Добавить данные с HowLongToBeat на страницу с деталями игры (?)
|
||
- [ ] Добавить виброотдачу на геймпаде при запуске игры (?)
|
||
|
||
### Установка (devel)
|
||
|
||
```sh
|
||
uv python install 3.10
|
||
uv sync
|
||
source .venv/bin/activate
|
||
```
|
||
|
||
Запуск производится по команде portprotonqt
|
||
|
||
### Установка (release)
|
||
|
||
Выберите подходящий пакет для вашей системы или AppImage.
|
||
|
||
Запуск производится по команде portprotonqt или по ярлыку в меню
|
||
|
||
### Разработка
|
||
|
||
В проект встроен линтер (ruff), статический анализатор (pyright) и проверка lock файла, если эти проверки не пройдут PR не будет принят, поэтому перед коммитом введите такую команду
|
||
|
||
```sh
|
||
uv python install 3.10
|
||
uv sync --all-extras --dev
|
||
source .venv/bin/activate
|
||
pre-commit install
|
||
```
|
||
|
||
pre-commit сам запустится при коммите, если вы хотите запустить его вручную введите команду
|
||
|
||
```sh
|
||
pre-commit run --all-files
|
||
```
|
||
|
||
## Авторы
|
||
|
||
* [Boria138](https://git.linux-gaming.ru/Boria138) - Программист
|
||
* [BlackSnaker](https://github.com/BlackSnaker) - Дизайнер - программист
|
||
* [Mikhail Tergoev(Castro-Fidel)](https://git.linux-gaming.ru/CastroFidel) - Автор оригинального проекта PortProton
|
||
|
||
> [!WARNING]
|
||
> Проект находится на стадии WIP (work in progress) корректная работоспособность не гарантирована
|
||
|
||
|
||
> [!WARNING]
|
||
> **Будьте осторожны!** Если вы берёте тему не из официального репозитория или надёжного источника, убедитесь, что в её файле `styles.py` нет вредоносного или нежелательного кода. Поскольку `styles.py` — это обычный Python-файл, он может содержать любые инструкции. Всегда проверяйте содержимое чужих тем перед использованием.
|