Compare commits
14 Commits
1a0dbc3ab8
...
v0.1.3
Author | SHA1 | Date | |
---|---|---|---|
4a82fc4a12
|
|||
dd5db7c6c0
|
|||
0fe1d3f569
|
|||
fd85684500
|
|||
8b84afe64f
|
|||
bf6e04fcb7
|
|||
7da1c9763c
|
|||
0a7c11a96a
|
|||
79af455e50 | |||
6464d5f87c
|
|||
ac94706f0b
|
|||
a5b12fb00c
|
|||
b42f476f56
|
|||
fd1c4e94fa
|
@ -8,7 +8,7 @@ on:
|
|||||||
|
|
||||||
env:
|
env:
|
||||||
# Common version, will be used for tagging the release
|
# Common version, will be used for tagging the release
|
||||||
VERSION: 0.1.2
|
VERSION: 0.1.3
|
||||||
PKGDEST: "/tmp/portprotonqt"
|
PKGDEST: "/tmp/portprotonqt"
|
||||||
PACKAGE: "portprotonqt"
|
PACKAGE: "portprotonqt"
|
||||||
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||||
|
@ -3,15 +3,16 @@
|
|||||||
Все заметные изменения в этом проекте фиксируются в этом файле.
|
Все заметные изменения в этом проекте фиксируются в этом файле.
|
||||||
Формат основан на [Keep a Changelog](https://keepachangelog.com/) и придерживается принципов [Semantic Versioning](https://semver.org/).
|
Формат основан на [Keep a Changelog](https://keepachangelog.com/) и придерживается принципов [Semantic Versioning](https://semver.org/).
|
||||||
|
|
||||||
## [Unreleased]
|
## [0.1.3] - 2025-07-05
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
- Аргумент `--session` для запуска приложения в gamescope с GAMESCOPE_CMD
|
- Аргумент `--session` для запуска приложения в gamescope (Исключительно в целях тестирования)
|
||||||
- Начальная поддержка EGS (Без EOS, скачивания игр и запуска игр из сторонних магазинов)
|
- Начальная поддержка EGS (Без EOS, скачивания игр и запуска игр из сторонних магазинов)
|
||||||
- Автодополнение bash для комманды portprotonqt
|
- Автодополнение bash для комманды portprotonqt
|
||||||
- Поддержка геймпадов в диалоге выбора игры
|
- Поддержка геймпадов в диалоге выбора игры
|
||||||
- Быстрый запуск и остановка игры через контекстное меню
|
- Быстрый запуск и остановка игры через контекстное меню
|
||||||
- Иконки в контекстом меню
|
- Иконки в контекстом меню
|
||||||
|
- Обложки для части автоинсталлов
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
- Удалены сборки для Fedora 40
|
- Удалены сборки для Fedora 40
|
||||||
@ -30,6 +31,7 @@
|
|||||||
- Ошибки темы в Gamescope
|
- Ошибки темы в Gamescope
|
||||||
- Размер иконок для desktop файлов теперь 128x128
|
- Размер иконок для desktop файлов теперь 128x128
|
||||||
- Пустая область при обновлении сетки игр
|
- Пустая область при обновлении сетки игр
|
||||||
|
- Запуск игры при открытом оверлее
|
||||||
|
|
||||||
### Contributors
|
### Contributors
|
||||||
- @Dervart
|
- @Dervart
|
||||||
|
@ -34,6 +34,8 @@
|
|||||||
- [ ] Достигнуть паритета функциональности с PortProton
|
- [ ] Достигнуть паритета функциональности с PortProton
|
||||||
- [X] Добавить возможность изменения названия, описания и обложки через файлы `.local/share/PortProtonQT/custom_data/exe_name/{desc,name,cover}`
|
- [X] Добавить возможность изменения названия, описания и обложки через файлы `.local/share/PortProtonQT/custom_data/exe_name/{desc,name,cover}`
|
||||||
- [X] Добавить встроенное переопределение названия, описания и обложки, например, по пути `portprotonqt/custom_data` [Документация](documentation/metadata_override/)
|
- [X] Добавить встроенное переопределение названия, описания и обложки, например, по пути `portprotonqt/custom_data` [Документация](documentation/metadata_override/)
|
||||||
|
- [ ] Добавить переводы в переопределения
|
||||||
|
- [ ] Придумать как переопределять launcher.exe
|
||||||
- [X] Добавить в карточку игры сведения о поддержке геймпада
|
- [X] Добавить в карточку игры сведения о поддержке геймпада
|
||||||
- [X] Добавить в карточки данные с ProtonDB
|
- [X] Добавить в карточки данные с ProtonDB
|
||||||
- [X] Добавить в карточки данные с AreWeAntiCheatYet
|
- [X] Добавить в карточки данные с AreWeAntiCheatYet
|
||||||
|
@ -25,7 +25,7 @@ AppDir:
|
|||||||
id: ru.linux_gaming.PortProtonQt
|
id: ru.linux_gaming.PortProtonQt
|
||||||
name: PortProtonQt
|
name: PortProtonQt
|
||||||
icon: ru.linux_gaming.PortProtonQt
|
icon: ru.linux_gaming.PortProtonQt
|
||||||
version: 0.1.2
|
version: 0.1.3
|
||||||
exec: usr/bin/python3
|
exec: usr/bin/python3
|
||||||
exec_args: "-m portprotonqt.app $@"
|
exec_args: "-m portprotonqt.app $@"
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
pkgname=portprotonqt
|
pkgname=portprotonqt
|
||||||
pkgver=0.1.2
|
pkgver=0.1.3
|
||||||
pkgrel=1
|
pkgrel=1
|
||||||
pkgdesc="Modern GUI for managing and launching games from PortProton, Steam, and Epic Games Store"
|
pkgdesc="Modern GUI for managing and launching games from PortProton, Steam, and Epic Games Store"
|
||||||
arch=('any')
|
arch=('any')
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
%global pypi_version 0.1.1
|
%global pypi_version 0.1.1
|
||||||
%global oname PortProtonQt
|
%global oname PortProtonQt
|
||||||
%global build_timestamp %(date +"%Y%m%d")
|
%global build_timestamp %(date +"%Y%m%d")
|
||||||
|
%global _python_no_extras_requires 1
|
||||||
|
|
||||||
%global rel_build 1.git.%{build_timestamp}%{?dist}
|
%global rel_build 1.git.%{build_timestamp}%{?dist}
|
||||||
|
|
||||||
@ -47,6 +48,8 @@ Requires: xdg-utils
|
|||||||
%description -n python3-%{pypi_name}-git
|
%description -n python3-%{pypi_name}-git
|
||||||
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.
|
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.
|
||||||
|
|
||||||
|
%{?python_disable_dependency_generator}
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
git clone https://git.linux-gaming.ru/Boria138/PortProtonQt.git
|
git clone https://git.linux-gaming.ru/Boria138/PortProtonQt.git
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
%global pypi_name portprotonqt
|
%global pypi_name portprotonqt
|
||||||
%global pypi_version 0.1.2
|
%global pypi_version 0.1.3
|
||||||
%global oname PortProtonQt
|
%global oname PortProtonQt
|
||||||
|
%global _python_no_extras_requires 1
|
||||||
|
|
||||||
Name: python-%{pypi_name}
|
Name: python-%{pypi_name}
|
||||||
Version: %{pypi_version}
|
Version: %{pypi_version}
|
||||||
@ -44,6 +45,8 @@ Requires: xdg-utils
|
|||||||
%description -n python3-%{pypi_name}
|
%description -n python3-%{pypi_name}
|
||||||
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.
|
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.
|
||||||
|
|
||||||
|
%{?python_disable_dependency_generator}
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
git clone https://git.linux-gaming.ru/Boria138/PortProtonQt
|
git clone https://git.linux-gaming.ru/Boria138/PortProtonQt
|
||||||
cd %{oname}
|
cd %{oname}
|
||||||
|
@ -14,7 +14,7 @@ logger = get_logger(__name__)
|
|||||||
|
|
||||||
__app_id__ = "ru.linux_gaming.PortProtonQt"
|
__app_id__ = "ru.linux_gaming.PortProtonQt"
|
||||||
__app_name__ = "PortProtonQt"
|
__app_name__ = "PortProtonQt"
|
||||||
__app_version__ = "0.1.2"
|
__app_version__ = "0.1.3"
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
app = QApplication(sys.argv)
|
app = QApplication(sys.argv)
|
||||||
|
@ -137,6 +137,8 @@ class ContextMenuManager:
|
|||||||
if not exe_path or not os.path.exists(exe_path):
|
if not exe_path or not os.path.exists(exe_path):
|
||||||
return False
|
return False
|
||||||
current_exe = os.path.basename(exe_path)
|
current_exe = os.path.basename(exe_path)
|
||||||
|
elif game_card.game_source == "steam":
|
||||||
|
return False
|
||||||
else:
|
else:
|
||||||
exec_line = self._get_exec_line(game_card.name, game_card.exec_line)
|
exec_line = self._get_exec_line(game_card.name, game_card.exec_line)
|
||||||
if not exec_line:
|
if not exec_line:
|
||||||
|
Before Width: | Height: | Size: 643 KiB After Width: | Height: | Size: 643 KiB |
Before Width: | Height: | Size: 178 KiB After Width: | Height: | Size: 178 KiB |
Before Width: | Height: | Size: 508 KiB After Width: | Height: | Size: 508 KiB |
Before Width: | Height: | Size: 217 KiB After Width: | Height: | Size: 217 KiB |
Before Width: | Height: | Size: 702 KiB After Width: | Height: | Size: 702 KiB |
Before Width: | Height: | Size: 827 KiB After Width: | Height: | Size: 827 KiB |
Before Width: | Height: | Size: 429 KiB After Width: | Height: | Size: 429 KiB |
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 254 KiB After Width: | Height: | Size: 254 KiB |
Before Width: | Height: | Size: 946 KiB After Width: | Height: | Size: 946 KiB |
Before Width: | Height: | Size: 511 KiB After Width: | Height: | Size: 511 KiB |
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 936 KiB After Width: | Height: | Size: 936 KiB |
Before Width: | Height: | Size: 674 KiB After Width: | Height: | Size: 674 KiB |
Before Width: | Height: | Size: 351 KiB After Width: | Height: | Size: 351 KiB |
Before Width: | Height: | Size: 963 KiB After Width: | Height: | Size: 963 KiB |
Before Width: | Height: | Size: 757 KiB After Width: | Height: | Size: 757 KiB |
Before Width: | Height: | Size: 954 KiB After Width: | Height: | Size: 954 KiB |
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
Before Width: | Height: | Size: 552 KiB After Width: | Height: | Size: 552 KiB |
Before Width: | Height: | Size: 680 KiB After Width: | Height: | Size: 680 KiB |
Before Width: | Height: | Size: 360 KiB After Width: | Height: | Size: 360 KiB |
Before Width: | Height: | Size: 247 KiB After Width: | Height: | Size: 247 KiB |
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
Before Width: | Height: | Size: 901 KiB After Width: | Height: | Size: 901 KiB |
Before Width: | Height: | Size: 864 KiB After Width: | Height: | Size: 864 KiB |
Before Width: | Height: | Size: 346 KiB After Width: | Height: | Size: 346 KiB |
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
Before Width: | Height: | Size: 769 KiB After Width: | Height: | Size: 769 KiB |
Before Width: | Height: | Size: 806 KiB After Width: | Height: | Size: 806 KiB |
Before Width: | Height: | Size: 762 KiB After Width: | Height: | Size: 762 KiB |
Before Width: | Height: | Size: 684 KiB After Width: | Height: | Size: 684 KiB |
Before Width: | Height: | Size: 240 KiB After Width: | Height: | Size: 240 KiB |
Before Width: | Height: | Size: 963 KiB After Width: | Height: | Size: 963 KiB |
Before Width: | Height: | Size: 961 KiB After Width: | Height: | Size: 961 KiB |
Before Width: | Height: | Size: 701 KiB After Width: | Height: | Size: 701 KiB |
Before Width: | Height: | Size: 637 KiB After Width: | Height: | Size: 637 KiB |
Before Width: | Height: | Size: 592 KiB After Width: | Height: | Size: 592 KiB |
Before Width: | Height: | Size: 724 KiB After Width: | Height: | Size: 724 KiB |
Before Width: | Height: | Size: 623 KiB After Width: | Height: | Size: 623 KiB |
Before Width: | Height: | Size: 974 KiB After Width: | Height: | Size: 974 KiB |
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 143 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 590 KiB After Width: | Height: | Size: 590 KiB |
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 145 KiB |
Before Width: | Height: | Size: 171 KiB After Width: | Height: | Size: 171 KiB |
Before Width: | Height: | Size: 665 KiB After Width: | Height: | Size: 665 KiB |
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 373 KiB After Width: | Height: | Size: 373 KiB |
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
Before Width: | Height: | Size: 704 KiB After Width: | Height: | Size: 704 KiB |
Before Width: | Height: | Size: 888 KiB After Width: | Height: | Size: 888 KiB |
Before Width: | Height: | Size: 646 KiB After Width: | Height: | Size: 646 KiB |
Before Width: | Height: | Size: 148 KiB After Width: | Height: | Size: 148 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
Before Width: | Height: | Size: 777 KiB After Width: | Height: | Size: 777 KiB |
Before Width: | Height: | Size: 469 KiB After Width: | Height: | Size: 469 KiB |
Before Width: | Height: | Size: 810 KiB After Width: | Height: | Size: 810 KiB |
Before Width: | Height: | Size: 840 KiB After Width: | Height: | Size: 840 KiB |
Before Width: | Height: | Size: 656 KiB After Width: | Height: | Size: 656 KiB |
Before Width: | Height: | Size: 814 KiB After Width: | Height: | Size: 814 KiB |
Before Width: | Height: | Size: 885 KiB After Width: | Height: | Size: 885 KiB |
Before Width: | Height: | Size: 315 KiB After Width: | Height: | Size: 315 KiB |
Before Width: | Height: | Size: 211 KiB After Width: | Height: | Size: 211 KiB |
Before Width: | Height: | Size: 257 KiB After Width: | Height: | Size: 257 KiB |
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 768 KiB After Width: | Height: | Size: 768 KiB |
Before Width: | Height: | Size: 694 KiB After Width: | Height: | Size: 694 KiB |
Before Width: | Height: | Size: 691 KiB After Width: | Height: | Size: 691 KiB |
Before Width: | Height: | Size: 653 KiB After Width: | Height: | Size: 653 KiB |
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 108 KiB |
Before Width: | Height: | Size: 141 KiB After Width: | Height: | Size: 141 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 239 KiB After Width: | Height: | Size: 239 KiB |
Before Width: | Height: | Size: 238 KiB After Width: | Height: | Size: 238 KiB |
@ -369,6 +369,7 @@ class InputManager(QObject):
|
|||||||
active = QApplication.activeWindow()
|
active = QApplication.activeWindow()
|
||||||
focused = QApplication.focusWidget()
|
focused = QApplication.focusWidget()
|
||||||
popup = QApplication.activePopupWidget()
|
popup = QApplication.activePopupWidget()
|
||||||
|
modal_dialog = QApplication.activeModalWidget()
|
||||||
|
|
||||||
# Handle Guide button to open system overlay
|
# Handle Guide button to open system overlay
|
||||||
if button_code in BUTTONS['guide']:
|
if button_code in BUTTONS['guide']:
|
||||||
@ -460,7 +461,7 @@ class InputManager(QObject):
|
|||||||
return
|
return
|
||||||
|
|
||||||
# Game launch on detail page
|
# Game launch on detail page
|
||||||
if (button_code in BUTTONS['confirm']) and self._parent.currentDetailPage is not None and self._parent.current_add_game_dialog is None:
|
if (button_code in BUTTONS['confirm']) and self._parent.currentDetailPage is not None and modal_dialog is None:
|
||||||
if self._parent.current_exec_line:
|
if self._parent.current_exec_line:
|
||||||
self.trigger_rumble()
|
self.trigger_rumble()
|
||||||
self._parent.toggleGame(self._parent.current_exec_line, None)
|
self._parent.toggleGame(self._parent.current_exec_line, None)
|
||||||
|
@ -1984,6 +1984,7 @@ class MainWindow(QMainWindow):
|
|||||||
env_vars = os.environ.copy()
|
env_vars = os.environ.copy()
|
||||||
env_vars['START_FROM_STEAM'] = '1'
|
env_vars['START_FROM_STEAM'] = '1'
|
||||||
env_vars['LEGENDARY_CONFIG_PATH'] = self.legendary_config_path
|
env_vars['LEGENDARY_CONFIG_PATH'] = self.legendary_config_path
|
||||||
|
env_vars['PROCESS_LOG'] = '1'
|
||||||
|
|
||||||
wrapper = "flatpak run ru.linux_gaming.PortProton"
|
wrapper = "flatpak run ru.linux_gaming.PortProton"
|
||||||
if self.portproton_location is not None and ".var" not in self.portproton_location:
|
if self.portproton_location is not None and ".var" not in self.portproton_location:
|
||||||
@ -2091,8 +2092,10 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
if entry_exec_split[0] == "env" and len(entry_exec_split) > 1 and 'data/scripts/start.sh' in entry_exec_split[1]:
|
if entry_exec_split[0] == "env" and len(entry_exec_split) > 1 and 'data/scripts/start.sh' in entry_exec_split[1]:
|
||||||
env_vars['START_FROM_STEAM'] = '1'
|
env_vars['START_FROM_STEAM'] = '1'
|
||||||
|
env_vars['PROCESS_LOG'] = '1'
|
||||||
elif entry_exec_split[0] == "flatpak":
|
elif entry_exec_split[0] == "flatpak":
|
||||||
env_vars['START_FROM_STEAM'] = '1'
|
env_vars['START_FROM_STEAM'] = '1'
|
||||||
|
env_vars['PROCESS_LOG'] = '1'
|
||||||
|
|
||||||
# Delay disabling gamepad handling to allow rumble to complete
|
# Delay disabling gamepad handling to allow rumble to complete
|
||||||
if hasattr(self, 'input_manager'):
|
if hasattr(self, 'input_manager'):
|
||||||
|
@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "portprotonqt"
|
name = "portprotonqt"
|
||||||
version = "0.1.2"
|
version = "0.1.3"
|
||||||
description = "A project to rewrite PortProton (PortWINE) using PySide"
|
description = "A project to rewrite PortProton (PortWINE) using PySide"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
license = { text = "GPL-3.0" }
|
license = { text = "GPL-3.0" }
|
||||||
|