forked from Linux-Gaming/PortProtonQt
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c02a64f5bf
|
||
|
|
cd7bf7ba1e
|
||
|
|
8e964823f9
|
||
|
|
0e80f60ac7
|
||
|
|
f4cca57a1a | ||
|
|
bb64c6d2cd | ||
|
|
2774c67b7f | ||
|
|
2420c53c25 | ||
|
|
8e6a338575
|
||
|
|
2999eeeb97 | ||
|
|
8543698099 | ||
|
|
c4081f1933 | ||
|
|
d76f06d0b6
|
||
|
|
945b8ca24e
|
||
|
|
300c08626b
|
||
|
|
c573f45337
|
||
|
|
4321d215ea
|
||
|
|
662f0bf494
|
||
|
|
75f216ca6c
|
||
|
|
c462925477
|
||
|
|
2a34b08a0a
|
||
|
|
33fd22af23
|
||
|
|
a7d43068ed
|
||
|
|
d522ece132
|
||
|
|
dab39e2821 | ||
|
|
d7121db730 | ||
|
|
4a44d95055
|
||
|
|
ae084974dd
|
||
|
|
1cb7d08479 | ||
|
|
980fb964b7
|
||
|
|
7aa3b04ff4
|
||
|
|
68829bc00b
|
||
|
|
71a8ebd89a | ||
|
|
b17575dece
|
||
|
|
60135211e5
|
||
|
|
082be63f7d
|
||
|
|
fc5572a262
|
||
|
|
ab67e9bf4e
|
||
|
|
a7ae3b834f | ||
|
|
00b0c0fdfc
|
||
|
|
cf46e3b67f
|
||
|
|
044abe9543
|
||
|
|
07da5368b2
|
||
|
|
f40b93b6ed | ||
|
|
4db56869d1
|
||
|
|
0e782b3463
|
||
|
|
9bc1760107
|
||
|
|
ce6a28c2d9
|
||
|
|
a8dfc19b04
|
||
|
|
8e87c2183c
|
||
|
|
5070f1fdc7
|
||
|
|
5beec85ee8
|
||
|
|
a964b2882e
|
||
|
|
14c5b0406a
|
||
|
|
0adc218908
|
||
|
|
ccdf79f89f
|
||
|
|
650653399b
|
||
|
|
ad565ea3e5
|
||
|
|
771fc8990a
|
||
|
|
e8cc1f919e
|
||
|
|
9a6a83db23
|
||
|
|
4f823d4ebc
|
||
|
|
28d3333269
|
||
|
|
4bce23b83c
|
||
|
|
471a9c1099 | ||
|
|
a291c54e14
|
||
|
|
53bc799e4f
|
||
|
|
b48fbd3383
|
||
|
|
91b434a5d9
|
||
|
|
ac1ed68b86 | ||
|
|
50f1fbd1d6
|
||
|
|
fa93eacd3a
|
||
|
|
1f72d6edb6
|
||
|
|
605b80850f
|
||
|
|
78d04a7a5f
|
||
|
|
007713f1be
|
||
|
|
a28465fd7f
|
||
|
|
21696eea9b
|
||
|
|
4d732c8f22
|
||
|
|
8cee173ed2
|
||
|
|
02ab53c996
|
||
|
|
04ca284807
|
||
|
|
c12e1996cb
|
||
|
|
76e922a431
|
||
|
|
51e903e961 | ||
|
|
052a804c14 | ||
|
|
f2a2013ba7
|
||
|
|
0f394b8974 | ||
|
|
a1817abe65
|
||
|
|
1a48635582
|
||
|
|
183dbb8253 | ||
|
|
d2f21aa585
|
||
|
|
eb6e4dcb40
|
||
|
|
a1f2913e88
|
||
|
|
841da7eed0
|
||
|
|
bb1f3ba1ee
|
||
|
|
a3b9e8b5e1
|
||
|
|
c7f3ee79bb
|
||
|
|
2aab2b0286
|
||
|
|
ca3fd2947a
|
||
|
|
627d708e81
|
||
|
|
513c9872da
|
||
|
|
26aa44c0d4
|
||
|
|
53664b2ab7
|
||
|
|
6e07e56741 | ||
|
|
dd22838e25
|
||
|
|
fa721ad84c
|
||
|
|
8a1a1582a2
|
||
|
|
4a2649a33d
|
||
|
|
cd39183e47
|
||
|
|
de004667d4
|
||
|
|
8c0f8bb657
|
||
|
|
ae8c264da7
|
||
|
|
b1f5b001b2
|
||
|
|
cf80c92a5d
|
||
|
|
2c1cd96e43
|
||
|
|
ca0293474b
|
||
|
|
3408d71003
|
||
|
|
4a0378686d
|
||
|
|
30ddac4cab
|
||
|
|
cb2c3baf10
|
||
|
|
bf65f451d1
|
||
|
|
7a02b6b666
|
||
|
|
0b5013df2b
|
||
|
|
2e7a977fec
|
||
|
|
dc0a402113
|
||
|
|
d53a5f7ce9
|
||
|
|
b0b1bf2fcb
|
||
|
|
7de71798b9
|
||
|
|
39e92cf437 | ||
|
|
d7071c84e7 | ||
|
|
4dcd845978
|
||
|
|
4dcf257a38
|
||
|
|
9782de831b | ||
|
|
4d367abcc5
|
||
|
|
ced8e6a2b9
|
||
|
|
72821f1ac6
|
||
|
|
a46959f7db
|
||
|
|
31f28eba1e
|
||
|
|
33f26f9559
|
||
|
|
28884e56c1
|
||
|
|
9bdbbb6b30
|
||
|
|
24eb968371
|
||
|
|
89090409a4
|
||
|
|
813275a049
|
||
|
|
674bcec476
|
||
|
|
4210f43130
|
||
|
|
7518e948e7
|
||
|
|
1543b3b42b
|
||
|
|
5a9bd455e1
|
||
|
|
239ace42c9 | ||
|
|
6c43289c85 | ||
|
|
ca32ce4e25 | ||
|
|
3fbabc0267
|
||
|
|
ef5a302ff5
|
||
|
|
d05665be15
|
||
|
|
b51174c172
|
||
|
|
169ff005ce
|
||
|
|
6792abdac6
|
||
|
|
f2f11b608e
|
||
|
|
2fd91b9556
|
||
|
|
40b50de937
|
||
|
|
f39267e979
|
||
|
|
710c876374
|
||
|
|
d00d789246
|
||
|
|
edcdb7cef4
|
||
|
|
03cf25492f
|
||
|
|
9f84d2e9c3
|
||
|
|
38c162f38a
|
||
|
|
41046f3439
|
||
|
|
5428cd311b
|
||
|
|
21580d76ba
|
||
|
|
174e439509
|
||
|
|
b7f8e1edf2
|
||
|
|
b52785791a
|
||
|
|
b280dc1f54
|
||
|
|
1775911416
|
||
|
|
9f47dafb24
|
||
|
|
0996b90ba3
|
||
|
|
07e3850bce | ||
|
|
4536ce09bd | ||
|
|
4d61cb3316 | ||
|
|
c40caeae5c
|
||
|
|
74085a2d0b
|
||
|
|
3d55994962 | ||
|
|
769c84edbd | ||
|
|
4ec1174bcd | ||
|
|
6fe2fe08ba | ||
|
|
cda1340293 | ||
|
|
773569773e | ||
|
|
f9cd038aa1 | ||
|
|
c0bae645e4
|
||
|
|
6c63815ec3
|
||
|
|
5c006a5b7e | ||
|
|
c6a9031ee2
|
||
|
|
91a3cb4c26
|
||
|
|
c93f10c2a2
|
||
|
|
ab055f3708
|
||
|
|
823fff912e
|
||
|
|
100556e1d0
|
||
|
|
d639283db5 | ||
|
|
7f4d06f825 | ||
|
|
b4baf8e230 | ||
|
|
3f6a4f538d
|
||
|
|
0ac7959031
|
||
|
|
3397e633c6
|
||
|
|
9abeddfb51
|
||
|
|
754fc039f9
|
||
|
|
0b9b2f6e48
|
||
|
|
b8fd7aff1b
|
||
|
|
92f84d9c9c
|
||
|
|
228db2bbf1
|
||
|
|
5277f88b80
|
||
|
|
f0de078dcd
|
||
|
|
ff20458ffb
|
||
|
|
22956d7140 | ||
|
|
f31c8409cc | ||
|
|
dc2eaa71ba
|
||
|
|
e66dffeef0
|
||
|
|
eac9583252
|
||
|
|
39df4d7946
|
||
|
|
9ffb563280
|
||
|
|
c0c4eea813
|
||
|
|
27ea663f7d
|
||
|
|
ca851735e6
|
||
|
|
ac1270a7fd
|
||
|
|
8e76ee8789
|
||
|
|
f11f7d594b
|
||
|
|
2014a89c27
|
||
|
|
4ae38a1f55
|
||
|
|
a3853ef1a6
|
||
|
|
f3ac329e54
|
||
|
|
94f2c6df2e
|
||
|
|
7fccaa4b0d
|
||
|
|
9c1a80add5
|
||
|
|
6b859f6bdf
|
||
|
|
aacabd81d9
|
||
|
|
b1dc9d87dd | ||
|
|
63b8d26b1c | ||
|
|
858314a21c
|
||
|
|
622baaa31c
|
||
|
|
2e93af677c
|
||
|
|
f55701b963
|
||
|
|
188f2925ba
|
||
|
|
ce334fb232
|
||
|
|
f4eca46112
|
||
|
|
811083748c
|
||
|
|
6bd8593300
|
||
|
|
aa629e79a2
|
||
|
|
3508248e53 | ||
|
|
abe8ee0575 | ||
|
|
d0e9d721d1 | ||
|
|
343ed115a1 | ||
|
|
9f78196c8d
|
||
|
|
bc4748ca56 | ||
|
|
5718584809 | ||
|
|
1fb4ced62f | ||
|
|
98cfa3e50e
|
||
|
|
006b6a6dd1
|
||
|
|
8ab3b796f3
|
||
|
|
3730fa1183
|
||
|
|
d6d415d184
|
||
|
|
af90c5fdff
|
||
|
|
e8e3fefbf0
|
||
|
|
9c29a66314 | ||
|
|
c26dd358e5 | ||
|
|
ad469c6755 | ||
|
|
fad86df55f
|
||
|
|
20ebb51f9a
|
||
|
|
85b7f6a70c
|
||
|
|
7542be7bfd
|
||
|
|
9dce0bc2ef
|
||
|
|
d813be7e29
|
||
|
|
b460fd507e
|
||
|
|
b377759db4
|
||
|
|
ba3233dabf
|
||
|
|
aeaef9b6d7
|
||
|
|
08808cf975
|
||
|
|
b23a83c96d
|
||
|
|
69e38452bf
|
||
|
|
dd66585c52
|
||
|
|
b8e0359367
|
||
|
|
8d264ac743
|
||
|
|
732f5e5f60
|
||
|
|
2b735aadbd
|
||
|
|
0cef434c2e
|
||
|
|
757bd34885
|
||
|
|
da79f07780
|
||
|
|
55d5b097d9
|
||
|
|
650844c704
|
||
|
|
c4e3e30bf7
|
||
|
|
97d6d54c93
|
||
|
|
be09e152e4
|
||
|
|
54df09f94a | ||
|
|
eb39264578 | ||
|
|
f9ea5e992b | ||
|
|
81637c3729
|
||
|
|
80a79ed45b
|
||
|
|
c6b997366f
|
||
|
|
2bdcf107f2
|
||
|
|
25f3e526ae
|
||
|
|
d081ae68db
|
||
|
|
d1b8f0fa93
|
||
|
|
23e19a14d0
|
||
|
|
f9ef6751dd
|
||
|
|
6363c08781
|
||
|
|
7eb2934b44
|
||
|
|
2519ccd6d0
|
||
|
|
da204786c1
|
||
|
|
f6e871feaf
|
||
|
|
a9e0304437
|
||
|
|
994769d3cf
|
||
|
|
6fd2e9b34a
|
||
|
|
387133b87f
|
||
|
|
8bd6e30e0b
|
||
|
|
b168e32fc8
|
||
|
|
1812b8de5f
|
||
|
|
cfc4532edd
|
||
|
|
50d6d952dd
|
||
|
|
18f277e707
|
||
|
|
a769263aa1
|
||
|
|
159cd49a16
|
||
|
|
68c8ca07b9 | ||
|
|
ee22a5d8fb
|
||
|
|
48f156e433
|
||
|
|
85b199d5ea
|
||
|
|
8d0bab134e
|
||
|
|
5525a6988a
|
||
|
|
d6dc7db5e4
|
||
|
|
09313e30cf
|
||
|
|
8d539469a3
|
||
|
|
45f9b2950f
|
||
|
|
0d6df9ed6c
|
||
|
|
b92eb1fe9d
|
||
|
|
b200d73879
|
||
|
|
335f3223db
|
||
|
|
bcc6f1c2ce
|
||
|
|
b88ed89136
|
||
|
|
78d4c820e4
|
||
|
|
47c84ceb67
|
||
|
|
e882a94395
|
||
|
|
4c372ad083
|
||
|
|
0a1f0dfdf1
|
||
|
|
228e3262c8
|
||
|
|
017c56227a
|
||
|
|
0f28c0dbeb
|
||
|
|
80c51198b9
|
||
|
|
c5a46780df
|
||
|
|
f729e10e20
|
||
|
|
1affd68159
|
||
|
|
c597c37610
|
||
|
|
ffc040c8af
|
||
|
|
f676ab6abe
|
||
|
|
8ac7cf235a
|
||
|
|
0a231e6664
|
||
|
|
461df5006d
|
||
|
|
3cb04d0d42
|
||
|
|
e6b94ef907
|
||
|
|
d6a58ecd60
|
||
|
|
bdfc18203b
|
||
|
|
0814326624
|
||
|
|
bcfb69bd08
|
||
|
|
5ad70b1d5a | ||
|
|
f10de90210 | ||
|
|
4b33637846
|
||
|
|
e309bb4f10
|
||
|
|
52572b85c7
|
||
|
|
1c952c009a
|
||
|
|
0a0fbf47b1
|
||
|
|
d29e144d4e
|
||
|
|
7b703f5bf1
|
||
|
|
1a44bc00af
|
||
|
|
1cdde3ada8
|
||
|
|
e7cbff82fd
|
||
|
|
dcf1748976
|
||
|
|
cc9a585c74
|
||
|
|
11835e0337
|
||
|
|
97e41be7b7
|
||
|
|
73d99a6aec
|
||
|
|
2ebecc96bc
|
||
|
|
63f8201098
|
||
|
|
48a066eee8
|
||
|
|
da52f7e821
|
||
|
|
8fe1f35433
|
||
|
|
9daabff516
|
||
|
|
d3c21fef3f
|
||
|
|
c123514ce5
|
||
|
|
3c1c9dffe8 | ||
|
|
aed6492c25
|
||
|
|
66583f52f4
|
||
|
|
b64670d8b3
|
||
|
|
9d16105c8a
|
||
|
|
ee23957f43
|
||
|
|
b414147bbd
|
||
|
|
a2b42ac0ed
|
||
|
|
92caf0dbb1
|
||
|
|
fc36dd7983
|
||
|
|
643f914f6d
|
||
|
|
8c3fc1307c
|
||
|
|
e0195856a8
|
||
|
|
04583c2586
|
||
|
|
bd8d280561
|
||
|
|
48bfb308dd
|
||
|
|
dcfa307fcd
|
||
|
|
3509701b1a
|
||
|
|
04c723e4cc
|
||
|
|
63de266289 | ||
|
|
4d20626f80
|
||
|
|
3a59f1af76
|
||
|
|
abc3b0b716
|
||
|
|
9159b63000
|
||
|
|
296476afa3
|
||
|
|
17f938ded4
|
||
|
|
5ccd47d461
|
||
|
|
35e449f730
|
||
|
|
b6062f1ee0
|
||
|
|
651040de70
|
||
|
|
3f0b3d65ad | ||
|
|
ec449f12d1 | ||
|
|
2d5932f144
|
||
|
|
0a9381b1d2
|
||
|
|
20fb7174c1
|
||
|
|
8f9e6ea958 | ||
|
|
19aecd75c4 | ||
|
|
905ebe1d61 | ||
|
|
ae0b3a0f1a
|
No files matched your search
@@ -4,6 +4,7 @@ on:
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
BUILD_BRANCH: ${{ github.ref_name }}
|
||||
PKGDEST: "/tmp/portprotonqt"
|
||||
PACKAGE: "portprotonqt"
|
||||
|
||||
@@ -12,7 +13,7 @@ jobs:
|
||||
name: Build AppImage
|
||||
runs-on: ubuntu-22.04
|
||||
container:
|
||||
image: archlinux:base-devel@sha256:ebcaeca69c4d416f848aedcd27fe224384fd506f86046526a5d49ec6d9e29db1
|
||||
image: archlinux:base-devel@sha256:b3c1ff749031ca2e06df1cd83fda74df13206a047b7b0f96b818825d9dc60785
|
||||
options: --privileged --device /dev/fuse
|
||||
steps:
|
||||
- name: Prepare container
|
||||
@@ -21,13 +22,15 @@ jobs:
|
||||
pacman -Sy --noconfirm archlinux-keyring
|
||||
pacman -Syu --noconfirm --disable-download-timeout --needed git wget gnupg nodejs npm xorg-server-xvfb zsync
|
||||
|
||||
- uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
- uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||
with:
|
||||
ref: ${{ env.BUILD_BRANCH }}
|
||||
|
||||
- name: Install appimage dependencies
|
||||
run: |
|
||||
cd build-aux/AppImage
|
||||
chmod +x get-dependencies.sh portprotonqt-appimage.sh
|
||||
./get-dependencies.sh --git
|
||||
./get-dependencies.sh --local --branch "${{ env.BUILD_BRANCH }}"
|
||||
|
||||
- name: Build AppImage
|
||||
run: |
|
||||
@@ -55,9 +58,9 @@ jobs:
|
||||
steps:
|
||||
- name: Install build dependencies
|
||||
run: |
|
||||
dnf install -y git rpmdevtools python3-devel python3-wheel python3-pip \
|
||||
python3-build pyproject-rpm-macros systemd-rpm-macros python3-setuptools \
|
||||
redhat-rpm-config nodejs npm
|
||||
dnf install -y git rpmdevtools meson ninja-build python3-devel \
|
||||
systemd-rpm-macros vulkan-loader-devel redhat-rpm-config nodejs npm \
|
||||
gcc gettext
|
||||
|
||||
- name: Setup rpmbuild environment
|
||||
run: |
|
||||
@@ -67,11 +70,14 @@ jobs:
|
||||
echo '%_topdir /home/rpmbuild' > /home/rpmbuild/.rpmmacros
|
||||
|
||||
- name: Checkout repo
|
||||
uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||
with:
|
||||
ref: ${{ env.BUILD_BRANCH }}
|
||||
|
||||
- name: Copy fedora.spec
|
||||
run: |
|
||||
cp build-aux/fedora-git.spec /home/rpmbuild/SPECS/${{ env.PACKAGE }}.spec
|
||||
sed "s|git clone https://git.linux-gaming.ru/Boria138/PortProtonQt.git|git clone -b ${{ env.BUILD_BRANCH }} https://git.linux-gaming.ru/Boria138/PortProtonQt.git|" \
|
||||
build-aux/fedora-git.spec > /home/rpmbuild/SPECS/${{ env.PACKAGE }}.spec
|
||||
chown -R rpmbuild:users /home/rpmbuild
|
||||
|
||||
- name: Build RPM
|
||||
@@ -88,7 +94,7 @@ jobs:
|
||||
name: Build Arch Package
|
||||
runs-on: ubuntu-22.04
|
||||
container:
|
||||
image: archlinux:base-devel@sha256:ebcaeca69c4d416f848aedcd27fe224384fd506f86046526a5d49ec6d9e29db1
|
||||
image: archlinux:base-devel@sha256:b3c1ff749031ca2e06df1cd83fda74df13206a047b7b0f96b818825d9dc60785
|
||||
|
||||
steps:
|
||||
- name: Prepare container
|
||||
@@ -115,17 +121,20 @@ jobs:
|
||||
chown user -R /tmp
|
||||
chown user -R ..
|
||||
|
||||
- name: Checkout
|
||||
uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||
with:
|
||||
ref: ${{ env.BUILD_BRANCH }}
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
cd /__w/portproton-repo
|
||||
git clone https://git.linux-gaming.ru/Boria138/PortProtonQt.git
|
||||
cp -r "$GITHUB_WORKSPACE" PortProtonQt
|
||||
cd /__w/portproton-repo/PortProtonQt/build-aux
|
||||
sed -i "s|source=(\"git+https://git.linux-gaming.ru/Boria138/PortProtonQt.git\")|source=(\"git+https://git.linux-gaming.ru/Boria138/PortProtonQt.git#branch=${{ env.BUILD_BRANCH }}\")|" PKGBUILD-git
|
||||
chown user -R ..
|
||||
su user -c "yes '' | makepkg --noconfirm -s -p PKGBUILD-git"
|
||||
|
||||
- name: Checkout
|
||||
uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
|
||||
- name: Upload Arch package
|
||||
uses: https://gitea.com/actions/gitea-upload-artifact@v4
|
||||
with:
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
name: Build vk_gpu_info on Debian 11
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- 'build-aux/vk_gpu_info.c'
|
||||
- '.gitea/workflows/build-vk-gpu-info-debian.yml'
|
||||
|
||||
jobs:
|
||||
build-debian11:
|
||||
name: Build vk_gpu_info on Debian 11
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: debian:11
|
||||
options: --privileged
|
||||
|
||||
steps:
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
apt-get update
|
||||
apt-get install -y build-essential pkg-config libvulkan-dev git curl wget nodejs npm
|
||||
|
||||
- name: Set up Node.js
|
||||
uses: https://gitea.com/actions/setup-node@v2
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
- name: Checkout code
|
||||
uses: https://gitea.com/actions/checkout@v3
|
||||
|
||||
- name: Compile vk_gpu_info
|
||||
run: |
|
||||
cd build-aux
|
||||
gcc -o vk_gpu_info vk_gpu_info.c -lvulkan
|
||||
|
||||
- name: Test vk_gpu_info execution
|
||||
run: |
|
||||
cd build-aux
|
||||
# Check if the executable was created
|
||||
if [ -f "./vk_gpu_info" ]; then
|
||||
echo "vk_gpu_info executable created successfully"
|
||||
# Try to run it (may fail if no Vulkan devices present, but that's OK for build test)
|
||||
timeout 10s ./vk_gpu_info || echo "vk_gpu_info ran but may have failed due to lack of Vulkan hardware (expected in CI)"
|
||||
else
|
||||
echo "ERROR: vk_gpu_info executable was not created"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Upload vk_gpu_info binary
|
||||
uses: https://gitea.com/actions/gitea-upload-artifact@v4
|
||||
with:
|
||||
name: vk_gpu_info-debian11-binary
|
||||
path: build-aux/vk_gpu_info
|
||||
@@ -8,7 +8,7 @@ on:
|
||||
|
||||
env:
|
||||
# Common version, will be used for tagging the release
|
||||
VERSION: 0.1.10
|
||||
VERSION: 0.1.12
|
||||
PKGDEST: "/tmp/portprotonqt"
|
||||
PACKAGE: "portprotonqt"
|
||||
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||
@@ -77,17 +77,17 @@ jobs:
|
||||
chown user -R /tmp
|
||||
chown user -R ..
|
||||
|
||||
- name: Checkout
|
||||
uses: https://gitea.com/actions/checkout@v4
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
cd /__w/portproton-repo
|
||||
git clone https://git.linux-gaming.ru/Boria138/PortProtonQt.git
|
||||
cp -r "$GITHUB_WORKSPACE" PortProtonQt
|
||||
cd /__w/portproton-repo/PortProtonQt/build-aux
|
||||
chown user -R ..
|
||||
su user -c "yes '' | makepkg --noconfirm -s"
|
||||
|
||||
- name: Checkout
|
||||
uses: https://gitea.com/actions/checkout@v4
|
||||
|
||||
- name: Upload Arch package
|
||||
uses: https://gitea.com/actions/gitea-upload-artifact@v4
|
||||
with:
|
||||
@@ -109,9 +109,9 @@ jobs:
|
||||
steps:
|
||||
- name: Install build dependencies
|
||||
run: |
|
||||
dnf install -y git rpmdevtools python3-devel python3-wheel python3-pip \
|
||||
python3-build pyproject-rpm-macros systemd-rpm-macros python3-setuptools \
|
||||
redhat-rpm-config nodejs npm
|
||||
dnf install -y git rpmdevtools meson ninja-build python3-devel \
|
||||
systemd-rpm-macros vulkan-loader-devel redhat-rpm-config nodejs npm \
|
||||
gcc gettext
|
||||
|
||||
- name: Setup rpmbuild environment
|
||||
run: |
|
||||
@@ -140,7 +140,6 @@ jobs:
|
||||
|
||||
release:
|
||||
name: Create and Publish Release
|
||||
needs: [build-appimage, build-arch, build-fedora]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: https://gitea.com/actions/checkout@v4
|
||||
@@ -152,6 +151,7 @@ jobs:
|
||||
|
||||
- name: Download all artifacts
|
||||
uses: https://gitea.com/actions/download-artifact@v3
|
||||
continue-on-error: true
|
||||
with:
|
||||
path: release/
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
name: Check Translations (disabled until yaspeller is fixed)
|
||||
name: Check Translations
|
||||
run-name: Check spelling in translation files
|
||||
on:
|
||||
push:
|
||||
@@ -15,10 +15,10 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||
|
||||
- name: Set up Python
|
||||
uses: https://gitea.com/actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6
|
||||
uses: https://gitea.com/actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
|
||||
with:
|
||||
python-version-file: "pyproject.toml"
|
||||
|
||||
|
||||
@@ -9,6 +9,8 @@ on:
|
||||
env:
|
||||
PKGDEST: "/tmp/portprotonqt"
|
||||
PACKAGE: "portprotonqt"
|
||||
PR_REPO_URL: ${{ github.event.pull_request.head.repo.clone_url }}
|
||||
PR_BRANCH: ${{ github.head_ref }}
|
||||
|
||||
jobs:
|
||||
changes:
|
||||
@@ -18,7 +20,7 @@ jobs:
|
||||
fedora: ${{ steps.check.outputs.fedora }}
|
||||
arch: ${{ steps.check.outputs.arch }}
|
||||
steps:
|
||||
- uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
- uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
@@ -63,7 +65,7 @@ jobs:
|
||||
needs: changes
|
||||
if: needs.changes.outputs.appimage == 'true' || github.event_name == 'workflow_dispatch'
|
||||
container:
|
||||
image: archlinux:base-devel@sha256:ebcaeca69c4d416f848aedcd27fe224384fd506f86046526a5d49ec6d9e29db1
|
||||
image: archlinux:base-devel@sha256:b3c1ff749031ca2e06df1cd83fda74df13206a047b7b0f96b818825d9dc60785
|
||||
options: --privileged --device /dev/fuse
|
||||
steps:
|
||||
- name: Prepare container
|
||||
@@ -72,13 +74,13 @@ jobs:
|
||||
pacman -Sy --noconfirm --disable-download-timeout --needed archlinux-keyring
|
||||
pacman -Syu --noconfirm --disable-download-timeout --needed git wget gnupg nodejs npm xorg-server-xvfb zsync
|
||||
|
||||
- uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
- uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||
|
||||
- name: Install appimage dependencies
|
||||
run: |
|
||||
cd build-aux/AppImage
|
||||
chmod +x get-dependencies.sh portprotonqt-appimage.sh
|
||||
./get-dependencies.sh
|
||||
./get-dependencies.sh --local --branch "${{ env.PR_BRANCH }}" --repo "${{ env.PR_REPO_URL }}"
|
||||
|
||||
- name: Build AppImage
|
||||
run: |
|
||||
@@ -108,9 +110,9 @@ jobs:
|
||||
steps:
|
||||
- name: Install build dependencies
|
||||
run: |
|
||||
dnf install -y git rpmdevtools python3-devel python3-wheel python3-pip \
|
||||
python3-build pyproject-rpm-macros python3-setuptools \
|
||||
redhat-rpm-config nodejs npm
|
||||
dnf install -y git rpmdevtools meson ninja-build python3-devel \
|
||||
systemd-rpm-macros redhat-rpm-config nodejs npm \
|
||||
gcc vulkan-loader-devel
|
||||
|
||||
- name: Setup rpmbuild environment
|
||||
run: |
|
||||
@@ -120,11 +122,12 @@ jobs:
|
||||
echo '%_topdir /home/rpmbuild' > /home/rpmbuild/.rpmmacros
|
||||
|
||||
- name: Checkout repo
|
||||
uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||
|
||||
- name: Copy fedora-git.spec
|
||||
run: |
|
||||
cp build-aux/fedora-git.spec /home/rpmbuild/SPECS/${{ env.PACKAGE }}.spec
|
||||
sed "s|git clone https://git.linux-gaming.ru/Boria138/PortProtonQt.git|git clone -b ${{ env.PR_BRANCH }} ${{ env.PR_REPO_URL }}|" \
|
||||
build-aux/fedora-git.spec > /home/rpmbuild/SPECS/${{ env.PACKAGE }}.spec
|
||||
chown -R rpmbuild:users /home/rpmbuild
|
||||
|
||||
- name: Build RPM
|
||||
@@ -143,7 +146,7 @@ jobs:
|
||||
needs: changes
|
||||
if: needs.changes.outputs.arch == 'true' || github.event_name == 'workflow_dispatch'
|
||||
container:
|
||||
image: archlinux:base-devel@sha256:ebcaeca69c4d416f848aedcd27fe224384fd506f86046526a5d49ec6d9e29db1
|
||||
image: archlinux:base-devel@sha256:b3c1ff749031ca2e06df1cd83fda74df13206a047b7b0f96b818825d9dc60785
|
||||
|
||||
steps:
|
||||
- name: Prepare container
|
||||
@@ -170,17 +173,18 @@ jobs:
|
||||
chown user -R /tmp
|
||||
chown user -R ..
|
||||
|
||||
- name: Checkout
|
||||
uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
cd /__w/portproton-repo
|
||||
git clone https://git.linux-gaming.ru/Boria138/PortProtonQt.git
|
||||
git clone -b ${{ env.PR_BRANCH }} ${{ env.PR_REPO_URL }} PortProtonQt
|
||||
cd /__w/portproton-repo/PortProtonQt/build-aux
|
||||
sed -i "s|source=(\"git+https://git.linux-gaming.ru/Boria138/PortProtonQt.git\")|source=(\"git+${{ env.PR_REPO_URL }}#branch=${{ env.PR_BRANCH }}\")|" PKGBUILD-git
|
||||
chown user -R ..
|
||||
su user -c "yes '' | makepkg --noconfirm -s -p PKGBUILD-git"
|
||||
|
||||
- name: Checkout
|
||||
uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
|
||||
- name: Upload Arch package
|
||||
uses: https://gitea.com/actions/gitea-upload-artifact@v4
|
||||
with:
|
||||
|
||||
@@ -20,10 +20,10 @@ jobs:
|
||||
name: Check code
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
- uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||
|
||||
- name: Set up Node.js
|
||||
uses: https://gitea.com/actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6
|
||||
uses: https://gitea.com/actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
|
||||
@@ -11,10 +11,10 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||
|
||||
- name: Set up Python
|
||||
uses: https://gitea.com/actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6
|
||||
uses: https://gitea.com/actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
|
||||
with:
|
||||
python-version-file: "pyproject.toml"
|
||||
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
name: renovate
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: '0 0 * * 0'
|
||||
|
||||
jobs:
|
||||
renovate:
|
||||
runs-on: ubuntu-latest
|
||||
container: ghcr.io/renovatebot/renovate:latest@sha256:eec497df1ca6ebe8bccf577c5dab8825ab5f3673a42a58f066e31dbf070664e6
|
||||
steps:
|
||||
- uses: https://gitea.com/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
|
||||
- name: Set up Node.js
|
||||
uses: https://gitea.com/actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
- name: Install uv manually
|
||||
run: |
|
||||
curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
. $HOME/.local/bin/env
|
||||
uv --version
|
||||
|
||||
- name: Download external renovate config
|
||||
run: |
|
||||
mkdir -p /tmp/renovate-config
|
||||
curl -fsSL "https://git.linux-gaming.ru/Linux-Gaming/renovate-config/raw/branch/main/config.js" \
|
||||
-o /tmp/renovate-config/config.js
|
||||
|
||||
- name: Run Renovate
|
||||
run: renovate
|
||||
env:
|
||||
RENOVATE_CONFIG_FILE: "/tmp/renovate-config/config.js"
|
||||
LOG_LEVEL: "debug"
|
||||
RENOVATE_TOKEN: ${{ secrets.RENOVATE_TOKEN }}
|
||||
RENOVATE_GITHUB_COM_TOKEN: ${{ secrets.RENOVATE_GITHUB_COM_TOKEN }}
|
||||
+14
@@ -6,6 +6,9 @@ dist/
|
||||
wheels/
|
||||
*.egg-info
|
||||
|
||||
# Meson
|
||||
builddir/
|
||||
|
||||
# Virtual environments
|
||||
.venv
|
||||
venv
|
||||
@@ -36,3 +39,14 @@ Thumbs.db
|
||||
|
||||
# get_wine debug folder
|
||||
proton_downloads
|
||||
|
||||
# Need for refactoring
|
||||
REFRACTORING_PLAN.md
|
||||
AUDIT_CHECKLIST.md
|
||||
|
||||
# Compiled gettext catalogs
|
||||
portprotonqt/locales/*/LC_MESSAGES/*.mo
|
||||
|
||||
|
||||
# AI
|
||||
.codex
|
||||
+19
-1
@@ -28,7 +28,16 @@ repos:
|
||||
language: system
|
||||
types_or: [python, pyi]
|
||||
require_serial: true
|
||||
exclude: '^portprotonqt/themes/[^/]+/styles\.py$'
|
||||
exclude: 'themes/.*/styles\.py$'
|
||||
|
||||
- repo: local
|
||||
hooks:
|
||||
- id: bash-n
|
||||
name: bash -n
|
||||
entry: bash -c 'for file in "$@"; do bash -n "$file" || exit 1; done' --
|
||||
language: system
|
||||
files: ^build-aux/share/portproton/scripts/
|
||||
types: [shell]
|
||||
|
||||
- repo: local
|
||||
hooks:
|
||||
@@ -39,3 +48,12 @@ repos:
|
||||
types: [file]
|
||||
files: ^portprotonqt/themes/[^/]+/styles\.py$
|
||||
pass_filenames: false
|
||||
|
||||
- repo: local
|
||||
hooks:
|
||||
- id: check-meson
|
||||
name: Check meson.build syntax and file inclusion
|
||||
entry: ./dev-scripts/check_meson_files.py
|
||||
language: system
|
||||
files: (^portprotonqt/.*\.py$|meson\.build$)
|
||||
pass_filenames: false
|
||||
@@ -0,0 +1,817 @@
|
||||
# PortProtonQt — AI Agent Guidelines
|
||||
|
||||
**Project:** PortProtonQt — GUI for PortProton, Steam, Epic Games Store
|
||||
**Language:** Python 3.10+
|
||||
**Platform:** Linux (POSIX)
|
||||
**License:** GPL-3.0
|
||||
**Build:** Meson + uv
|
||||
|
||||
---
|
||||
|
||||
**Summary:** AI agents MUST behave as conservative patching assistants, prioritizing minimal changes and existing patterns over architectural refactoring or code cleanup. AI MUST NOT perform architectural improvements unless explicitly requested.
|
||||
|
||||
**Scope:** These guidelines apply exclusively to AI-generated code. Documentation updates and human maintainers are exempt from line limits and these constraints.
|
||||
|
||||
## License and Attribution
|
||||
|
||||
- All code MUST be compatible with GPL-3.0.
|
||||
- Use appropriate SPDX license identifiers where applicable.
|
||||
- AI agents MUST NOT add `Signed-off-by` tags.
|
||||
|
||||
When AI contributes to the project, add an `Assisted-by` tag:
|
||||
|
||||
`Assisted-by: AGENT_NAME:MODEL_VERSION`
|
||||
|
||||
Where:
|
||||
- `AGENT_NAME` is the AI agent or framework name.
|
||||
- `MODEL_VERSION` is the specific model version.
|
||||
|
||||
Example:
|
||||
|
||||
`Assisted-by: Claude:claude-3-opus`
|
||||
|
||||
---
|
||||
|
||||
## Core Principles
|
||||
|
||||
| Principle | Required | Forbidden |
|
||||
|-----------|----------|-----------|
|
||||
| KISS | New/rewritten functions ≤50 lines | Deep nesting |
|
||||
| YAGNI | Concrete code | Future abstractions |
|
||||
| DRY | Extract methods (if directly related to task) | Copy-paste |
|
||||
| SRP | 1 task per method | God functions |
|
||||
| Linux | POSIX paths, shebangs | Windows-specific code |
|
||||
| Minimal changes | Modify relevant section only | Rewrite entire files |
|
||||
|
||||
**Priority order (highest to lowest):**
|
||||
|
||||
1. Minimal changes (overrides DRY, SRP)
|
||||
2. Security (no shell=True, no hardcoded credentials)
|
||||
3. Linux compatibility
|
||||
4. KISS / YAGNI
|
||||
5. DRY / SRP
|
||||
|
||||
**When principles conflict:**
|
||||
|
||||
- Prefer minimal diff over extracting methods
|
||||
- Prefer existing patterns over "correct" refactoring
|
||||
- Prefer small targeted fix over comprehensive cleanup
|
||||
- Never break security for code quality
|
||||
- Remove duplicates only if directly related to current task
|
||||
- Do not split untouched legacy functions only to satisfy line limits
|
||||
- Do not rewrite untouched legacy files or blocks only to satisfy metrics
|
||||
|
||||
---
|
||||
|
||||
## Code Metrics
|
||||
|
||||
| Check | Limit |
|
||||
|-------|-------|
|
||||
| Functions | ≤50 lines, ≤4 params (required for new/fully rewritten functions) |
|
||||
| Files | ≤800 lines (required for new/fully rewritten files) |
|
||||
| Nesting | ≤4 levels (required in new/modified code) |
|
||||
| Comments | English, 1-2 lines max |
|
||||
| Indentation | 4 spaces (no tabs) |
|
||||
| Whitespace | No trailing spaces |
|
||||
| Blank lines | No excessive blank lines |
|
||||
| EOF | Exactly one newline |
|
||||
| Commits | English, ≤72 chars |
|
||||
|
||||
---
|
||||
|
||||
## Forbidden Patterns
|
||||
|
||||
```python
|
||||
# NEVER: 6+ parameters
|
||||
def process_game(user, ctx, log, val, map, cache): ...
|
||||
|
||||
# NEVER: Deep nesting
|
||||
if c1:
|
||||
if c2:
|
||||
if c3:
|
||||
if c4: ...
|
||||
|
||||
# NEVER: print statements
|
||||
print(f"Game {name} started")
|
||||
|
||||
# NEVER: shell=True
|
||||
subprocess.run(cmd, shell=True)
|
||||
|
||||
# NEVER: Hardcoded credentials
|
||||
API_KEY = "sk-abc123"
|
||||
|
||||
# NEVER: Path traversal
|
||||
file_path = f"/data/{user_filename}"
|
||||
|
||||
# NEVER: Hardcoded styles or constants (colors, sizes, etc.)
|
||||
shadow.setBlurRadius(20)
|
||||
shadow.setColor(QColor(0, 0, 0, 150))
|
||||
label.setStyleSheet("color: #bbbbbb;")
|
||||
QColor(128, 128, 128)
|
||||
```
|
||||
|
||||
```python
|
||||
# ALWAYS: ≤4 parameters
|
||||
def process_game(game_id: str, config: dict) -> Game:
|
||||
"""Process game data."""
|
||||
...
|
||||
|
||||
# ALWAYS: Early returns
|
||||
if not condition1:
|
||||
return
|
||||
if not condition2:
|
||||
return
|
||||
|
||||
# ALWAYS: Logging
|
||||
from portprotonqt.logger import get_logger
|
||||
logger = get_logger(__name__)
|
||||
logger.info("Game %s started", name)
|
||||
|
||||
# ALWAYS: Explicit subprocess arguments
|
||||
subprocess.run(["cmd", "arg1", "arg2"])
|
||||
|
||||
# ALWAYS: Environment variables
|
||||
API_KEY = os.getenv("API_KEY")
|
||||
|
||||
# ALWAYS: Sanitize paths
|
||||
file_path = os.path.join(BASE_DIR, os.path.basename(user_filename))
|
||||
|
||||
# ALWAYS: Use theme constants for styles
|
||||
shadow.setBlurRadius(self.theme.shadow_blur_radius)
|
||||
shadow.setColor(QColor(self.theme.color_shadow_card))
|
||||
label.setStyleSheet(self.theme.CONTENT_STYLE)
|
||||
QColor(self.theme.color_disabled_text)
|
||||
|
||||
# ALWAYS: Add new constants to theme files
|
||||
# New colors → portprotonqt/themes/standart/styles/constants.py
|
||||
# New QSS styles → portprotonqt/themes/standart/styles/base.py or submodule
|
||||
# Never add style constants to application code
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Code Modification Rules
|
||||
|
||||
- NEVER rewrite entire file unless explicitly requested
|
||||
- Modify only the relevant section
|
||||
- Preserve existing architecture and naming
|
||||
- Do not auto-format unrelated code
|
||||
- Do not reorder imports unless necessary
|
||||
- Do not introduce abstractions without request
|
||||
- Do not change logging system
|
||||
- Do not change public APIs without reason
|
||||
- Do not add dependencies unless required
|
||||
- Do not refactor unrelated code
|
||||
- Do not add comments for obvious code
|
||||
- **NEVER leave outdated comments after refactoring** (e.g., "without numpy" after numpy removal, "legacy" after rewrite)
|
||||
- **ALWAYS update or remove comments that reference removed dependencies, patterns, or context**
|
||||
- **NEVER leave stub/no-op functions** (e.g., `def func(): pass` with comment "removed")
|
||||
- **When removing a feature, delete the function entirely, not stub it**
|
||||
- Never invent modules
|
||||
- Do not move files unless requested
|
||||
- Do not create new files for organization (unless task requires a new module)
|
||||
- No circular imports
|
||||
- Prefer dedicated functions for subprocess calls when practical within task scope
|
||||
- No shared mutable global state (except logger and explicit cache/session infrastructure)
|
||||
|
||||
**ALWAYS:**
|
||||
|
||||
- Minimal diff
|
||||
- Targeted changes only
|
||||
- Preserve existing patterns
|
||||
- Keep surrounding code unchanged
|
||||
|
||||
---
|
||||
|
||||
## LLM Prohibitions
|
||||
|
||||
**Specific prohibitions for AI-generated code:**
|
||||
|
||||
- Add type hints to existing code unless requested (new code MUST include type hints)
|
||||
- Replace existing patterns with "better" alternatives
|
||||
- Consolidate similar code blocks
|
||||
- Extract methods or functions without request
|
||||
- Add validation or error handling outside the modified block unless it fixes a security issue or directly supports the current change
|
||||
- Generate boilerplate or scaffolding
|
||||
- Add configuration options
|
||||
- Create new files for "organization" (unless explicitly requested for a new module)
|
||||
- Split or merge existing modules
|
||||
- Change function signatures
|
||||
- Modify docstrings unnecessarily
|
||||
- Add or remove blank lines for "style"
|
||||
- Normalize or standardize code patterns
|
||||
- Invent CLI arguments, config files, API endpoints, environment variables, theme structures, or localization keys
|
||||
|
||||
---
|
||||
|
||||
## AI Permissions
|
||||
|
||||
AI agents MAY:
|
||||
- Fix obvious bugs within the modified block
|
||||
- Improve variable naming inside the modified block
|
||||
- Add missing logging if required by policy
|
||||
- Add missing validation or error handling in new/modified code when required by this policy
|
||||
- Add missing type hints in new functions
|
||||
|
||||
---
|
||||
|
||||
## Performance Rules
|
||||
|
||||
- No blocking I/O in UI thread
|
||||
- No synchronous HTTP in UI thread
|
||||
- Cache API responses in `~/.cache/PortProtonQt`
|
||||
- Avoid repeated disk reads in loops
|
||||
- Avoid O(n²) in game lists
|
||||
- Lazy load images
|
||||
- Limit threads to CPU cores
|
||||
|
||||
### Clarification: "No Shared Mutable Global State" Does NOT Mean Removing Caches
|
||||
|
||||
Rule intent: avoid shared mutable globals that hold application state or cause hidden side effects.
|
||||
|
||||
This does not prohibit:
|
||||
- Module-level cache constants (e.g., cache TTL values)
|
||||
- Dedicated cache managers or classes with explicit lifecycle
|
||||
- Disk caches under `~/.cache/PortProtonQt`
|
||||
- `requests.Session()` objects if they are encapsulated and not mutated unpredictably
|
||||
|
||||
Do not delete or disable caching or downloaders to satisfy this rule. Caching is required by the Performance Rules ("Cache API responses in `~/.cache/PortProtonQt`" and "Avoid repeated disk reads in loops").
|
||||
|
||||
---
|
||||
|
||||
## PySide6 Rules
|
||||
|
||||
- No business logic in widgets
|
||||
- Use signals/slots (no direct coupling)
|
||||
- No heavy operations in paintEvent
|
||||
- Use methods instead of lambda for complex logic
|
||||
- Use QThread for long tasks
|
||||
|
||||
---
|
||||
|
||||
## Refactoring Constraints
|
||||
|
||||
- Max 1 business module per task (unless explicitly requested)
|
||||
- Related technical files are allowed in the same task (`meson.build`, tests, theme constants)
|
||||
- Preserve git blame
|
||||
- Avoid renaming unless necessary
|
||||
|
||||
---
|
||||
|
||||
## When Uncertain
|
||||
|
||||
Ask before proceeding if unsure about:
|
||||
- Architecture
|
||||
- Naming
|
||||
- Design decisions
|
||||
|
||||
Do not assume conventions. Never invent behavior.
|
||||
|
||||
---
|
||||
|
||||
## Development Workflow
|
||||
|
||||
```bash
|
||||
# Setup
|
||||
uv python install 3.10
|
||||
uv sync
|
||||
source .venv/bin/activate
|
||||
pre-commit install --install-hooks
|
||||
|
||||
# Run
|
||||
portprotonqt
|
||||
|
||||
# Manual checks
|
||||
pre-commit run --all-files
|
||||
|
||||
# Build
|
||||
meson setup builddir && meson compile -C builddir
|
||||
|
||||
# Localization
|
||||
python dev-scripts/l10n.py --update-all
|
||||
python dev-scripts/l10n.py
|
||||
|
||||
# Commit
|
||||
git commit -m "feat: description in English ≤72 chars"
|
||||
```
|
||||
|
||||
### Pre-commit Hooks
|
||||
|
||||
| Hook | Checks |
|
||||
|------|--------|
|
||||
| uv-lock | uv.lock up to date |
|
||||
| ruff-check | Linting (E, W, F, B, C4, UP) |
|
||||
| pyright | Type checking |
|
||||
| bash-n | Bash syntax check for `build-aux/share/portproton/scripts/` |
|
||||
| check-meson | meson.build syntax + files |
|
||||
| check-qss-properties | Theme QSS validation |
|
||||
| trailing-whitespace | Whitespace cleanup |
|
||||
| end-of-file-fixer | EOF newline |
|
||||
|
||||
### Linting and Type-Checking
|
||||
|
||||
AI agents MUST NOT run linting or type-checking tools directly.
|
||||
|
||||
#### Forbidden
|
||||
|
||||
- Running `ruff`
|
||||
- Running `pyright`
|
||||
- Running `uv run ruff`
|
||||
- Running `uv run pyright`
|
||||
- Running any linter/type checker binary directly
|
||||
- Installing dev tools automatically
|
||||
|
||||
These tools are executed ONLY via pre-commit hooks.
|
||||
|
||||
#### Allowed
|
||||
|
||||
- `pre-commit run --all-files`
|
||||
- `pre-commit run ruff-check`
|
||||
- `pre-commit run pyright`
|
||||
|
||||
#### Rationale
|
||||
|
||||
`ruff` and `pyright` are managed by pre-commit.
|
||||
Direct execution bypasses project configuration and is forbidden.
|
||||
|
||||
Do not attempt to execute binaries manually.
|
||||
|
||||
---
|
||||
|
||||
## AI Agent Checklist
|
||||
|
||||
### Writing Code
|
||||
|
||||
- [ ] New/rewritten functions ≤50 lines, ≤4 params
|
||||
- [ ] New/modified code nesting ≤4 levels
|
||||
- [ ] LF line endings, 4-space indent
|
||||
- [ ] No excessive blank lines, no trailing whitespace
|
||||
- [ ] Type hints (required for new code)
|
||||
- [ ] Logging via `portprotonqt.logger`
|
||||
- [ ] New/modified code handles expected/recoverable failures
|
||||
- [ ] New installable Python files added to `portprotonqt/meson.build`
|
||||
- [ ] Comments in English, concise
|
||||
- [ ] No circular imports introduced by the change
|
||||
- [ ] Prefer dedicated functions for subprocess calls when practical within task scope
|
||||
- [ ] No shared mutable global state (except logger and explicit cache/session infrastructure)
|
||||
- [ ] No blocking calls introduced in the UI thread
|
||||
- [ ] **No hardcoded styles or constants (use theme constants)**
|
||||
- [ ] **New constants added to theme files only**
|
||||
|
||||
### Refactoring
|
||||
|
||||
- [ ] No code duplicates (only if directly related to current task)
|
||||
- [ ] No unused imports
|
||||
- [ ] No commented-out code
|
||||
- [ ] No TODO without tickets
|
||||
- [ ] Clear variable names
|
||||
|
||||
### Dependencies
|
||||
|
||||
- [ ] Prefer standard library
|
||||
- [ ] No heavy frameworks
|
||||
- [ ] No async frameworks (use QThread instead)
|
||||
- [ ] No additional logging libraries
|
||||
- [ ] License GPL-3.0 compatible
|
||||
- [ ] If dependencies are added: added to `pyproject.toml`
|
||||
- [ ] If dependencies change: `uv lock` run
|
||||
|
||||
---
|
||||
|
||||
## Error Handling Policy
|
||||
|
||||
### When to Rethrow
|
||||
|
||||
| Condition | Action | Example |
|
||||
|-----------|--------|---------|
|
||||
| Cannot handle locally | Rethrow | API errors in business logic |
|
||||
| Need to add context | Wrap & rethrow | `raise ValueError(f"Invalid game ID: {game_id}") from e` |
|
||||
| Public API boundary | Rethrow | Let caller decide |
|
||||
| Expected & recoverable | Handle with fallback (log when useful) | Cache miss → fetch from source |
|
||||
|
||||
```python
|
||||
# Bad: Silent swallow
|
||||
try:
|
||||
data = load_config()
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# Good: Rethrow with context
|
||||
try:
|
||||
data = load_config()
|
||||
except FileNotFoundError as e:
|
||||
raise ConfigError(f"Config not found: {path}") from e
|
||||
```
|
||||
|
||||
### When to Log and Continue
|
||||
|
||||
| Condition | Action | Example |
|
||||
|-----------|--------|---------|
|
||||
| Non-critical failure | Log, continue | Thumbnail download failed |
|
||||
| Fallback available | Log, use fallback | Cache miss → network request |
|
||||
| Best-effort operation | Log, skip | Optional metadata |
|
||||
| User notification only | Log, notify UI | Network timeout |
|
||||
|
||||
```python
|
||||
# Log and continue for non-critical
|
||||
try:
|
||||
cover = download_cover(url)
|
||||
except requests.RequestException as e:
|
||||
logger.warning("Cover download failed: %s", e)
|
||||
cover = QPixmap() # Use placeholder
|
||||
```
|
||||
|
||||
### When to Fail Fast
|
||||
|
||||
| Condition | Action | Example |
|
||||
|-----------|--------|---------|
|
||||
| Critical dependency | Raise immediately | Database connection lost |
|
||||
| Data corruption | Raise immediately | Invalid config format |
|
||||
| Security violation | Raise immediately | Path traversal attempt |
|
||||
| Unrecoverable state | Raise immediately | Missing required file |
|
||||
|
||||
```python
|
||||
# Fail fast for critical
|
||||
if not config_path.exists():
|
||||
raise ConfigError(f"Required config missing: {config_path}")
|
||||
```
|
||||
|
||||
### Exception Hierarchy
|
||||
|
||||
```python
|
||||
# Base exception for application errors
|
||||
class PortProtonError(Exception):
|
||||
"""Base exception for PortProtonQt."""
|
||||
|
||||
# Domain-specific exceptions
|
||||
class ConfigError(PortProtonError):
|
||||
"""Configuration-related errors."""
|
||||
|
||||
class APIError(PortProtonError):
|
||||
"""External API errors."""
|
||||
|
||||
class ValidationError(PortProtonError):
|
||||
"""Input validation errors."""
|
||||
|
||||
class ParseError(PortProtonError):
|
||||
"""Parsing-related errors."""
|
||||
```
|
||||
|
||||
### Error Handling Patterns
|
||||
|
||||
```python
|
||||
# Pattern 1: Guard clauses for validation
|
||||
def process_game(game_id: str) -> Game:
|
||||
if not game_id:
|
||||
raise ValidationError("Game ID required")
|
||||
...
|
||||
|
||||
# Pattern 2: Context manager for resources
|
||||
with open(path) as f:
|
||||
data = json.load(f)
|
||||
|
||||
# Pattern 3: Specific exception handling
|
||||
try:
|
||||
response = requests.get(url, timeout=5)
|
||||
except requests.Timeout:
|
||||
logger.warning("Request timeout for %s", url)
|
||||
return None
|
||||
except requests.ConnectionError:
|
||||
logger.error("Connection failed for %s", url)
|
||||
raise APIError("Network unavailable") from None
|
||||
|
||||
# Pattern 4: Exception chaining
|
||||
try:
|
||||
value = int(text)
|
||||
except ValueError as e:
|
||||
raise ParseError(f"Invalid integer: {text}") from e
|
||||
```
|
||||
|
||||
### UI Thread Rules
|
||||
|
||||
| Context | Strategy |
|
||||
|---------|----------|
|
||||
| UI thread | Never block, use signals for errors |
|
||||
| Worker thread | Catch, emit error signal |
|
||||
| Async operations | Return error in result tuple |
|
||||
|
||||
```python
|
||||
# Worker thread pattern
|
||||
def run_in_thread():
|
||||
try:
|
||||
result = long_operation()
|
||||
success_signal.emit(result)
|
||||
except Exception as e:
|
||||
logger.error("Operation failed: %s", e)
|
||||
error_signal.emit(str(e))
|
||||
```
|
||||
|
||||
### Logging Guidelines
|
||||
|
||||
| Level | When to Use |
|
||||
|-------|-------------|
|
||||
| DEBUG | Detailed diagnostic info |
|
||||
| INFO | Normal operation events |
|
||||
| WARNING | Recoverable issues |
|
||||
| ERROR | Failures requiring attention |
|
||||
| CRITICAL | System-wide failures |
|
||||
|
||||
```python
|
||||
# Log with context
|
||||
logger.error("Failed to load game %s: %s", game_id, e)
|
||||
|
||||
# Include stack trace for unexpected errors
|
||||
try:
|
||||
...
|
||||
except Exception as e:
|
||||
logger.exception("Unexpected error processing %s", game_id)
|
||||
```
|
||||
|
||||
### Forbidden Patterns
|
||||
|
||||
```python
|
||||
# NEVER: Bare except
|
||||
try:
|
||||
...
|
||||
except:
|
||||
pass
|
||||
|
||||
# NEVER: Catch Exception without logging
|
||||
try:
|
||||
...
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# NEVER: Silent failures in critical paths
|
||||
if not critical_file.exists():
|
||||
return None # Should raise
|
||||
|
||||
# NEVER: Multiple exceptions in one handler (unless re-throwing as a unified domain exception)
|
||||
try:
|
||||
...
|
||||
except (FileNotFoundError, ValueError, TypeError, KeyError):
|
||||
pass # Each needs separate handling
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Code Style
|
||||
|
||||
### Imports
|
||||
```python
|
||||
# Standard library
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
# Third-party
|
||||
from PySide6.QtWidgets import QApplication
|
||||
import requests
|
||||
|
||||
# Local
|
||||
from portprotonqt.steam_api import SteamAPI
|
||||
from portprotonqt.logger import get_logger
|
||||
```
|
||||
|
||||
### Type Hints
|
||||
```python
|
||||
def get_game(game_id: str, cache: dict | None = None) -> Game | None:
|
||||
...
|
||||
|
||||
class Game:
|
||||
name: str
|
||||
playtime: int
|
||||
cover_url: str | None
|
||||
```
|
||||
|
||||
### Theme Constants
|
||||
All style-related constants MUST be defined in theme files, not in application code.
|
||||
|
||||
**File structure for theme constants:**
|
||||
- `portprotonqt/themes/standart/styles/constants.py` — Color constants, sizes, shadow values
|
||||
- `portprotonqt/themes/standart/styles/base.py` — Global widget styles (MAIN_WINDOW_STYLE, etc.)
|
||||
- `portprotonqt/themes/standart/styles/game_card.py` — Game card specific styles
|
||||
- `portprotonqt/themes/standart/styles/detail_page.py` — Detail page styles
|
||||
- `portprotonqt/themes/standart/styles/settings.py` — Settings dialog styles
|
||||
- `portprotonqt/themes/standart/styles/get_wine.py` — Wine manager styles
|
||||
- `portprotonqt/themes/standart/styles/winetricks.py` — Winetricks styles
|
||||
- `portprotonqt/themes/standart/styles/theme_utils.py` — Utility styles (context menus, etc.)
|
||||
|
||||
**Adding new constants:**
|
||||
```python
|
||||
# In constants.py — add color constant
|
||||
color_new_feature = "#FF5733"
|
||||
|
||||
# In constants.py — add size constant
|
||||
new_widget_size = 42
|
||||
|
||||
# In base.py or submodule — add QSS style
|
||||
NEW_WIDGET_STYLE = f"""
|
||||
QWidget {{
|
||||
background: {color_new_feature};
|
||||
border-radius: {border_radius_a};
|
||||
}}
|
||||
"""
|
||||
```
|
||||
|
||||
**Usage in application code:**
|
||||
```python
|
||||
# Bad: Hardcoded in application code
|
||||
shadow.setBlurRadius(20)
|
||||
label.setStyleSheet("color: #bbbbbb;")
|
||||
|
||||
# Good: Use theme constants
|
||||
shadow.setBlurRadius(self.theme.shadow_blur_radius)
|
||||
label.setStyleSheet(self.theme.CONTENT_STYLE)
|
||||
```
|
||||
|
||||
### Comments
|
||||
```python
|
||||
# NEVER: Russian or verbose
|
||||
# Проверить существование файла
|
||||
|
||||
# ALWAYS: Concise English
|
||||
# Check if file exists
|
||||
if os.path.exists(path):
|
||||
...
|
||||
|
||||
# ALWAYS: Docstrings for public APIs
|
||||
def check_file_exists(path: str) -> bool:
|
||||
"""Check if file exists at given path."""
|
||||
...
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Code Review Guidelines
|
||||
|
||||
Review scope: prioritize new/modified code. Existing unrelated legacy issues should not block unless they are CRITICAL security issues. Development scripts under `dev-scripts/` follow their exemption rules unless explicitly requested.
|
||||
|
||||
### Security (CRITICAL)
|
||||
|
||||
- Hardcoded credentials
|
||||
- SQL injection risks
|
||||
- Missing input validation on external boundaries (user input, files, network, subprocess args)
|
||||
- Insecure dependencies
|
||||
- Path traversal risks
|
||||
- `shell=True` in subprocess
|
||||
|
||||
### Code Quality (HIGH)
|
||||
|
||||
- New/rewritten functions >50 lines
|
||||
- New/rewritten functions >4 params
|
||||
- New/rewritten files >800 lines
|
||||
- New/modified code nesting >4 levels
|
||||
- Missing error handling for expected/recoverable failures in new/modified code
|
||||
- Circular imports introduced by the change
|
||||
- Shared mutable global state introduced in new/modified code (except logger and explicit cache/session infrastructure)
|
||||
- Blocking calls introduced in the UI thread
|
||||
|
||||
### Performance (MEDIUM)
|
||||
|
||||
- O(n²) when O(n log n) possible
|
||||
- Missing caching
|
||||
- N+1 queries
|
||||
|
||||
### Best Practices (MEDIUM)
|
||||
|
||||
- Emoji usage
|
||||
- TODO without tickets
|
||||
- Poor variable naming (x, tmp, data)
|
||||
- Magic numbers
|
||||
- Non-English comments
|
||||
- **Hardcoded styles or constants (colors, sizes, shadow values, etc.)**
|
||||
|
||||
### Review Output
|
||||
|
||||
```
|
||||
[CRITICAL] Hardcoded API key
|
||||
File: portprotonqt/steam_api.py:42
|
||||
Issue: API key exposed in source code
|
||||
Fix: Use environment variable
|
||||
|
||||
API_KEY = "sk-abc123" # Bad
|
||||
API_KEY = os.getenv("API_KEY") # Good
|
||||
|
||||
[MEDIUM] Hardcoded style value
|
||||
File: portprotonqt/game_card.py:81
|
||||
Issue: Shadow color hardcoded instead of using theme
|
||||
Fix: Use theme constant
|
||||
|
||||
shadow.setColor(QColor(0, 0, 0, 150)) # Bad
|
||||
shadow.setColor(QColor(self.theme.color_shadow_card)) # Good
|
||||
```
|
||||
|
||||
### Approval
|
||||
|
||||
- **Approve:** No CRITICAL or HIGH issues
|
||||
- **Warning:** MEDIUM issues only
|
||||
- **Block:** CRITICAL or HIGH issues found
|
||||
|
||||
---
|
||||
|
||||
## Meson Build Guidelines
|
||||
|
||||
The `check-meson` hook validates `meson.build` on commit.
|
||||
|
||||
**Checks:**
|
||||
- Syntax: brackets, quotes, commas, control structures
|
||||
- All `.py` files in `install_data()`
|
||||
- No duplicates or missing files
|
||||
|
||||
### Adding Files
|
||||
|
||||
```meson
|
||||
# portprotonqt/meson.build
|
||||
install_data(
|
||||
['existing.py',
|
||||
'new_module.py',
|
||||
],
|
||||
install_dir: pythondir / meson.project_name(),
|
||||
)
|
||||
```
|
||||
|
||||
### Common Errors
|
||||
|
||||
```meson
|
||||
# Bad: Missing comma # Bad: Unclosed
|
||||
install_data( install_data(
|
||||
'file1.py' 'file1.py',
|
||||
'file2.py' 'file2.py'
|
||||
) # Missing )
|
||||
|
||||
# Good
|
||||
install_data(
|
||||
'file1.py',
|
||||
'file2.py',
|
||||
)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
PortProtonQt/
|
||||
├── portprotonqt/ # Python package
|
||||
│ ├── app.py # Entry point
|
||||
│ ├── main_window.py # Main window
|
||||
│ ├── game_card.py # Game card widget
|
||||
│ ├── steam_api.py # Steam integration
|
||||
│ ├── egs_api.py # Epic Games integration
|
||||
│ ├── theme_manager.py # Theme management
|
||||
│ ├── logger.py # Logging
|
||||
│ └── themes/ # Theme files
|
||||
├── build-aux/ # Build resources
|
||||
├── dev-scripts/ # Development scripts
|
||||
├── documentation/ # Documentation
|
||||
├── meson.build # Meson config
|
||||
├── pyproject.toml # Python config
|
||||
└── .pre-commit-config.yaml
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Development Scripts
|
||||
|
||||
**`dev-scripts/`** contains development utilities that are not part of the application codebase.
|
||||
|
||||
**Policy:**
|
||||
- Scripts in `dev-scripts/` are exempt from code quality guidelines
|
||||
- No type hints, linting, or code style requirements apply
|
||||
- These scripts are for developer convenience only
|
||||
- Do not refactor or improve dev-scripts unless explicitly requested
|
||||
|
||||
---
|
||||
|
||||
## Dependencies
|
||||
|
||||
### Core
|
||||
|
||||
| Package | Purpose | License |
|
||||
|---------|---------|---------|
|
||||
| PySide6 | GUI | LGPL |
|
||||
| Legendary | EGS integration | GPL-3.0 |
|
||||
| Icoextract | Icon extraction | MIT |
|
||||
| Requests | HTTP | Apache-2.0 |
|
||||
| Pillow | Image handling | MIT |
|
||||
|
||||
**License compatibility:**
|
||||
- MIT, Apache-2.0, BSD: Compatible
|
||||
- LGPL: Requires dynamic linking
|
||||
- Proprietary: Incompatible
|
||||
|
||||
---
|
||||
|
||||
## Resources
|
||||
|
||||
- [Theme documentation](documentation/theme_guide)
|
||||
- [Localization guide](documentation/localization_guide)
|
||||
- [Metadata override guide](documentation/metadata_override)
|
||||
- [TODO list](TODO.md)
|
||||
- [Changelog](CHANGELOG.md)
|
||||
|
||||
---
|
||||
|
||||
**Last updated:** 2026-03-10
|
||||
**Version:** 1.2
|
||||
**Status:** Release
|
||||
+132
-12
@@ -3,41 +3,161 @@
|
||||
Все заметные изменения в этом проекте фиксируются в этом файле.
|
||||
Формат основан на [Keep a Changelog](https://keepachangelog.com/) и придерживается принципов [Semantic Versioning](https://semver.org/).
|
||||
|
||||
## [0.1.12] - 2026-04-17
|
||||
|
||||
### Added
|
||||
- В настройки PortProton добавлена галочка добавления/удаления инструмента совместимости Steam
|
||||
- В настройки библиотеки добавлен скрытый тип отображения бейджей
|
||||
- Добавлена валидация конфига
|
||||
- Аргумент командной строки `--add-steam-compat-tool` для использования PortProtonQt как инструмента совместимости Steam
|
||||
- Аргумент командной строки `--reinstall-steam-compat-tool` для переустановки инструмента совместимости Steam в пользовательском каталоге
|
||||
- Аргумент командной строки `--remove-steam-compat-tool` для удаления инструмента совместимости Steam из пользовательского каталога
|
||||
- В репозиторий добавлен пакет `portprotonqt-steam-compat` для глобального добавления PortProtonQt как инструмента совместимости Steam
|
||||
- Добавлена кнопка настроек для игр из Steam, если PortProtonQt используется как инструмент совместимости
|
||||
- Добавлен прогресс-бар скачивания Wine на детальной странице игры
|
||||
- Возможность прямого запуска `.exe` через CLI
|
||||
- Ленивая загрузка данных автоустановок: обложки и метаданные не загружаются, если вкладка скрыта в настройках или пользователь на неё не заходит
|
||||
- Добавлена кнопка Cancel в диалог управления Wine/Proton для закрытия в WM без рамок окна
|
||||
- Аргумент командной строки `--resolution` для запуска приложения с определённым разрешением (например, 1920x1080)
|
||||
- В настройки `.exe` добавлены параметры MangoHud
|
||||
- В настройки `.exe` добавлены параметры Gamescope
|
||||
- В настройки `.exe` добавлен выбор второго `.exe` через встроенный файловый менеджер
|
||||
- В настройки библиотеки добавлен выбор типа бейджей: `Детальный` и `Компактный`
|
||||
- Создания нового префикса
|
||||
- Автодополнение fish и zsh для команды `portprotonqt`.
|
||||
- В диалог добавления/редактирования игры добавлены галочки добавления в Steam, меню и на рабочий стол
|
||||
- В настройки добавлены опции автозапуска и запуска приложения сразу в трей
|
||||
- Добавлена поддержка запуска `.iso` (CLI, drag-and-drop и диалог добавления игры)
|
||||
- На вкладке MangoHud добавлена кнопка записи системного `MangoHud.conf` из текущего env-конфига
|
||||
- Добавлена вкладка `System` с разделами WIFI, VPN, Bluetooth, Storage, Audio и Power (включается через `--ppqtos`)
|
||||
- Добавлен аргумент командной строки `--ppqtos` для открытия вкладки `System`
|
||||
|
||||
### Changed
|
||||
- Проверка подключения к интернету теперь использует Yandex как основной сервер с Google в качестве fallback
|
||||
- Переработан внешний вид вкладки «Настройки PortProton»
|
||||
- Детальная страница игры адаптирована под маленькие экраны
|
||||
- На детальной странице Steam-игр добавлена кнопка «Открыть папку с игрой»
|
||||
- При добавлении и удалении игры из Steam теперь не пишется о необходимости перезапуска, если используется CEF, а не VDF
|
||||
- Все комментарии в коде переведены на английский язык
|
||||
- Все комментарии в коде теперь используют модуль logger
|
||||
- При включении MangoHud в настройках exe также добавляется `MANGOHUD_CONFIG`, если его нет
|
||||
- Начат рефакторинг скриптов
|
||||
- Ускорен запуск программы на ~47%
|
||||
- Снижение потребления памяти на ~17%
|
||||
- pyproject теперь используется только как менеджер зависимостей для UV, сборка через него больше невозможна
|
||||
- Скриншоты в metainfo теперь размера 1000x700 для соответствия стандартам Flathub
|
||||
- Все подсказки при наведении теперь имеют общий вид
|
||||
- Все константы теперь вынесены в файлы тем
|
||||
- Все контекстные меню теперь имеют общий вид
|
||||
- Все таблицы теперь имеют общий вид
|
||||
- На вкладке «Темы» добавлена явная подсветка фокуса для списка тем, карусели скриншотов и кнопки применения
|
||||
- Удалены подписи скриншотов тем
|
||||
- Системный оверлей переработан и перенесён в отдельную вкладку `System`
|
||||
|
||||
### Fixed
|
||||
- Исправлены высокая нагрузка на CPU и утечка памяти при изменении размера карточек
|
||||
- Скачивание обложек со SteamGridDB теперь асинхронное и не вызывает зависание окна
|
||||
- Уменьшен таймаут запроса к SteamGridDB с 10 до 3 секунд, чтобы не тормозить запуск при медленном 404
|
||||
- Запуск игр из трея
|
||||
- Исправлено обновление сетки библиотеки при удалении карточки игры
|
||||
- Исправлено отображение пустых вложенных подменю в трее в Dank Material Shell и GNOME.
|
||||
- Получение статуса античита для игр из Steam
|
||||
- Кэш обложек со SteamCDN
|
||||
- Исправлена эмуляция прокрутки через Bluetooth-геймпад в режиме эмуляции мыши
|
||||
- Исправлен выбор статистики времени: теперь приоритет у совпадающего `sha256` `.exe`, затем у точного пути, а при удалении игры очищается её запись в `data/tmp/statistics`
|
||||
- Исправлены некорректные комментарии в CSS для combobox
|
||||
- Исправлена валидация синтаксиса комментариев CSS и опечатки в winetricks.py
|
||||
- Перевод кнопок «Yes»/«No» в QMessageBox
|
||||
- Виртуальная клавиатура теперь открывается сверху, если перекрывает поле ввода
|
||||
- Кнопка «Загрузить резервную копию префикса» больше не выходит за границы окна
|
||||
- Подсказки управления больше не накладываются друг на друга в маленьком окне
|
||||
- Исправлено некорректное попадание фокуса на метаинформацию темы при навигации геймпадом
|
||||
- Навигация геймпадом на вкладке «Темы» ограничена элементами: список тем, карусель скриншотов и кнопка «Применить тему»
|
||||
- При наличии `custom_data` отключены сетевые запросы обложек к SGDB и SteamCDN для карточек игр
|
||||
- Отключён автоскролл `QComboBox` колесом мыши, когда выпадающий список закрыт
|
||||
- Исправлен поиск `.desktop` при несовпадении имени карточки и файла (в том числе после редактирования): добавлено сопоставление через `custom_data/*/metadata.txt` (`name`) с fallback по данным `.desktop`
|
||||
- Виртуальная клавиатура теперь адаптирует ширину кнопок под размер окна
|
||||
- Усилена общая безопасность механизма пользовательских тем, включая валидацию, проверки загрузки и устойчивость к некорректным/потенциально опасным темам
|
||||
- Улучшено формирование ссылок WeAntiCheatYet
|
||||
|
||||
### Contributors
|
||||
- @Simple16
|
||||
- @Dervart
|
||||
|
||||
---
|
||||
|
||||
## [0.1.11] - 2026-02-18
|
||||
|
||||
### Added
|
||||
- Настройка для скрытия вкладки автоустановок
|
||||
- Запуск в режиме лога
|
||||
- Экспериментальная поддержка ARM через запуск в muvm
|
||||
- Аргумент командной строки --force-muvm (автоматический запуск в muvm происходит только при наличии Apple Silicon)
|
||||
- Утилита vk_gpu_info для использования в логе
|
||||
- Выбор GPU для запуска игр в настройках
|
||||
- Выбор системного WINE в настройках игры
|
||||
- Кнопка открыть PPDB в настройках игры
|
||||
|
||||
### Changed
|
||||
- qt6-svg теперь обязательная зависимость
|
||||
- Проект теперь собирается с использованием meson
|
||||
- Виртуальная клавиатура теперь открывается при нажатии на любое поле для ввода
|
||||
- Удалена настройка для выбора поставщика Vulkan AMD
|
||||
- Бейдж PortProton теперь открывает ppdb.linux-gaming.ru, а не linux-gaming.ru
|
||||
- Изменена структура тем для поддержки вложенных папок
|
||||
- После скачивания Wine список выбранных Wine теперь очищается
|
||||
- Эмуляция мыши через геймпад теперь не зависит от окна в фокусе и работает всегда
|
||||
- У настроек убран префикс PW и _ заменены на пробелы
|
||||
- Кнопки создания лога и настроек теперь не отображаются на карточках Steam игр
|
||||
|
||||
### Fixed
|
||||
- Подсказки на виртуальной клавиатуре изменяются сразу при смене gamepad_type в настройках без необходимости перезапуска
|
||||
- Исправлено определение Flatpak версии PortProton
|
||||
- Исправлена работа модульных локальных тем
|
||||
- Исправлена упаковка локалей
|
||||
|
||||
### Contributors
|
||||
- @Simple16
|
||||
|
||||
---
|
||||
|
||||
## [0.1.10] - 2026-01-14
|
||||
|
||||
### Added
|
||||
- Детальная страница для автоустановок с описанием игры и возможности переуствновки
|
||||
- Детальная страница для автоустановок с описанием игры и возможности переустановки
|
||||
- Менеджер версий Wine для скачивания и удаления различных версий Wine и Proton
|
||||
- Возможность перевода описание, названия тем на другие языки
|
||||
- Возможность перевода описаний, названий тем на другие языки
|
||||
- Возможность перевода подписи к скриншотам тем на другие языки
|
||||
|
||||
### Changed
|
||||
- Проведена чистка мёртвого кода
|
||||
- Улучшена проверка сторонних тем
|
||||
- В документации по созданию тем добавлены примеры dropin тем
|
||||
- Провеедена редактура перевода
|
||||
- Проведена редактура перевода
|
||||
- Переработана сортировка вайнов и префиксов во всех комбобоксах
|
||||
- Список Wine и префиксов теперь обновляется на лету, а не при запуске приложения
|
||||
- AppImage теперь работает на дистрибутивах использующий альтернативный libc, а так же на тех что не следуют FHS
|
||||
- AppImage теперь работает на дистрибутивах, использующих альтернативный libc, а также на тех, что не следуют стандарту FHS
|
||||
|
||||
### Fixed
|
||||
- Изменение размера карточек автоустановок через геймпад
|
||||
- Проведены исправления для утечек памяти
|
||||
- Проведена работа по исправлению утечек памяти
|
||||
- Время игры теперь парсится даже если файл статистики повреждён
|
||||
- При наличии битых обложек они теперь перекачиваются, а не провоцируют ошибки libpng
|
||||
- Управление QmessageBox через стрелки клавиатуры
|
||||
- Управление QMessageBox через стрелки клавиатуры
|
||||
|
||||
### Contributors
|
||||
- @Vector_null
|
||||
- @Dervart
|
||||
- @Simple16
|
||||
|
||||
---
|
||||
|
||||
## [0.1.9] - 2025-12-08
|
||||
|
||||
### Added
|
||||
- Добавлены основные и расширенные настройки для `.exe`-файлов
|
||||
- Добавлена кнопка обновления сетки без необходимости перезапуска PortProtonQt (F5 на клавиатуре, GUIDE + Select на геймпаде)
|
||||
- Добавлена эмуляция мыши по GUIDE (Xbox или PS) + Start для установки приложений или взаимодействия с инструментами Wine не адаптированные под геймпад (работает только если PortProtonQt вне фокуса)
|
||||
- Добавлена эмуляция мыши по GUIDE (Xbox или PS) + Start для установки приложений или взаимодействия с инструментами Wine, не адаптированными под геймпад (работает только если PortProtonQt вне фокуса)
|
||||
- При сворачивании приложения в трей оно теперь корректно восстанавливается, вместо запуска нового экземпляра
|
||||
- Добавлена поддержка SteamGridDB в качестве дополнительного источника обложек
|
||||
- При добавлении карточки в избранное она автоматически становится первой без необходимости перезапуска
|
||||
@@ -48,7 +168,7 @@
|
||||
- Из стандартной темы удалены неиспользуемые шрифты
|
||||
- Улучшена совместимость с Qt 6.10
|
||||
- Ускорен запуск программы
|
||||
- В диалог редактирования ярылыка добавлен placeholder с уточнением того что в качевстве обложки можно использовать и ссылку, а не только файл
|
||||
- В диалог редактирования ярлыка добавлен placeholder с уточнением того, что в качестве обложки можно использовать и ссылку, а не только файл
|
||||
- Ссылку на обложку в диалоге редактирования ярлыка теперь можно указывать без протокола вроде http или https
|
||||
|
||||
### Fixed
|
||||
@@ -79,7 +199,7 @@
|
||||
|
||||
### Fixed
|
||||
- Исправлено наложение карточек при смене фильтра игр
|
||||
- Исправлена невозможность запуска приложения без подключёного геймпада
|
||||
- Исправлена невозможность запуска приложения без подключённого геймпада
|
||||
- Исправлена невозможность установки компонентов Winetricks через геймпад
|
||||
- Ресиверы и виртуальные устройства больше не считаются за геймпад
|
||||
|
||||
@@ -131,7 +251,7 @@
|
||||
- Аргумент cli --debug-level для указания уровня дебага
|
||||
|
||||
### Changed
|
||||
- Управления с геймпада теперь перехватывается только если окно в фокусе
|
||||
- Управление с геймпада теперь перехватывается, только если окно в фокусе
|
||||
|
||||
### Fixed
|
||||
- Исправлена проблема с устаревшими кэш-файлами, вызывающими несоответствия при обновлении JSON
|
||||
@@ -169,7 +289,7 @@
|
||||
- Добавление и удаление игр из Steam больше не требует перезапуска клиента.
|
||||
- Обновлены все зависимости (затрагивает только AppImage).
|
||||
- Приложение теперь не закрывается полностью, а сворачивается в трей.
|
||||
- Карточки теперь все находятся друг под другом, а не в разнабой
|
||||
- Карточки теперь все находятся друг под другом, а не вразброс
|
||||
- Изменено соотношение сторон карточек
|
||||
|
||||
### Fixed
|
||||
@@ -319,7 +439,7 @@
|
||||
|
||||
---
|
||||
|
||||
## [0.1.1] – 2025-05-17
|
||||
## [0.1.1] — 2025-05-17
|
||||
|
||||
### Added
|
||||
- Алфавитная сортировка библиотеки.
|
||||
|
||||
@@ -9,7 +9,9 @@
|
||||
```sh
|
||||
uv python install 3.10
|
||||
uv sync
|
||||
source .venv/bin/activate
|
||||
source .venv/bin/activate # For bash/zsh
|
||||
# or
|
||||
source .venv/bin/activate.fish # For fish
|
||||
```
|
||||
|
||||
Запуск производится по команде portprotonqt
|
||||
@@ -27,7 +29,9 @@ source .venv/bin/activate
|
||||
```sh
|
||||
uv python install 3.10
|
||||
uv sync --all-extras --dev
|
||||
source .venv/bin/activate
|
||||
source .venv/bin/activate # For bash/zsh
|
||||
# or
|
||||
source .venv/bin/activate.fish # For fish
|
||||
pre-commit install
|
||||
```
|
||||
|
||||
|
||||
@@ -5,11 +5,10 @@
|
||||
- [X] Добавить систему тем [Документация](documentation/theme_guide)
|
||||
- [X] Вынести все константы, такие как уровень закругления карточек, в темы (частично выполнено)
|
||||
- [X] Добавить метаданные для тем (скриншоты, описание, домашняя страница и автор)
|
||||
- [ ] Продумать систему вкладок вместо текущей
|
||||
- [X] [Добавить сессию Gamescope, аналогичную той, что используется в SteamOS](https://git.linux-gaming.ru/Boria138/gamescope-session-portprotonqt)
|
||||
- [X] Разобраться почему теряется часть стилей в Gamescope
|
||||
- [ ] Разработать адаптивный дизайн (за эталон берётся Steam Deck с разрешением 1280×800)
|
||||
- [ ] Переделать скриншоты для соответствия [гайдлайнам Flathub](https://docs.flathub.org/docs/for-app-authors/metainfo-guidelines/quality-guidelines#screenshots)
|
||||
- [x] Разработать адаптивный дизайн (за эталон берётся 1000x700 из гайдлайнов Flathub)
|
||||
- [x] Переделать скриншоты для соответствия [гайдлайнам Flathub](https://docs.flathub.org/docs/for-app-authors/metainfo-guidelines/quality-guidelines#screenshots)
|
||||
- [X] Получать описания и названия игр из базы данных Steam
|
||||
- [X] Получать обложки для игр из CDN Steam
|
||||
- [X] Оптимизировать работу со Steam API для ускорения времени запуска
|
||||
@@ -22,7 +21,7 @@
|
||||
- [X] Добавить сортировку карточек по различным критериям (доступны: по недавности, количеству наигранного времени, избранному или алфавиту)
|
||||
- [X] Добавить индикацию запуска приложения
|
||||
- [X] Достигнуть паритета функциональности с Ingame
|
||||
- [ ] Достигнуть паритета функциональности с PortProton (остались настройки игр и обновление скриптов)
|
||||
- [ ] Достигнуть паритета функциональности с PortProton (остались обновление скриптов)
|
||||
- [X] Добавить возможность изменения названия, описания и обложки через файлы `.local/share/PortProtonQT/custom_data/exe_name/{desc,name,cover}`
|
||||
- [X] Добавить встроенное переопределение названия, описания и обложки, например, по пути `portprotonqt/custom_data` [Документация](documentation/metadata_override/)
|
||||
- [X] Добавить переводы в переопределения
|
||||
|
||||
@@ -2,42 +2,102 @@
|
||||
|
||||
set -eu
|
||||
|
||||
# Determine if git mode is enabled based on the first argument
|
||||
if [ "${1:-}" = "--git" ] || [ "${1:-}" = "-g" ]; then
|
||||
GIT_MODE=true
|
||||
else
|
||||
GIT_MODE=false
|
||||
fi
|
||||
# Initialize variables
|
||||
LOCAL_MODE=false
|
||||
BRANCH="main"
|
||||
REPO_URL="https://git.linux-gaming.ru/Boria138/PortProtonQt.git"
|
||||
|
||||
# Parse arguments
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
--local|-l)
|
||||
LOCAL_MODE=true
|
||||
;;
|
||||
--branch)
|
||||
if [ -n "${2:-}" ] && [ "${2#-}" = "$2" ]; then
|
||||
BRANCH="$2"
|
||||
shift
|
||||
else
|
||||
echo "Error: --branch requires an argument"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
--repo)
|
||||
if [ -n "${2:-}" ] && [ "${2#-}" = "$2" ]; then
|
||||
REPO_URL="$2"
|
||||
shift
|
||||
else
|
||||
echo "Error: --repo requires an argument"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option: $1"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
ARCH="$(uname -m)"
|
||||
PACKAGE_BUILDER="https://raw.githubusercontent.com/pkgforge-dev/Anylinux-AppImages/refs/heads/main/useful-tools/make-aur-package.sh"
|
||||
EXTRA_PACKAGES="https://raw.githubusercontent.com/pkgforge-dev/Anylinux-AppImages/refs/heads/main/useful-tools/get-debloated-pkgs.sh"
|
||||
|
||||
if [ "$GIT_MODE" = true ]; then
|
||||
echo "Using git version of PortProtonQt..."
|
||||
PPQT_PKGBUILD="https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/build-aux/PKGBUILD-git"
|
||||
if [ "$LOCAL_MODE" = true ]; then
|
||||
echo "Using local PKGBUILD-git from repository..."
|
||||
PPQT_PKGBUILD=""
|
||||
else
|
||||
echo "Using stable version of PortProtonQt..."
|
||||
echo "Using stable version of PortProtonQt from main branch..."
|
||||
PPQT_PKGBUILD="https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/build-aux/PKGBUILD"
|
||||
fi
|
||||
|
||||
echo "Tweak makepkg..."
|
||||
echo "---------------------------------------------------------------"
|
||||
# Disable creating debug packages
|
||||
sed -i 's/OPTIONS=(.*)/OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge lto)/g' /etc/makepkg.conf
|
||||
# Setup packager name
|
||||
sed -i 's/#PACKAGER=".*"/PACKAGER="Linux Gaming Team"/g' /etc/makepkg.conf
|
||||
# Use all threads for building
|
||||
sed -i 's/#MAKEFLAGS="-j2"/MAKEFLAGS="-j$(nproc) -l$(nproc)"/g' /etc/makepkg.conf
|
||||
# makepkg cannot not as root by default
|
||||
sed -i -e 's|EUID == 0|EUID == 69|g' /usr/bin/makepkg
|
||||
# always disable this nonsense that was recently added to makepkg
|
||||
sed -i -e 's/(( ${#arch\[@\]} != $(printf "%s\\n" ${arch\[@\]} | sort -u | wc -l) ))/false/' /usr/share/makepkg/lint_pkgbuild/arch.sh 2>/dev/null || :
|
||||
|
||||
echo "Installing dependencies..."
|
||||
echo "Tweak pacman..."
|
||||
echo "---------------------------------------------------------------"
|
||||
pacman-key --init
|
||||
pacman -Syy --needed --noconfirm archlinux-keyring
|
||||
pacman -S --noconfirm archlinux-keyring
|
||||
|
||||
echo "Installing AUR packages..."
|
||||
echo "---------------------------------------------------------------"
|
||||
wget --retry-connrefused --tries=30 "$PACKAGE_BUILDER" -O ./make-aur-package.sh
|
||||
chmod +x ./make-aur-package.sh
|
||||
# Chaotic-AUR keys
|
||||
pacman-key --recv-key 3056513887B78AEB --keyserver keyserver.ubuntu.com
|
||||
pacman-key --lsign-key 3056513887B78AEB
|
||||
|
||||
./make-aur-package.sh --chaotic-aur icoextract
|
||||
./make-aur-package.sh --chaotic-aur python-vdf
|
||||
pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst'
|
||||
pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst'
|
||||
|
||||
# Enable the multilib repository
|
||||
cat << EOM >> /etc/pacman.conf
|
||||
[multilib]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[chaotic-aur]
|
||||
Include = /etc/pacman.d/chaotic-mirrorlist
|
||||
SigLevel = Never
|
||||
EOM
|
||||
|
||||
# Disable locale noextract
|
||||
sed -i -E 's@[[:space:]]*usr/share/locale/\*@@g; s@[[:space:]]+@ @g; s@[[:space:]]+$@@' /etc/pacman.conf
|
||||
|
||||
pacman -Syy
|
||||
|
||||
echo "Building PortProtonQt from PKGBUILD..."
|
||||
echo "---------------------------------------------------------------"
|
||||
wget --retry-connrefused --tries=30 "$PPQT_PKGBUILD" -O ./PKGBUILD
|
||||
if [ "$LOCAL_MODE" = true ]; then
|
||||
cp ../PKGBUILD-git ./PKGBUILD
|
||||
else
|
||||
wget --retry-connrefused --tries=30 "$PPQT_PKGBUILD" -O ./PKGBUILD
|
||||
fi
|
||||
sed -i "s|source=(\"git+https://git.linux-gaming.ru/Boria138/PortProtonQt.git\")|source=(\"git+${REPO_URL}#branch=$BRANCH\")|" PKGBUILD
|
||||
makepkg -si --noconfirm
|
||||
|
||||
echo "Installing debloated packages..."
|
||||
@@ -46,7 +106,7 @@ wget --retry-connrefused --tries=30 "$EXTRA_PACKAGES" -O ./get-debloated-pkgs.sh
|
||||
chmod +x ./get-debloated-pkgs.sh
|
||||
./get-debloated-pkgs.sh --add-common --prefer-nano
|
||||
|
||||
if [ "$GIT_MODE" = true ]; then
|
||||
if [ "$LOCAL_MODE" = true ]; then
|
||||
# For git version, we use portprotonqt-git
|
||||
pacman -Q portprotonqt-git | awk '{print $2}' | cut -d- -f1 > ~/version
|
||||
else
|
||||
|
||||
@@ -25,10 +25,6 @@ chmod +x ./quick-sharun
|
||||
mkdir -p ./AppDir/etc/udev/rules.d
|
||||
cp /usr/lib/udev/rules.d/60-portprotonqt.rules ./AppDir/etc/udev/rules.d
|
||||
|
||||
# Deploy Qt translations
|
||||
mkdir -p ./AppDir/usr/share/qt6/translations
|
||||
cp -r /usr/share/qt6/translations/* ./AppDir/usr/share/qt6/translations/
|
||||
|
||||
# Deploy dependencies
|
||||
# Qt libs have to be passed manually due to the app being a python script
|
||||
./quick-sharun \
|
||||
|
||||
+38
-11
@@ -1,24 +1,51 @@
|
||||
pkgname=portprotonqt
|
||||
pkgver=0.1.10
|
||||
pkgname=('portprotonqt' 'portprotonqt-steam-compat')
|
||||
pkgver=0.1.12
|
||||
pkgrel=1
|
||||
pkgdesc="Modern GUI for managing and launching games from PortProton, Steam, and Epic Games Store"
|
||||
arch=('any')
|
||||
url="https://git.linux-gaming.ru/Boria138/PortProtonQt"
|
||||
license=('GPL-3.0')
|
||||
depends=('python-requests' 'python-babel' 'python-evdev' 'python-pyudev' 'python-orjson'
|
||||
'python-psutil' 'python-tqdm' 'python-vdf' 'python-libarchive-c' 'pyside6' 'python-rapidfuzz' 'icoextract' 'python-pillow' 'perl-image-exiftool' 'xdg-utils' 'python-beautifulsoup4' 'python-websocket-client' 'cabextract' 'unzip' 'curl' 'unrar')
|
||||
makedepends=('python-'{'build','installer','setuptools','wheel'})
|
||||
'python-psutil' 'python-tqdm' 'python-vdf' 'python-libarchive-c' 'pyside6' 'python-rapidfuzz' 'icoextract' 'python-pillow' 'perl-image-exiftool' 'python-beautifulsoup4' 'python-websocket-client' 'cabextract' 'unzip' 'curl' 'unrar' 'qt6-svg' 'pciutils' 'mesa-utils' 'vulkan-icd-loader' '7zip')
|
||||
depends_aarch64=('muvm')
|
||||
makedepends=('meson' 'ninja' 'vulkan-headers' 'gettext')
|
||||
source=("git+https://git.linux-gaming.ru/Boria138/PortProtonQt#tag=v$pkgver")
|
||||
sha256sums=('SKIP')
|
||||
|
||||
build() {
|
||||
cd "$srcdir/PortProtonQt"
|
||||
python -m build --wheel --no-isolation
|
||||
arch-meson PortProtonQt build
|
||||
meson compile -C build
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "$srcdir/PortProtonQt"
|
||||
python -m installer --destdir="$pkgdir" dist/*.whl
|
||||
cp -r build-aux/share "$pkgdir/usr/"
|
||||
cp -r build-aux/lib "$pkgdir/usr/"
|
||||
package_portprotonqt() {
|
||||
pkgdesc="Modern GUI for managing and launching games from PortProton, Steam, and Epic Games Store"
|
||||
optdepends=(
|
||||
'networkmanager: System tab network management'
|
||||
'bluez: System tab bluetooth management'
|
||||
'upower: System tab bluetooth battery level'
|
||||
'libpulse: System tab audio volume/output management'
|
||||
'python-dbus-fast: System tab D-Bus integration'
|
||||
'python-qrcode: Wi-Fi QR code generation'
|
||||
)
|
||||
|
||||
DESTDIR="$pkgdir" meson install -C build --skip-subprojects
|
||||
|
||||
bash "$srcdir/PortProtonQt/dev-scripts/generate-completions.sh"
|
||||
install -Dpm 0644 "$srcdir/PortProtonQt/completions/portprotonqt" -t "$pkgdir/usr/share/bash-completion/completions"
|
||||
install -Dpm 0644 "$srcdir/PortProtonQt/completions/portprotonqt.fish" -t "$pkgdir/usr/share/fish/vendor_completions.d"
|
||||
install -Dpm 0644 "$srcdir/PortProtonQt/completions/_portprotonqt" -t "$pkgdir/usr/share/zsh/site-functions"
|
||||
|
||||
# Remove steam-compat files from main package
|
||||
rm -rf "$pkgdir/usr/share/steam"
|
||||
}
|
||||
|
||||
package_portprotonqt-steam-compat() {
|
||||
pkgdesc="Steam compatibility tool for PortProtonQt"
|
||||
depends=('portprotonqt')
|
||||
|
||||
DESTDIR="$pkgdir" meson install -C build --skip-subprojects
|
||||
|
||||
# Keep only steam-compat files
|
||||
find "$pkgdir/usr" -mindepth 1 -type f -not -path "${pkgdir}/usr/share/steam*" -print0 | xargs -0 rm -f
|
||||
find "$pkgdir/usr" -mindepth 1 -type d -not -path "${pkgdir}/usr/share/steam*" -empty -delete
|
||||
}
|
||||
+38
-11
@@ -1,13 +1,14 @@
|
||||
pkgname=portprotonqt-git
|
||||
pkgname=('portprotonqt-git' 'portprotonqt-git-steam-compat')
|
||||
pkgver=.
|
||||
pkgrel=1
|
||||
pkgdesc="Modern GUI for managing and launching games from PortProton, Steam, and Epic Games Store.(developerment build)"
|
||||
pkgdesc="Modern GUI for managing and launching games from PortProton, Steam, and Epic Games Store (development build)"
|
||||
arch=('any')
|
||||
url="https://git.linux-gaming.ru/Boria138/PortProtonQt"
|
||||
license=('GPL-3.0')
|
||||
depends=('python-requests' 'python-babel' 'python-evdev' 'python-pyudev' 'python-orjson'
|
||||
'python-psutil' 'python-tqdm' 'python-vdf' 'python-libarchive-c' 'pyside6' 'icoextract' 'python-pillow' 'python-rapidfuzz' 'perl-image-exiftool' 'xdg-utils' 'python-beautifulsoup4' 'python-websocket-client' 'cabextract' 'unzip' 'curl' 'unrar')
|
||||
makedepends=('python-'{'build','installer','setuptools','wheel'})
|
||||
'python-psutil' 'python-tqdm' 'python-vdf' 'python-libarchive-c' 'pyside6' 'python-rapidfuzz' 'icoextract' 'python-pillow' 'perl-image-exiftool' 'python-beautifulsoup4' 'python-websocket-client' 'cabextract' 'unzip' 'curl' 'unrar' 'qt6-svg' 'pciutils' 'mesa-utils' 'vulkan-icd-loader' '7zip')
|
||||
depends_aarch64=('muvm')
|
||||
makedepends=('meson' 'ninja' 'vulkan-headers' 'gettext')
|
||||
source=("git+https://git.linux-gaming.ru/Boria138/PortProtonQt.git")
|
||||
sha256sums=('SKIP')
|
||||
|
||||
@@ -17,13 +18,39 @@ pkgver() {
|
||||
}
|
||||
|
||||
build() {
|
||||
cd "$srcdir/PortProtonQt"
|
||||
python -m build --wheel --no-isolation
|
||||
arch-meson PortProtonQt build
|
||||
meson compile -C build
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "$srcdir/PortProtonQt"
|
||||
python -m installer --destdir="$pkgdir" dist/*.whl
|
||||
cp -r build-aux/share "$pkgdir/usr/"
|
||||
cp -r build-aux/lib "$pkgdir/usr/"
|
||||
package_portprotonqt-git() {
|
||||
pkgdesc="Modern GUI for managing and launching games from PortProton, Steam, and Epic Games Store (development build)"
|
||||
optdepends=(
|
||||
'networkmanager: System tab network management'
|
||||
'bluez: System tab bluetooth management'
|
||||
'upower: System tab bluetooth battery level'
|
||||
'libpulse: System tab audio volume/output management'
|
||||
'python-dbus-fast: System tab D-Bus integration'
|
||||
'python-qrcode: Wi-Fi QR code generation'
|
||||
)
|
||||
|
||||
DESTDIR="$pkgdir" meson install -C build --skip-subprojects
|
||||
|
||||
bash "$srcdir/PortProtonQt/dev-scripts/generate-completions.sh"
|
||||
install -Dpm 0644 "$srcdir/PortProtonQt/completions/portprotonqt" -t "$pkgdir/usr/share/bash-completion/completions"
|
||||
install -Dpm 0644 "$srcdir/PortProtonQt/completions/portprotonqt.fish" -t "$pkgdir/usr/share/fish/vendor_completions.d"
|
||||
install -Dpm 0644 "$srcdir/PortProtonQt/completions/_portprotonqt" -t "$pkgdir/usr/share/zsh/site-functions"
|
||||
|
||||
# Remove steam-compat files from main package
|
||||
rm -rf "$pkgdir/usr/share/steam"
|
||||
}
|
||||
|
||||
package_portprotonqt-git-steam-compat() {
|
||||
pkgdesc="Steam compatibility tool for PortProtonQt (development build)"
|
||||
depends=('portprotonqt-git')
|
||||
|
||||
DESTDIR="$pkgdir" meson install -C build --skip-subprojects
|
||||
|
||||
# Keep only steam-compat files
|
||||
find "$pkgdir/usr" -mindepth 1 -type f -not -path "${pkgdir}/usr/share/steam*" -print0 | xargs -0 rm -f
|
||||
find "$pkgdir/usr" -mindepth 1 -type d -not -path "${pkgdir}/usr/share/steam*" -empty -delete
|
||||
}
|
||||
+56
-21
@@ -1,35 +1,32 @@
|
||||
%global pypi_name portprotonqt
|
||||
%global pypi_version 0.1.1
|
||||
%global pypi_version 0.1.12
|
||||
%global oname PortProtonQt
|
||||
%global build_timestamp %(date +"%Y%m%d")
|
||||
%global _python_no_extras_requires 1
|
||||
|
||||
%global rel_build 1.git.%{build_timestamp}%{?dist}
|
||||
|
||||
Name: python-%{pypi_name}-git
|
||||
Name: %{pypi_name}-git
|
||||
Version: %{pypi_version}
|
||||
Release: %{rel_build}
|
||||
Summary: Modern GUI for managing and launching games from PortProton, Steam, and Epic Games Store (development build)
|
||||
|
||||
License: GPL-3.0
|
||||
URL: https://git.linux-gaming.ru/Boria138/PortProtonQt
|
||||
BuildArch: noarch
|
||||
ExclusiveArch: x86_64 aarch64
|
||||
|
||||
BuildRequires: meson >= 0.61.2
|
||||
BuildRequires: ninja-build
|
||||
BuildRequires: python3-devel
|
||||
BuildRequires: python3-wheel
|
||||
BuildRequires: python3-pip
|
||||
BuildRequires: python3-build
|
||||
BuildRequires: pyproject-rpm-macros
|
||||
BuildRequires: python3dist(setuptools)
|
||||
BuildRequires: git
|
||||
BuildRequires: gettext
|
||||
BuildRequires: systemd-rpm-macros
|
||||
BuildRequires: vulkan-loader-devel
|
||||
BuildRequires: gcc
|
||||
|
||||
%description
|
||||
%{summary}
|
||||
Obsoletes: python3-%{pypi_name}-git < %{version}-%{release}
|
||||
Provides: python3-%{pypi_name}-git = %{version}-%{release}
|
||||
|
||||
%package -n python3-%{pypi_name}-git
|
||||
Summary: %{summary}
|
||||
%{?python_provide:%python_provide python3-%{pypi_name}}
|
||||
Requires: python3-babel
|
||||
Requires: python3-evdev
|
||||
Requires: python3-icoextract
|
||||
@@ -47,16 +44,41 @@ Requires: python3-beautifulsoup4
|
||||
Requires: python3-rapidfuzz
|
||||
Requires: python3-libarchive-c
|
||||
Requires: perl-Image-ExifTool
|
||||
Requires: xdg-utils
|
||||
Requires: qt6-qtsvg
|
||||
Requires: cabextract
|
||||
Requires: gzip
|
||||
Requires: unzip
|
||||
Requires: curl
|
||||
Requires: unrar
|
||||
Requires: glx-utils
|
||||
Requires: pciutils
|
||||
Requires: vulkan-loader
|
||||
Requires: 7zip
|
||||
|
||||
%description -n python3-%{pypi_name}-git
|
||||
# System Tab
|
||||
Recommends: NetworkManager
|
||||
Recommends: bluez
|
||||
Recommends: upower
|
||||
Recommends: pulseaudio-utils
|
||||
Recommends: python3-dbus-fast
|
||||
Recommends: python3-qrcode
|
||||
|
||||
%ifarch aarch64
|
||||
Requires: muvm
|
||||
%endif
|
||||
|
||||
%description
|
||||
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.
|
||||
|
||||
%package -n %{pypi_name}-git-steam-compat
|
||||
Summary: Steam compatibility tool for PortProtonQt (development build)
|
||||
License: GPL-3.0
|
||||
Requires: %{pypi_name}-git = %{version}-%{release}
|
||||
|
||||
%description -n %{pypi_name}-git-steam-compat
|
||||
Steam compatibility tool integration for PortProtonQt. This package installs
|
||||
the necessary files to use PortProtonQt as a Proton compatibility tool in Steam.
|
||||
|
||||
%{?python_disable_dependency_generator}
|
||||
|
||||
%prep
|
||||
@@ -64,21 +86,34 @@ git clone https://git.linux-gaming.ru/Boria138/PortProtonQt.git
|
||||
|
||||
%build
|
||||
cd %{oname}
|
||||
%pyproject_wheel
|
||||
%meson \
|
||||
-Dpython_purelibdir=%{python3_sitelib} \
|
||||
-Dudev_rulesdir=%{_udevrulesdir}
|
||||
%meson_build
|
||||
|
||||
%install
|
||||
cd %{oname}
|
||||
%pyproject_install
|
||||
%pyproject_save_files %{pypi_name}
|
||||
cp -r build-aux/share %{buildroot}/usr/
|
||||
cp -r build-aux/lib %{buildroot}/usr/
|
||||
%meson_install
|
||||
bash ./dev-scripts/generate-completions.sh
|
||||
install -Dpm 0644 ./completions/portprotonqt -t %{buildroot}%{bash_completions_dir}
|
||||
install -Dpm 0644 ./completions/portprotonqt.fish -t %{buildroot}%{fish_completions_dir}
|
||||
install -Dpm 0644 ./completions/_portprotonqt -t %{buildroot}%{zsh_completions_dir}
|
||||
%find_lang %{pypi_name}
|
||||
|
||||
%files -n python3-%{pypi_name}-git -f %{pyproject_files}
|
||||
%files -f %{oname}/%{pypi_name}.lang
|
||||
%{_bindir}/%{pypi_name}
|
||||
%{_bindir}/vk_gpu_info
|
||||
%{python3_sitelib}/%{pypi_name}/
|
||||
%{_datadir}/icons/hicolor/scalable/apps/ru.linux_gaming.PortProtonQt.svg
|
||||
%{_metainfodir}/ru.linux_gaming.PortProtonQt.metainfo.xml
|
||||
%{_udevrulesdir}/60-portprotonqt.rules
|
||||
%{_datadir}/polkit-1/rules.d/ru.linux_gaming.PortProtonQt.rules
|
||||
%{_datadir}/applications/ru.linux_gaming.PortProtonQt.desktop
|
||||
%{bash_completions_dir}/portprotonqt
|
||||
%{fish_completions_dir}/portprotonqt.fish
|
||||
%{zsh_completions_dir}/_portprotonqt
|
||||
|
||||
%files -n %{pypi_name}-git-steam-compat
|
||||
%{_datadir}/steam/compatibilitytools.d/PortProtonQt/
|
||||
|
||||
%changelog
|
||||
+56
-21
@@ -1,32 +1,29 @@
|
||||
%global pypi_name portprotonqt
|
||||
%global pypi_version 0.1.10
|
||||
%global pypi_version 0.1.12
|
||||
%global oname PortProtonQt
|
||||
%global _python_no_extras_requires 1
|
||||
|
||||
Name: python-%{pypi_name}
|
||||
Name: %{pypi_name}
|
||||
Version: %{pypi_version}
|
||||
Release: 1%{?dist}
|
||||
Summary: Modern GUI for managing and launching games from PortProton, Steam, and Epic Games Store
|
||||
|
||||
License: GPL-3.0
|
||||
URL: https://git.linux-gaming.ru/Boria138/PortProtonQt
|
||||
BuildArch: noarch
|
||||
ExclusiveArch: x86_64 aarch64
|
||||
|
||||
BuildRequires: meson >= 0.61.2
|
||||
BuildRequires: ninja-build
|
||||
BuildRequires: python3-devel
|
||||
BuildRequires: python3-wheel
|
||||
BuildRequires: python3-pip
|
||||
BuildRequires: python3-build
|
||||
BuildRequires: pyproject-rpm-macros
|
||||
BuildRequires: python3dist(setuptools)
|
||||
BuildRequires: git
|
||||
BuildRequires: gettext
|
||||
BuildRequires: systemd-rpm-macros
|
||||
BuildRequires: vulkan-loader-devel
|
||||
BuildRequires: gcc
|
||||
|
||||
%description
|
||||
%{summary}
|
||||
Obsoletes: python3-%{pypi_name} < %{version}-%{release}
|
||||
Provides: python3-%{pypi_name} = %{version}-%{release}
|
||||
|
||||
%package -n python3-%{pypi_name}
|
||||
Summary: %{summary}
|
||||
%{?python_provide:%python_provide python3-%{pypi_name}}
|
||||
Requires: python3-babel
|
||||
Requires: python3-evdev
|
||||
Requires: python3-icoextract
|
||||
@@ -44,16 +41,41 @@ Requires: python3-beautifulsoup4
|
||||
Requires: python3-rapidfuzz
|
||||
Requires: python3-libarchive-c
|
||||
Requires: perl-Image-ExifTool
|
||||
Requires: xdg-utils
|
||||
Requires: qt6-qtsvg
|
||||
Requires: cabextract
|
||||
Requires: gzip
|
||||
Requires: unzip
|
||||
Requires: curl
|
||||
Requires: unrar
|
||||
Requires: glx-utils
|
||||
Requires: pciutils
|
||||
Requires: vulkan-loader
|
||||
Requires: 7zip
|
||||
|
||||
%description -n python3-%{pypi_name}
|
||||
# System Tab
|
||||
Recommends: NetworkManager
|
||||
Recommends: bluez
|
||||
Recommends: upower
|
||||
Recommends: pulseaudio-utils
|
||||
Recommends: python3-dbus-fast
|
||||
Recommends: python3-qrcode
|
||||
|
||||
%ifarch aarch64
|
||||
Requires: muvm
|
||||
%endif
|
||||
|
||||
%description
|
||||
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.
|
||||
|
||||
%package -n %{pypi_name}-steam-compat
|
||||
Summary: Steam compatibility tool for PortProtonQt
|
||||
License: GPL-3.0
|
||||
Requires: %{pypi_name} = %{version}-%{release}
|
||||
|
||||
%description -n %{pypi_name}-steam-compat
|
||||
Steam compatibility tool integration for PortProtonQt. This package installs
|
||||
the necessary files to use PortProtonQt as a Proton compatibility tool in Steam.
|
||||
|
||||
%{?python_disable_dependency_generator}
|
||||
|
||||
%prep
|
||||
@@ -63,21 +85,34 @@ git checkout v%{pypi_version}
|
||||
|
||||
%build
|
||||
cd %{oname}
|
||||
%pyproject_wheel
|
||||
%meson \
|
||||
-Dpython_purelibdir=%{python3_sitelib} \
|
||||
-Dudev_rulesdir=%{_udevrulesdir}
|
||||
%meson_build
|
||||
|
||||
%install
|
||||
cd %{oname}
|
||||
%pyproject_install
|
||||
%pyproject_save_files %{pypi_name}
|
||||
cp -r build-aux/share %{buildroot}/usr/
|
||||
cp -r build-aux/lib %{buildroot}/usr/
|
||||
%meson_install
|
||||
bash ./dev-scripts/generate-completions.sh
|
||||
install -Dpm 0644 ./completions/portprotonqt -t %{buildroot}%{bash_completions_dir}
|
||||
install -Dpm 0644 ./completions/portprotonqt.fish -t %{buildroot}%{fish_completions_dir}
|
||||
install -Dpm 0644 ./completions/_portprotonqt -t %{buildroot}%{zsh_completions_dir}
|
||||
%find_lang %{pypi_name}
|
||||
|
||||
%files -n python3-%{pypi_name} -f %{pyproject_files}
|
||||
%files -f %{oname}/%{pypi_name}.lang
|
||||
%{_bindir}/%{pypi_name}
|
||||
%{_bindir}/vk_gpu_info
|
||||
%{python3_sitelib}/%{pypi_name}/
|
||||
%{_datadir}/icons/hicolor/scalable/apps/ru.linux_gaming.PortProtonQt.svg
|
||||
%{_metainfodir}/ru.linux_gaming.PortProtonQt.metainfo.xml
|
||||
%{_udevrulesdir}/60-portprotonqt.rules
|
||||
%{_datadir}/polkit-1/rules.d/ru.linux_gaming.PortProtonQt.rules
|
||||
%{_datadir}/applications/ru.linux_gaming.PortProtonQt.desktop
|
||||
%{bash_completions_dir}/portprotonqt
|
||||
%{fish_completions_dir}/portprotonqt.fish
|
||||
%{zsh_completions_dir}/_portprotonqt
|
||||
|
||||
%files -n %{pypi_name}-steam-compat
|
||||
%{_datadir}/steam/compatibilitytools.d/PortProtonQt/
|
||||
|
||||
%changelog
|
||||
@@ -0,0 +1,4 @@
|
||||
int main(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import sys
|
||||
|
||||
from portprotonqt.app import main
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
@@ -1,9 +1,14 @@
|
||||
[Desktop Entry]
|
||||
Name=PortProtonQt
|
||||
Exec=portprotonqt
|
||||
Exec=portprotonqt %u
|
||||
Type=Application
|
||||
Comment=A modern GUI for PortProton project
|
||||
Comment[ru]=Современный графический интерфейс для проекта PortProton
|
||||
Comment[es]=Una interfaz gráfica moderna para el proyecto PortProton
|
||||
Comment[pt]=Uma interface gráfica moderna para o projeto PortProton
|
||||
Comment[de]=Eine moderne grafische Benutzeroberfläche für das PortProton-Projekt
|
||||
Terminal=false
|
||||
Icon=ru.linux_gaming.PortProtonQt
|
||||
StartupWMClass=ru.linux_gaming.PortProtonQt
|
||||
Categories=Game;Utility;
|
||||
MimeType=x-scheme-handler/portproton;application/x-ms-dos-exec;application/x-executable;application/x-dosexec;application/x-iso9660-image;application/x-cd-image;
|
||||
@@ -1,30 +0,0 @@
|
||||
_portprotonqt_completions() {
|
||||
local cur prev opts
|
||||
COMPREPLY=()
|
||||
cur="${COMP_WORDS[COMP_CWORD]}"
|
||||
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
||||
|
||||
# Available options
|
||||
opts="--fullscreen --debug-level --help -h"
|
||||
|
||||
# Debug level choices
|
||||
debug_levels="ALL DEBUG INFO WARNING ERROR CRITICAL"
|
||||
|
||||
case "${prev}" in
|
||||
--debug-level)
|
||||
# Complete debug levels
|
||||
COMPREPLY=( $(compgen -W "${debug_levels}" -- ${cur}) )
|
||||
return 0
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
# Complete options
|
||||
if [[ ${cur} == -* ]]; then
|
||||
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
complete -F _portprotonqt_completions portprotonqt
|
||||
@@ -33,31 +33,37 @@
|
||||
</categories>
|
||||
<url type="homepage">https://git.linux-gaming.ru/Boria138/PortProtonQt</url>
|
||||
<url type="bugtracker">https://git.linux-gaming.ru/Boria138/PortProtonQt/issues</url>
|
||||
<url type="translate">https://translate.codeberg.org/engage/portprotonqt</url>
|
||||
<screenshots>
|
||||
<screenshot type="default">
|
||||
<image>https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/%D0%91%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0.png</image>
|
||||
<image>https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/library.jpg</image>
|
||||
<caption>Library</caption>
|
||||
<caption xml:lang="ru">Библиотека</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/%D0%9A%D0%B0%D1%80%D1%82%D0%BE%D1%87%D0%BA%D0%B0.png</image>
|
||||
<image>https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/game_card.jpg</image>
|
||||
<caption>Card detail page</caption>
|
||||
<caption xml:lang="ru">Детали игры</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8.png</image>
|
||||
<image>https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/portproton_settings.jpg</image>
|
||||
<caption>Settings</caption>
|
||||
<caption xml:lang="ru">Настройки</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%BD%D0%BE%D0%B5%20%D0%BC%D0%B5%D0%BD%D1%8E.png</image>
|
||||
<image>https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/context_menu.jpg</image>
|
||||
<caption>Context Menu</caption>
|
||||
<caption xml:lang="ru">Контекстное меню</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://git.linux-gaming.ru/Boria138/PortProtonQt/src/branch/main/portprotonqt/themes/standart/images/screenshots/%D0%9E%D0%B2%D0%B5%D1%80%D0%BB%D0%B5%D0%B9.png</image>
|
||||
<caption>Overlay</caption>
|
||||
<caption xml:lang="ru">Оверлей</caption>
|
||||
<image>https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/exe_settings.jpg</image>
|
||||
<caption>Exe Settings</caption>
|
||||
<caption xml:lang="ru">Настройки exe</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/wine_settings.jpg</image>
|
||||
<caption>Wine Settings</caption>
|
||||
<caption xml:lang="ru">Настройки Wine</caption>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
<keywords>
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
polkit.addRule(function(action, subject) {
|
||||
var cmd_line = polkit.spawn(["ps", "-o", "args=", "-p", String(subject.pid)]);
|
||||
var ppid = polkit.spawn(["ps", "-o", "ppid=", "-p", String(subject.pid)]).trim();
|
||||
var parent_cmd_line = "";
|
||||
if (ppid) {
|
||||
parent_cmd_line = polkit.spawn(["ps", "-o", "args=", "-p", ppid]);
|
||||
}
|
||||
var is_ppqt_call =
|
||||
cmd_line.includes("ppqtos") ||
|
||||
parent_cmd_line.includes("ppqtos");
|
||||
|
||||
if ( (
|
||||
action.id === "org.freedesktop.NetworkManager.settings.modify.system" ||
|
||||
action.id == "org.freedesktop.udisks2.filesystem-mount-system" ||
|
||||
action.id == "org.freedesktop.udisks2.filesystem-mount-other-seat" ||
|
||||
action.id == "org.freedesktop.udisks2.filesystem-unmount-others" ) &&
|
||||
is_ppqt_call)
|
||||
{
|
||||
return polkit.Result.YES;
|
||||
}
|
||||
});
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 38 KiB |
+5814
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: xuser
|
||||
#AC4BFSP.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
export PW_VULKAN_USE=1
|
||||
export PW_USE_FSYNC=0
|
||||
export PW_USE_ESYNC=0
|
||||
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: xuser
|
||||
#ACIII.exe
|
||||
#ACLiberation.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
export PW_VULKAN_USE="2"
|
||||
export PW_WINE_USE="WINE_LG_9-12-2"
|
||||
export PW_USE_ESYNC="0"
|
||||
export PW_USE_FSYNC="1"
|
||||
export PW_WINE_FULLSCREEN_FSR="1"
|
||||
export PW_HIDE_NVIDIA_GPU="0"
|
||||
export PW_VIRTUAL_DESKTOP="0"
|
||||
export PW_USE_TERMINAL="0"
|
||||
export PW_USE_D3D_EXTRAS="1"
|
||||
export PW_FIX_VIDEO_IN_GAME="0"
|
||||
export PW_REDUCE_PULSE_LATENCY="0"
|
||||
export PW_USE_US_LAYOUT="0"
|
||||
export PW_USE_GSTREAMER="1"
|
||||
export PW_USE_SHADER_CACHE="1"
|
||||
export PW_USE_WINE_DXGI="0"
|
||||
export PW_DINPUT_PROTOCOL="0"
|
||||
export LAUNCH_PARAMETERS=""
|
||||
export PW_WINDOWS_VER="10"
|
||||
export PW_DLL_INSTALL=""
|
||||
export PW_WINE_CPU_TOPOLOGY="disabled"
|
||||
export PW_MESA_GL_VERSION_OVERRIDE="disabled"
|
||||
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: Alek V., Dervart
|
||||
#ACOdyssey.exe
|
||||
#Rating=4
|
||||
#####################examples###########################
|
||||
export PW_USE_ESYNC="1"
|
||||
export PW_USE_GSTREAMER="0"
|
||||
export PW_PREFIX_NAME="ACO"
|
||||
export PW_WINE_USE="WINE_LG"
|
||||
@@ -0,0 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: Mels
|
||||
#ACOrigins.exe
|
||||
#Rating=1-5
|
||||
export PW_VULKAN_USE="2"
|
||||
export PW_WINE_USE="PROTON_LG"
|
||||
export PORTPROTON_NAME="ACOrigins"
|
||||
export PW_USE_ESYNC="1"
|
||||
export PW_USE_FSYNC="1"
|
||||
export PW_WINE_FULLSCREEN_FSR="1"
|
||||
export PW_USE_GSTREAMER="0"
|
||||
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: anonymous
|
||||
#ACValhalla.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
export PW_DLL_INSTALL="vcrun2019" # Install DLL in port prefix (used winetricks)
|
||||
export PW_VULKAN_USE=1
|
||||
export NOSTSTDIR="\"${PATH_TO_GAME}\""
|
||||
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: xuser
|
||||
#ALOTInstaller.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
export PW_VULKAN_USE=0
|
||||
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: deck
|
||||
#APlagueTaleInnocence_x64.exe
|
||||
#Rating=1-5
|
||||
export PW_VULKAN_USE="2"
|
||||
export PW_WINE_USE="PROTON_LG"
|
||||
export PW_PREFIX_NAME="PLAGUE"
|
||||
export PORTPROTON_NAME="A Plague Tale: Innocence"
|
||||
export PW_USE_ESYNC="1"
|
||||
export PW_USE_FSYNC="0"
|
||||
export PW_WINE_FULLSCREEN_FSR="1"
|
||||
export PW_HIDE_NVIDIA_GPU="0"
|
||||
export PW_VIRTUAL_DESKTOP="0"
|
||||
export PW_USE_TERMINAL="0"
|
||||
export PW_USE_D3D_EXTRAS="1"
|
||||
export PW_FIX_VIDEO_IN_GAME="0"
|
||||
export PW_REDUCE_PULSE_LATENCY="0"
|
||||
export PW_USE_US_LAYOUT="0"
|
||||
export PW_USE_GSTREAMER="1"
|
||||
export PW_USE_SHADER_CACHE="1"
|
||||
export PW_USE_WINE_DXGI="0"
|
||||
export PW_DINPUT_PROTOCOL="0"
|
||||
export PW_USE_NATIVE_WAYLAND="0"
|
||||
export LAUNCH_PARAMETERS=""
|
||||
export PW_WINDOWS_VER="10"
|
||||
export PW_DLL_INSTALL="vcrun2017"
|
||||
export WINEDLLOVERRIDES=""
|
||||
export PW_WINE_CPU_TOPOLOGY="disabled"
|
||||
export PW_MESA_GL_VERSION_OVERRIDE="disabled"
|
||||
export PW_VKD3D_FEATURE_LEVEL="disabled"
|
||||
export PW_LOCALE_SELECT="disabled"
|
||||
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: deck
|
||||
#APlagueTaleRequiem_x64.exe
|
||||
#Rating=1-5
|
||||
export PW_VULKAN_USE="2"
|
||||
export PW_WINE_USE="WINE_LG"
|
||||
export PW_PREFIX_NAME="PLAGUE"
|
||||
export PORTPROTON_NAME="A Plague Tale: Requiem"
|
||||
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: Eljeyna
|
||||
#ActOfWar.exe
|
||||
#ActOfWar_HighTreason.exe
|
||||
#Rating=1-5
|
||||
export PW_WINE_USE="WINE-9.14-AMD64"
|
||||
export PW_PREFIX_NAME="ACT_OF_WAR"
|
||||
|
||||
gui_proton_downloader silent "$PW_WINE_USE"
|
||||
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: vano
|
||||
#AliceMadnessReturns.exe
|
||||
#Rating=5
|
||||
#####################examples###########################
|
||||
export PW_WINDOWS_VER="10"
|
||||
export PW_USE_FSYNC="0"
|
||||
export PW_USE_ESYNC="0"
|
||||
export PW_USE_GSTREAMER="1"
|
||||
export PW_WINE_USE="PROTON_LG"
|
||||
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: ducksomecode
|
||||
#AloneInTheDark-Win64-Shipping.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
export PW_WINDOWS_VER="10"
|
||||
export PW_DLL_INSTALL=""
|
||||
export WINEDLLOVERRIDES=""
|
||||
export LAUNCH_PARAMETERS=""
|
||||
export PW_VULKAN_USE="2"
|
||||
export PW_HIDE_NVIDIA_GPU="0"
|
||||
export PW_VIRTUAL_DESKTOP="0"
|
||||
export PW_USE_FSYNC="1"
|
||||
export PW_USE_ESYNC="0"
|
||||
export PW_USE_GSTREAMER="1"
|
||||
export PW_REDUCE_PULSE_LATENCY="0"
|
||||
export PW_USE_TERMINAL="0"
|
||||
export PW_WINE_USE="WINE_LG"
|
||||
export PW_PREFIX_NAME="ALONE_IN_THE_DARK"
|
||||
export PW_WINE_FULLSCREEN_FSR="0"
|
||||
export PW_USE_D3D_EXTRAS="1"
|
||||
export PW_FIX_VIDEO_IN_GAME="0"
|
||||
export PW_USE_SHADER_CACHE="1"
|
||||
export PW_USE_WINE_DXGI="0"
|
||||
export PW_USE_GALLIUM_ZINK="0"
|
||||
export PW_USE_RUNTIME="1"
|
||||
export PW_WINE_CPU_TOPOLOGY="disabled"
|
||||
export PORTPROTON_NAME="Alone in the Dark"
|
||||
export PW_DINPUT_PROTOCOL="1"
|
||||
export PW_USE_NATIVE_WAYLAND="0"
|
||||
export PW_MESA_GL_VERSION_OVERRIDE="disabled"
|
||||
export PW_VKD3D_FEATURE_LEVEL="disabled"
|
||||
export PW_LOCALE_SELECT="disabled"
|
||||
@@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: Eljeyna
|
||||
#Animal Well.exe
|
||||
#Rating=1-5
|
||||
export PW_WINE_USE="WINE_LG"
|
||||
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: fidel
|
||||
#Ankama Launcher.exe
|
||||
#Rating=1-5
|
||||
export PW_WINE_USE="WINE_LG"
|
||||
export PW_PREFIX_NAME="ANKAMA"
|
||||
export PORTPROTON_NAME="Ankama "
|
||||
export FILE_DESCRIPTION="Ankama Launcher"
|
||||
@@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: xuser
|
||||
#Anno4.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
if [[ "$LANGUAGE" == "ru" ]] ; then
|
||||
export PW_COMMENT_DB="Если после первого запуска вы увидите черный экран, просто перезапустите игру."
|
||||
else
|
||||
export PW_COMMENT_DB="If after the first launch you see a black screen,\njust restart the game."
|
||||
fi
|
||||
|
||||
export PW_VULKAN_USE=1
|
||||
|
||||
add_in_start_portwine () {
|
||||
if [[ -d "${WINEPREFIX}/drive_c/users/steamuser/AppData/Roaming/Ubisoft/Anno1404/Config/" ]] ; then
|
||||
sed -i 's/<DirectXVersion>0<\/DirectXVersion>/<DirectXVersion>9<\/DirectXVersion>/' "${WINEPREFIX}/drive_c/users/steamuser/AppData/Roaming/Ubisoft/Anno1404/Config/Engine.ini"
|
||||
fi
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: stalker
|
||||
#AnomalyLauncher.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
export PW_DLL_INSTALL="d3dx10 d3dx11_42 d3dx11_43" # Install DLL in port prefix (used winetricks)
|
||||
export PW_VULKAN_USE=1
|
||||
export PW_USE_WINE_DXGI=1
|
||||
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: chal55rus
|
||||
#AnomalyZone.exe
|
||||
#Rating=1-5
|
||||
export PW_VULKAN_USE="2"
|
||||
export PW_WINE_USE="WINE_LG"
|
||||
export PW_PREFIX_NAME="DEFAULT"
|
||||
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: rosakodu
|
||||
#GS456.exe
|
||||
#Rating=1-5
|
||||
export PW_VULKAN_USE="2"
|
||||
export PW_WINE_USE="PROTON_LG_7-54"
|
||||
export PW_PREFIX_NAME="APOLLO_JUSTICE"
|
||||
export WINEDLLOVERRIDES="winmm.dll=n,b"
|
||||
|
||||
gui_proton_downloader silent "$PW_WINE_USE"
|
||||
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: akai
|
||||
#Arthur.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
export PW_REDUCE_PULSE_LATENCY=1
|
||||
export PW_VULKAN_USE=2
|
||||
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: Сергей 33 (46)
|
||||
#BF2.exe
|
||||
#Rating=4
|
||||
################################################
|
||||
export PW_WINDOWS_VER="7"
|
||||
@@ -0,0 +1,23 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: dez
|
||||
#Battle.net Launcher.exe
|
||||
#Battle.net-Setup.exe
|
||||
#Battle.net.exe
|
||||
#Rating=5
|
||||
################################################
|
||||
export PW_VULKAN_USE="2"
|
||||
export LAUNCH_PARAMETERS=""
|
||||
export WINEDLLOVERRIDES="locationapi="
|
||||
export PW_DLL_INSTALL="vcrun2019 d3dx11_42 d3dx11_43"
|
||||
export PW_WINDOWS_VER="10"
|
||||
export PW_WINE_FULLSCREEN_FSR="0"
|
||||
export PW_WINE_USE="PROTON_LG"
|
||||
export WINE_SIMULATE_WRITECOPY="1"
|
||||
|
||||
add_in_start_portwine () {
|
||||
rm -fr "${PORT_DATA_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/ProgramData/Agent/data"
|
||||
rm -fr "${PORT_DATA_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/users/${USER}/Blizzard Entertainment/Battle.net/Cache"
|
||||
rm -fr "${PORT_DATA_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/users/Public/Blizzard Entertainment/Battle.net/Cache"
|
||||
try_remove_file "${PORT_DATA_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/Fonts/sourcehansans.ttc"
|
||||
# sed -i 's/"GrabFullscreen"="Y"/"GrabFullscreen"="N"/' "${PORT_DATA_PATH}/data/prefixes/${PW_PREFIX_NAME}/user.reg"
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: Mels
|
||||
#BeyondTwoSouls.exe
|
||||
#Rating=1-5
|
||||
export PW_VULKAN_USE="2"
|
||||
export PW_WINE_USE="WINE_LG"
|
||||
export PORTPROTON_NAME="BeyondTwoSouls"
|
||||
export PW_USE_SHADER_CACHE="0"
|
||||
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: Alek V., Eljeyna
|
||||
#div.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
export PW_WINE_USE="WINE_LG"
|
||||
export PW_DGVOODOO2="1"
|
||||
export PW_DGV2_DISABLE_D3D="1"
|
||||
export PW_DGV2_VRAM="1024"
|
||||
export PW_DGV2_RESOLUTION="1280x720"
|
||||
export PW_DGV2_VIDEOCARD="dgVoodoo2 Virtual 3D"
|
||||
|
||||
add_in_start_portwine () {
|
||||
if [[ -f "${PATH_TO_GAME}/fontlist.txt" ]] ; then
|
||||
if grep -q "charset russian" "${PATH_TO_GAME}/fontlist.txt" ; then
|
||||
sed -i 's/DEFINE $TTFONTNAME "BDFont"/DEFINE $TTFONTNAME "Arial"/g' "${PATH_TO_GAME}/fontlist.txt"
|
||||
sed -i 's/DEFINE $TTFONTANAME "BDFont"/DEFINE $TTFONTANAME "Arial"/g' "${PATH_TO_GAME}/fontlist.txt"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: kosta
|
||||
#Biomutant.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
export PW_VULKAN_USE=1
|
||||
export PW_DLL_INSTALL="vcrun2019" # Install DLL in port prefix (used winetricks)
|
||||
@@ -0,0 +1,17 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: deck
|
||||
#Bioshock2HD.exe
|
||||
#Rating=5
|
||||
export PW_VULKAN_USE="2"
|
||||
export PW_WINE_USE="WINE_LG"
|
||||
export PW_PREFIX_NAME="DEFAULT"
|
||||
export PW_VKBASALT="1"
|
||||
export PW_USE_ESYNC="0"
|
||||
export PW_USE_FSYNC="0"
|
||||
export PW_USE_D3D_EXTRAS="1"
|
||||
export PW_USE_GSTREAMER="1"
|
||||
export PW_USE_SHADER_CACHE="1"
|
||||
export PW_USE_WINE_DXGI="0"
|
||||
export PW_USE_EAC_AND_BE="0"
|
||||
export PW_VKBASALT_EFFECTS="FilmGrain2:Curves:cas"
|
||||
export PW_VKBASALT_FFX_CAS="1"
|
||||
@@ -0,0 +1,17 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: deck
|
||||
#BioshockHD.exe
|
||||
#Rating=5
|
||||
export PW_VULKAN_USE="2"
|
||||
export PW_WINE_USE="WINE_LG"
|
||||
export PW_PREFIX_NAME="DEFAULT"
|
||||
export PW_VKBASALT="1"
|
||||
export PW_USE_ESYNC="0"
|
||||
export PW_USE_FSYNC="0"
|
||||
export PW_USE_D3D_EXTRAS="1"
|
||||
export PW_USE_GSTREAMER="1"
|
||||
export PW_USE_SHADER_CACHE="1"
|
||||
export PW_USE_WINE_DXGI="0"
|
||||
export PW_USE_EAC_AND_BE="0"
|
||||
export PW_VKBASALT_EFFECTS="FilmGrain2:Curves:cas"
|
||||
export PW_VKBASALT_FFX_CAS="1"
|
||||
@@ -0,0 +1,12 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: fidel
|
||||
#BlackDesertLauncher.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
export PW_WINDOWS_VER="10"
|
||||
export PW_WINE_USE="PROTON_LG"
|
||||
export PW_PREFIX_NAME="DOTNET"
|
||||
export PORTPROTON_NAME="BlackDesertLauncher"
|
||||
export FILE_DESCRIPTION="BlackDesertLauncher"
|
||||
export WINE_DISABLE_KERNEL_WRITEWATCH="1"
|
||||
export DXVK_CONFIG="dxgi.syncInterval=0"
|
||||
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author:
|
||||
#Botanicula.exe
|
||||
#Rating=5
|
||||
################################################
|
||||
export PW_VULKAN_USE=0
|
||||
export LAUNCH_PARAMETERS=""
|
||||
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: Eljeyna
|
||||
#BrightMemoryInfinite-Win64-Shipping.exe
|
||||
#Rating=1-5
|
||||
export PW_VULKAN_USE="2"
|
||||
export PW_WINE_USE="WINE_LG"
|
||||
export PW_USE_SHADER_CACHE="0"
|
||||
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author:PortWINE
|
||||
#Brokgame.exe
|
||||
#Rating=5
|
||||
################################################
|
||||
export PW_VULKAN_USE=0
|
||||
export LAUNCH_PARAMETERS=""
|
||||
@@ -0,0 +1,16 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: fidel
|
||||
#BsgLauncher.exe
|
||||
#EscapeFromTarkov.exe
|
||||
#EscapeFromTarkov_BE.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
export PW_USE_FSYNC="0"
|
||||
export PW_USE_ESYNC="0"
|
||||
export PW_PREFIX_NAME="DOTNET"
|
||||
|
||||
# add_in_start_portwine () {
|
||||
# if [[ ! -f "${PATH_TO_GAME}/dxvk.conf" ]] ; then
|
||||
# echo "d3d9.shaderModel = 1" > "${PATH_TO_GAME}/dxvk.conf"
|
||||
# fi
|
||||
# }
|
||||
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: fidel
|
||||
#CWClientLauncher.exe
|
||||
#Rating=1-5
|
||||
export PW_WINE_USE="WINE_LG"
|
||||
export PW_PREFIX_NAME="CONTRACT_WARS"
|
||||
export PORTPROTON_NAME="CWClient"
|
||||
export FILE_DESCRIPTION="CWClientLauncher"
|
||||
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: fidel
|
||||
#caliber_launcher_pp.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
export PW_VULKAN_USE="2"
|
||||
export PW_WINE_USE="PROTON_LG"
|
||||
export PW_PREFIX_NAME="CALIBER"
|
||||
# export DISABLE_CP_DEFPFX="1"
|
||||
export WINEDLLOVERRIDES="xaudio2_7=n,b"
|
||||
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author:
|
||||
#CoJBiBGame_x86.exe
|
||||
#Rating=5
|
||||
################################################
|
||||
export LAUNCH_PARAMETERS=""
|
||||
export PW_DLL_INSTALL="d3dx9" # Install DLL in port prefix (used winetricks)
|
||||
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: fidel
|
||||
#CatsLauncher.exe
|
||||
#Rating=5
|
||||
#####################examples###########################
|
||||
export PW_WINDOWS_VER="10"
|
||||
export PW_VULKAN_USE="2"
|
||||
export PW_WINE_USE="WINE_LG"
|
||||
export PW_PREFIX_NAME="DOTNET"
|
||||
# export WINEDLLOVERRIDES="libglesv2="
|
||||
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: xuser
|
||||
#Cinebench.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
export PW_VULKAN_USE=1
|
||||
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: user
|
||||
#Control_DX12.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
export PW_COMMENT_DB="Control (DX12)"
|
||||
export WINEDLLOVERRIDES="d3d12,d3d_rmdwin10_f,renderer_rmdwin10_f,apw_rmdwin10_f,input_rmdwin10_f,renderer_rmdwin10_f,physics_rmdwin10_f,snd_rmdwin10_f,ui_rmdwin10_f=n"
|
||||
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: xuser
|
||||
#CyberShadow.exe
|
||||
#Rating=1-5
|
||||
################################################
|
||||
export PW_VULKAN_USE=0
|
||||
export LAUNCH_PARAMETERS=""
|
||||
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: xuser
|
||||
#Cyberpunk2077.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
export WINEDLLOVERRIDES="Crash*,REDEngineErrorReporter.exe="
|
||||
export PW_REDUCE_PULSE_LATENCY=1
|
||||
export LAUNCH_PARAMETERS="--launcher-skip"
|
||||
export VKD3D_CONFIG=force_bindless_texel_buffer,multi_queue
|
||||
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: xuser
|
||||
#DAOriginsLauncher.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
export PW_VULKAN_USE=1
|
||||
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: linux-gaming.ru
|
||||
#DOOMEternalx64vk.exe
|
||||
#Rating=?
|
||||
################################################
|
||||
export PW_VULKAN_USE=1
|
||||
export PW_REDUCE_PULSE_LATENCY=1
|
||||
export LAUNCH_PARAMETERS="+in_terminal 1 +com_skipIntroVideo 1 +com_skipSignInManager 1"
|
||||
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: nix
|
||||
#DOOMx64.exe
|
||||
#DOOMx64vk.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
export PW_COMMENT_DB="DOOM 2016"
|
||||
export PW_DLL_INSTALL="xact xact_x64 vcrun2019"
|
||||
export WINEDLLOVERRIDES="xaudio2_8=n"
|
||||
export PW_VULKAN_USE=1
|
||||
@@ -0,0 +1,12 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: xuser
|
||||
#DXHRDC.exe
|
||||
#DXHumanRevolutionDC.exe
|
||||
#DXHumanRevolutionDC_s.exe
|
||||
#Rating=5
|
||||
#####################examples###########################
|
||||
export WINEDLLOVERRIDES="WINMM=n,b"
|
||||
export PW_VULKAN_USE=1
|
||||
export PW_USE_FSYNC=1 # Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems with no FUTEX_WAIT_MULTIPLE support.
|
||||
export PW_USE_ESYNC=1 # Do not use eventfd-based in-process synchronization primitives
|
||||
export PW_USE_GSTREAMER=0 # 0 - disabled use winegstreamer
|
||||
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: xuser
|
||||
#DaysGone.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
export PW_DLL_INSTALL="vcrun2019" # Install DLL in port prefix (used winetricks)
|
||||
export PW_USE_FSYNC=1 # Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems with no FUTEX_WAIT_MULTIPLE support.
|
||||
export PW_USE_ESYNC=1 # Do not use eventfd-based in-process synchronization primitives
|
||||
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author:
|
||||
#Dead Space.exe
|
||||
#Rating=1-5
|
||||
################################################
|
||||
export PW_VULKAN_USE=0
|
||||
export LAUNCH_PARAMETERS=""
|
||||
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author:
|
||||
#ds.exe
|
||||
#Rating=5
|
||||
################################################
|
||||
export PW_VULKAN_USE=1
|
||||
export LAUNCH_PARAMETERS=""
|
||||
export WINEDLLOVERRIDES="d3dcompiler_47,dxcompiler=n,b"
|
||||
@@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: Eljeyna
|
||||
#Deathloop.exe
|
||||
#Rating=4
|
||||
#####################examples###########################
|
||||
if [[ "$LANGUAGE" == "ru" ]] ; then
|
||||
export PW_COMMENT_DB="При использовании DualSense следует оставить параметры нетронутыми\nЕсли проявляются проблемы с определением геймпада, выключите DINPUT PROTOCOL"
|
||||
else
|
||||
export PW_COMMENT_DB="If you use DualSense do not recommended change settings\nBut if you have problems with gamepad controls, turn off DINPUT PROTOCOL parameter"
|
||||
fi
|
||||
export PW_VULKAN_USE="1"
|
||||
export WINEDLLOVERRIDES="xaudio2_8,xaudio2_9="
|
||||
export PW_DINPUT_PROTOCOL="1"
|
||||
export PW_WINDOWS_VER="10"
|
||||
export PW_USE_ESYNC="0"
|
||||
export PW_USE_FSYNC="0"
|
||||
export PW_PREFIX_NAME="DEATHLOOP"
|
||||
export PW_WINE_USE="PROTON_LG"
|
||||
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: xuser
|
||||
#Deponia.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
export PW_VULKAN_USE=0
|
||||
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: spider
|
||||
#Diablo II.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
export PW_VULKAN_USE=0
|
||||
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: deck
|
||||
#Dishonored2.exe
|
||||
#Rating=1-5
|
||||
export PW_VULKAN_USE="2"
|
||||
export PW_WINE_USE="WINE_LG"
|
||||
export PW_PREFIX_NAME="DISHONORED"
|
||||
export PORTPROTON_NAME="VoidEngine"
|
||||
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: deck
|
||||
#DyingLightGame.exe
|
||||
#Rating=1-5
|
||||
export PW_VULKAN_USE="2"
|
||||
export PW_WINE_USE="WINE_LG"
|
||||
export PW_PREFIX_NAME="DL"
|
||||
export PORTPROTON_NAME="DyingLight"
|
||||
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: PortWINE
|
||||
#EALauncher.exe
|
||||
#EADesktop.exe
|
||||
#Rating=5
|
||||
#####################examples###########################
|
||||
export PW_WINE_USE="PROTON_LG"
|
||||
export PW_PREFIX_NAME="EAAPP"
|
||||
export WINE_SIMULATE_WRITECOPY="1"
|
||||
add_in_start_portwine () { export LC_CTYPE=C ;}
|
||||
@@ -0,0 +1,15 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: PortWINE
|
||||
#EpicGamesLauncher.exe
|
||||
#Rating=5
|
||||
##############################################
|
||||
#export PW_COMMENT_DB="PortWINE database file for Epic Games Launcher"
|
||||
export LAUNCH_PARAMETERS="-SkipBuildPatchPrereq"
|
||||
export PW_DLL_INSTALL="vcrun2012 vcrun2013 vcrun2019"
|
||||
export PW_WINE_USE="PROTON_LG"
|
||||
export PW_USE_ESYNC="1"
|
||||
export PW_USE_FSYNC="1"
|
||||
export WINEDLLOVERRIDES="vulkan-1=n,b"
|
||||
# add_in_start_portwine () {
|
||||
# regdlloverrides "RDR2.exe:vulkan-1=n,b"
|
||||
# }
|
||||
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: fff555w
|
||||
#Esprit Games.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
export PW_WINDOWS_VER=7 # Set windows version 10, 7 or XP
|
||||
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: xuser
|
||||
#FL.exe
|
||||
#FL64.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
export PW_VULKAN_USE=0
|
||||
export WINEDLLOVERRIDES="FLEngine,FLEngine_x64=n"
|
||||
export PW_USE_FSYNC=0 # Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems with no FUTEX_WAIT_MULTIPLE support.
|
||||
export PW_USE_ESYNC=0 # Do not use eventfd-based in-process synchronization primitives
|
||||
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: linux-gaming.ru
|
||||
#FarCry.exe
|
||||
#Rating=5
|
||||
#################################
|
||||
export PW_VULKAN_USE=0
|
||||
export WINEDLLOVERRIDES="cgD3D9,cgD3D9d=n"
|
||||
export PW_USE_FSYNC=0 # Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems with no FUTEX_WAIT_MULTIPLE support.
|
||||
export PW_USE_ESYNC=0 # Do not use eventfd-based in-process synchronization primitives
|
||||
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: deck
|
||||
#FarCry5.exe
|
||||
#Rating=1-5
|
||||
export PW_VULKAN_USE="2"
|
||||
export PW_WINE_USE="WINE_LG"
|
||||
export PW_PREFIX_NAME="FARCRY"
|
||||
export PORTPROTON_NAME="Far Cry 5"
|
||||
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: gamer
|
||||
#FarCry6.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
export VK_FORMAT_A8_UNORM=1
|
||||
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: xuser
|
||||
#FarLoneSails.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
export PW_VULKAN_USE=0
|
||||
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: nixon
|
||||
#farcry3_d3d11.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
export PW_DLL_INSTALL="d3dx11_42 d3dx11_43"
|
||||
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: nixon
|
||||
#farcry3.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
export PW_VULKAN_USE=0
|
||||
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: nixon
|
||||
#FarCry4.exe
|
||||
#Rating=1-5
|
||||
#####################examples###########################
|
||||
export PW_DLL_INSTALL="d3dcompiler_43 d3dcompiler_4 xact xact_x64"
|
||||
export PW_PREFIX_NAME="FARCRY_4"
|
||||
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: fidel
|
||||
#Farlight84Launcher.exe
|
||||
#Rating=1-5
|
||||
export PW_WINE_USE="WINE_LG"
|
||||
export PW_PREFIX_NAME="FARLIGHT_84"
|
||||
export PW_NO_AUTO_CREATE_SHORTCUT="1"
|
||||
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: garrett
|
||||
#ForzaHorizon4.exe
|
||||
#Rating=5
|
||||
################################################
|
||||
export PW_DLL_INSTALL="vcrun2019"
|
||||
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author:
|
||||
#Frozen Throne.exe
|
||||
#Rating=4 - no video
|
||||
################################################
|
||||
export PW_VULKAN_USE=0
|
||||
export LAUNCH_PARAMETERS=""
|
||||
if [[ -d "${PATH_TO_GAME}"/Movies ]] ; then
|
||||
mv "${PATH_TO_GAME}"/Movies "${PATH_TO_GAME}"/Movies_bak
|
||||
fi
|
||||
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: lemonchic with help from Dezert1r
|
||||
#GTAIV.exe
|
||||
#Rating=1-5
|
||||
################################################
|
||||
export LAUNCH_PARAMETERS="-nomemrestrict -norestrictions -percentvidmem 100 -availablevidmem 2048 -noprecache -novblank -heapsize 2097152" # Additional launch options
|
||||
export PW_USE_ESYNC=1
|
||||
export PW_USE_FSYNC=0
|
||||
@@ -0,0 +1,19 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: Dezert1r, Fidel
|
||||
#GalaxyClient.exe
|
||||
#GOG_Galaxy_2.0.exe
|
||||
#Rating=5
|
||||
################################################
|
||||
# export PW_VULKAN_USE="2"
|
||||
export WINEDLLOVERRIDES="GalaxyCommunication.exe,GalaxyClientService.exe=n;libglesv2="
|
||||
export LAUNCH_PARAMETERS="/runWithoutUpdating /deelevated"
|
||||
export PW_PREFIX_NAME="GOG"
|
||||
export DISABLE_CP_DEFPFX="1"
|
||||
export PW_WINE_USE="PROTON_LG_9-12"
|
||||
|
||||
add_in_start_portwine ()
|
||||
{
|
||||
if [[ -e "${WINEPREFIX}/drive_c/users/${USER}/Local Settings/Application Data/GOG.com/Galaxy/Configuration/config.json" ]] ; then
|
||||
sed -i 's/"featureOverlay" : true,/"featureOverlay" : false,/' "${WINEPREFIX}/drive_c/${USER}/Local Settings/Application Data/GOG.com/Galaxy/Configuration/config.json"
|
||||
fi
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author:
|
||||
#Game-TS3.exe
|
||||
#Rating=5
|
||||
################################################
|
||||
export PW_VULKAN_USE=0
|
||||
export LAUNCH_PARAMETERS=""
|
||||
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
#Author: deck
|
||||
#Game_f_x64_EOS.exe
|
||||
#Rating=1-5
|
||||
export PW_VULKAN_USE="2"
|
||||
export PW_WINE_USE="WINE_LG"
|
||||
export PW_PREFIX_NAME="AW"
|
||||
export PORTPROTON_NAME="Game_f_x64_EOS"
|
||||
Loaded 100 of 524 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user