diff --git a/README.md b/README.md index 598d136..aa5f634 100644 --- a/README.md +++ b/README.md @@ -1,67 +1,70 @@
- +

PortProtonQt

-

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

+

Удобный графический интерфейс для управления и запуска игр из PortProton, Steam и Epic Games Store. Оно объединяет библиотеки игр в единый центр для лёгкой навигации и организации. Лёгкая структура и кроссплатформенная поддержка обеспечивают цельный игровой опыт без необходимости использования нескольких лаунчеров. Интеграция с PortProton упрощает запуск Windows-игр на Linux с минимальной настройкой.

+ ## В планах - [X] Адаптировать структуру проекта для поддержки инструментов сборки -- [X] Добавить возможность управление с геймпада -- [ ] Добавить возможность управление с тачскрина -- [X] Добавить возможность управление с мыши и клавиатуры +- [X] Добавить возможность управления с геймпада +- [ ] Добавить возможность управления с тачскрина +- [X] Добавить возможность управления с мыши и клавиатуры - [X] Добавить систему тем [Документация](documentation/theme_guide) -- [X] Вынести все константы такие как уровень закругления карточек в темы (Частично вынесено) -- [X] Добавить метадату для тем (скришоты, описание, домащняя страница и автор) -- [ ] Продумать систему вкладок вместо той что есть сейчас -- [ ] Добавить Gamescope сессию на подобие той что есть в SteamOS -- [ ] Написать адаптивный дизайн (За эталон берём SteamDeck с разрешением 1280х800) -- [ ] Переделать скриншоты для соответсвия [гайдлайнам Flathub](https://docs.flathub.org/docs/for-app-authors/metainfo-guidelines/quality-guidelines#screenshots) -- [X] Брать описание и названия игр с базы данных Steam -- [X] Брать обложки для игр со SteamGridDB или CDN Steam -- [X] Оптимизировать работу со SteamApi что бы ускорить время запуска -- [X] Улучшить функцию поиска SteamApi что бы исправить некорректное определение ID (Graven определается как ENGRAVEN или GRAVENFALL, Spore определается как SporeBound или Spore Valley) -- [ ] Убрать логи со SteamApi в релизной версии потому что логи замедляют код -- [X] Что-то придумать с ограничением SteamApi в 50 тысяч игр за один запрос (иногда туда не попадают нужные игры и остаются без обложки) -- [X] Избавится от любого вызова yad -- [X] Написать свою реализацию запрета ухода в сон, а не использовать ту что в PortProton (Оставим это [PortProton 2.0](https://github.com/Castro-Fidel/PortProton_2.0)) -- [X] Написать свою реализацию трея, а не использовать ту что в PortProton -- [X] Добавить в поиск экранную клавиатуру (Реализовавывать собственную клавиатуру слишком затратно, лучше положится на встроенную в DE клавиатуру malit в KDE, gjs-osk в GNOME,Squeekboard в phosh, стимовская в SteamOS и так далее) -- [X] Добавить сортировку карточек по различным критериям (сейчас есть: недавние, кол-во наиграного времени, избранное или по алфавиту) +- [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] Достигнуть паритета функциональности с Ingame +- [ ] Достигнуть паритета функциональности с PortProton +- [X] Добавить возможность изменения названия, описания и обложки через файлы `.local/share/PortProtonQT/custom_data/exe_name/{desc,name,cover}` +- [X] Добавить встроенное переопределение названия, описания и обложки, например, по пути `portprotonqt/custom_data` [Документация](documentation/metadata_override/) +- [X] Добавить в карточку игры сведения о поддержке геймпада - [X] Добавить в карточки данные с ProtonDB -- [X] Добавить в карточки данные с Are We Anti-Cheat Yet? -- [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] Добавить на карточку бейдж того что игра со стима -- [X] Добавить поддержку Flatpak и Snap версии Steam -- [X] Выводить данные о самом недавнем пользователе Steam, а не первом попавшемся -- [X] Исправить склонения в детальном выводе времени, например не 3 часов назад, а 3 часа назад +- [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] Добавить недокументированные параметры конфигурации в 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 (?) -- [ ] Определится уже наконец с названием (PortProtonQt или PortProtonQT) +- [X] Исправить наложение подписей скриншотов при первом перелистывании в полноэкранном режиме +- [ ] Добавить поддержку GOG (?) +- [ ] Определиться с названием (PortProtonQt или PortProtonQT или вообще третий вариант) +- [ ] Добавить данные с HowLongToBeat на страницу с деталями игры (?) +- [ ] Добавить виброотдачу на геймпаде при запуске игры (?) -### Установка (debug) +### Установка (devel) ```sh uv python install 3.10 @@ -71,6 +74,12 @@ source .venv/bin/activate Запуск производится по команде portprotonqt +### Установка (release) + +Выберите подходящий пакет для вашей системы или AppImage. + +Запуск производится по команде portprotonqt или по ярлыку в меню + ### Разработка В проект встроен линтер (ruff), статический анализатор (pyright) и проверка lock файла, если эти проверки не пройдут PR не будет принят, поэтому перед коммитом введите такую команду @@ -90,9 +99,9 @@ pre-commit run --all-files ## Авторы -* [Boria138](https://github.com/Boria138) - Программист +* [Boria138](https://git.linux-gaming.ru/Boria138) - Программист * [BlackSnaker](https://github.com/BlackSnaker) - Дизайнер - программист -* [Mikhail Tergoev(Castro-Fidel)](https://github.com/Castro-Fidel) - Автор оригинального проекта PortProton +* [Mikhail Tergoev(Castro-Fidel)](https://git.linux-gaming.ru/CastroFidel) - Автор оригинального проекта PortProton > [!WARNING] > Проект находится на стадии WIP (work in progress) корректная работоспособность не гарантирована