PortProtonQt
Проект нацеленный на переписывание PortProton(PortWINE) на PySide
В планах
- Адаптировать структуру проекта для поддержки инструментов сборки
- Добавить возможность управление с геймпада
- Добавить возможность управление с тачскрина
- Добавить возможность управление с мыши и клавиатуры
- Добавить систему тем Документация
- Вынести все константы такие как уровень закругления карточек в темы (Частично вынесено)
- Добавить метадату для тем (скришоты, описание, домащняя страница и автор)
- Продумать систему вкладок вместо той что есть сейчас
- Добавить Gamescope сессию на подобие той что есть в SteamOS
- Написать адаптивный дизайн (За эталон берём SteamDeck с разрешением 1280х800)
- Брать описание и названия игр с базы данных Steam
- Брать обложки для игр со SteamGridDB или CDN Steam
- Оптимизировать работу со SteamApi что бы ускорить время запуска
- Улучшить функцию поиска SteamApi что бы исправить некорректное определение ID (Graven определается как ENGRAVEN или GRAVENFALL, Spore определается как SporeBound или Spore Valley)
- Убрать логи со SteamApi в релизной версии потому что логи замедляют код
- Что-то придумать с ограничением SteamApi в 50 тысяч игр за один запрос (иногда туда не попадают нужные игры и остаются без обложки)
- Избавится от любого вызова yad
- Написать свою реализацию запрета ухода в сон, а не использовать ту что в PortProton (Оставим это PortProton 2.0)
- Написать свою реализацию трея, а не использовать ту что в PortProton
- Добавить в поиск экранную клавиатуру (Реализовавывать собственную клавиатуру слишком затратно, лучше положится на встроенную в DE клавиатуру malit в KDE, gjs-osk в GNOME,Squeekboard в phosh, стимовская в SteamOS и так далее)
- Добавить сортировку карточек по различным критериям (сейчас есть: недавние, кол-во наиграного времени, избранное или по алфавиту)
- Добавить индикацию запуска приложения
- Достичь паритета функционала с Ingame (кроме поддержки нативных игр)
- Достичь паритета функционала с PortProton
- Добавить возможность изменения названия, описания и обложки через файлы .local/share/PortProtonQT/custom_data/exe_name/{desc,name,cover}
- Добавить встроенное переопределение имени, описания и обложки, например по пути portprotonqt/custom_data Документация
- Добавить в карточку игры сведения о поддержке геймадов
- Добавить в карточки данные с ProtonDB
- Добавить в карточки данные с Are We Anti-Cheat Yet?
- Продублировать бейджы с карточки на страницу с деталями игрыы
- Добавить парсинг ярлыков со Steam
- Добавить парсинг ярлыков с EGS
- Избавится от бинарника legendary
- Добавить запуск и скачивание игр с EGS
- Добавить авторизацию в EGS через WebView, а не вручную
- Брать описания для игр с EGS из их api
- Брать slug через Graphql запрос
- Добавить на карточку бейдж того что игра со стима
- Добавить поддержку Flatpak и Snap версии Steam
- Выводить данные о самом недавнем пользователе Steam, а не первом попавшемся
- Исправить склонения в детальном выводе времени, например не 3 часов назад, а 3 часа назад
- Добавить перевод через gettext Документация
- Писать описание игр и прочие данные на языке системы
- Добавить недокументированные параметры конфигурации в GUI (time detail_level, games sort_method, games display_filter)
- Добавить систему избранного к карточкам
- Заменить все print на logging
- Привести все логи к одному языку
- Стилизовать все элементы без стилей(QMessageBox, QSlider, QDialog)
- Убрать жёсткую привязку путей на стрелочки QComboBox в styles.py
- Исправить частичное применение тем на лету
- Исправить наложение подписей скриншотов при первом перелистывание в полноэкранном режиме
Установка (debug)
uv python install 3.10sdg
uv sync
source .venv/bin/activate
Запуск производится по команде 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-файл, он может содержать любые инструкции. Всегда проверяйте содержимое чужих тем перед использованием.