Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cc8e7fa515
|
||
|
|
8865def11e
|
||
|
|
69f3d087b3
|
||
|
|
39c9e0e7ee
|
||
|
|
bdc486f695 | ||
|
|
385a2b3535
|
||
|
|
f740ef1a53 | ||
|
|
b78f838ffd
|
||
|
|
36ca8a6b86
|
||
|
|
fb7e5b4c0c
|
||
|
|
c3235ed7d0
|
||
|
|
5676daa573
|
||
|
|
fba71245ef | ||
|
|
8c2b80c97e | ||
|
|
dbab969bd7 | ||
|
|
a8c273c7f1
|
||
|
|
1bfdf82770
|
||
|
|
3645b7828b
|
||
|
|
1b72223930
|
||
|
|
8268b95b53
|
||
|
|
0477e065f2
|
||
|
|
5d027a9c8a
|
||
|
|
fbda9ae455
|
||
|
|
e34ae0642d
|
||
|
|
0f28fa8474 | ||
|
|
41f24c9cbc | ||
|
|
e11a1e1a93 | ||
|
|
b8c1d8595f
|
||
|
|
4096bd541c | ||
|
|
8c934f5875
|
||
|
|
3a82a5859b
|
||
|
|
8305d6ed65 | ||
|
|
2b863718f4 | ||
|
|
c5bdc0db28 | ||
|
|
74e4b9e747 | ||
|
|
e15df2eebb | ||
|
|
c3a02ed71d | ||
|
|
4efc5caac9
|
||
|
|
57a87594af
|
||
|
|
6157d58d83 | ||
|
|
c085c31005 | ||
|
|
863bec41a0 | ||
|
|
dc721cc697 | ||
|
|
e8521a6a98 | ||
|
|
acc4818266
|
||
|
|
70685e0f45
|
||
|
|
a7f5e0dfe9
|
||
|
|
a0bd1f73d6
|
||
|
|
352420cdf8
|
||
|
|
b0da061a29
|
||
|
|
27d1ccf7a8
|
||
|
|
3847da55ab
|
||
|
|
3e1e032618
|
||
|
|
a0c5b33114
|
||
|
|
46cedbc934
|
||
|
|
c7669a3c42
|
||
|
|
589d2e6d5f
|
||
|
|
da681007c9
|
||
|
|
f8fa900a22
|
||
|
|
30c3882b65
|
||
|
|
527b0c1af0
|
||
|
|
1016a864ed
|
||
|
|
951503c48b
|
||
|
|
451d57a6d2
|
||
|
|
392f24f244
|
||
|
|
b44ff8bbb6
|
||
|
|
97a348585f
|
||
|
|
ef8ee4a821
|
||
|
|
b831742277
|
||
|
|
c1a45747e9
|
||
|
|
4e40460ba2
|
||
|
|
b66841e8b7
|
||
|
|
4d34c24cdf
|
||
|
|
65bc286494
|
||
|
|
cb91b41b46
|
||
|
|
c24aec0e40
|
||
|
|
54271548ec
|
||
|
|
a9552a3c1b
|
||
|
|
88c30025de
|
||
|
|
1aac62b647
|
||
|
|
08131ea53f
|
||
|
|
2666159375
|
||
|
|
3515ad0ac5
|
||
|
|
0875896e45
|
||
|
|
4f406cc966
|
||
|
|
f9e0081fd6
|
||
|
|
bc4ba2169d
|
||
|
|
cfc05c2017
|
||
|
|
55fba9260e
|
||
|
|
ebc480883a
|
||
|
|
3548a48b8a
|
||
|
|
cdf36315f1
|
||
|
|
6b9e33e1f1
|
||
|
|
4bcfd1ae65 | ||
|
|
aeb74ea38d | ||
|
|
7b8127679c
|
||
|
|
1364164524
|
||
|
|
0339906d4c
|
||
|
|
38881b93c2 | ||
|
|
b16bd492af
|
||
|
|
afcfef4d03
|
||
|
|
92ba82ae63
|
||
|
|
832eb97597
|
||
|
|
ab2596b6e8
|
||
|
|
7377ec64a8
|
||
|
|
3503a72db0
|
||
|
|
803845d9e0
|
||
|
|
a1b3712305
|
||
|
|
2ce7eab624
|
||
|
|
1b48890b0e
|
||
|
|
bef746596f
|
||
|
|
aa55d183d6
|
||
|
|
56f7d37841 | ||
|
|
8060c93e9e | ||
|
|
4b820a831c | ||
|
|
3961927998 | ||
|
|
883f3df205 | ||
|
|
b20c3d270f | ||
|
|
958a61752b | ||
|
|
43912fd002 | ||
|
|
c4cfdee072 | ||
|
|
c45f9d197c | ||
|
|
d154011b2d | ||
|
|
e98f4353a3
|
||
|
|
fcea437edf
|
||
|
|
582ed38c15
|
||
|
|
40e6b40bd9
|
||
|
|
39435bacb8 | ||
|
|
6349b2dfec | ||
|
|
e58b6aa912
|
||
|
|
b8e220bea1
|
||
|
|
17e78ac592
|
||
|
|
2af942e7c9
|
||
|
|
61bceca3dd
|
||
|
|
f010dd123a
|
||
|
|
8b080ebc65
|
||
|
|
ffef9b5145
|
||
|
|
65b94b02e8
|
||
|
|
aac34b89f2
|
||
|
|
65c81fa7ea | ||
|
|
004f9139b6 | ||
|
|
4091fd0382
|
||
|
|
f85e71ea7d
|
||
|
|
0d4a8905ce
|
||
|
|
70dea7c447 | ||
|
|
6ffa04bfac | ||
|
|
510da6b95f | ||
|
|
230003fde2
|
||
|
|
3231f89a9e
|
||
|
|
a67db553ec
|
||
|
|
154ac922b1
|
||
|
|
3322bb571c
|
||
|
|
1674efb26d | ||
|
|
845f7c5714 | ||
|
|
b507ca432e | ||
|
|
e7185cafa9 | ||
|
|
cb38008519 | ||
|
|
53e45a2265 | ||
|
|
4e400f95a0 | ||
|
|
53f250548b | ||
|
|
c5cfa30dce | ||
|
|
799ec4a473 | ||
|
|
a6abc3ccb9
|
||
|
|
a0144fc8fc
|
||
|
|
f3bdb5e74b
|
||
|
|
6567ac3431
|
||
|
|
b3c322c6be | ||
|
|
47cbe6b0df | ||
|
|
f5304de50f | ||
|
|
949edeb0aa | ||
|
|
1d4a65def7 | ||
|
|
4fd493f961 | ||
|
|
ef7ccb4755 | ||
|
|
2086f29d5b | ||
|
|
f70cacef0a | ||
|
|
4dc76ca5c5 | ||
|
|
a3a4a606ad
|
||
|
|
208abcce1b
|
||
|
|
ce3962f27c
|
||
|
|
0f01ecafde
|
||
|
|
ce709cc078
|
||
|
|
42b5a356f8
|
||
|
|
66be4780c8
|
||
|
|
09293ad254
|
||
|
|
23c4b662d6 | ||
|
|
2f8d9acc7f
|
||
|
|
055e4e48da
|
||
|
|
e22f747c79
|
||
|
|
30306d0021
|
||
|
|
eadc1c199b
|
||
|
|
a8a445b712 | ||
|
|
f58ccc6499 | ||
|
|
d29153debe | ||
|
|
2e1d1818e1 | ||
|
|
261c48a3db | ||
|
|
7ad81309cf | ||
|
|
eca7cd9d11 | ||
|
|
3384be6745 | ||
|
|
524e49175a | ||
|
|
61cfd86138 | ||
|
|
45461461fd | ||
|
|
4ae371e3e8 | ||
|
|
e0b9f16795 | ||
|
|
7db774fd9e | ||
|
|
a72a8c45ab | ||
|
|
801cc9e7e5 | ||
|
|
af92f4aa34 | ||
|
|
88e724d879 | ||
|
|
51eb8afda0 | ||
|
|
0ae9bad01d | ||
|
|
77f703ff38 | ||
|
|
d0f21ee67c | ||
|
|
6c9b5dbc76 | ||
|
|
e7985e351c | ||
|
|
e1554132a9 | ||
|
|
aee583561a | ||
|
|
b6a1a3b325 | ||
|
|
6159882b7a
|
||
|
|
07fa91b448
|
||
|
|
40450c829e
|
||
|
|
d4efb499ad
|
||
|
|
4d2465a5d2
|
||
|
|
cbcd3e45aa | ||
|
|
ad43008d4c
|
||
|
|
207504b2e1
|
||
|
|
1e0a966e26
|
||
|
|
ff66219d51
|
||
|
|
e8bef95a38
|
||
|
|
924a50f49f
|
||
|
|
90334d3955
|
||
|
|
476cf5b34f | ||
|
|
b3362e72cc
|
||
|
|
261663379d
|
||
|
|
cdd227be6f | ||
|
|
6891e2cd2d
|
||
|
|
66671ec8a4
|
||
|
|
91a2a815ab
|
||
|
|
b5039cd5ca
|
||
|
|
a81f2dbaa7
|
||
|
|
81671edff3
|
||
|
|
3d6ec69cf4
|
||
|
|
41908a851a
|
||
|
|
d27c0ed187
|
||
|
|
0ad04b5670
|
||
|
|
87eea13f3b
|
||
|
|
15483f56c5
|
||
|
|
ad828a3dfc
|
||
|
|
27a86bae07
|
||
|
|
dd5af74e8f
|
||
|
|
bb2edcd5f2
|
||
|
|
6afb39c3bd
|
||
|
|
85b0c5dcb0
|
||
|
|
a65551a5f1
|
||
|
|
6672cfa3af | ||
|
|
2fb58fc929
|
||
|
|
1685d8e672
|
||
|
|
9c99dc7b35
|
||
|
|
8b2c925e7b
|
||
|
|
15f0b076e3
|
||
|
|
b13869cb6a
|
||
|
|
9e2e4585f0
|
||
|
|
b9af6578c3
|
||
|
|
0f1e14b7da
|
||
|
|
be69bcfb46
|
||
|
|
5416e919fc
|
||
|
|
a304c9eaa1
|
||
|
|
b0e11679c6
|
||
|
|
3cdd1eb4f5
|
||
|
|
15faff3218
|
||
|
|
17a1597dec | ||
|
|
b5f19b932f | ||
|
|
22304ede65 | ||
|
|
fa2e15e3cb
|
||
|
|
1561c44cd9
|
||
|
|
cac38d20eb
|
||
|
|
7c8fbb93fb
|
||
|
|
d961ffa231
|
||
|
|
9e9e38fec2
|
||
|
|
5f5c1042c9
|
||
|
|
1650302a26
|
||
|
|
0d3106aa29
|
||
|
|
9f7498fd04
|
||
|
|
9aeeebcf82
|
||
|
|
911540ccfe
|
||
|
|
d01ca79ce2
|
||
|
|
536273bc56
|
||
|
|
cad8444dbc
|
||
|
|
475f3c465e
|
||
|
|
809086fed2
|
||
|
|
369b329eec
|
||
|
|
8c8b0522fc
|
||
|
|
934edc09a6
|
||
|
|
1ebababba7
|
||
|
|
12c2e1b187
|
||
|
|
b4508ff8a6
|
||
|
|
c8710cb778
|
||
|
|
18f8ffa3e8
|
||
|
|
0a82312d98
|
||
|
|
bd1208e54f
|
||
|
|
428f7eadc5
|
||
|
|
03ab9ad489 | ||
|
|
8714849b00
|
||
|
|
aff95eba9e
|
||
|
|
5af4f580b1
|
||
|
|
fed5b46a0a
|
||
|
|
a20260e421
|
||
|
|
ffc0b04699
|
||
|
|
2a7405b246
|
||
|
|
cce0958f44 | ||
|
|
d0a84b610e | ||
|
|
392b66fce2
|
||
|
|
77b182797a
|
||
|
|
3aef1db0c2
|
||
|
|
df6c0bb46e
|
||
|
|
db171e6d52
|
||
|
|
2277cf807a
|
||
|
|
8349db3c10
|
||
|
|
86055b86c7 | ||
|
|
3e895b55ad | ||
|
|
70c011632e | ||
|
|
598194c4a2 | ||
|
|
d70a3eeae4 | ||
|
|
272a32895b | ||
|
|
baad92d97c | ||
|
|
e50ca1f0da | ||
|
|
4a0d2d4ab6 | ||
|
|
ad0af96600 | ||
|
|
cf9243e67e | ||
|
|
b2705c4ed7 | ||
|
|
069cb781a6 | ||
|
|
a86dee1008 | ||
|
|
4f003b6108 | ||
|
|
c8badbcf65 | ||
|
|
f7a33d64ce | ||
|
|
707fd261d5 | ||
|
|
2a9f67ec75 | ||
|
|
8ea369a20a | ||
|
|
7de1efaf97 | ||
|
|
9f63dd4925
|
||
|
|
88aa056a18
|
||
|
|
b606965d9f
|
||
|
|
3739d1f7e0
|
||
|
|
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
|
No files matched your search
@@ -2,14 +2,9 @@ name: Nightly Build - AppImage, Arch, Fedora
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
branch:
|
||||
description: 'Branch to build'
|
||||
required: false
|
||||
default: 'main'
|
||||
|
||||
env:
|
||||
BUILD_BRANCH: ${{ inputs.branch || 'main' }}
|
||||
BUILD_BRANCH: ${{ github.ref_name }}
|
||||
PKGDEST: "/tmp/portprotonqt"
|
||||
PACKAGE: "portprotonqt"
|
||||
|
||||
@@ -18,7 +13,7 @@ jobs:
|
||||
name: Build AppImage
|
||||
runs-on: ubuntu-22.04
|
||||
container:
|
||||
image: archlinux:base-devel@sha256:7c81df532d6307c5bccb3d2561c90bfc981e6c4384d2a61c9e49b7f2d8aa27c0
|
||||
image: archlinux:base-devel@sha256:6db772fd1dd128b9cf7b7231ca5284af70879596fe4ec754c911cfc4ac30d5eb
|
||||
options: --privileged --device /dev/fuse
|
||||
steps:
|
||||
- name: Prepare container
|
||||
@@ -54,7 +49,7 @@ jobs:
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
fedora_version: [41, 42, 43, rawhide]
|
||||
fedora_version: [42, 43, 44, rawhide]
|
||||
|
||||
container:
|
||||
image: fedora:${{ matrix.fedora_version }}
|
||||
@@ -65,7 +60,7 @@ jobs:
|
||||
run: |
|
||||
dnf install -y git rpmdevtools meson ninja-build python3-devel \
|
||||
systemd-rpm-macros vulkan-loader-devel redhat-rpm-config nodejs npm \
|
||||
gcc
|
||||
gcc gettext
|
||||
|
||||
- name: Setup rpmbuild environment
|
||||
run: |
|
||||
@@ -81,7 +76,7 @@ jobs:
|
||||
|
||||
- name: Copy fedora.spec
|
||||
run: |
|
||||
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|" \
|
||||
sed "s|git clone https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt.git|git clone -b ${{ env.BUILD_BRANCH }} https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt.git|" \
|
||||
build-aux/fedora-git.spec > /home/rpmbuild/SPECS/${{ env.PACKAGE }}.spec
|
||||
chown -R rpmbuild:users /home/rpmbuild
|
||||
|
||||
@@ -99,7 +94,7 @@ jobs:
|
||||
name: Build Arch Package
|
||||
runs-on: ubuntu-22.04
|
||||
container:
|
||||
image: archlinux:base-devel@sha256:7c81df532d6307c5bccb3d2561c90bfc981e6c4384d2a61c9e49b7f2d8aa27c0
|
||||
image: archlinux:base-devel@sha256:6db772fd1dd128b9cf7b7231ca5284af70879596fe4ec754c911cfc4ac30d5eb
|
||||
|
||||
steps:
|
||||
- name: Prepare container
|
||||
|
||||
@@ -5,6 +5,7 @@ on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- scripts
|
||||
paths:
|
||||
- 'build-aux/vk_gpu_info.c'
|
||||
- '.gitea/workflows/build-vk-gpu-info-debian.yml'
|
||||
|
||||
@@ -4,11 +4,11 @@ on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
tags:
|
||||
- 'v[0-9]+.[0-9]+.[0-9]+'
|
||||
- 'v[0-9]*.[0-9]*'
|
||||
|
||||
env:
|
||||
# Common version, will be used for tagging the release
|
||||
VERSION: 0.1.11
|
||||
VERSION: 1.0
|
||||
PKGDEST: "/tmp/portprotonqt"
|
||||
PACKAGE: "portprotonqt"
|
||||
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||
@@ -100,7 +100,7 @@ jobs:
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
fedora_version: [41, 42, 43, rawhide]
|
||||
fedora_version: [42, 43, 44, rawhide]
|
||||
|
||||
container:
|
||||
image: fedora:${{ matrix.fedora_version }}
|
||||
@@ -111,7 +111,7 @@ jobs:
|
||||
run: |
|
||||
dnf install -y git rpmdevtools meson ninja-build python3-devel \
|
||||
systemd-rpm-macros vulkan-loader-devel redhat-rpm-config nodejs npm \
|
||||
gcc
|
||||
gcc gettext
|
||||
|
||||
- name: Setup rpmbuild environment
|
||||
run: |
|
||||
@@ -177,6 +177,6 @@ jobs:
|
||||
body_path: changelog.txt
|
||||
token: ${{ env.GITEA_TOKEN }}
|
||||
tag_name: v${{ env.VERSION }}
|
||||
prerelease: true
|
||||
prerelease: false
|
||||
files: release/**/*
|
||||
sha256sum: false
|
||||
@@ -2,7 +2,7 @@ name: Check Translations
|
||||
run-name: Check spelling in translation files
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
branches: [main, scripts]
|
||||
paths:
|
||||
- 'portprotonqt/locales/**'
|
||||
pull_request:
|
||||
@@ -16,6 +16,8 @@ jobs:
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up Python
|
||||
uses: https://gitea.com/actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
|
||||
@@ -26,4 +28,15 @@ jobs:
|
||||
run: pip install pyaspeller babel
|
||||
|
||||
- name: Run spell check
|
||||
run: python dev-scripts/l10n.py --spellcheck
|
||||
run: |
|
||||
if [ "${{ gitea.event_name }}" = "pull_request" ]; then
|
||||
base="${{ gitea.event.pull_request.base.sha }}"
|
||||
else
|
||||
base="${{ gitea.event.before }}"
|
||||
fi
|
||||
|
||||
if [ -z "$base" ] || [ "$base" = "0000000000000000000000000000000000000000" ]; then
|
||||
python dev-scripts/l10n.py --spellcheck
|
||||
else
|
||||
python dev-scripts/l10n.py --spellcheck --changed-since "$base" --changed-to "${{ gitea.sha }}"
|
||||
fi
|
||||
@@ -4,7 +4,10 @@ on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
paths:
|
||||
- 'build-aux/**'
|
||||
- 'build-aux/AppImage/**'
|
||||
- 'build-aux/fedora-git.spec'
|
||||
- 'build-aux/PKGBUILD-git'
|
||||
- '.gitea/workflows/code-build.yml'
|
||||
|
||||
env:
|
||||
PKGDEST: "/tmp/portprotonqt"
|
||||
@@ -65,7 +68,7 @@ jobs:
|
||||
needs: changes
|
||||
if: needs.changes.outputs.appimage == 'true' || github.event_name == 'workflow_dispatch'
|
||||
container:
|
||||
image: archlinux:base-devel@sha256:7c81df532d6307c5bccb3d2561c90bfc981e6c4384d2a61c9e49b7f2d8aa27c0
|
||||
image: archlinux:base-devel@sha256:6db772fd1dd128b9cf7b7231ca5284af70879596fe4ec754c911cfc4ac30d5eb
|
||||
options: --privileged --device /dev/fuse
|
||||
steps:
|
||||
- name: Prepare container
|
||||
@@ -101,7 +104,7 @@ jobs:
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
fedora_version: [41, 42, rawhide]
|
||||
fedora_version: [42, 43, 44, rawhide]
|
||||
|
||||
container:
|
||||
image: fedora:${{ matrix.fedora_version }}
|
||||
@@ -112,7 +115,7 @@ jobs:
|
||||
run: |
|
||||
dnf install -y git rpmdevtools meson ninja-build python3-devel \
|
||||
systemd-rpm-macros redhat-rpm-config nodejs npm \
|
||||
gcc vulkan-loader-devel
|
||||
gcc vulkan-loader-devel gettext
|
||||
|
||||
- name: Setup rpmbuild environment
|
||||
run: |
|
||||
@@ -126,7 +129,7 @@ jobs:
|
||||
|
||||
- name: Copy fedora-git.spec
|
||||
run: |
|
||||
sed "s|git clone https://git.linux-gaming.ru/Boria138/PortProtonQt.git|git clone -b ${{ env.PR_BRANCH }} ${{ env.PR_REPO_URL }}|" \
|
||||
sed "s|git clone https://git.linux-gaming.ru/Linux-Gaming/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
|
||||
|
||||
@@ -146,7 +149,7 @@ jobs:
|
||||
needs: changes
|
||||
if: needs.changes.outputs.arch == 'true' || github.event_name == 'workflow_dispatch'
|
||||
container:
|
||||
image: archlinux:base-devel@sha256:7c81df532d6307c5bccb3d2561c90bfc981e6c4384d2a61c9e49b7f2d8aa27c0
|
||||
image: archlinux:base-devel@sha256:6db772fd1dd128b9cf7b7231ca5284af70879596fe4ec754c911cfc4ac30d5eb
|
||||
|
||||
steps:
|
||||
- name: Prepare container
|
||||
@@ -181,7 +184,7 @@ jobs:
|
||||
cd /__w/portproton-repo
|
||||
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
|
||||
sed -i "s|source=(\"git+https://git.linux-gaming.ru/Linux-Gaming/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"
|
||||
|
||||
|
||||
@@ -2,13 +2,13 @@ name: Code check
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches: [main]
|
||||
branches: [main, scripts]
|
||||
paths-ignore:
|
||||
- "data/**"
|
||||
- "*.md"
|
||||
- "dev-scripts/**"
|
||||
push:
|
||||
branches: [main]
|
||||
branches: [main, scripts]
|
||||
paths-ignore:
|
||||
- "data/**"
|
||||
- "*.md"
|
||||
@@ -23,7 +23,7 @@ jobs:
|
||||
- uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||
|
||||
- name: Set up Node.js
|
||||
uses: https://gitea.com/actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
|
||||
uses: https://gitea.com/actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ on:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
if: gitea.repository == 'Boria138/PortProtonQt'
|
||||
if: gitea.repository == 'Linux-Gaming/PortProtonQt'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
|
||||
@@ -8,12 +8,12 @@ on:
|
||||
jobs:
|
||||
renovate:
|
||||
runs-on: ubuntu-latest
|
||||
container: ghcr.io/renovatebot/renovate:latest@sha256:eec497df1ca6ebe8bccf577c5dab8825ab5f3673a42a58f066e31dbf070664e6
|
||||
container: ghcr.io/renovatebot/renovate:latest@sha256:2ccc5b1f0340593c40e1598547aa98feee4e521a0906a423fe0be0431a733dfa
|
||||
steps:
|
||||
- uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||
|
||||
- name: Set up Node.js
|
||||
uses: https://gitea.com/actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
|
||||
uses: https://gitea.com/actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
@@ -30,9 +30,13 @@ jobs:
|
||||
-o /tmp/renovate-config/config.js
|
||||
|
||||
- name: Run Renovate
|
||||
run: renovate
|
||||
run: |
|
||||
. $HOME/.local/bin/env
|
||||
uv --version
|
||||
renovate
|
||||
env:
|
||||
RENOVATE_CONFIG_FILE: "/tmp/renovate-config/config.js"
|
||||
RENOVATE_BINARY_SOURCE: "global"
|
||||
GITHUB_COM_TOKEN: ${{ secrets.GITHUB_COM_TOKEN }}
|
||||
LOG_LEVEL: "debug"
|
||||
RENOVATE_TOKEN: ${{ secrets.RENOVATE_TOKEN }}
|
||||
RENOVATE_GITHUB_COM_TOKEN: ${{ secrets.RENOVATE_GITHUB_COM_TOKEN }}
|
||||
+11
@@ -39,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
|
||||
+11
-2
@@ -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: ./dev-scripts/check_bash_scripts.sh
|
||||
language: system
|
||||
files: ^build-aux/share/portproton/scripts/
|
||||
types: [file]
|
||||
|
||||
- repo: local
|
||||
hooks:
|
||||
@@ -46,5 +55,5 @@ repos:
|
||||
name: Check meson.build syntax and file inclusion
|
||||
entry: ./dev-scripts/check_meson_files.py
|
||||
language: system
|
||||
files: (^portprotonqt/.*\.py$|meson\.build$)
|
||||
files: (^portprotonqt/.*\.py$|^build-aux/share/portproton/|meson\.build$)
|
||||
pass_filenames: false
|
||||
@@ -0,0 +1,826 @@
|
||||
# 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.
|
||||
- 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 change formatting-only lines without explicit user request
|
||||
- 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 modify localization files (`portprotonqt/locales/`) unless explicitly requested
|
||||
- Do not extract single-use logic into a helper function without a clear need
|
||||
- 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
|
||||
- Keep formatting changes limited to touched logic or required hook fixes
|
||||
|
||||
---
|
||||
|
||||
## 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 and shebang `CRLF` 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`
|
||||
- [ ] If CLI arguments are changed: update `dev-scripts/generate-completions.sh` (do not regenerate `completions/` unless explicitly requested for build/release)
|
||||
- [ ] 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 |
|
||||
|
||||
### Compatibility
|
||||
|
||||
- Keep `dbus-fast` 2.x compatibility for Fedora
|
||||
- Do not use `dbus_fast.annotations` or `DBusSignature`
|
||||
|
||||
**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
|
||||
+188
@@ -3,6 +3,194 @@
|
||||
Все заметные изменения в этом проекте фиксируются в этом файле.
|
||||
Формат основан на [Keep a Changelog](https://keepachangelog.com/) и придерживается принципов [Semantic Versioning](https://semver.org/).
|
||||
|
||||
## [1.0] - 2026-05-23
|
||||
|
||||
### Added
|
||||
- Окно теперь можно перетаскивать левой кнопкой мыши по любой области
|
||||
- В файловый менеджер добавлены действия создания, удаления и переименования папки
|
||||
- В файловый менеджер добавлены иконки для резервных копий префиксов PortProton
|
||||
- Достигнут 100% паритет с PortProton
|
||||
- Добавлен экономный режим с минимальным количеством сетевых запросов
|
||||
- Добавлено больше типов анимаций для карточки
|
||||
- PortProtonQT теперь имеет встроенные скрипты, и не требуют установленного PortProton для работы
|
||||
- Проведена общая чистка кода, как скриптов PortProton так и кода PortProtonQT
|
||||
- В скриптах добавлен фикс для работы Melon Mod-Loader
|
||||
- В скриптах улучшен код запрета ухода в сон и удалена зависимость от systemd
|
||||
- В настройки PortProtonQt добавлена галочка `Использовать системный DPI для Wine`
|
||||
- В настройки PortProtonQt добавлена галочка `Отключить скачивание контейнера` которая позволяет не скачивать Steam Runtime
|
||||
- Аргумент командной строки `--silent` для запуска `exe` с минимальным треем
|
||||
- В трей добавлена остановка запущенной игры
|
||||
- В скриптах добавлена поддержка внешних Proton из каталогов Steam `steamapps` и `compatibilitytools.d`
|
||||
- Добавлена классическая тема, приближенная по внешнему виду к PortProton для облегчения перехода на PortProtonQt
|
||||
- Добавлены светлые темы
|
||||
- Добавлен выбор цветовой схемы во вкладку `Темы`
|
||||
- Для обложек добавлена поддержка APNG, animated WebP, GIF и JXL
|
||||
- Добавлена поддержка запуска `.mdf`
|
||||
- Добавлена MIME-ассоциация `.ppack` с PortProtonQt для восстановления резервных копий префиксов из файлового менеджера
|
||||
- Добавлен аргумент командной строки `--restore-prefix` для восстановления резервной копии префикса
|
||||
- Добавлен аргумент командной строки `--create-backup` для создания резервной копии префикса
|
||||
- Добавлена приостановка фоновой активности при потере фокуса окна
|
||||
- При запуске теперь генерируются отсутствующие изображения в `data/img` для найденных `.exe`
|
||||
- Для игр из Steam добавлено создание ярлыков на рабочем столе и в меню
|
||||
- В контекстное меню игр из Steam добавлено открытие папки игры
|
||||
- В настройки добавлена загрузка Wine/Proton в Steam `compatibilitytools.d`
|
||||
- В настройки добавлен выбор зеркала загрузок PortProton
|
||||
- В настройки `.exe` добавлена кнопка очистки PPDB
|
||||
- Аргументы командной строки `--clear-cache` и `--reset-settings`
|
||||
- Добавлено переключение вкладок при клике по стрелкам навигации
|
||||
- При запуске через инструмент совместимости Steam добавлена поддержка переменных PortProton
|
||||
|
||||
### Changed
|
||||
- Бейджи источников (Steam и PortProton) теперь отображаются при любом фильтре библиотеки
|
||||
- В стандартных закладках файлового менеджера добавлена домашняя папка пользователя и удалён корневой каталог `/`
|
||||
- Обложки к играм из Steam теперь полностью локальные
|
||||
- Улучшен механизм кеширования данных
|
||||
- Тип геймпада `Xbox` `PS` теперь выбирается автоматически
|
||||
- Улучшено общее управление геймпадом
|
||||
- По умолчанию приложение больше не скрывается в трей при закрытии
|
||||
- `PROTON_LG` и `WINE_LG` теперь отображаются первыми в списках Wine/Proton
|
||||
- Вкладка автоустановок приведена к виду библиотеки
|
||||
- В настройках `.exe` и debug-логе `PROTON_LG` и `WINE_LG` теперь отображаются с текущей версией
|
||||
- Из debug-лога убран повторный вывод `PW_WINE_USE`, `PW_SCREEN_RESOLUTION` и `PW_SCREEN_PRIMARY`
|
||||
- Карточки игр теперь помечают потерянные `.exe` и делают обложку блеклой
|
||||
- При запуске игры теперь отображаются загрузка и распаковка контейнера и плагинов
|
||||
- Формат BMP больше не поддерживается для обложек игр
|
||||
- Автоматическое фоновое обновление Bluetooth-устройств удалено
|
||||
- Улучшенно качестве иконок из `exe` файлов
|
||||
- В трей добавлены компактный и детальный режимы меню
|
||||
- Автоустановки теперь можно остановить
|
||||
- Префиксы `DEFAULT`, `DOTNET` и `PROGRAMS` теперь всегда отображаются вверху списков префиксов
|
||||
- Из лога удалена версия скриптов, так как скрипты теперь внутри PortProtonQt
|
||||
- Из downloader удалена отдельная проверка сети через Yandex и Google
|
||||
- Выбор видеокарты теперь не отображается в настройках PortProtonQt если видеокарта всего одна
|
||||
- Через тему теперь можно указать режим сетки библиотеки
|
||||
- Теме теперь можно указать из какой темы наследоваться, а не только из стандартной
|
||||
- Виртуальная клавиатура теперь имеет анимацию появления
|
||||
- В настройках MangoHud и Gamescope при выключении, а также при использовании системного конфига MangoHud теперь скрываются лишние элементы управления
|
||||
- Поле запуска второго `.exe` теперь поддерживает относительные пути
|
||||
- Сетка библиотеки теперь обновляется после восстановления резервной копии префикса
|
||||
- Xterm заменён на самописный терминал с улучшенной интеграцией с winecmd
|
||||
- `PROTON_LG` обновлён до версии `10-30`
|
||||
- Удалена поддержка запуска через `muvm` и аргумент командной строки `--force-muvm`
|
||||
- Начат испанский перевод `https://translate.codeberg.org/projects/portprotonqt/portprotonqt/es/`
|
||||
- Добавлен перевод на Китайский (упрощённый) `https://translate.codeberg.org/projects/portprotonqt/portprotonqt/zh_Hans/`
|
||||
- Пресет MangoHud `Стандартный PortProton` переименован в `PortProton`
|
||||
|
||||
### Fixed
|
||||
- Исправлено определение `PW_USE_RUNTIME` в debug-логе
|
||||
- SGDB теперь не пытается получить обложки для игр из автоустовок
|
||||
- Оптимизирован предпросмотр изображений в файловом менеджере
|
||||
- Исправлено зависание интерфейса при открытии раздела Bluetooth в системе без физического Bluetooth-адаптера
|
||||
- Исправлено лишнее пустое пространство в выпадающих списках `QComboBox`
|
||||
- Исправлена прокрутка страницы колесом мыши над закрытым `QComboBox`
|
||||
- Исправлено дёрганное переключение между библиотекой и автоустановками
|
||||
- Детальная страница игры теперь открывается плавнее при загрузке обложки
|
||||
- Steam Compatdata теперь учитывает Flatpak-установку PortProtonQt
|
||||
- Аргумент `--resolution` теперь не разворачивает окно если `start_minimized = True`
|
||||
- Исправлено создание и удаление ярлыков через контекстное меню для игр с именем из `custom_data`
|
||||
- `custom_data` теперь применяется сразу после добавления игры из автоустановок и редактирования ярлыка
|
||||
- Исправлено управление геймпадом в диалоге выбора файла для загрузки PPDB
|
||||
- Исправлен повторный вывод одинаковых Vulkan GPU в `vk_gpu_info`
|
||||
- Исправлена работа клавиатурного управления при раскладке, отличной от английской
|
||||
- Исправлена загрузка данных HowLongToBeat
|
||||
- Исправлена навигация геймпадом к кнопке выбора второго `.exe`
|
||||
- Исправлено размытие SVG-иконок при масштабировании интерфейса
|
||||
- В настройках игр из Steam больше не отображаются неподдерживаемые Wine/Proton
|
||||
- Исправлена работа portablle версии gamemode
|
||||
- Исправлен запуск через инструмент совместимости Steam без файла `.ppdb`
|
||||
|
||||
### Contributors
|
||||
- @Dervart
|
||||
- @Castro-Fidel
|
||||
- @Simple16
|
||||
- @gallegonovato
|
||||
- @Poesty Li
|
||||
|
||||
---
|
||||
|
||||
## [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
|
||||
|
||||
@@ -86,15 +86,351 @@ The above copyright notice and this permission notice shall be included in all c
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
==============
|
||||
= legendary: =
|
||||
==============
|
||||
GNU General Public License v3.0
|
||||
===============================
|
||||
= mdf2iso : =
|
||||
===============================
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (c) 2020–2025 Derek Taylor and contributors
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Legendary is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published
|
||||
by the Free Software Foundation, version 3.
|
||||
Preamble
|
||||
|
||||
https://github.com/derrod/legendary
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
||||
@@ -1,7 +1,7 @@
|
||||
<div align="center">
|
||||
<img src="build-aux/share/icons/hicolor/scalable/apps/ru.linux_gaming.PortProtonQt.svg" width="64">
|
||||
<h1 align="center">PortProtonQt</h1>
|
||||
<p align="center">Удобный графический интерфейс для управления и запуска игр из PortProton, Steam и Epic Games Store. Оно объединяет библиотеки игр в единый центр для лёгкой навигации и организации. Лёгкая структура и кроссплатформенная поддержка обеспечивают цельный игровой опыт без необходимости использования нескольких лаунчеров. Интеграция с PortProton упрощает запуск Windows-игр на Linux с минимальной настройкой.</p>
|
||||
<p align="center">Современный и удобный интерфейс для управления и запуска игр из PortProton и Steam. Объединяет библиотеки в одном месте и упрощает запуск Windows-игр на Linux.</p>
|
||||
</div>
|
||||
|
||||
### Установка (devel)
|
||||
@@ -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
|
||||
@@ -22,16 +24,21 @@ source .venv/bin/activate
|
||||
|
||||
### Разработка
|
||||
|
||||
В проект встроен линтер (ruff), статический анализатор (pyright) и проверка lock файла, если эти проверки не пройдут PR не будет принят, поэтому перед коммитом введите такую команду
|
||||
Для автоматической подготовки окружения (установка Python 3.10, зависимостей, pre-commit хуков и генерация переводов) выполните скрипт:
|
||||
|
||||
```sh
|
||||
uv python install 3.10
|
||||
uv sync --all-extras --dev
|
||||
source .venv/bin/activate
|
||||
pre-commit install
|
||||
./dev-scripts/prepare_env.sh
|
||||
```
|
||||
|
||||
pre-commit сам запустится при коммите, если вы хотите запустить его вручную введите команду
|
||||
Затем активируйте виртуальное окружение. Команда активации для вашей оболочки будет выведена в конце работы скрипта. Обычно это:
|
||||
|
||||
```sh
|
||||
source .venv/bin/activate # Для bash/zsh
|
||||
# или
|
||||
source .venv/bin/activate.fish # Для fish
|
||||
```
|
||||
|
||||
pre-commit сам запустится при коммите, если вы хотите запустить его вручную введите команду:
|
||||
|
||||
```sh
|
||||
pre-commit run --all-files
|
||||
@@ -45,19 +52,17 @@ pre-commit run --all-files
|
||||
|
||||
### Контрибьюторы
|
||||
|
||||
Мы благодарим всех, кто внёс вклад в развитие PortProtonQt, включая тех, кто участвует через коммиты, а также тех, кто помогает другими способами (тестирование, идеи, переводы, документация и т.д.). Полный список участников, можно найти в [списке активности репозитория](https://git.linux-gaming.ru/Boria138/PortProtonQt/activity/contributors). Дополнительные участники также перечислены в файле [CHANGELOG.md](CHANGELOG.md). Если вы внесли вклад, но не указаны, свяжитесь с основными разработчиками, чтобы мы могли вас отметить!
|
||||
Мы благодарим всех, кто внёс вклад в развитие PortProtonQt, включая тех, кто участвует через коммиты, а также тех, кто помогает другими способами (тестирование, идеи, переводы, документация и т.д.). Полный список участников, можно найти в [списке активности репозитория](https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt/activity/contributors). Дополнительные участники также перечислены в файле [CHANGELOG.md](CHANGELOG.md). Если вы внесли вклад, но не указаны, свяжитесь с основными разработчиками, чтобы мы могли вас отметить!
|
||||
|
||||
## Зависимости и лицензии
|
||||
|
||||
PortProtonQt использует код и зависимости от следующих проектов:
|
||||
|
||||
- [Legendary](https://github.com/derrod/legendary) — инструмент для работы с Epic Games Store, лицензия [GPL-3.0](https://github.com/derrod/legendary/blob/master/LICENSE).
|
||||
- [Icoextract](https://github.com/jlu5/icoextract) — библиотека для извлечения иконок, лицензия [MIT](https://github.com/jlu5/icoextract/blob/master/LICENSE).
|
||||
- [HowLongToBeat Python API](https://github.com/ScrappyCocco/HowLongToBeat-PythonAPI) — библиотека для взаимодействия с HowLongToBeat, лицензия [MIT](https://github.com/ScrappyCocco/HowLongToBeat-PythonAPI/blob/master/LICENSE.md).
|
||||
- [iat](https://sourceforge.net/projects/iat.berlios) — библиотека для конвертации mdf в iso, лицензия GPLv3
|
||||
- [pyte](https://github.com/selectel/pyte) — разбор ANSI escape-кодов, лицензия [LGPLv3](https://github.com/selectel/pyte?tab=LGPL-3.0-1-ov-file)
|
||||
Полный текст лицензий см. в файле [LICENSE](LICENSE).
|
||||
|
||||
> [!WARNING]
|
||||
> Проект находится на стадии WIP (work in progress) корректная работоспособность не гарантирована
|
||||
|
||||
> [!WARNING]
|
||||
> **Будьте осторожны!** Если вы берёте тему не из официального репозитория или надёжного источника, убедитесь, что в её файле `styles.py` нет вредоносного или нежелательного кода. Поскольку `styles.py` — это обычный Python-файл, он может содержать любые инструкции. Всегда проверяйте содержимое чужих тем перед использованием.
|
||||
@@ -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 (остались настройки игр и обновление скриптов)
|
||||
- [X] Достигнуть паритета функциональности с PortProton
|
||||
- [X] Добавить возможность изменения названия, описания и обложки через файлы `.local/share/PortProtonQT/custom_data/exe_name/{desc,name,cover}`
|
||||
- [X] Добавить встроенное переопределение названия, описания и обложки, например, по пути `portprotonqt/custom_data` [Документация](documentation/metadata_override/)
|
||||
- [X] Добавить переводы в переопределения
|
||||
@@ -31,14 +30,6 @@
|
||||
- [X] Добавить в карточки данные с AreWeAntiCheatYet
|
||||
- [X] Продублировать бейджи с карточки на страницу с деталями игры
|
||||
- [X] Добавить парсинг ярлыков из Steam
|
||||
- [X] Добавить парсинг ярлыков из EGS
|
||||
- [ ] Избавиться от бинарника legendary
|
||||
- [X] Добавить запуск игр из EGS
|
||||
- [ ] Добавить скачивание игр из EGS
|
||||
- [ ] Добавить поддержку запуска сторонних игр из EGS
|
||||
- [ ] Добавить авторизацию в EGS через WebView вместо ручного ввода
|
||||
- [X] Получать описания для игр из EGS через их [API](https://store-content.ak.epicgames.com/api)
|
||||
- [X] Получать slug через GraphQL [запрос](https://launcher.store.epicgames.com/graphql)
|
||||
- [X] Добавить на карточку бейдж, указывающий, что игра из Steam
|
||||
- [X] Добавить поддержку версий Steam для Flatpak и Snap
|
||||
- [X] Реализовать добавление игры как сторонней в Steam без перезапуска
|
||||
|
||||
@@ -5,7 +5,7 @@ set -eu
|
||||
# Initialize variables
|
||||
LOCAL_MODE=false
|
||||
BRANCH="main"
|
||||
REPO_URL="https://git.linux-gaming.ru/Boria138/PortProtonQt.git"
|
||||
REPO_URL="https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt.git"
|
||||
|
||||
# Parse arguments
|
||||
while [ $# -gt 0 ]; do
|
||||
@@ -47,7 +47,7 @@ if [ "$LOCAL_MODE" = true ]; then
|
||||
PPQT_PKGBUILD=""
|
||||
else
|
||||
echo "Using stable version of PortProtonQt from main branch..."
|
||||
PPQT_PKGBUILD="https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/build-aux/PKGBUILD"
|
||||
PPQT_PKGBUILD="https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt/raw/branch/main/build-aux/PKGBUILD"
|
||||
fi
|
||||
|
||||
echo "Tweak makepkg..."
|
||||
@@ -88,7 +88,7 @@ EOM
|
||||
# Disable locale noextract
|
||||
sed -i -E 's@[[:space:]]*usr/share/locale/\*@@g; s@[[:space:]]+@ @g; s@[[:space:]]+$@@' /etc/pacman.conf
|
||||
|
||||
pacman -Syy
|
||||
pacman -Syyu --noconfirm --disable-download-timeout
|
||||
|
||||
echo "Building PortProtonQt from PKGBUILD..."
|
||||
echo "---------------------------------------------------------------"
|
||||
@@ -97,9 +97,23 @@ if [ "$LOCAL_MODE" = true ]; then
|
||||
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
|
||||
sed -i "s|source=(\"git+https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt.git\")|source=(\"git+${REPO_URL}#branch=$BRANCH\")|" PKGBUILD
|
||||
makepkg -si --noconfirm
|
||||
|
||||
echo "Installing optional runtime dependencies from PKGBUILD..."
|
||||
echo "---------------------------------------------------------------"
|
||||
OPTDEPENDS_PACKAGES="$(sed -n '/optdepends=(/,/)/p' PKGBUILD \
|
||||
| grep -o "'[^']*'" \
|
||||
| sed "s/'//g" \
|
||||
| awk -F: '{print $1}' \
|
||||
| tr '\n' ' ' \
|
||||
| xargs)"
|
||||
|
||||
if [ -n "${OPTDEPENDS_PACKAGES// /}" ]; then
|
||||
# Install all optional dependencies used by system integrations.
|
||||
pacman -S --needed --noconfirm $OPTDEPENDS_PACKAGES
|
||||
fi
|
||||
|
||||
echo "Installing debloated packages..."
|
||||
echo "---------------------------------------------------------------"
|
||||
wget --retry-connrefused --tries=30 "$EXTRA_PACKAGES" -O ./get-debloated-pkgs.sh
|
||||
|
||||
@@ -11,6 +11,7 @@ export DESKTOP=/usr/share/applications/ru.linux_gaming.PortProtonQt.desktop
|
||||
export ICON=/usr/share/icons/hicolor/scalable/apps/ru.linux_gaming.PortProtonQt.svg
|
||||
export OUTNAME=PortProtonQt-"$VERSION"-anylinux-"$ARCH".AppImage
|
||||
export DEPLOY_OPENGL=1
|
||||
export DEPLOY_SDL=1
|
||||
export DEPLOY_SYS_PYTHON=1
|
||||
export OPTIMIZE_LAUNCH=1
|
||||
|
||||
@@ -25,6 +26,14 @@ 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
|
||||
|
||||
# Add PortProton scripts
|
||||
mkdir -p ./AppDir/share
|
||||
if [ -d /usr/local/share/portproton ]; then
|
||||
cp -r /usr/local/share/portproton ./AppDir/share
|
||||
elif [ -d /usr/share/portproton ]; then
|
||||
cp -r /usr/share/portproton ./AppDir/share
|
||||
fi
|
||||
|
||||
# Deploy dependencies
|
||||
# Qt libs have to be passed manually due to the app being a python script
|
||||
./quick-sharun \
|
||||
@@ -32,7 +41,7 @@ cp /usr/lib/udev/rules.d/60-portprotonqt.rules ./AppDir/etc/udev/rules.d
|
||||
/usr/lib/libQt6Core.so* \
|
||||
/usr/lib/libQt6Gui.so* \
|
||||
/usr/lib/libQt6Network.so* \
|
||||
/usr/lib/libudev.so*
|
||||
/usr/lib/qt6/plugins/imageformats/libqwebp.so
|
||||
|
||||
# Turn AppDir into AppImage
|
||||
./quick-sharun --make-appimage
|
||||
+38
-11
@@ -1,15 +1,14 @@
|
||||
pkgname=portprotonqt
|
||||
pkgver=0.1.11
|
||||
pkgname=('portprotonqt' 'portprotonqt-steam-compat')
|
||||
pkgver=1.0
|
||||
pkgrel=1
|
||||
pkgdesc="Modern GUI for managing and launching games from PortProton, Steam, and Epic Games Store"
|
||||
pkgdesc="Modern GUI for managing and launching games from PortProton and Steam"
|
||||
arch=('any')
|
||||
url="https://git.linux-gaming.ru/Boria138/PortProtonQt"
|
||||
url="https://git.linux-gaming.ru/Linux-Gaming/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' 'python-beautifulsoup4' 'python-websocket-client' 'cabextract' 'unzip' 'curl' 'unrar' 'qt6-svg' 'pciutils' 'mesa-utils' 'vulkan-icd-loader')
|
||||
depends_aarch64=('muvm')
|
||||
makedepends=('meson' 'ninja' 'vulkan-headers')
|
||||
source=("git+https://git.linux-gaming.ru/Boria138/PortProtonQt#tag=v$pkgver")
|
||||
depends=('python-requests' 'python-babel' 'python-evdev' 'python-pygame' 'python-orjson'
|
||||
'python-psutil' 'python-tqdm' 'python-vdf' 'python-libarchive-c' 'pyside6' 'python-rapidfuzz' 'python-pefile' 'python-pillow' 'perl-image-exiftool' 'python-websocket-client' 'cabextract' 'unzip' 'curl' 'jq' 'file' 'findutils' 'gawk' 'grep' 'tar' 'xz' 'zstd' 'gzip' 'unrar' 'qt6-svg' 'qt6-imageformats' 'pciutils' 'mesa-utils' 'vulkan-icd-loader' 'procps-ng' 'psmisc' 'squashfs-tools' '7zip' 'python-dbus-fast')
|
||||
makedepends=('meson' 'ninja' 'vulkan-headers' 'gettext')
|
||||
source=("git+https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt#tag=v$pkgver")
|
||||
sha256sums=('SKIP')
|
||||
|
||||
build() {
|
||||
@@ -17,6 +16,34 @@ build() {
|
||||
meson compile -C build
|
||||
}
|
||||
|
||||
package() {
|
||||
meson install -C build --destdir "$pkgdir"
|
||||
package_portprotonqt() {
|
||||
pkgdesc="Modern GUI for managing and launching games from PortProton and Steam"
|
||||
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-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,15 +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 and Steam (development build)"
|
||||
arch=('any')
|
||||
url="https://git.linux-gaming.ru/Boria138/PortProtonQt"
|
||||
url="https://git.linux-gaming.ru/Linux-Gaming/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' 'python-beautifulsoup4' 'python-websocket-client' 'cabextract' 'unzip' 'curl' 'unrar' 'qt6-svg' 'pciutils' 'mesa-utils' 'vulkan-icd-loader')
|
||||
depends_aarch64=('muvm')
|
||||
makedepends=('meson' 'ninja' 'vulkan-headers')
|
||||
source=("git+https://git.linux-gaming.ru/Boria138/PortProtonQt.git")
|
||||
depends=('python-requests' 'python-babel' 'python-evdev' 'python-pygame' 'python-orjson'
|
||||
'python-psutil' 'python-tqdm' 'python-vdf' 'python-libarchive-c' 'pyside6' 'python-rapidfuzz' 'python-pefile' 'python-pillow' 'perl-image-exiftool' 'python-websocket-client' 'cabextract' 'unzip' 'curl' 'jq' 'file' 'findutils' 'gawk' 'grep' 'tar' 'xz' 'zstd' 'gzip' 'unrar' 'qt6-svg' 'qt6-imageformats' 'pciutils' 'mesa-utils' 'vulkan-icd-loader' 'procps-ng' 'psmisc' 'squashfs-tools' '7zip' 'python-dbus-fast')
|
||||
makedepends=('meson' 'ninja' 'vulkan-headers' 'gettext')
|
||||
source=("git+https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt.git")
|
||||
sha256sums=('SKIP')
|
||||
|
||||
pkgver() {
|
||||
@@ -18,10 +17,38 @@ pkgver() {
|
||||
}
|
||||
|
||||
build() {
|
||||
arch-meson PortProtonQt build
|
||||
arch-meson PortProtonQt build -Dnightly=true
|
||||
meson compile -C build
|
||||
}
|
||||
|
||||
package() {
|
||||
meson install -C build --destdir "$pkgdir"
|
||||
package_portprotonqt-git() {
|
||||
pkgdesc="Modern GUI for managing and launching games from PortProton and Steam (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-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
|
||||
}
|
||||
+55
-15
@@ -1,5 +1,5 @@
|
||||
%global pypi_name portprotonqt
|
||||
%global pypi_version 0.1.11
|
||||
%global pypi_version 1.0
|
||||
%global oname PortProtonQt
|
||||
%global build_timestamp %(date +"%Y%m%d")
|
||||
%global _python_no_extras_requires 1
|
||||
@@ -9,66 +9,92 @@
|
||||
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)
|
||||
Summary: Modern GUI for managing and launching games from PortProton and Steam (development build)
|
||||
|
||||
License: GPL-3.0
|
||||
URL: https://git.linux-gaming.ru/Boria138/PortProtonQt
|
||||
URL: https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt
|
||||
ExclusiveArch: x86_64 aarch64
|
||||
|
||||
BuildRequires: meson >= 0.61.2
|
||||
BuildRequires: ninja-build
|
||||
BuildRequires: python3-devel
|
||||
BuildRequires: git
|
||||
BuildRequires: gettext
|
||||
BuildRequires: systemd-rpm-macros
|
||||
BuildRequires: vulkan-loader-devel
|
||||
BuildRequires: gcc
|
||||
|
||||
Obsoletes: python3-%{pypi_name}-git < %{version}-%{release}
|
||||
Provides: python3-%{pypi_name}-git = %{version}-%{release}
|
||||
|
||||
Requires: python3-babel
|
||||
Requires: python3-evdev
|
||||
Requires: python3-icoextract
|
||||
Requires: python3-websocket-client
|
||||
Requires: python3-orjson
|
||||
Requires: python3-psutil
|
||||
Requires: python3-pyside6
|
||||
Requires: python3-pyudev
|
||||
Requires: python3-pygame
|
||||
Requires: python3-requests
|
||||
Requires: python3-tqdm
|
||||
Requires: python3-vdf
|
||||
Requires: python3-pefile
|
||||
Requires: python3-pillow
|
||||
Requires: python3-beautifulsoup4
|
||||
Requires: python3-pillow-qt
|
||||
Requires: python3-rapidfuzz
|
||||
Requires: python3-libarchive-c
|
||||
Requires: perl-Image-ExifTool
|
||||
Requires: qt6-qtsvg
|
||||
Requires: qt6-qtimageformats
|
||||
Requires: cabextract
|
||||
Requires: gzip
|
||||
Requires: unzip
|
||||
Requires: curl
|
||||
Requires: jq
|
||||
Requires: file
|
||||
Requires: findutils
|
||||
Requires: gawk
|
||||
Requires: grep
|
||||
Requires: tar
|
||||
Requires: xz
|
||||
Requires: zstd
|
||||
Requires: unrar
|
||||
Requires: glx-utils
|
||||
Requires: pciutils
|
||||
Requires: vulkan-loader
|
||||
Requires: procps-ng
|
||||
Requires: psmisc
|
||||
Requires: squashfs-tools
|
||||
Requires: 7zip
|
||||
Requires: python3-dbus-fast
|
||||
|
||||
%ifarch aarch64
|
||||
Requires: muvm
|
||||
%endif
|
||||
# System Tab
|
||||
Recommends: NetworkManager
|
||||
Recommends: bluez
|
||||
Recommends: upower
|
||||
Recommends: pulseaudio-utils
|
||||
Recommends: python3-qrcode
|
||||
|
||||
%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.
|
||||
A modern and intuitive interface for managing and launching games from PortProton and Steam. Combines libraries in one place and simplifies running Windows games on Linux.
|
||||
|
||||
%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}
|
||||
|
||||
BuildRequires: vulkan-loader-devel
|
||||
BuildRequires: gcc
|
||||
|
||||
%prep
|
||||
git clone https://git.linux-gaming.ru/Boria138/PortProtonQt.git
|
||||
git clone https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt.git
|
||||
|
||||
%build
|
||||
cd %{oname}
|
||||
%meson \
|
||||
-Dnightly=true \
|
||||
-Dpython_purelibdir=%{python3_sitelib} \
|
||||
-Dudev_rulesdir=%{_udevrulesdir}
|
||||
%meson_build
|
||||
@@ -76,16 +102,30 @@ cd %{oname}
|
||||
%install
|
||||
cd %{oname}
|
||||
%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 -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
|
||||
%{_datadir}/mime/packages/ru.linux_gaming.PortProtonQt.xml
|
||||
%{_datadir}/portproton/scripts/
|
||||
%{_datadir}/portproton/conf/
|
||||
%{_datadir}/portproton/img/
|
||||
%{bash_completions_dir}/portprotonqt
|
||||
%{_bindir}/vk_gpu_info
|
||||
%{fish_completions_dir}/portprotonqt.fish
|
||||
%{zsh_completions_dir}/_portprotonqt
|
||||
|
||||
%files -n %{pypi_name}-git-steam-compat
|
||||
%{_datadir}/steam/compatibilitytools.d/PortProtonQt/
|
||||
|
||||
%changelog
|
||||
+54
-15
@@ -1,67 +1,92 @@
|
||||
%global pypi_name portprotonqt
|
||||
%global pypi_version 0.1.11
|
||||
%global pypi_version 1.0
|
||||
%global oname PortProtonQt
|
||||
%global _python_no_extras_requires 1
|
||||
|
||||
Name: %{pypi_name}
|
||||
Version: %{pypi_version}
|
||||
Release: 1%{?dist}
|
||||
Summary: Modern GUI for managing and launching games from PortProton, Steam, and Epic Games Store
|
||||
Summary: Modern GUI for managing and launching games from PortProton and Steam
|
||||
|
||||
License: GPL-3.0
|
||||
URL: https://git.linux-gaming.ru/Boria138/PortProtonQt
|
||||
URL: https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt
|
||||
ExclusiveArch: x86_64 aarch64
|
||||
|
||||
BuildRequires: meson >= 0.61.2
|
||||
BuildRequires: ninja-build
|
||||
BuildRequires: python3-devel
|
||||
BuildRequires: git
|
||||
BuildRequires: gettext
|
||||
BuildRequires: systemd-rpm-macros
|
||||
BuildRequires: vulkan-loader-devel
|
||||
BuildRequires: gcc
|
||||
|
||||
Obsoletes: python3-%{pypi_name} < %{version}-%{release}
|
||||
Provides: python3-%{pypi_name} = %{version}-%{release}
|
||||
|
||||
Requires: python3-babel
|
||||
Requires: python3-evdev
|
||||
Requires: python3-icoextract
|
||||
Requires: python3-websocket-client
|
||||
Requires: python3-orjson
|
||||
Requires: python3-psutil
|
||||
Requires: python3-pyside6
|
||||
Requires: python3-pyudev
|
||||
Requires: python3-pygame
|
||||
Requires: python3-requests
|
||||
Requires: python3-tqdm
|
||||
Requires: python3-vdf
|
||||
Requires: python3-pefile
|
||||
Requires: python3-pillow
|
||||
Requires: python3-beautifulsoup4
|
||||
Requires: python3-pillow-qt
|
||||
Requires: python3-rapidfuzz
|
||||
Requires: python3-libarchive-c
|
||||
Requires: perl-Image-ExifTool
|
||||
Requires: qt6-qtsvg
|
||||
Requires: qt6-qtimageformats
|
||||
Requires: cabextract
|
||||
Requires: gzip
|
||||
Requires: unzip
|
||||
Requires: curl
|
||||
Requires: jq
|
||||
Requires: file
|
||||
Requires: findutils
|
||||
Requires: gawk
|
||||
Requires: grep
|
||||
Requires: tar
|
||||
Requires: xz
|
||||
Requires: zstd
|
||||
Requires: unrar
|
||||
Requires: glx-utils
|
||||
Requires: pciutils
|
||||
Requires: vulkan-loader
|
||||
Requires: procps-ng
|
||||
Requires: psmisc
|
||||
Requires: squashfs-tools
|
||||
Requires: 7zip
|
||||
Requires: python3-dbus-fast
|
||||
|
||||
%ifarch aarch64
|
||||
Requires: muvm
|
||||
%endif
|
||||
# System Tab
|
||||
Recommends: NetworkManager
|
||||
Recommends: bluez
|
||||
Recommends: upower
|
||||
Recommends: pulseaudio-utils
|
||||
Recommends: python3-qrcode
|
||||
|
||||
%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.
|
||||
A modern and intuitive interface for managing and launching games from PortProton and Steam. Combines libraries in one place and simplifies running Windows games on Linux.
|
||||
|
||||
%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}
|
||||
|
||||
BuildRequires: vulkan-loader-devel
|
||||
BuildRequires: gcc
|
||||
|
||||
%prep
|
||||
git clone https://git.linux-gaming.ru/Boria138/PortProtonQt
|
||||
git clone https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt
|
||||
cd %{oname}
|
||||
git checkout v%{pypi_version}
|
||||
|
||||
@@ -75,16 +100,30 @@ cd %{oname}
|
||||
%install
|
||||
cd %{oname}
|
||||
%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 -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
|
||||
%{_datadir}/mime/packages/ru.linux_gaming.PortProtonQt.xml
|
||||
%{_datadir}/portproton/scripts/
|
||||
%{_datadir}/portproton/conf/
|
||||
%{_datadir}/portproton/img/
|
||||
%{bash_completions_dir}/portprotonqt
|
||||
%{_bindir}/vk_gpu_info
|
||||
%{fish_completions_dir}/portprotonqt.fish
|
||||
%{zsh_completions_dir}/_portprotonqt
|
||||
|
||||
%files -n %{pypi_name}-steam-compat
|
||||
%{_datadir}/steam/compatibilitytools.d/PortProtonQt/
|
||||
|
||||
%changelog
|
||||
@@ -3,8 +3,12 @@ Name=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;
|
||||
MimeType=x-scheme-handler/portproton;application/x-portproton-prefix-backup;application/x-ms-dos-exec;application/x-executable;application/x-dosexec;application/x-iso9660-image;application/x-cd-image;application/x-raw-disk-image;application/x-mdf;application/x-mds-disk;
|
||||
@@ -1,38 +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 --force-muvm --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 positional arguments (URLs) if needed
|
||||
if [[ ${cur} != -* ]]; then
|
||||
# Allow URL completion for portproton:// URLs
|
||||
if [[ ${cur} == portproton://* ]]; then
|
||||
COMPREPLY=( $(compgen -W "${cur}" -- ${cur}) )
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
complete -F _portprotonqt_completions portprotonqt
|
||||
@@ -4,72 +4,139 @@
|
||||
<id>ru.linux_gaming.PortProtonQt</id>
|
||||
<metadata_license>CC0-1.0</metadata_license>
|
||||
<project_license>GPL-3.0-or-later</project_license>
|
||||
<summary>Modern GUI for managing and launching games from PortProton, Steam, and Epic Games Store</summary>
|
||||
<summary xml:lang="ru">Современный графический интерфейс для управления и запуска игр из PortProton, Steam и Epic Games Store</summary>
|
||||
|
||||
<summary>Modern GUI for managing and launching games from PortProton and Steam</summary>
|
||||
<summary xml:lang="ru">Современный интерфейс для управления и запуска игр из PortProton и Steam</summary>
|
||||
|
||||
<description>
|
||||
<p>
|
||||
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.</p>
|
||||
A modern and intuitive interface for managing and launching games from PortProton and Steam. Combines libraries in one place and simplifies running Windows games on Linux.
|
||||
</p>
|
||||
<p xml:lang="ru">
|
||||
Это приложение предоставляет стильный и интуитивно понятный графический интерфейс для управления и запуска игр из PortProton, Steam и Epic Games Store. Оно объединяет ваши игровые библиотеки в одном удобном хабе для простой навигации и организации. Лёгкая структура и кроссплатформенная поддержка обеспечивают целостный игровой опыт, устраняя необходимость в использовании нескольких лаунчеров. Уникальная интеграция с PortProton улучшает игровой процесс на Linux, позволяя с лёгкостью запускать Windows-игры с минимальными настройками.
|
||||
</p>
|
||||
Современный и удобный интерфейс для управления и запуска игр из PortProton и Steam. Объединяет библиотеки в одном месте и упрощает запуск Windows-игр на Linux.
|
||||
</p>
|
||||
</description>
|
||||
|
||||
<launchable type="desktop-id">ru.linux_gaming.PortProtonQt.desktop</launchable>
|
||||
|
||||
<developer id="ru.linux_gaming">
|
||||
<name>Boria138</name>
|
||||
</developer>
|
||||
|
||||
<releases>
|
||||
<release version="1.0.0" date="2026-04-28">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Built-in PortProton scripts with full PortProton feature parity</li>
|
||||
<li>New classic theme for an easier transition from PortProton</li>
|
||||
<li>Network-saving mode, improved caching, and fully local Steam game covers</li>
|
||||
<li>File manager actions for creating, deleting, and renaming folders</li>
|
||||
<li>Support for animated covers, JXL images, MDF launch, and external Steam Proton builds</li>
|
||||
<li>New tray controls for stopping a running game and silent exe launch support</li>
|
||||
<li>Improved gamepad controls with automatic Xbox and PlayStation type selection</li>
|
||||
<li>Improved tray, auto-install page, lost exe handling, and Wine/Proton list ordering</li>
|
||||
<li>Fixes for Bluetooth, SteamGridDB, QComboBox scrolling, Steam Compatdata, and desktop shortcuts</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
|
||||
<release version="0.1.12" date="2026-04-17" type="development"/>
|
||||
<release version="0.1.11" date="2026-02-18" type="development"/>
|
||||
<release version="0.1.10" date="2026-01-14" type="development"/>
|
||||
<release version="0.1.9" date="2025-12-08" type="development"/>
|
||||
<release version="0.1.8" date="2025-10-18" type="development"/>
|
||||
<release version="0.1.7" date="2025-10-12" type="development"/>
|
||||
<release version="0.1.6" date="2025-09-23" type="development"/>
|
||||
<release version="0.1.5" date="2025-08-31" type="development"/>
|
||||
<release version="0.1.4" date="2025-07-21" type="development"/>
|
||||
<release version="0.1.3" date="2025-07-05" type="development"/>
|
||||
<release version="0.1.2" date="2025-06-15" type="development"/>
|
||||
<release version="0.1.1" date="2025-05-17" type="development"/>
|
||||
</releases>
|
||||
|
||||
<recommends>
|
||||
<control>keyboard</control>
|
||||
<control>pointing</control>
|
||||
<control>touch</control>
|
||||
<control>gamepad</control>
|
||||
</recommends>
|
||||
|
||||
<branding>
|
||||
<color type="primary" scheme_preference="light">#007AFF</color>
|
||||
<color type="primary" scheme_preference="dark">#09BEC8</color>
|
||||
</branding>
|
||||
|
||||
<categories>
|
||||
<category>Game</category>
|
||||
<category>Utility</category>
|
||||
</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="homepage">https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt</url>
|
||||
<url type="bugtracker">https://git.linux-gaming.ru/Linux-Gaming/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/library.jpg</image>
|
||||
<image>https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/1_library.png</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/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/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/context_menu.jpg</image>
|
||||
<image>https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/2_context_menu.png</image>
|
||||
<caption>Context Menu</caption>
|
||||
<caption xml:lang="ru">Контекстное меню</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/wine_settings.jpg</image>
|
||||
<image>https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/3_auto_installs.png</image>
|
||||
<caption>Auto installs</caption>
|
||||
<caption xml:lang="ru">Автоустановки</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/4_game_card.png</image>
|
||||
<caption>Card detail page</caption>
|
||||
<caption xml:lang="ru">Детали игры</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/5_portproton_settings.png</image>
|
||||
<caption>Settings</caption>
|
||||
<caption xml:lang="ru">Настройки</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/6_wine_settings.png</image>
|
||||
<caption>Wine Settings</caption>
|
||||
<caption xml:lang="ru">Настройки Wine</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/7_exe_settings.png</image>
|
||||
<caption>Exe Settings</caption>
|
||||
<caption xml:lang="ru">Настройки exe</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/8_exe_settings_mangohud.png</image>
|
||||
<caption>MangoHud Settings</caption>
|
||||
<caption xml:lang="ru">Настройки MangoHud</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/9_exe_settings_gamescope.png</image>
|
||||
<caption>Gamescope Settings</caption>
|
||||
<caption xml:lang="ru">Настройки Gamescope</caption>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
|
||||
<keywords>
|
||||
<keyword translate="no">wine</keyword>
|
||||
<keyword translate="no">proton</keyword>
|
||||
<keyword translate="no">steam</keyword>
|
||||
<keyword translate="no">windows</keyword>
|
||||
<keyword translate="no">epic games store</keyword>
|
||||
<keyword translate="no">egs</keyword>
|
||||
<keyword translate="no">qt</keyword>
|
||||
<keyword translate="no">linux gaming</keyword>
|
||||
<keyword translate="no">portproton</keyword>
|
||||
<keyword>game launcher</keyword>
|
||||
<keyword>compatibility tool</keyword>
|
||||
<keyword>games</keyword>
|
||||
</keywords>
|
||||
<content_rating type="oars-1.1" />
|
||||
<keyword xml:lang="ru">игры</keyword>
|
||||
<keyword xml:lang="ru">лаунчер игр</keyword>
|
||||
<keyword xml:lang="ru">запуск игр</keyword>
|
||||
</keywords>
|
||||
|
||||
<content_rating type="oars-1.1"/>
|
||||
</component>
|
||||
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
|
||||
<mime-type type="application/x-portproton-prefix-backup">
|
||||
<comment>PortProton prefix backup</comment>
|
||||
<comment xml:lang="ru">Резервная копия префикса PortProton</comment>
|
||||
<glob pattern="*.ppack"/>
|
||||
<sub-class-of type="application/vnd.squashfs"/>
|
||||
</mime-type>
|
||||
</mime-info>
|
||||
@@ -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;
|
||||
}
|
||||
});
|
||||
Executable
+679
@@ -0,0 +1,679 @@
|
||||
# Expose the HDR10 ColorSpace (DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020)
|
||||
# to the application by default.
|
||||
# This shows to the game that the global Windows 'HDR Mode' is enabled.
|
||||
# Many (broken) games will need this to be set to consider exposing HDR output
|
||||
# as determine it based on the DXGIOutput's current ColorSpace instead of
|
||||
# using CheckColorSpaceSupport.
|
||||
# This defaults to the value of the DXVK_HDR environment variable.
|
||||
#
|
||||
# Supported values: True, False
|
||||
|
||||
# dxgi.enableHDR = True
|
||||
|
||||
# Create the VkSurface on the first call to IDXGISwapChain::Present,
|
||||
# rather than when creating the swap chain. Some games that start
|
||||
# rendering with a different graphics API may require this option,
|
||||
# or otherwise the window may stay black.
|
||||
#
|
||||
# Supported values: True, False
|
||||
|
||||
# dxgi.deferSurfaceCreation = False
|
||||
# d3d9.deferSurfaceCreation = False
|
||||
|
||||
|
||||
# Enforce a stricter maximum frame latency. Overrides the application
|
||||
# setting specified by calling IDXGIDevice::SetMaximumFrameLatency.
|
||||
# Setting this to 0 will have no effect.
|
||||
#
|
||||
# Supported values : 0 - 16
|
||||
|
||||
# dxgi.maxFrameLatency = 0
|
||||
# d3d9.maxFrameLatency = 0
|
||||
|
||||
|
||||
# Enables frame rate limiter. The main purpose of this is to work around
|
||||
# bugs in games that have physics or other simulation tied to their frame
|
||||
# rate, but do not provide their own limiter.
|
||||
#
|
||||
# Supported values : Any non-negative integer
|
||||
|
||||
# dxgi.maxFrameRate = 0
|
||||
# d3d9.maxFrameRate = 0
|
||||
|
||||
|
||||
# Override PCI vendor and device IDs reported to the application. Can
|
||||
# cause the app to adjust behaviour depending on the selected values.
|
||||
#
|
||||
# Supported values: Any four-digit hex number.
|
||||
|
||||
# dxgi.customDeviceDesc = "NVIDIA GeForce RTX 4090"
|
||||
# dxgi.customDeviceId = 2684
|
||||
# dxgi.customVendorId = 10de
|
||||
# dxgi.hideAmdGpu = True
|
||||
# dxgi.hideNvidiaGpu = False
|
||||
|
||||
# Override the reported device description
|
||||
#
|
||||
# Supported values: Any string.
|
||||
|
||||
# d3d9.customDeviceDesc = "NVIDIA GeForce RTX 4090"
|
||||
# d3d9.customDeviceId = 2684
|
||||
# d3d9.customVendorId = 10de
|
||||
|
||||
|
||||
# Report Nvidia GPUs as AMD GPUs. Unless NVAPI support is explicitly
|
||||
# enabled through Proton, this is done by default in order to work
|
||||
# around crashes or low performance with Nvidia-speciic code paths
|
||||
# in games, especially Unreal Engine.
|
||||
#
|
||||
# Supported values: Auto, True, False
|
||||
|
||||
# dxgi.hideNvidiaGpu = Auto
|
||||
|
||||
|
||||
# Report Nvidia GPUs running on NVK as AMD GPUs.
|
||||
#
|
||||
# Supported values: Auto, True, False
|
||||
|
||||
# dxgi.hideNvkGpu = Auto
|
||||
|
||||
|
||||
# Report AMD GPUs as Nvidia GPUs. This is only done for games that are
|
||||
# known to have issues with AMDAGS or other AMD-specific code paths.
|
||||
#
|
||||
# Supported values: Auto, True, False
|
||||
|
||||
# dxgi.hideAmdGpu = Auto
|
||||
|
||||
|
||||
# Report Intel GPUs as AMD GPUs. This is only done for games that are
|
||||
# known to have issues with Intel-specific libraries such as XESS.
|
||||
#
|
||||
# Supported values: Auto, True, False
|
||||
|
||||
# dxgi.hideIntelGpu = Auto
|
||||
|
||||
|
||||
# Override maximum amount of device memory and shared system memory
|
||||
# reported to the application. This may fix texture streaming issues
|
||||
# in games that do not support cards with large amounts of VRAM.
|
||||
# This is not a hard cap and applications can choose to ignore it.
|
||||
#
|
||||
# Supported values: Any number in Megabytes.
|
||||
|
||||
# dxgi.maxDeviceMemory = 0
|
||||
# dxgi.maxSharedMemory = 0
|
||||
|
||||
|
||||
# Some games think we are on Intel given a lack of NVAPI or
|
||||
# AGS/atiadlxx support. Report our device memory as shared memory,
|
||||
# and some small amount for a "carveout".
|
||||
|
||||
# Supported values: True, False
|
||||
|
||||
# dxgi.emulateUMA = False
|
||||
|
||||
|
||||
# Override back buffer count for the Vulkan swap chain.
|
||||
# Setting this to 0 or less will have no effect.
|
||||
#
|
||||
# Supported values: Any number greater than or equal to 2.
|
||||
|
||||
# dxgi.numBackBuffers = 0
|
||||
# d3d9.numBackBuffers = 0
|
||||
|
||||
|
||||
# Overrides synchronization interval (Vsync) for presentation.
|
||||
# Setting this to 0 disables vertical synchronization entirely.
|
||||
# A positive value 'n' will enable Vsync and repeat the same
|
||||
# image n times, and a negative value will have no effect.
|
||||
#
|
||||
# Supported values: Any non-negative number
|
||||
|
||||
# dxgi.syncInterval = -1
|
||||
# d3d9.presentInterval = -1
|
||||
|
||||
|
||||
# True enables the mailbox present mode in case regular Vsync is disabled.
|
||||
# This should avoid tearing, but may be unsupported on some systems
|
||||
# or require setting dxgi.numBackBuffers to a higher value in order
|
||||
# to work properly.
|
||||
#
|
||||
# False enables the relaxed fifo present mode in case regular Vsync is enabled.
|
||||
# This should result in tearing but reduce stutter if FPS are too low,
|
||||
# but may be unsupported on some systems.
|
||||
#
|
||||
# Please do not report issues with this option.
|
||||
#
|
||||
# Supported values: Auto, True, False
|
||||
|
||||
# dxvk.tearFree = Auto
|
||||
|
||||
|
||||
# Assume single-use mode for command lists created on deferred contexts.
|
||||
# This may need to be disabled for some applications to avoid rendering
|
||||
# issues, which may come at a significant performance cost.
|
||||
#
|
||||
# Supported values: True, False
|
||||
|
||||
# d3d11.dcSingleUseMode = True
|
||||
|
||||
|
||||
# Override the maximum feature level that a D3D11 device can be created
|
||||
# with. Setting this to a higher value may allow some applications to run
|
||||
# that would otherwise fail to create a D3D11 device.
|
||||
#
|
||||
# Supported values: 9_1, 9_2, 9_3, 10_0, 10_1, 11_0, 11_1, 12_0, 12_1
|
||||
|
||||
# d3d11.maxFeatureLevel = 12_1
|
||||
|
||||
|
||||
# Overrides the maximum allowed tessellation factor. This can be used to
|
||||
# improve performance in titles which overuse tessellation.
|
||||
#
|
||||
# Supported values: Any number between 8 and 64
|
||||
|
||||
# d3d11.maxTessFactor = 0
|
||||
|
||||
|
||||
# Enables relaxed pipeline barriers around UAV writes.
|
||||
#
|
||||
# This may improve performance in some games, but may also introduce
|
||||
# rendering issues. Please don't report bugs with the option enabled.
|
||||
#
|
||||
# Supported values: True, False
|
||||
|
||||
# d3d11.relaxedBarriers = False
|
||||
|
||||
|
||||
# Ignores barriers around UAV writes from fragment shaders.
|
||||
#
|
||||
# This may improve performance in some games, but may also introduce
|
||||
# rendering issues. Please don't report bugs with the option enabled.
|
||||
#
|
||||
# Supported values: True, False
|
||||
|
||||
# d3d11.ignoreGraphicsBarriers = False
|
||||
|
||||
|
||||
# Overrides anisotropic filtering for all samplers. Set this to a positive
|
||||
# value to enable AF for all samplers in the game, or to 0 in order to
|
||||
# disable AF entirely. Negative values will have no effect.
|
||||
#
|
||||
# Supported values: Any number between 0 and 16
|
||||
|
||||
# d3d11.samplerAnisotropy = -1
|
||||
# d3d9.samplerAnisotropy = -1
|
||||
|
||||
|
||||
# Changes the mipmap LOD bias for all samplers. The given number will be
|
||||
# added to the LOD bias provided by the application, rather than replacing
|
||||
# it entirely. Positive values will reduce texture detail, while negative
|
||||
# values may increase sharpness at the cost of shimmer.
|
||||
#
|
||||
# Supported values: Any number between -2.0 and 1.0
|
||||
|
||||
# d3d11.samplerLodBias = 0.0
|
||||
# d3d9.samplerLodBias = 0.0
|
||||
|
||||
|
||||
# Clamps any negative LOD bias to 0. Applies after samplerLodBias has been
|
||||
# applied. May help with games that use a high negative LOD bias by default.
|
||||
#
|
||||
# Supported values: True, False
|
||||
|
||||
# d3d11.clampNegativeLodBias = False
|
||||
# d3d9.clampNegativeLodBias = False
|
||||
|
||||
|
||||
# Declares vertex positions as invariant in order to solve
|
||||
# potential Z-fighting issues at a small performance cost.
|
||||
#
|
||||
# Supported values: True, False
|
||||
|
||||
# d3d11.invariantPosition = True
|
||||
# d3d9.invariantPosition = True
|
||||
|
||||
|
||||
# Forces per-sample rate shading when MSAA is enabled, rather than per-pixel
|
||||
# shading. May improve visual clarity at a significant performance cost, but
|
||||
# may also introduce visual issues in some games.
|
||||
#
|
||||
# Supported values: True, False
|
||||
|
||||
# d3d11.forceSampleRateShading = False
|
||||
# d3d9.forceSampleRateShading = False
|
||||
|
||||
|
||||
# Forces the sample count of all textures to 1, and performs
|
||||
# the needed fixups in resolve operations and shaders.
|
||||
#
|
||||
# Supported values: True, False
|
||||
|
||||
# d3d11.disableMsaa = False
|
||||
|
||||
|
||||
# Clears workgroup memory in compute shaders to zero. Some games don't do
|
||||
# this and rely on undefined behaviour. Enabling may reduce performance.
|
||||
#
|
||||
# Supported values: True, False
|
||||
|
||||
# d3d11.zeroWorkgroupMemory = False
|
||||
|
||||
|
||||
# Resource size limit for implicit discards, in kilobytes. For small staging
|
||||
# resources mapped with MAP_WRITE, DXVK will sometimes allocate new backing
|
||||
# storage in order to avoid GPU synchronization, so setting this too high
|
||||
# may cause memory issues, setting it to -1 disables the feature.
|
||||
|
||||
# d3d11.maxImplicitDiscardSize = 256
|
||||
|
||||
|
||||
# Resource size limit for buffer-mapped dynamic images, in kilobytes.
|
||||
# A higher threshold may reduce memory usage and PCI-E bandwidth in
|
||||
# some games, but may also increase GPU synchronizations. Setting it
|
||||
# to -1 disables the feature.
|
||||
|
||||
# d3d11.maxDynamicImageBufferSize = -1
|
||||
|
||||
|
||||
# Allocates dynamic resources with the given set of bind flags in
|
||||
# cached system memory rather than uncached memory or host-visible
|
||||
# VRAM, in order to allow fast readback from the CPU. This is only
|
||||
# useful for buggy applications, and may reduce GPU-bound performance.
|
||||
#
|
||||
# Supported values: Any combination of the following:
|
||||
# - v: Vertex buffers
|
||||
# - i: Index buffers
|
||||
# - c: Constant buffers
|
||||
# - r: Shader resources
|
||||
# - a: All dynamic resources
|
||||
|
||||
# d3d11.cachedDynamicResources = ""
|
||||
|
||||
|
||||
# Force-enables the D3D11 context lock via the ID3D10Multithread
|
||||
# interface. This may be useful to debug race conditions.
|
||||
#
|
||||
# Supported values: True, False
|
||||
|
||||
# d3d11.enableContextLock = False
|
||||
|
||||
|
||||
# Exposes or hides support for driver command lists
|
||||
#
|
||||
# Some games use the feature flag to decide whether to use deferred
|
||||
# contexts or not. We enable this by default, but in some situations
|
||||
# this can lead to issues if games detect an AMD GPU where command
|
||||
# lists are not natively supported on Windows.
|
||||
#
|
||||
# Supported values: True, False
|
||||
|
||||
# d3d11.exposeDriverCommandLists = True
|
||||
|
||||
|
||||
# Sets number of pipeline compiler threads.
|
||||
#
|
||||
# If the graphics pipeline library feature is enabled, the given
|
||||
# number of threads will be used for shader compilation. Some of
|
||||
# these threads will be reserved for high-priority work.
|
||||
#
|
||||
# Supported values:
|
||||
# - 0 to use all available CPU cores
|
||||
# - any positive number to enforce the thread count
|
||||
|
||||
# dxvk.numCompilerThreads = 0
|
||||
|
||||
|
||||
# Toggles raw SSBO usage.
|
||||
#
|
||||
# Uses storage buffers to implement raw and structured buffer
|
||||
# views. Enabled by default on hardware which has a storage
|
||||
# buffer offset alignment requirement of 4 Bytes (e.g. AMD).
|
||||
# Enabling this may improve performance, but is not safe on
|
||||
# hardware with higher alignment requirements.
|
||||
#
|
||||
# Supported values:
|
||||
# - Auto: Don't change the default
|
||||
# - True, False: Always enable / disable
|
||||
|
||||
# dxvk.useRawSsbo = Auto
|
||||
|
||||
|
||||
# Changes memory chunk size.
|
||||
#
|
||||
# Can be used to override the maximum memory chunk size.
|
||||
#
|
||||
# Supported values:
|
||||
# - 0 to use the defaults
|
||||
# - any positive integer to limit the chunk size, in MiB
|
||||
|
||||
# dxvk.maxChunkSize = 0
|
||||
|
||||
|
||||
# Controls graphics pipeline library behaviour
|
||||
#
|
||||
# Can be used to change VK_EXT_graphics_pipeline_library usage for
|
||||
# debugging purpose. Doing so will likely result in increased stutter
|
||||
# or degraded performance.
|
||||
#
|
||||
# Supported values:
|
||||
# - Auto: Enable if supported, and compile optimized pipelines in the background
|
||||
# - True: Enable if supported, but do not compile optimized pipelines
|
||||
# - False: Always disable the feature
|
||||
|
||||
# dxvk.enableGraphicsPipelineLibrary = Auto
|
||||
|
||||
|
||||
# Controls pipeline lifetime tracking
|
||||
#
|
||||
# If enabled, pipeline libraries will be freed aggressively in order
|
||||
# save memory and address space. Has no effect if graphics pipeline
|
||||
# libraries are not supported or disabled.
|
||||
#
|
||||
# Supported values:
|
||||
# - Auto: Enable tracking for 32-bit applications only
|
||||
# - True: Always enable tracking
|
||||
# - False: Always disable tracking
|
||||
|
||||
# dxvk.trackPipelineLifetime = Auto
|
||||
|
||||
|
||||
# Sets enabled HUD elements
|
||||
#
|
||||
# Behaves like the DXVK_HUD environment variable if the
|
||||
# environment variable is not set, otherwise it will be
|
||||
# ignored. The syntax is identical.
|
||||
|
||||
# dxvk.hud =
|
||||
|
||||
|
||||
# Reported shader model
|
||||
#
|
||||
# The shader model to state that we support in the device
|
||||
# capabilities that the applicatation queries.
|
||||
#
|
||||
# Supported values:
|
||||
# - 1: Shader Model 1
|
||||
# - 2: Shader Model 2
|
||||
# - 3: Shader Model 3
|
||||
|
||||
# d3d9.shaderModel = 3
|
||||
|
||||
|
||||
# DPI Awareness
|
||||
#
|
||||
# Decides whether we should call SetProcessDPIAware on device
|
||||
# creation. Helps avoid upscaling blur in modern Windows on
|
||||
# Hi-DPI screens/devices.
|
||||
#
|
||||
# Supported values:
|
||||
# - True, False: Always enable / disable
|
||||
|
||||
# d3d9.dpiAware = True
|
||||
|
||||
|
||||
# Strict Constant Copies
|
||||
#
|
||||
# Decides whether we should always copy defined constants to
|
||||
# the UBO when relative addressing is used, or only when the
|
||||
# relative addressing starts a defined constant.
|
||||
#
|
||||
# Supported values:
|
||||
# - True, False: Always enable / disable
|
||||
|
||||
# d3d9.strictConstantCopies = False
|
||||
|
||||
|
||||
# Strict Pow
|
||||
#
|
||||
# Decides whether we have an opSelect for handling pow(0,0) = 0
|
||||
# otherwise it becomes undefined.
|
||||
#
|
||||
# Supported values:
|
||||
# - True, False: Always enable / disable
|
||||
|
||||
# d3d9.strictPow = True
|
||||
|
||||
|
||||
# Lenient Clear
|
||||
#
|
||||
# Decides whether or not we fastpath clear anyway if we are close enough to
|
||||
# clearing a full render target.
|
||||
#
|
||||
# Supported values:
|
||||
# - True, False: Always enable / disable
|
||||
|
||||
# d3d9.lenientClear = False
|
||||
|
||||
|
||||
# Max available memory
|
||||
#
|
||||
# Changes the max initial value used in tracking and GetAvailableTextureMem
|
||||
# Value in Megabytes
|
||||
#
|
||||
# Supported values:
|
||||
# - Max Available Memory: Any int32_t
|
||||
# - Memory Tracking Testing: True, False
|
||||
|
||||
# d3d9.maxAvailableMemory = 4096
|
||||
# d3d9.memoryTrackTest = False
|
||||
|
||||
|
||||
# Force enable/disable floating point quirk emulation
|
||||
#
|
||||
# Force toggle anything * 0 emulation
|
||||
# Setting it to True will use a faster but less accurate approach that works for most games.
|
||||
# Supported values:
|
||||
# - True: Use a faster but less accurate approach. Good enough for most games
|
||||
# - False: Disable float emulation completely
|
||||
# - Strict: Use a slower but more correct approach. Necessary for some games
|
||||
# - Auto: DXVK will pick automatically
|
||||
|
||||
# d3d9.floatEmulation = Auto
|
||||
|
||||
|
||||
# Enable dialog box mode
|
||||
#
|
||||
# Changes the default state of dialog box mode.
|
||||
# *Disables* exclusive fullscreen when enabled.
|
||||
#
|
||||
# Supported values:
|
||||
# - True, False: Always enable / disable
|
||||
|
||||
# d3d9.enableDialogMode = False
|
||||
|
||||
# Overrides the application's MSAA level on the swapchain
|
||||
#
|
||||
# Supported values: -1 (application) and 0 to 16 (user override)
|
||||
|
||||
# d3d9.forceSwapchainMSAA = -1
|
||||
|
||||
|
||||
# Long Mad
|
||||
#
|
||||
# Should we make our Mads a FFma or do it the long way with an FMul and an FAdd?
|
||||
# This solves some rendering bugs in games that have z-pass shaders which
|
||||
# don't match entirely to the regular vertex shader in this way.
|
||||
#
|
||||
# Supported values:
|
||||
# - True/False
|
||||
|
||||
# d3d9.longMad = False
|
||||
|
||||
# Device Local Constant Buffers
|
||||
#
|
||||
# Enables using device local, host accessible memory for constant buffers in D3D9.
|
||||
# This tends to actually be slower for some reason on AMD,
|
||||
# and the exact same performance on NVIDIA.
|
||||
#
|
||||
# Supported values:
|
||||
# - True/False
|
||||
|
||||
# d3d9.deviceLocalConstantBuffers = False
|
||||
|
||||
# Support DF formats
|
||||
#
|
||||
# Support the vendor extension DF floating point depth formats
|
||||
#
|
||||
# Supported values:
|
||||
# - True/False
|
||||
|
||||
# d3d9.supportDFFormats = True
|
||||
|
||||
# Use D32f for D24
|
||||
#
|
||||
# Useful for reproducing AMD issues on other hw.
|
||||
#
|
||||
# Supported values:
|
||||
# - True/False
|
||||
|
||||
# d3d9.useD32forD24 = False
|
||||
|
||||
# Support X4R4G4B4
|
||||
#
|
||||
# Support the X4R4G4B4 format.
|
||||
# The Sims 2 is a very broken game.
|
||||
#
|
||||
# Supported values:
|
||||
# - True/False
|
||||
|
||||
# d3d9.supportX4R4G4B4 = True
|
||||
|
||||
# Support D32
|
||||
#
|
||||
# Support the D32 format.
|
||||
#
|
||||
# Supported values:
|
||||
# - True/False
|
||||
|
||||
# d3d9.supportD32 = True
|
||||
|
||||
# Disable A8 as a Render Target
|
||||
#
|
||||
# Disable support for A8 format render targets
|
||||
# Once again, The Sims 2 is a very broken game.
|
||||
#
|
||||
# Supported values:
|
||||
# - True/False
|
||||
|
||||
# d3d9.disableA8RT = False
|
||||
|
||||
# Support for VCache Query
|
||||
#
|
||||
# Support for the vcache query
|
||||
# Not very important as a user config.
|
||||
# Used internally.
|
||||
#
|
||||
# Supported values:
|
||||
# - True/False
|
||||
|
||||
# Defaults to True if vendorId == 0x10de
|
||||
# d3d9.supportVCache = True
|
||||
|
||||
# Force Sampler Type Spec Constants
|
||||
#
|
||||
# Useful if games use the wrong image and sampler
|
||||
# type combo like Halo: CE or Spellforce.
|
||||
# Can fix rendering in older, broken games in some instances.
|
||||
#
|
||||
# Supported values:
|
||||
# - True/False
|
||||
|
||||
# d3d9.forceSamplerTypeSpecConstants = False
|
||||
|
||||
# Force Aspect Ratio
|
||||
#
|
||||
# Only exposes modes with a given aspect ratio.
|
||||
# Useful for titles that break if they see ultra-wide.
|
||||
#
|
||||
# Supported values:
|
||||
# - Any ratio, ie. "16:9", "4:3"
|
||||
|
||||
# d3d9.forceAspectRatio = ""
|
||||
|
||||
# Enumerate by Displays
|
||||
#
|
||||
# Whether we should enumerate D3D9 adapters by display (windows behaviour)
|
||||
# or by physical adapter.
|
||||
# May be useful in PRIME setups.
|
||||
#
|
||||
# Supported values:
|
||||
# - True/False
|
||||
|
||||
# d3d9.enumerateByDisplays = True
|
||||
|
||||
# Cached Dynamic Buffers
|
||||
#
|
||||
# Allocates dynamic resources in D3DPOOL_DEFAULT in
|
||||
# cached system memory rather than uncached memory or host-visible
|
||||
# VRAM, in order to allow fast readback from the CPU. This is only
|
||||
# useful for buggy applications, and may reduce GPU-bound performance.
|
||||
#
|
||||
# Supported values:
|
||||
# - True/False
|
||||
|
||||
# d3d9.cachedDynamicBuffers = False
|
||||
|
||||
# Seamless Cubes
|
||||
#
|
||||
# Don't use non seamless cube maps even if they are supported.
|
||||
# Non seamless cubes are correct d3d9 behavior, but can produce worse looking edges.
|
||||
#
|
||||
# Supported values:
|
||||
# - True/False
|
||||
|
||||
# d3d9.seamlessCubes = False
|
||||
|
||||
# Debug Utils
|
||||
#
|
||||
# Enables debug utils as this is off by default, this enables user annotations like BeginEvent()/EndEvent().
|
||||
# Alternatively could be enabled with DXVK_DEBUG=markers environment variable.
|
||||
#
|
||||
# Supported values:
|
||||
# - True/False
|
||||
|
||||
# dxvk.enableDebugUtils = False
|
||||
|
||||
# Memory limit for locked D3D9 textures
|
||||
#
|
||||
# How much virtual memory will be used for textures (in MB).
|
||||
# 0 to disable the limit.
|
||||
# THIS DOES NOT IMPACT ACTUAL MEMORY CONSUMPTION OR TEXTURE QUALITY.
|
||||
# DO NOT CHANGE THIS UNLESS YOU HAVE A VERY GOOD REASON.
|
||||
|
||||
# d3d9.textureMemory = 100
|
||||
|
||||
# Hide integrated graphics from applications
|
||||
#
|
||||
# Only has an effect when dedicated GPUs are present on the system. It is
|
||||
# not recommended to use this option at all unless absolutely necessary for
|
||||
# a game to work; prefer using DXVK_FILTER_DEVICE_NAME whenever possible.
|
||||
#
|
||||
# Supported values:
|
||||
# - True/False
|
||||
|
||||
# dxvk.hideIntegratedGraphics = False
|
||||
|
||||
# Trigger DEVICELOST when losing focus
|
||||
#
|
||||
# D3D9 requires the application to call Device::Reset after
|
||||
# it loses focus in fullscreen.
|
||||
# Some games rely on observing a D3DERR_DEVICELOST or D3DERR_NOTRESET.
|
||||
# Others don't handle it correctly.
|
||||
#
|
||||
# Supported values:
|
||||
# - True/False
|
||||
|
||||
# d3d9.deviceLossOnFocusLoss = False
|
||||
|
||||
# Reject Device::Reset if any losable resource is still alive
|
||||
#
|
||||
# D3D9 rejects Device::Reset if there's still any alive resources of specific types.
|
||||
# (State blocks, additional swapchains, D3DPOOL_DEFAULT resources)
|
||||
# Some games leak resources leading to a hang.
|
||||
#
|
||||
# Supported values:
|
||||
# - True/False
|
||||
|
||||
# d3d9.countLosableResources = True
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
reshadeTexturePath = /run/pressure-vessel/pv-from-host/reshade/textures
|
||||
reshadeIncludePath = /run/pressure-vessel/pv-from-host/reshade
|
||||
|
||||
FilmGrain2 = /run/pressure-vessel/pv-from-host/reshade/shaders/FilmGrain2.fx
|
||||
Curves = /run/pressure-vessel/pv-from-host/reshade/shaders/Curves.fx
|
||||
FakeHDR = /run/pressure-vessel/pv-from-host/reshade/shaders/FakeHDR.fx
|
||||
LevelsPlus = /run/pressure-vessel/pv-from-host/reshade/shaders/LevelsPlus.fx
|
||||
Colourfulness = /run/pressure-vessel/pv-from-host/reshade/shaders/Colourfulness.fx
|
||||
Bloom = /run/pressure-vessel/pv-from-host/reshade/shaders/Bloom.fx
|
||||
SMAA = /run/pressure-vessel/pv-from-host/reshade/shaders/SMAA.fx
|
||||
ChromaticAberration = /run/pressure-vessel/pv-from-host/reshade/shaders/ChromaticAberration.fx
|
||||
Denoise = /run/pressure-vessel/pv-from-host/reshade/shaders/Denoise.fx
|
||||
Clarity = /run/pressure-vessel/pv-from-host/reshade/shaders/Clarity.fx
|
||||
Emphasize = /run/pressure-vessel/pv-from-host/reshade/shaders/Emphasize.fx
|
||||
FakeMotionBlur = /run/pressure-vessel/pv-from-host/reshade/shaders/FakeMotionBlur.fx
|
||||
FilmicAnamorphSharpen = /run/pressure-vessel/pv-from-host/reshade/shaders/FilmicAnamorphSharpen.fx
|
||||
FilmicPass = /run/pressure-vessel/pv-from-host/reshade/shaders/FilmicPass.fx
|
||||
GaussianBlur = /run/pressure-vessel/pv-from-host/reshade/shaders/GaussianBlur.fx
|
||||
Glitch = /run/pressure-vessel/pv-from-host/reshade/shaders/Glitch.fx
|
||||
HighPassSharpen = /run/pressure-vessel/pv-from-host/reshade/shaders/HighPassSharpen.fx
|
||||
HQ4X = /run/pressure-vessel/pv-from-host/reshade/shaders/HQ4X.fx
|
||||
HSLShift = /run/pressure-vessel/pv-from-host/reshade/shaders/HSLShift.fx
|
||||
Layer = /run/pressure-vessel/pv-from-host/reshade/shaders/Layer.fx
|
||||
LiftGammaGain = /run/pressure-vessel/pv-from-host/reshade/shaders/LiftGammaGain.fx
|
||||
LumaSharpen = /run/pressure-vessel/pv-from-host/reshade/shaders/LumaSharpen.fx
|
||||
LUT = /run/pressure-vessel/pv-from-host/reshade/shaders/LUT.fx
|
||||
MagicBloom = /run/pressure-vessel/pv-from-host/reshade/shaders/MagicBloom.fx
|
||||
Monochrome = /run/pressure-vessel/pv-from-host/reshade/shaders/Monochrome.fx
|
||||
MultiLUT = /run/pressure-vessel/pv-from-host/reshade/shaders/MultiLUT.fx
|
||||
MXAO = /run/pressure-vessel/pv-from-host/reshade/shaders/MXAO.fx
|
||||
NightVision = /run/pressure-vessel/pv-from-host/reshade/shaders/NightVision.fx
|
||||
Nostalgia = /run/pressure-vessel/pv-from-host/reshade/shaders/Nostalgia.fx
|
||||
PerfectPerspective = /run/pressure-vessel/pv-from-host/reshade/shaders/PerfectPerspective.fx
|
||||
PPFX_Bloom = /run/pressure-vessel/pv-from-host/reshade/shaders/PPFX_Bloom.fx
|
||||
PPFX_Godrays = /run/pressure-vessel/pv-from-host/reshade/shaders/PPFX_Godrays.fx
|
||||
Prism = /run/pressure-vessel/pv-from-host/reshade/shaders/Prism.fx
|
||||
ReflectiveBumpMapping = /run/pressure-vessel/pv-from-host/reshade/shaders/ReflectiveBumpMapping.fx
|
||||
Sepia = /run/pressure-vessel/pv-from-host/reshade/shaders/Sepia.fx
|
||||
Splitscreen = /run/pressure-vessel/pv-from-host/reshade/shaders/Splitscreen.fx
|
||||
StageDepth = /run/pressure-vessel/pv-from-host/reshade/shaders/StageDepth.fx
|
||||
SurfaceBlur = /run/pressure-vessel/pv-from-host/reshade/shaders/SurfaceBlur.fx
|
||||
Technicolor = /run/pressure-vessel/pv-from-host/reshade/shaders/Technicolor.fx
|
||||
Technicolor2 = /run/pressure-vessel/pv-from-host/reshade/shaders/Technicolor2.fx
|
||||
TiltShift = /run/pressure-vessel/pv-from-host/reshade/shaders/TiltShift.fx
|
||||
Tonemap = /run/pressure-vessel/pv-from-host/reshade/shaders/Tonemap.fx
|
||||
TriDither = /run/pressure-vessel/pv-from-host/reshade/shaders/TriDither.fx
|
||||
UIDetect = /run/pressure-vessel/pv-from-host/reshade/shaders/UIDetect.fx
|
||||
UIMask = /run/pressure-vessel/pv-from-host/reshade/shaders/UIMask.fx
|
||||
Vibrance = /run/pressure-vessel/pv-from-host/reshade/shaders/Vibrance.fx
|
||||
Vignette = /run/pressure-vessel/pv-from-host/reshade/shaders/Vignette.fx
|
||||
AdaptiveSharpen = /run/pressure-vessel/pv-from-host/reshade/shaders/AdaptiveSharpen.fx
|
||||
ColorMatrix = /run/pressure-vessel/pv-from-host/reshade/shaders/ColorMatrix.fx
|
||||
Cartoon = /run/pressure-vessel/pv-from-host/reshade/shaders/Cartoon.fx
|
||||
3DFX = /run/pressure-vessel/pv-from-host/reshade/shaders/3DFX.fx
|
||||
Border = /run/pressure-vessel/pv-from-host/reshade/shaders/Border.fx
|
||||
AspectRatio = /run/pressure-vessel/pv-from-host/reshade/shaders/AspectRatio.fx
|
||||
|
||||
casSharpness = 0.5
|
||||
toggleKey = Home
|
||||
effects = FakeHDR:cas
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 38 KiB |
@@ -0,0 +1,137 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="48"
|
||||
height="48"
|
||||
viewBox="0 0 48 48"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
xml:space="preserve"
|
||||
sodipodi:docname="error.svg"
|
||||
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
|
||||
inkscape:export-filename="error.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="px"
|
||||
inkscape:zoom="6.1208931"
|
||||
inkscape:cx="-12.416489"
|
||||
inkscape:cy="18.869795"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1027"
|
||||
inkscape:window-x="-4"
|
||||
inkscape:window-y="-4"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg1" /><defs
|
||||
id="defs1"><inkscape:path-effect
|
||||
effect="perspective-envelope"
|
||||
up_left_point="800.80455,142.57841"
|
||||
up_right_point="940.11735,142.57841"
|
||||
down_left_point="713.0918,247.98828"
|
||||
down_right_point="1027.8301,247.98828"
|
||||
id="path-effect16"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
deform_type="perspective"
|
||||
horizontal_mirror="false"
|
||||
vertical_mirror="true"
|
||||
overflow_perspective="false" /><inkscape:path-effect
|
||||
effect="perspective-envelope"
|
||||
up_left_point="952.62987,270.86309"
|
||||
up_right_point="967.78613,270.86309"
|
||||
down_left_point="936.53304,284.60478"
|
||||
down_right_point="983.88296,284.60478"
|
||||
id="path-effect14"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
deform_type="perspective"
|
||||
horizontal_mirror="false"
|
||||
vertical_mirror="true"
|
||||
overflow_perspective="false" /><inkscape:path-effect
|
||||
effect="perspective-envelope"
|
||||
up_left_point="221.7625,226.76598"
|
||||
up_right_point="370.33352,226.76598"
|
||||
down_left_point="221.7625,303.35394"
|
||||
down_right_point="370.33352,303.35394"
|
||||
id="path-effect10"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
deform_type="perspective"
|
||||
horizontal_mirror="true"
|
||||
vertical_mirror="true"
|
||||
overflow_perspective="false" /><inkscape:path-effect
|
||||
effect="perspective-envelope"
|
||||
up_left_point="221.7625,226.76598"
|
||||
up_right_point="370.33352,226.76598"
|
||||
down_left_point="221.7625,303.35394"
|
||||
down_right_point="370.33352,303.35394"
|
||||
id="path-effect8"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
deform_type="perspective"
|
||||
horizontal_mirror="true"
|
||||
vertical_mirror="true"
|
||||
overflow_perspective="false" /><inkscape:path-effect
|
||||
effect="perspective-envelope"
|
||||
up_left_point="221.7625,226.76598"
|
||||
up_right_point="370.33352,226.76598"
|
||||
down_left_point="221.7625,303.35394"
|
||||
down_right_point="370.33352,303.35394"
|
||||
id="path-effect6"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
deform_type="perspective"
|
||||
horizontal_mirror="true"
|
||||
vertical_mirror="true"
|
||||
overflow_perspective="false" /><inkscape:path-effect
|
||||
effect="perspective-envelope"
|
||||
up_left_point="221.7625,226.76598"
|
||||
up_right_point="370.33352,226.76598"
|
||||
down_left_point="221.7625,303.35394"
|
||||
down_right_point="370.33352,303.35394"
|
||||
id="path-effect4"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
deform_type="perspective"
|
||||
horizontal_mirror="true"
|
||||
vertical_mirror="true"
|
||||
overflow_perspective="false" /><inkscape:path-effect
|
||||
effect="perspective-envelope"
|
||||
up_left_point="213.79951,335.28325"
|
||||
up_right_point="351.18682,335.28325"
|
||||
down_left_point="140.95117,410.48047"
|
||||
down_right_point="424.03516,410.48047"
|
||||
id="path-effect3"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
deform_type="perspective"
|
||||
horizontal_mirror="false"
|
||||
vertical_mirror="true"
|
||||
overflow_perspective="false" /><inkscape:path-effect
|
||||
effect="perspective-envelope"
|
||||
up_left_point="150.95065,137.3959"
|
||||
up_right_point="414.0361,137.3959"
|
||||
down_left_point="150.95065,400.48135"
|
||||
down_right_point="414.0361,400.48135"
|
||||
id="path-effect1"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
deform_type="perspective"
|
||||
horizontal_mirror="false"
|
||||
vertical_mirror="true"
|
||||
overflow_perspective="false" /></defs><path
|
||||
id="rect2"
|
||||
style="fill:#ff0000;fill-opacity:1;stroke:#4d4c72;stroke-width:0"
|
||||
d="M 7.6113281 0 C 3.3945763 0 0 3.2765372 0 7.3457031 L 0 40.654297 C 0 44.723463 3.3945763 48 7.6113281 48 L 40.388672 48 C 44.605424 48 48 44.723463 48 40.654297 L 48 7.3457031 C 48 3.2765372 44.605424 0 40.388672 0 L 7.6113281 0 z M 13.808594 10.861328 C 14.554594 10.861328 15.301408 11.156877 15.892578 11.748047 L 24 19.855469 L 32.107422 11.748047 C 33.289762 10.565707 35.091099 10.565707 36.273438 11.748047 C 37.455777 12.930386 37.455777 14.731723 36.273438 15.914062 L 28.166016 24.021484 L 36.273438 32.128906 C 37.455777 33.311245 37.455777 35.112582 36.273438 36.294922 C 35.710419 36.857941 34.979631 37.138672 34.191406 37.138672 C 33.40318 37.138672 32.67044 36.857941 32.107422 36.294922 L 24 28.1875 L 15.892578 36.294922 C 15.32956 36.857941 14.59682 37.138672 13.808594 37.138672 C 13.020369 37.138672 12.289581 36.857941 11.726562 36.294922 C 10.544223 35.112582 10.544223 33.311245 11.726562 32.128906 L 19.833984 24.021484 L 11.726562 15.914062 C 10.544223 14.731723 10.544223 12.930386 11.726562 11.748047 C 12.317732 11.156877 13.062594 10.861328 13.808594 10.861328 z " /></svg>
|
||||
|
After Width: | Height: | Size: 5.8 KiB |
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="48"
|
||||
height="48"
|
||||
viewBox="0 0 48 48"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
xml:space="preserve"
|
||||
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
|
||||
sodipodi:docname="notify.svg"
|
||||
inkscape:export-filename="notify.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="px"
|
||||
inkscape:zoom="6.1208931"
|
||||
inkscape:cx="-12.416489"
|
||||
inkscape:cy="18.869795"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1027"
|
||||
inkscape:window-x="-4"
|
||||
inkscape:window-y="-4"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg1" /><defs
|
||||
id="defs1"><inkscape:path-effect
|
||||
effect="perspective-envelope"
|
||||
up_left_point="800.80455,142.57841"
|
||||
up_right_point="940.11735,142.57841"
|
||||
down_left_point="713.0918,247.98828"
|
||||
down_right_point="1027.8301,247.98828"
|
||||
id="path-effect16"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
deform_type="perspective"
|
||||
horizontal_mirror="false"
|
||||
vertical_mirror="true"
|
||||
overflow_perspective="false" /><inkscape:path-effect
|
||||
effect="perspective-envelope"
|
||||
up_left_point="952.62987,270.86309"
|
||||
up_right_point="967.78613,270.86309"
|
||||
down_left_point="936.53304,284.60478"
|
||||
down_right_point="983.88296,284.60478"
|
||||
id="path-effect14"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
deform_type="perspective"
|
||||
horizontal_mirror="false"
|
||||
vertical_mirror="true"
|
||||
overflow_perspective="false" /><inkscape:path-effect
|
||||
effect="perspective-envelope"
|
||||
up_left_point="221.7625,226.76598"
|
||||
up_right_point="370.33352,226.76598"
|
||||
down_left_point="221.7625,303.35394"
|
||||
down_right_point="370.33352,303.35394"
|
||||
id="path-effect10"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
deform_type="perspective"
|
||||
horizontal_mirror="true"
|
||||
vertical_mirror="true"
|
||||
overflow_perspective="false" /><inkscape:path-effect
|
||||
effect="perspective-envelope"
|
||||
up_left_point="221.7625,226.76598"
|
||||
up_right_point="370.33352,226.76598"
|
||||
down_left_point="221.7625,303.35394"
|
||||
down_right_point="370.33352,303.35394"
|
||||
id="path-effect8"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
deform_type="perspective"
|
||||
horizontal_mirror="true"
|
||||
vertical_mirror="true"
|
||||
overflow_perspective="false" /><inkscape:path-effect
|
||||
effect="perspective-envelope"
|
||||
up_left_point="221.7625,226.76598"
|
||||
up_right_point="370.33352,226.76598"
|
||||
down_left_point="221.7625,303.35394"
|
||||
down_right_point="370.33352,303.35394"
|
||||
id="path-effect6"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
deform_type="perspective"
|
||||
horizontal_mirror="true"
|
||||
vertical_mirror="true"
|
||||
overflow_perspective="false" /><inkscape:path-effect
|
||||
effect="perspective-envelope"
|
||||
up_left_point="221.7625,226.76598"
|
||||
up_right_point="370.33352,226.76598"
|
||||
down_left_point="221.7625,303.35394"
|
||||
down_right_point="370.33352,303.35394"
|
||||
id="path-effect4"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
deform_type="perspective"
|
||||
horizontal_mirror="true"
|
||||
vertical_mirror="true"
|
||||
overflow_perspective="false" /><inkscape:path-effect
|
||||
effect="perspective-envelope"
|
||||
up_left_point="213.79951,335.28325"
|
||||
up_right_point="351.18682,335.28325"
|
||||
down_left_point="140.95117,410.48047"
|
||||
down_right_point="424.03516,410.48047"
|
||||
id="path-effect3"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
deform_type="perspective"
|
||||
horizontal_mirror="false"
|
||||
vertical_mirror="true"
|
||||
overflow_perspective="false" /><inkscape:path-effect
|
||||
effect="perspective-envelope"
|
||||
up_left_point="150.95065,137.3959"
|
||||
up_right_point="414.0361,137.3959"
|
||||
down_left_point="150.95065,400.48135"
|
||||
down_right_point="414.0361,400.48135"
|
||||
id="path-effect1"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
deform_type="perspective"
|
||||
horizontal_mirror="false"
|
||||
vertical_mirror="true"
|
||||
overflow_perspective="false" /></defs><path
|
||||
d="M 48,24 C 48,37.25424 37.25424,48 24,48 10.74576,48 0,37.25424 0,24 0,10.74576 10.74576,0 24,0 37.25424,0 48,10.74576 48,24 Z M 24,18.80256 c 1.41936,0 2.57064,1.151232 2.57064,2.572512 v 13.64832 c 0,1.421232 -1.151232,2.572512 -2.57064,2.572512 -1.419408,0 -2.57064,-1.151232 -2.57064,-2.572512 v -13.64832 c 0,-1.421232 1.151232,-2.572512 2.57064,-2.572512 z m 2.57064,-5.08896 c 0,-1.41936 -1.151232,-2.57064 -2.57064,-2.57064 -1.419408,0 -2.57064,1.151232 -2.57064,2.57064 v 0.04688 c 0,1.41936 1.151232,2.57064 2.57064,2.57064 1.419408,0 2.57064,-1.151232 2.57064,-2.57064 z"
|
||||
fill-rule="evenodd"
|
||||
id="path1"
|
||||
style="stroke-width:0.48;fill:#09bec8;fill-opacity:1" /></svg>
|
||||
|
After Width: | Height: | Size: 5.3 KiB |
@@ -0,0 +1,137 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="48"
|
||||
height="48"
|
||||
viewBox="0 0 48 48"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
xml:space="preserve"
|
||||
sodipodi:docname="warning.svg"
|
||||
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
|
||||
inkscape:export-filename="warning.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="px"
|
||||
inkscape:zoom="6.1208931"
|
||||
inkscape:cx="-12.416489"
|
||||
inkscape:cy="18.706421"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1027"
|
||||
inkscape:window-x="-4"
|
||||
inkscape:window-y="-4"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg1" /><defs
|
||||
id="defs1"><inkscape:path-effect
|
||||
effect="perspective-envelope"
|
||||
up_left_point="800.80455,142.57841"
|
||||
up_right_point="940.11735,142.57841"
|
||||
down_left_point="713.0918,247.98828"
|
||||
down_right_point="1027.8301,247.98828"
|
||||
id="path-effect16"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
deform_type="perspective"
|
||||
horizontal_mirror="false"
|
||||
vertical_mirror="true"
|
||||
overflow_perspective="false" /><inkscape:path-effect
|
||||
effect="perspective-envelope"
|
||||
up_left_point="952.62987,270.86309"
|
||||
up_right_point="967.78613,270.86309"
|
||||
down_left_point="936.53304,284.60478"
|
||||
down_right_point="983.88296,284.60478"
|
||||
id="path-effect14"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
deform_type="perspective"
|
||||
horizontal_mirror="false"
|
||||
vertical_mirror="true"
|
||||
overflow_perspective="false" /><inkscape:path-effect
|
||||
effect="perspective-envelope"
|
||||
up_left_point="221.7625,226.76598"
|
||||
up_right_point="370.33352,226.76598"
|
||||
down_left_point="221.7625,303.35394"
|
||||
down_right_point="370.33352,303.35394"
|
||||
id="path-effect10"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
deform_type="perspective"
|
||||
horizontal_mirror="true"
|
||||
vertical_mirror="true"
|
||||
overflow_perspective="false" /><inkscape:path-effect
|
||||
effect="perspective-envelope"
|
||||
up_left_point="221.7625,226.76598"
|
||||
up_right_point="370.33352,226.76598"
|
||||
down_left_point="221.7625,303.35394"
|
||||
down_right_point="370.33352,303.35394"
|
||||
id="path-effect8"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
deform_type="perspective"
|
||||
horizontal_mirror="true"
|
||||
vertical_mirror="true"
|
||||
overflow_perspective="false" /><inkscape:path-effect
|
||||
effect="perspective-envelope"
|
||||
up_left_point="221.7625,226.76598"
|
||||
up_right_point="370.33352,226.76598"
|
||||
down_left_point="221.7625,303.35394"
|
||||
down_right_point="370.33352,303.35394"
|
||||
id="path-effect6"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
deform_type="perspective"
|
||||
horizontal_mirror="true"
|
||||
vertical_mirror="true"
|
||||
overflow_perspective="false" /><inkscape:path-effect
|
||||
effect="perspective-envelope"
|
||||
up_left_point="221.7625,226.76598"
|
||||
up_right_point="370.33352,226.76598"
|
||||
down_left_point="221.7625,303.35394"
|
||||
down_right_point="370.33352,303.35394"
|
||||
id="path-effect4"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
deform_type="perspective"
|
||||
horizontal_mirror="true"
|
||||
vertical_mirror="true"
|
||||
overflow_perspective="false" /><inkscape:path-effect
|
||||
effect="perspective-envelope"
|
||||
up_left_point="213.79951,335.28325"
|
||||
up_right_point="351.18682,335.28325"
|
||||
down_left_point="140.95117,410.48047"
|
||||
down_right_point="424.03516,410.48047"
|
||||
id="path-effect3"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
deform_type="perspective"
|
||||
horizontal_mirror="false"
|
||||
vertical_mirror="true"
|
||||
overflow_perspective="false" /><inkscape:path-effect
|
||||
effect="perspective-envelope"
|
||||
up_left_point="150.95065,137.3959"
|
||||
up_right_point="414.0361,137.3959"
|
||||
down_left_point="150.95065,400.48135"
|
||||
down_right_point="414.0361,400.48135"
|
||||
id="path-effect1"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
deform_type="perspective"
|
||||
horizontal_mirror="false"
|
||||
vertical_mirror="true"
|
||||
overflow_perspective="false" /></defs><path
|
||||
d="M 7.1971726,48 H 40.780971 c 5.527113,0 9.001299,-6.666667 6.264062,-11.884058 L 30.200495,4.0000002 c -2.737237,-5.3333336 -9.685609,-5.3333336 -12.422847,0 L 0.93310958,36.115942 C -1.7514884,41.391304 1.6700586,48 7.1971726,48 Z M 24.041711,40.869566 c -1.473897,0 -2.684598,-1.333334 -2.684598,-2.956523 0,-1.623188 1.210701,-2.956522 2.684598,-2.956522 1.473897,0 2.684598,1.333334 2.631959,3.014494 0.05264,1.565217 -1.210701,2.898551 -2.631959,2.898551 z M 23.357402,14.202898 c 1.26334,-0.347826 2.579319,0.347827 3.105711,1.68116 0.157918,0.463768 0.263196,0.927537 0.263196,1.449275 -0.05264,1.449276 -0.157917,2.956523 -0.263196,4.405797 -0.105278,2.26087 -0.263196,4.57971 -0.368474,6.84058 -0.05264,0.753624 -0.05264,1.391305 -0.05264,2.144928 -0.05264,1.217391 -0.894866,2.144928 -2.000289,2.144928 -1.105423,0 -1.94765,-0.869566 -2.000289,-2.086958 -0.157918,-3.536231 -0.368474,-7.072463 -0.526392,-10.608695 -0.05264,-0.927536 -0.105278,-1.855073 -0.157917,-2.84058 -0.05264,-1.449275 0.736948,-2.724637 2.00029,-3.130435 z"
|
||||
id="path1"
|
||||
style="stroke-width:0.552408;fill:#ff6600" /></svg>
|
||||
|
After Width: | Height: | Size: 5.8 KiB |
+4731
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 "$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_portproton () {
|
||||
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 "$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_portproton () {
|
||||
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_portproton () {
|
||||
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_portproton () {
|
||||
# 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_portproton () { 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_portproton () {
|
||||
# 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"
|
||||
Loaded 100 of 669 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user