5 Commits

Author SHA1 Message Date
de229401a7 chore(build): added deb package
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-12 00:22:11 +05:00
6f82068864 chore: bump to 0.1.9
All checks were successful
Code check / Check code (push) Successful in 1m14s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-08 11:47:25 +05:00
d4672ecb0e chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-08 11:47:19 +05:00
Renovate Bot
087ac8eda2 chore(deps): update https://gitea.com/actions/setup-node digest to 395ad32
All checks were successful
Code check / Check code (push) Successful in 1m22s
2025-12-07 10:48:27 +00:00
Renovate Bot
0a9acaf5da chore(deps): update https://gitea.com/actions/checkout digest to 8e8c483
Some checks failed
Code check / Check code (push) Has been cancelled
2025-12-07 10:48:16 +00:00
33 changed files with 464 additions and 38 deletions

View File

@@ -1,4 +1,4 @@
name: Nightly Build - AppImage, Arch, Fedora name: Nightly Build - AppImage, Debian, Arch, Fedora
on: on:
workflow_dispatch: workflow_dispatch:
@@ -8,11 +8,37 @@ env:
PACKAGE: "portprotonqt" PACKAGE: "portprotonqt"
jobs: jobs:
build-debian:
name: Build Debian Package
runs-on: ubuntu-22.04
steps:
- uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
- name: Install required dependencies
run: |
sudo apt update
sudo apt install -y python3-all python3-setuptools python3-build python3-installer dh-python debhelper devscripts build-essential python3-dev pybuild-plugin-pyproject
- name: Build Debian package
run: |
dpkg-buildpackage -us -uc -b
ls -la ../*.deb
# Copy Debian packages to a consistent location for upload
mkdir -p ./dist
cp ../*.deb ./dist/ || true
- name: Upload Debian package
uses: https://gitea.com/actions/gitea-upload-artifact@v4
with:
name: PortProtonQt-Debian
path: |
dist/*.deb
build-appimage: build-appimage:
name: Build AppImage name: Build AppImage
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
steps: steps:
- uses: https://gitea.com/actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6 - uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
- name: Install required dependencies - name: Install required dependencies
run: | run: |
@@ -73,7 +99,7 @@ jobs:
echo '%_topdir /home/rpmbuild' > /home/rpmbuild/.rpmmacros echo '%_topdir /home/rpmbuild' > /home/rpmbuild/.rpmmacros
- name: Checkout repo - name: Checkout repo
uses: https://gitea.com/actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6 uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
- name: Copy fedora.spec - name: Copy fedora.spec
run: | run: |
@@ -134,7 +160,7 @@ jobs:
su user -c "yes '' | makepkg --noconfirm -s -p PKGBUILD-git" su user -c "yes '' | makepkg --noconfirm -s -p PKGBUILD-git"
- name: Checkout - name: Checkout
uses: https://gitea.com/actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6 uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
- name: Upload Arch package - name: Upload Arch package
uses: https://gitea.com/actions/gitea-upload-artifact@v4 uses: https://gitea.com/actions/gitea-upload-artifact@v4

View File

@@ -1,4 +1,4 @@
name: Build AppImage, Arch and Fedora Packages name: Build AppImage, Debian, Arch and Fedora Packages
on: on:
workflow_dispatch: workflow_dispatch:
@@ -8,12 +8,38 @@ on:
env: env:
# Common version, will be used for tagging the release # Common version, will be used for tagging the release
VERSION: 0.1.8 VERSION: 0.1.9
PKGDEST: "/tmp/portprotonqt" PKGDEST: "/tmp/portprotonqt"
PACKAGE: "portprotonqt" PACKAGE: "portprotonqt"
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
jobs: jobs:
build-debian:
name: Build Debian Package
runs-on: ubuntu-22.04
steps:
- uses: https://gitea.com/actions/checkout@v4
- name: Install required dependencies
run: |
sudo apt update
sudo apt install -y python3-all python3-setuptools python3-build python3-installer dh-python debhelper devscripts build-essential python3-dev pybuild-plugin-pyproject
- name: Build Debian package
run: |
dpkg-buildpackage -us -uc -b
ls -la ../*.deb
# Copy Debian packages to a consistent location for upload
mkdir -p ./dist
cp ../*.deb ./dist/ || true
- name: Upload Debian package
uses: https://gitea.com/actions/gitea-upload-artifact@v4
with:
name: PortProtonQt-Debian
path: |
dist/*.deb
build-appimage: build-appimage:
name: Build AppImage name: Build AppImage
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
@@ -149,7 +175,7 @@ jobs:
release: release:
name: Create and Publish Release name: Create and Publish Release
needs: [build-appimage, build-arch, build-fedora] needs: [build-debian, build-appimage, build-arch, build-fedora]
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: https://gitea.com/actions/checkout@v4 - uses: https://gitea.com/actions/checkout@v4

View File

@@ -16,7 +16,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout - name: Checkout
uses: https://gitea.com/actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6 uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
- name: Set up Python - name: Set up Python
uses: https://gitea.com/actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6 uses: https://gitea.com/actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6

View File

@@ -1,10 +1,11 @@
name: Build Check - AppImage, Arch, Fedora name: Build Check - AppImage, Debian, Arch, Fedora
on: on:
workflow_dispatch: workflow_dispatch:
pull_request: pull_request:
paths: paths:
- 'build-aux/**' - 'build-aux/**'
- 'debian/**'
env: env:
PKGDEST: "/tmp/portprotonqt" PKGDEST: "/tmp/portprotonqt"
@@ -15,10 +16,11 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
outputs: outputs:
appimage: ${{ steps.check.outputs.appimage }} appimage: ${{ steps.check.outputs.appimage }}
debian: ${{ steps.check.outputs.debian }}
fedora: ${{ steps.check.outputs.fedora }} fedora: ${{ steps.check.outputs.fedora }}
arch: ${{ steps.check.outputs.arch }} arch: ${{ steps.check.outputs.arch }}
steps: steps:
- uses: https://gitea.com/actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6 - uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
with: with:
fetch-depth: 0 fetch-depth: 0
@@ -43,6 +45,13 @@ jobs:
echo "appimage=false" >> $GITHUB_OUTPUT echo "appimage=false" >> $GITHUB_OUTPUT
fi fi
# Check Debian directory
if grep -q "debian/" changed_files.txt || ls debian/ 1> /dev/null 2>&1; then
echo "debian=true" >> $GITHUB_OUTPUT
else
echo "debian=false" >> $GITHUB_OUTPUT
fi
# Check Fedora spec files (only fedora-git.spec) # Check Fedora spec files (only fedora-git.spec)
if grep -q "build-aux/fedora-git.spec" changed_files.txt; then if grep -q "build-aux/fedora-git.spec" changed_files.txt; then
echo "fedora=true" >> $GITHUB_OUTPUT echo "fedora=true" >> $GITHUB_OUTPUT
@@ -57,13 +66,38 @@ jobs:
echo "arch=false" >> $GITHUB_OUTPUT echo "arch=false" >> $GITHUB_OUTPUT
fi fi
build-debian:
name: Build Debian Package
runs-on: ubuntu-22.04
needs: changes
if: needs.changes.outputs.debian == 'true' || github.event_name == 'workflow_dispatch'
steps:
- uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
- name: Install required dependencies
run: |
sudo apt update
sudo apt install -y python3-all python3-setuptools python3-build python3-installer dh-python debhelper devscripts build-essential python3-dev pybuild-plugin-pyproject
- name: Build Debian package
run: |
dpkg-buildpackage -us -uc -b
ls -la ../*.deb
- name: Upload Debian package
uses: https://gitea.com/actions/gitea-upload-artifact@v4
with:
name: PortProtonQt-Debian
path: |
../*.deb
build-appimage: build-appimage:
name: Build AppImage name: Build AppImage
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
needs: changes needs: changes
if: needs.changes.outputs.appimage == 'true' || github.event_name == 'workflow_dispatch' if: needs.changes.outputs.appimage == 'true' || github.event_name == 'workflow_dispatch'
steps: steps:
- uses: https://gitea.com/actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6 - uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
- name: Install required dependencies - name: Install required dependencies
run: | run: |
@@ -115,7 +149,7 @@ jobs:
echo '%_topdir /home/rpmbuild' > /home/rpmbuild/.rpmmacros echo '%_topdir /home/rpmbuild' > /home/rpmbuild/.rpmmacros
- name: Checkout repo - name: Checkout repo
uses: https://gitea.com/actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6 uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
- name: Copy fedora-git.spec - name: Copy fedora-git.spec
run: | run: |
@@ -178,7 +212,7 @@ jobs:
su user -c "yes '' | makepkg --noconfirm -s -p PKGBUILD-git" su user -c "yes '' | makepkg --noconfirm -s -p PKGBUILD-git"
- name: Checkout - name: Checkout
uses: https://gitea.com/actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6 uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
- name: Upload Arch package - name: Upload Arch package
uses: https://gitea.com/actions/gitea-upload-artifact@v4 uses: https://gitea.com/actions/gitea-upload-artifact@v4

View File

@@ -20,10 +20,10 @@ jobs:
name: Check code name: Check code
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: https://gitea.com/actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6 - uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
- name: Set up Node.js - name: Set up Node.js
uses: https://gitea.com/actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6 uses: https://gitea.com/actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6
with: with:
node-version: 20 node-version: 20

View File

@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout - name: Checkout
uses: https://gitea.com/actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6 uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
- name: Set up Python - name: Set up Python
uses: https://gitea.com/actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6 uses: https://gitea.com/actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6

View File

@@ -10,10 +10,10 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: ghcr.io/renovatebot/renovate:latest@sha256:17c8966ef38fc361e108a550ffe2dcedf73e846f9975a974aea3d48c66b107a6 container: ghcr.io/renovatebot/renovate:latest@sha256:17c8966ef38fc361e108a550ffe2dcedf73e846f9975a974aea3d48c66b107a6
steps: steps:
- uses: https://gitea.com/actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6 - uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
- name: Set up Node.js - name: Set up Node.js
uses: https://gitea.com/actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6 uses: https://gitea.com/actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6
with: with:
node-version: 20 node-version: 20

View File

@@ -3,7 +3,7 @@
Все заметные изменения в этом проекте фиксируются в этом файле. Все заметные изменения в этом проекте фиксируются в этом файле.
Формат основан на [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.9] - 2025-12-08
### Added ### Added
- Добавлены основные и расширенные настройки для `.exe`-файлов - Добавлены основные и расширенные настройки для `.exe`-файлов
@@ -27,6 +27,7 @@
- Улучшена работа с потоками для избежания вылетов - Улучшена работа с потоками для избежания вылетов
- Исправлен запуск PortProton из Flatpak: теперь используется `flatpak run`, а не `start.sh` - Исправлен запуск PortProton из Flatpak: теперь используется `flatpak run`, а не `start.sh`
- Исправлено применение обложки по ссылке например со steamgriddb.com/ - Исправлено применение обложки по ссылке например со steamgriddb.com/
- Исправлено множественное открытие окон в X11
### Contributors ### Contributors
- @Vector_null - @Vector_null

2
MANIFEST.in Normal file
View File

@@ -0,0 +1,2 @@
recursive-include portprotonqt/themes *
recursive-include portprotonqt/locales *

View File

@@ -5,8 +5,7 @@ script:
- uv venv - uv venv
- uv pip install --no-cache-dir ../ - uv pip install --no-cache-dir ../
- cp -r .venv/lib/python3.10/site-packages/* AppDir/usr/local/lib/python3.10/dist-packages - cp -r .venv/lib/python3.10/site-packages/* AppDir/usr/local/lib/python3.10/dist-packages
- cp -r share AppDir/usr - cp -r usr AppDir/
- cp -r lib AppDir/usr
- rm -rf AppDir/usr/local/lib/python3.10/dist-packages/PySide6/Qt/qml/ - rm -rf AppDir/usr/local/lib/python3.10/dist-packages/PySide6/Qt/qml/
- rm -f AppDir/usr/local/lib/python3.10/dist-packages/PySide6/{assistant,designer,linguist,lrelease,lupdate} - rm -f AppDir/usr/local/lib/python3.10/dist-packages/PySide6/{assistant,designer,linguist,lrelease,lupdate}
- rm -f AppDir/usr/local/lib/python3.10/dist-packages/PySide6/{Qt3DAnimation*,Qt3DCore*,Qt3DExtras*,Qt3DInput*,Qt3DLogic*,Qt3DRender*,QtBluetooth*,QtCharts*,QtConcurrent*,QtDataVisualization*,QtDesigner*,QtExampleIcons*,QtGraphs*,QtGraphsWidgets*,QtHelp*,QtHttpServer*,QtLocation*,QtMultimedia*,QtMultimediaWidgets*,QtNetworkAuth*,QtNfc*,QtOpenGL*,QtOpenGLWidgets*,QtPdf*,QtPdfWidgets*,QtPositioning*,QtPrintSupport*,QtQml*,QtQuick*,QtQuick3D*,QtQuickControls2*,QtQuickTest*,QtQuickWidgets*,QtRemoteObjects*,QtScxml*,QtSensors*,QtSerialBus*,QtSerialPort*,QtSpatialAudio*,QtSql*,QtStateMachine*,QtSvgWidgets*,QtTest*,QtTextToSpeech*,QtUiTools*,QtWebChannel*,QtWebEngineCore*,QtWebEngineQuick*,QtWebEngineWidgets*,QtWebSockets*,QtWebView*,QtXml*} - rm -f AppDir/usr/local/lib/python3.10/dist-packages/PySide6/{Qt3DAnimation*,Qt3DCore*,Qt3DExtras*,Qt3DInput*,Qt3DLogic*,Qt3DRender*,QtBluetooth*,QtCharts*,QtConcurrent*,QtDataVisualization*,QtDesigner*,QtExampleIcons*,QtGraphs*,QtGraphsWidgets*,QtHelp*,QtHttpServer*,QtLocation*,QtMultimedia*,QtMultimediaWidgets*,QtNetworkAuth*,QtNfc*,QtOpenGL*,QtOpenGLWidgets*,QtPdf*,QtPdfWidgets*,QtPositioning*,QtPrintSupport*,QtQml*,QtQuick*,QtQuick3D*,QtQuickControls2*,QtQuickTest*,QtQuickWidgets*,QtRemoteObjects*,QtScxml*,QtSensors*,QtSerialBus*,QtSerialPort*,QtSpatialAudio*,QtSql*,QtStateMachine*,QtSvgWidgets*,QtTest*,QtTextToSpeech*,QtUiTools*,QtWebChannel*,QtWebEngineCore*,QtWebEngineQuick*,QtWebEngineWidgets*,QtWebSockets*,QtWebView*,QtXml*}
@@ -37,7 +36,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.8 version: 0.1.9
exec: usr/bin/python3 exec: usr/bin/python3
exec_args: "-m portprotonqt.app $@" exec_args: "-m portprotonqt.app $@"
apt: apt:

View File

@@ -1,5 +1,5 @@
pkgname=portprotonqt pkgname=portprotonqt
pkgver=0.1.8 pkgver=0.1.9
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')
@@ -19,6 +19,5 @@ build() {
package() { package() {
cd "$srcdir/PortProtonQt" cd "$srcdir/PortProtonQt"
python -m installer --destdir="$pkgdir" dist/*.whl python -m installer --destdir="$pkgdir" dist/*.whl
cp -r build-aux/share "$pkgdir/usr/" cp -r build-aux/usr "$pkgdir/"
cp -r build-aux/lib "$pkgdir/usr/"
} }

View File

@@ -24,6 +24,5 @@ build() {
package() { package() {
cd "$srcdir/PortProtonQt" cd "$srcdir/PortProtonQt"
python -m installer --destdir="$pkgdir" dist/*.whl python -m installer --destdir="$pkgdir" dist/*.whl
cp -r build-aux/share "$pkgdir/usr/" cp -r build-aux/usr "$pkgdir/"
cp -r build-aux/lib "$pkgdir/usr/"
} }

View File

@@ -70,8 +70,7 @@ cd %{oname}
cd %{oname} cd %{oname}
%pyproject_install %pyproject_install
%pyproject_save_files %{pypi_name} %pyproject_save_files %{pypi_name}
cp -r build-aux/share %{buildroot}/usr/ cp -r build-aux/usr %{buildroot}/
cp -r build-aux/lib %{buildroot}/usr/
%files -n python3-%{pypi_name}-git -f %{pyproject_files} %files -n python3-%{pypi_name}-git -f %{pyproject_files}
%{_bindir}/%{pypi_name} %{_bindir}/%{pypi_name}

View File

@@ -1,5 +1,5 @@
%global pypi_name portprotonqt %global pypi_name portprotonqt
%global pypi_version 0.1.8 %global pypi_version 0.1.9
%global oname PortProtonQt %global oname PortProtonQt
%global _python_no_extras_requires 1 %global _python_no_extras_requires 1
@@ -69,8 +69,7 @@ cd %{oname}
cd %{oname} cd %{oname}
%pyproject_install %pyproject_install
%pyproject_save_files %{pypi_name} %pyproject_save_files %{pypi_name}
cp -r build-aux/share %{buildroot}/usr/ cp -r build-aux/usr %{buildroot}/
cp -r build-aux/lib %{buildroot}/usr/
%files -n python3-%{pypi_name} -f %{pyproject_files} %files -n python3-%{pypi_name} -f %{pyproject_files}
%{_bindir}/%{pypi_name} %{_bindir}/%{pypi_name}

8
debian/README.Debian vendored Normal file
View File

@@ -0,0 +1,8 @@
PortProtonQt for Debian
-----------------------
This package provides a modern GUI for managing and launching games from
PortProton, Steam, and Epic Games Store.
For more information about PortProtonQt, please see the project homepage:
https://git.linux-gaming.ru/Boria138/PortProtonQt

22
debian/changelog vendored Normal file
View File

@@ -0,0 +1,22 @@
portprotonqt (0.1.9-1) unstable; urgency=medium
* Добавлены основные и расширенные настройки для ".exe"-файлов
* Добавлена кнопка обновления сетки без необходимости перезапуска PortProtonQt (F5 на клавиатуре, GUIDE + Select на геймпаде)
* Добавлена эмуляция мыши по GUIDE (Xbox или PS) + Start для установки приложений или взаимодействия с инструментами Wine не адаптированные под геймпад (работает только если PortProtonQt вне фокуса)
* При сворачивании приложения в трей оно теперь корректно восстанавливается, вместо запуска нового экземпляра
* Добавлена поддержка SteamGridDB в качестве дополнительного источника обложек
* При добавлении карточки в избранное она автоматически становится первой без необходимости перезапуска
* Изменено оформление виртуальной клавиатуры для лучшего соответствия общей теме
* Ускорено чтение конфигов за счёт уменьшения количества обращений к файловой системе.
* Из стандартной темы удалены неиспользуемые шрифты
* Улучшена совместимость с Qt 6.10
* Ускорен запуск программы
* В диалог редактирования ярылыка добавлен placeholder с уточнением того что в качевстве обложки можно использовать и ссылку, а не только файл
* Ссылку на обложку в диалоге редактирования ярлыка теперь можно указывать без протокола вроде http или https
* Добавлено больше проверок на None для избежания вылетов
* Улучшена работа с потоками для избежания вылетов
* Исправлен запуск PortProton из Flatpak: теперь используется "flatpak run", а не "start.sh"
* Исправлено применение обложки по ссылке например со steamgriddb.com/
* Исправлено множественное открытие окон в X11
-- Boris Yumankulov <boria138@altlinux.org> Mon, 08 Dec 2025 00:00:00 +0000

5
debian/changelog.bak vendored Normal file
View File

@@ -0,0 +1,5 @@
portprotonqt (0.1.9-1) unstable; urgency=medium
* Initial release of PortProtonQt for Debian
-- Boris Yumankulov <boria138@altlinux.org> Thu, 11 Dec 2025 00:00:00 +0000

1
debian/compat vendored Normal file
View File

@@ -0,0 +1 @@
13

47
debian/control vendored Normal file
View File

@@ -0,0 +1,47 @@
Source: portprotonqt
Priority: optional
Maintainer: Boris Yumankulov <boria138@altlinux.org>
Build-Depends: debhelper (>= 13),
dh-python,
python3-all,
python3-setuptools,
python3-build,
python3-installer,
pybuild-plugin-pyproject
Standards-Version: 4.6.0
Homepage: https://git.linux-gaming.ru/Boria138/PortProtonQt
Package: python3-portprotonqt
Architecture: all
Depends: ${python3:Depends},
${misc:Depends},
python3-babel,
python3-beautifulsoup4,
python3-evdev,
python3-icoextract,
python3-numpy,
python3-orjson,
python3-pillow,
python3-psutil,
python3-pyside6,
python3-pyudev,
python3-rapidfuzz,
python3-requests,
python3-tqdm,
python3-vdf,
python3-websocket-client,
perl-image-exiftool,
xdg-utils,
cabextract,
gzip,
unzip,
curl,
unrar
Description: Modern GUI for managing and launching games from PortProton, Steam, and Epic Games Store
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.

7
debian/copyright vendored Normal file
View File

@@ -0,0 +1,7 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: PortProtonQt
Source: https://git.linux-gaming.ru/Boria138/PortProtonQt
Files: *
Copyright: 2024-2025 Boris Yumankulov <boria138@altlinux.org>
License: GPL-3.0+

33
debian/rules vendored Executable file
View File

@@ -0,0 +1,33 @@
#!/usr/bin/make -f
export PYBUILD_NAME=portprotonqt
export DEB_BUILD_OPTIONS=nocheck
export DH_VERBOSE=1
%:
dh $@ --with python3 --buildsystem=pybuild
override_dh_install:
dh_install
# Create necessary directories
mkdir -p debian/python3-portprotonqt/usr/lib/udev/rules.d
mkdir -p debian/python3-portprotonqt/usr/share/applications
mkdir -p debian/python3-portprotonqt/usr/share/bash-completion/completions
mkdir -p debian/python3-portprotonqt/usr/share/icons/hicolor/scalable/apps
mkdir -p debian/python3-portprotonqt/usr/share/metainfo
# Copy additional files from build-aux/usr (if they exist)
if [ -d "$(CURDIR)/build-aux/usr/lib/udev/rules.d" ]; then \
cp -r $(CURDIR)/build-aux/usr/lib/udev/rules.d/* debian/python3-portprotonqt/usr/lib/udev/rules.d/ || true; \
fi
if [ -d "$(CURDIR)/build-aux/usr/share/applications" ]; then \
cp -r $(CURDIR)/build-aux/usr/share/applications/* debian/python3-portprotonqt/usr/share/applications/ || true; \
fi
if [ -d "$(CURDIR)/build-aux/usr/share/bash-completion/completions" ]; then \
cp -r $(CURDIR)/build-aux/usr/share/bash-completion/completions/* debian/python3-portprotonqt/usr/share/bash-completion/completions/ || true; \
fi
if [ -d "$(CURDIR)/build-aux/usr/share/icons/hicolor/scalable/apps" ]; then \
cp -r $(CURDIR)/build-aux/usr/share/icons/hicolor/scalable/apps/* debian/python3-portprotonqt/usr/share/icons/hicolor/scalable/apps/ || true; \
fi
if [ -d "$(CURDIR)/build-aux/usr/share/metainfo" ]; then \
cp -r $(CURDIR)/build-aux/usr/share/metainfo/* debian/python3-portprotonqt/usr/share/metainfo/ || true; \
fi

1
debian/source/format vendored Normal file
View File

@@ -0,0 +1 @@
3.0 (native)

7
debian/source/options vendored Normal file
View File

@@ -0,0 +1,7 @@
# Configuration for Debian source package
compression = "gzip"
# Files and directories to exclude from source package
tar-ignore = "dev-scripts"
tar-ignore = ".*"
tar-ignore = "__pycache__"

View File

@@ -4,7 +4,7 @@ import argparse
import re import re
import subprocess import subprocess
from pathlib import Path from pathlib import Path
from datetime import date from datetime import date, datetime
# Base directory of the project # Base directory of the project
BASE_DIR = Path(__file__).parent.parent BASE_DIR = Path(__file__).parent.parent
@@ -16,6 +16,7 @@ PYPROJECT = BASE_DIR / "pyproject.toml"
APP_PY = BASE_DIR / "portprotonqt" / "app.py" APP_PY = BASE_DIR / "portprotonqt" / "app.py"
GITEA_WORKFLOW = BASE_DIR / ".gitea" / "workflows" / "build.yml" GITEA_WORKFLOW = BASE_DIR / ".gitea" / "workflows" / "build.yml"
CHANGELOG = BASE_DIR / "CHANGELOG.md" CHANGELOG = BASE_DIR / "CHANGELOG.md"
DEBIAN_CHANGELOG = BASE_DIR / "debian" / "changelog"
def bump_appimage(path: Path, old: str, new: str) -> bool: def bump_appimage(path: Path, old: str, new: str) -> bool:
""" """
@@ -109,6 +110,138 @@ def bump_changelog(path: Path, old: str, new: str) -> bool:
path.write_text(new_text, encoding='utf-8') path.write_text(new_text, encoding='utf-8')
return bool(count) return bool(count)
def bump_debian_changelog(path: Path, old: str, new: str) -> bool:
"""
Update debian/changelog with new version
"""
if not path.exists():
return False
# Extract changelog entries from CHANGELOG.md for this version
changelog_md_path = BASE_DIR / "CHANGELOG.md"
changelog_entries = []
changelog_date = None
if changelog_md_path.exists():
changelog_text = changelog_md_path.read_text(encoding='utf-8')
lines = changelog_text.splitlines()
# Find the section for the new version and extract the date
start_reading = False
end_reading = False
in_contributors_section = False
for line in lines:
if line.startswith(f"## [{new}]"):
# Extract date from line like "## [0.1.9] - 2025-12-08"
date_match = re.search(r'\[.+\] - (\d{4}-\d{2}-\d{2})', line)
if date_match:
changelog_date_str = date_match.group(1)
# Convert to the expected Debian format
date_obj = datetime.strptime(changelog_date_str, '%Y-%m-%d')
changelog_date = date_obj.strftime('%a, %d %b %Y') + " 00:00:00 +0000"
start_reading = True
in_contributors_section = False
continue
elif line.startswith("## [") and start_reading:
end_reading = True
break
elif line.strip().lower() == "### contributors":
# Start of contributors section - skip following lines until next section
in_contributors_section = True
continue
# Skip section headers and contributor sections
if start_reading and not end_reading and not in_contributors_section:
stripped_line = line.strip()
if stripped_line and not line.startswith("#") and not line.startswith("[") and not line.lower().startswith("###"):
# Check if this line is a list item with changes
if re.match(r'^\s*[*-]\s+', line):
# Remove markdown list formatting and add proper Debian format
clean_line = re.sub(r'^\s*[*-]\s+', ' * ', line.rstrip())
# Remove common markdown formatting like backticks
clean_line = re.sub(r'`([^`]+)`', r'"\1"', clean_line) # Replace `code` with "code"
changelog_entries.append(clean_line)
# Also include lines that are sub-items (indented changes)
elif line.startswith(" ") and re.match(r'^\s*[*-]\s+', line[4:]):
clean_line = re.sub(r'^\s*[*-]\s+', ' * ', line[4:].rstrip())
clean_line = " " + clean_line # Add extra indentation
# Remove common markdown formatting
clean_line = re.sub(r'`([^`]+)`', r'"\1"', clean_line)
changelog_entries.append(clean_line)
# If no specific entries found for this version, use generic message
if not changelog_entries:
changelog_entries = [" * New upstream release"]
# Use changelog date if available, otherwise use current time
current_time = changelog_date if changelog_date else datetime.now().strftime('%a, %d %b %Y %H:%M:%S +0000')
# Read the existing changelog to get maintainer info and other fields
text = path.read_text(encoding='utf-8')
# If the file is empty or doesn't contain proper maintainer info, use a default
lines = text.splitlines()
if not lines or not any(line.startswith(" -- ") for line in lines):
# Create a default changelog entry with proper format
package_name = "portprotonqt"
new_version_line = f"{package_name} ({new}-1) unstable; urgency=medium"
# Default maintainer info from the original file
default_maintainer = "Boris Yumankulov <boria138@altlinux.org>"
maintainer_line = f" -- {default_maintainer} {current_time}"
new_content = new_version_line + "\n\n" + "\n".join(changelog_entries) + "\n\n" + maintainer_line + "\n"
else:
# Extract the header template from the current first entry
header_parts = []
entry_end_index = 0
for i, line in enumerate(lines):
header_parts.append(line)
if line.startswith(" -- "):
entry_end_index = i + 1
break
# Construct new changelog entry
new_entry_lines = []
if header_parts:
# Parse the first line to extract package name (before the version)
first_line = header_parts[0]
# Extract package name by getting everything before the opening parenthesis
if '(' in first_line:
package_name = first_line.split('(')[0].strip()
new_version_line = f"{package_name} ({new}-1) unstable; urgency=medium"
else:
# Fallback: if no parentheses found, use a default format
new_version_line = f"portprotonqt ({new}-1) unstable; urgency=medium"
new_entry_lines.append(new_version_line)
# Add the changelog entries
new_entry_lines.extend(changelog_entries)
# Add the maintainer info and timestamp
for j in range(1, len(header_parts)):
if header_parts[j].startswith(" -- "):
# Extract the maintainer information (everything after "-- ")
maintainer_part = header_parts[j][4:] # Remove leading " -- "
# Extract only the name and email, ignore timestamp
maintainer_info = maintainer_part.split(' ')[0].strip()
new_entry_lines.append(f" -- {maintainer_info} {current_time}")
elif not header_parts[j].startswith(" *"): # Skip existing changes since we added new ones
new_entry_lines.append(header_parts[j])
# Reconstruct the file with new entry at the top followed by the rest
new_content = '\n'.join(new_entry_lines) + '\n' + '\n'.join(lines[entry_end_index:])
path.write_text(new_content, encoding='utf-8')
return True
def main(): def main():
parser = argparse.ArgumentParser(description='Bump project version in specific files') parser = argparse.ArgumentParser(description='Bump project version in specific files')
parser.add_argument('old', help='Old version string') parser.add_argument('old', help='Old version string')
@@ -123,7 +256,8 @@ def main():
(PYPROJECT, bump_pyproject), (PYPROJECT, bump_pyproject),
(APP_PY, bump_app_py), (APP_PY, bump_app_py),
(GITEA_WORKFLOW, bump_workflow), (GITEA_WORKFLOW, bump_workflow),
(CHANGELOG, bump_changelog) (CHANGELOG, bump_changelog),
(DEBIAN_CHANGELOG, bump_debian_changelog)
] ]
updated = [] updated = []

View File

@@ -17,7 +17,7 @@ from portprotonqt.cli import parse_args
__app_id__ = "ru.linux_gaming.PortProtonQt" __app_id__ = "ru.linux_gaming.PortProtonQt"
__app_name__ = "PortProtonQt" __app_name__ = "PortProtonQt"
__app_version__ = "0.1.8" __app_version__ = "0.1.9"
def get_version(): def get_version():
try: try:

View File

@@ -1,10 +1,10 @@
[build-system] [build-system]
requires = ["setuptools >= 77.0.3"] requires = ["setuptools >= 75.0.0", "wheel"]
build-backend = "setuptools.build_meta" build-backend = "setuptools.build_meta"
[project] [project]
name = "portprotonqt" name = "portprotonqt"
version = "0.1.8" version = "0.1.9"
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" }

77
setup.py Normal file
View File

@@ -0,0 +1,77 @@
#!/usr/bin/env python3
"""
Setup script for PortProtonQt
Debian package build configuration
"""
from setuptools import setup, find_packages
from pathlib import Path
import re
# Читаем версию из pyproject.toml простым regex
pyproject_file = Path(__file__).parent / "pyproject.toml"
version_match = re.search(r'^version\s*=\s*"([^"]+)"', pyproject_file.read_text(), re.MULTILINE)
version = version_match.group(1) if version_match else "0.0.0"
# Читаем README для long_description
readme_file = Path(__file__).parent / "README.md"
long_description = readme_file.read_text(encoding="utf-8") if readme_file.exists() else ""
setup(
name="portprotonqt",
version=version,
description="A project to rewrite PortProton (PortWINE) using PySide",
long_description=long_description,
long_description_content_type="text/markdown",
author="Boria138, BlackSnaker, Mikhail Tergoev(Castro-Fidel)",
author_email="",
url="https://github.com/Castro-Fidel/PortProton",
license="GPL-3.0",
# Классификаторы PyPI
classifiers=[
"Development Status :: 3 - Alpha",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Operating System :: POSIX :: Linux",
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
"Intended Audience :: End Users/Desktop",
"Topic :: Games/Entertainment",
],
keywords=["portproton", "wine", "game", "steam", "proton", "linux"],
# Python версия
python_requires=">=3.10",
# Пакеты
packages=find_packages(exclude=["build-aux", "dev-scripts", "documentation", "data"]),
# Включаемые файлы пакета
package_data={
"portprotonqt": [
"themes/**/*",
"themes/**/fonts/*",
"themes/**/images/*",
"themes/**/images/icons/*",
"themes/**/images/screenshots/*",
"locales/**/*",
"locales/**/*.po",
"locales/**/*.mo",
],
},
# Точка входа - исполняемый скрипт
entry_points={
"console_scripts": [
"portprotonqt=portprotonqt.app:main",
],
},
# Дополнительные опции
include_package_data=True,
zip_safe=False,
)

2
uv.lock generated
View File

@@ -552,7 +552,7 @@ wheels = [
[[package]] [[package]]
name = "portprotonqt" name = "portprotonqt"
version = "0.1.8" version = "0.1.9"
source = { editable = "." } source = { editable = "." }
dependencies = [ dependencies = [
{ name = "babel" }, { name = "babel" },