Compare commits

..
833 Commits
Author SHA1 Message Date
Boria138 2b60a79ae3 feat: add ReShade integration
Code check / Check code (pull_request) Canceled after 7m9s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-15 20:29:13 +05:00
Boria138 7f75d5386d fix: enable game pause in silent tray
Code check / Check code (push) Successful in 3m18s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-15 14:55:34 +05:00
Boria138 64aedb4a12 build: align PKGBUILDs with AUR packaging
Code check / Check code (push) Successful in 2m33s
Build AppImage, Arch, Fedora and Debian Packages / Build Fedora RPM (44) (push) Successful in 1m53s
Build AppImage, Arch, Fedora and Debian Packages / Build Arch Package (push) Successful in 4m41s
Build AppImage, Arch, Fedora and Debian Packages / Build Fedora RPM (45) (push) Successful in 1m57s
Build AppImage, Arch, Fedora and Debian Packages / Build Fedora RPM (rawhide) (push) Successful in 1m53s
Build AppImage, Arch, Fedora and Debian Packages / Create and Publish Release (push) Successful in 35s
Build AppImage, Arch, Fedora and Debian Packages / Build AppImage (push) Successful in 15m40s
Build AppImage, Arch, Fedora and Debian Packages / Build Fedora RPM (43) (push) Successful in 1m42s
Build AppImage, Arch, Fedora and Debian Packages / Build Debian Package (push) Successful in 4m27s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-14 23:21:16 +05:00
Boria138 bc41211ab1 fix: restore minimal tray for silent EXE launches
Code check / Check code (push) Successful in 2m43s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-14 23:13:50 +05:00
Boria138 bf93eff67d bump to 1.5.0
Build AppImage, Arch, Fedora and Debian Packages / Build AppImage (push) Canceled after 1m26s
Build AppImage, Arch, Fedora and Debian Packages / Build Fedora RPM (43) (push) Canceled after 0s
Build AppImage, Arch, Fedora and Debian Packages / Build Fedora RPM (45) (push) Canceled after 0s
Code check / Check code (push) Canceled after 3m25s
Build AppImage, Arch, Fedora and Debian Packages / Build Arch Package (push) Canceled after 0s
Build AppImage, Arch, Fedora and Debian Packages / Build Fedora RPM (44) (push) Canceled after 0s
Build AppImage, Arch, Fedora and Debian Packages / Build Debian Package (push) Canceled after 0s
Build AppImage, Arch, Fedora and Debian Packages / Create and Publish Release (push) Canceled after 0s
Build AppImage, Arch, Fedora and Debian Packages / Build Fedora RPM (rawhide) (push) Canceled after 0s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-14 21:31:07 +05:00
Boria138 5d2df85d19 chore(ci): rate mirrors
Code check / Check code (push) Canceled after 2s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-14 16:19:39 +00:00
Boria138 68ba818d74 chore(security): fix mailto link
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-14 20:07:24 +05:00
Boria138 68c89eccbc chore: added security policy
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-14 19:57:14 +05:00
Boria138 5109c50c99 fix: prevent library cards jumping during loading
Code check / Check code (push) Successful in 30m45s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-14 10:58:53 +05:00
Boria138 9f194fd33f perf: defer card creation during library scrolling
Code check / Check code (push) Successful in 12m28s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-13 23:02:32 +05:00
Codeberg TranslateandRubin13 d7838eceb1 Translated using Weblate (German)
Currently translated at 100.0% (798 of 798 strings)

Co-authored-by: Rubin13 <rubin13@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/de/
Translation: PortProtonQt/PortProtonQt
2026-10-12 19:09:48 +00:00
Boria138 94af16ceac feat: add keyboard-driven game settings search
Code check / Check code (push) Successful in 2m13s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-12 16:07:42 +05:00
Boria138 d2163b84b4 chore: disable WINE_FULLSCREEN_FSR by default
Code check / Check code (push) Successful in 2m6s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-12 15:56:03 +05:00
Renovate Bot a19f446b44 chore(deps): update https://git.linux-gaming.ru/actions/setup-node digest to 949feb2
Code check / Check code (push) Successful in 6m55s
2026-10-12 09:31:46 +00:00
Renovate Bot d1c812c5bd chore(deps): update archlinux:base-devel docker digest to 996c3a1
Code check / Check code (push) Successful in 8m12s
2026-10-12 09:31:38 +00:00
Boria138 e76abf430c chore: add themed icons to Wine/Proton manager buttons
Code check / Check code (push) Failing after 10m9s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-11 23:18:44 +05:00
Boria138 e9473ccaeb chore: sort Winetricks DLLs and fonts alphabetically
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-11 23:12:55 +05:00
Boria138 63997f8e1a fix: skip MangoHud config writes when disabled
Code check / Check code (push) Successful in 2m2s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-11 20:56:08 +05:00
Boria138 45235891c8 chore(theme): set minimum horizontal handle width
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-11 20:41:20 +05:00
Boria138 682363ded2 feat: add gamepad navigation to dialog action buttons
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-11 20:39:07 +05:00
Boria138 522e52f032 fix: size horizontal cards before layout insertion
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-11 20:29:13 +05:00
Boria138 c30be1214a fix: clear deleted full library tile reference
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-11 20:23:19 +05:00
Boria138 a99e752ec0 fix: correct horizontal layout menu mapping
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-11 20:20:43 +05:00
Boria138 91eddcb161 chore(locale): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-11 01:05:02 +05:00
Boria138 7f68494a57 fix: preserve library scroll during late updates
Code check / Check code (push) Successful in 2m57s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-11 00:59:56 +05:00
Boria138 135d53df31 chore(changelog): clean
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-10 18:21:39 +05:00
Boria138 893ed8f057 chore: emphasize selected rows in game settings
Code check / Check code (push) Successful in 8m6s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-10 18:15:05 +05:00
Boria138 aaeb550fd6 fix: prevent duplicate cards after installation
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-10 18:05:48 +05:00
Boria138 0210773642 chore(locale): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-10 18:02:34 +05:00
Boria138 6cf0fc4650 Merge branch 'weblate' 2026-10-10 18:01:52 +05:00
Boria138 404d7c0fd0 feat: auto-hide cursor after fullscreen inactivity
Code check / Check code (push) Successful in 1m59s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-10 18:01:11 +05:00
Codeberg TranslateandRubin13 fd2b0fca61 Translated using Weblate (German)
Currently translated at 100.0% (797 of 797 strings)

Co-authored-by: Rubin13 <rubin13@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/de/
Translation: PortProtonQt/PortProtonQt
2026-10-10 11:29:04 +00:00
Boria138 5fa734c2d1 chore: align Winetricks with application styling
Code check / Check code (push) Successful in 21m8s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-10 12:57:50 +05:00
Boria138 9b602181cc chore(locale): update
Code check / Check code (push) Successful in 6m29s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-10 12:35:44 +05:00
Boria138 7a2be0c289 chore: center wrapped settings button rows
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-10 12:35:14 +05:00
Boria138 7704308d63 chore: alternate list row backgrounds using theme colors
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-10 12:18:13 +05:00
Boria138 1f9882cec8 chore: set minimum scrollbar handle height to 30px
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-10 12:12:11 +05:00
Boria138 2f8d73e074 chore: arrange library controls vertically
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-10 12:07:54 +05:00
Boria138 2b36fe0a92 fix: prioritize horizontal wheel scrolling in library
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-10 12:01:56 +05:00
Boria138 cf1ed31f04 fix(theme): improve light library list contrast
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-10 11:52:38 +05:00
Boria138 066b3b6767 chore(settings): dim and shrink description text
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-10 11:51:00 +05:00
Boria138 ebb80a3602 chore: add spacing below compact detail buttons
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-10 11:45:49 +05:00
Boria138 1c37b4c961 chore: unify library and autoinstall table layout
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-10 11:41:30 +05:00
Boria138 16060274d6 fix: match Rockstar launcher by installation path
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-10 11:30:14 +05:00
Boria138 197b5266ba feat: show autoinstall installation status
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-10 11:25:24 +05:00
Boria138 3787e9b2bf chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-10 11:17:18 +05:00
Boria138 4f5499b56d test: separate PortProton shell script tests
Code check / Check code (push) Successful in 2m2s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-09 20:02:34 +05:00
Boria138 e1b8bfde7f chore: allow same exe as secondary launch target
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-09 19:57:31 +05:00
Codeberg TranslateandBoria138 311039a543 Translated using Weblate (Russian)
Currently translated at 100.0% (797 of 797 strings)

Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-10-09 11:06:18 +00:00
Boria138 fc73d80e43 chore(locale): update
Code check / Check code (push) Successful in 1m57s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-09 16:04:44 +05:00
Boria138 498a26c00e fix: retranslate gamepad hints after language changes
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-09 16:03:30 +05:00
Boria138 2234066479 feat: add option to disable Steam Proton scanning
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-09 15:57:06 +05:00
Boria138 d44f561c4c fix: preserve Unicode paths when launching second exe
Code check / Check code (push) Successful in 3m47s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-09 10:59:48 +05:00
Boria138 1d7602bb9e chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-08 22:00:59 +05:00
Boria138 facedf6c1a Merge branch 'weblate' 2026-10-08 21:57:32 +05:00
Boria138 78c5302a99 fix: detect RTX features after GPU initialization
Code check / Check code (push) Successful in 2m14s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-08 16:24:19 +00:00
Boria138 3fb29751ec feat: support bundled D7VK from Proton builds
Code check / Check code (push) Successful in 1m52s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-08 16:14:02 +00:00
Boria138 910c18ad37 fix: preload GameMode library instead of calling system gamemoderun
Code check / Check code (push) Successful in 1m51s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-08 16:13:26 +00:00
Boria138 a050c2ed35 chore: download Vulkan component versions on demand
Code check / Check code (push) Successful in 3m13s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-08 16:09:32 +00:00
Boria138 dc7e672ec8 fix: respect forced locale for Steam emulator configs
Code check / Check code (push) Failing after 1m46s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-08 16:08:11 +00:00
Codeberg TranslateandRubin13 ee093d727c Translated using Weblate (German)
Currently translated at 100.0% (796 of 796 strings)

Co-authored-by: Rubin13 <rubin13@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/de/
Translation: PortProtonQt/PortProtonQt
2026-10-06 16:27:20 +00:00
Boria138 a4f4f7e60f docs: add README badges and translation links
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-06 16:46:57 +05:00
Boria138 d1ea3d28f7 chore: generalize app descriptions
Code check / Check code (push) Successful in 2m0s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-06 15:28:00 +05:00
Boria138 c2dca6eda9 chore(ci): added libpulse for tests fix
Code check / Check code (push) Successful in 2m29s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-05 21:02:20 +05:00
Codeberg TranslateandBoria138 f9c3e52275 Translated using Weblate (Russian)
Currently translated at 100.0% (796 of 796 strings)

Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-10-05 12:41:05 +00:00
Codeberg TranslateandRubin13 7091d5ccbd Translated using Weblate (German)
Currently translated at 100.0% (795 of 795 strings)

Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: Rubin13 <rubin13@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/de/
Translation: PortProtonQt/PortProtonQt
2026-10-05 12:41:05 +00:00
Boria138 b88567a3ae chore(locale): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-05 17:39:24 +05:00
Boria138 40b3644f80 feat(themes): add fullscreen boot animations
Code check / Check code (push) Failing after 1m47s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-05 17:36:58 +05:00
Renovate Bot 636c535a33 fix(deps): update python dependencies
Code check / Check code (push) Successful in 2m14s
2026-10-05 05:10:16 +00:00
Boria138 e01076524c fix(settings): restore theme text colors
Code check / Check code (push) Successful in 2m16s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-04 17:15:09 +05:00
Renovate Bot ac84f3738b chore(deps): update archlinux:base-devel docker digest to 51dd3d2
Code check / Check code (push) Successful in 2m3s
2026-10-04 11:53:50 +00:00
Boria138 49f2d044b9 chore: bump Development Status to 5 - Production
Code check / Check code (push) Successful in 3m8s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-04 16:52:37 +05:00
Boria138 21603e32a4 fix(settings): correct combo tooltips and navigation
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-04 16:45:17 +05:00
Boria138 4a35f05893 fix(library): prevent flicker and delayed card focus
Code check / Check code (push) Successful in 3m12s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-02 11:36:07 +05:00
Boria138 29362b3413 perf: reduce library card resize stalls
Code check / Check code (push) Successful in 1m46s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-02 10:22:42 +05:00
Codeberg TranslateandBoria138 166667f7cf Translated using Weblate (Russian)
Currently translated at 100.0% (795 of 795 strings)

Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-10-02 03:32:23 +00:00
Boria138 6c560b9123 feat(proton): support separate WineLand builds
Code check / Check code (push) Successful in 2m6s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-02 01:09:40 +05:00
Boria138 595f58195e chore(locale): update
Code check / Check code (push) Successful in 4m4s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-01 17:44:59 +05:00
Boria138 e58d470960 feat(settings): add Wine download shortcut
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-01 17:43:33 +05:00
Boria138 760dd359b8 chore(settings): improve settings row readability
Code check / Check code (push) Successful in 2m18s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-10-01 14:17:07 +05:00
Gitea Actions 27f1247a1b chore: download stats 2026-10-01T00:00:52Z 2026-10-01 00:00:52 +00:00
Boria138 e25b52f3d5 fix: support game launches inside steam-run
Code check / Check code (push) Failing after 1m39s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-30 18:40:47 +05:00
Boria138 523446e827 fix: restore Guide + Select grid refresh
Code check / Check code (push) Successful in 1m47s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-30 11:06:21 +05:00
Boria138 a6610e8087 chore(i18n): clarify library layout labels
Code check / Check code (push) Successful in 1m47s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-28 10:46:02 +05:00
Codeberg Translateandadem 4dc09df895 Translated using Weblate (Russian)
Currently translated at 100.0% (794 of 794 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (784 of 784 strings)

Co-authored-by: Andrei Stepanov <adem4ik@gmail.com>
Co-authored-by: Codeberg Translate <translate@codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-09-27 16:33:33 +00:00
Codeberg Translateandrogerio-mattos 20c8dbe350 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (781 of 781 strings)

Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: rogerio-mattos <rogerio-mattos@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/pt_BR/
Translation: PortProtonQt/PortProtonQt
2026-09-27 16:33:33 +00:00
Codeberg TranslateandRubin13 839b4b7523 Translated using Weblate (German)
Currently translated at 100.0% (794 of 794 strings)

Translated using Weblate (German)

Currently translated at 100.0% (785 of 785 strings)

Translated using Weblate (German)

Currently translated at 100.0% (781 of 781 strings)

Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: Rubin13 <rubin13@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/de/
Translation: PortProtonQt/PortProtonQt
2026-09-27 16:33:32 +00:00
Gitea Actions 4860c232ea chore: update steam apps list 2026-09-27T16:33:22Z 2026-09-27 16:33:22 +00:00
Renovate Bot 704c514ba4 chore(deps): update https://git.linux-gaming.ru/actions/anylinux-setup-action action to v5
Code check / Check code (push) Successful in 1m41s
2026-09-27 04:30:29 +00:00
Renovate Bot 68b77657d6 chore(deps): update archlinux:base-devel docker digest to 8745817
Package Build - AppImage, Arch, Fedora, Debian / changes (pull_request) Successful in 14s
Package Build - AppImage, Arch, Fedora, Debian / Build Fedora RPM (44) (pull_request) Skipped
Code check / Check code (pull_request) Successful in 2m2s
Package Build - AppImage, Arch, Fedora, Debian / Build AppImage (pull_request) Skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Fedora RPM (43) (pull_request) Skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Fedora RPM (rawhide) (pull_request) Skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Arch Package (pull_request) Skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Debian Package (pull_request) Skipped
Code check / Check code (push) Successful in 1m58s
Package Build - AppImage, Arch, Fedora, Debian / Build Fedora RPM (45) (pull_request) Skipped
2026-09-27 00:00:56 +00:00
Boria138 13e89d8b2b chore(locale): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-26 12:01:15 +05:00
Boria138 30c3bfb3b1 feat(settings): allow skipping ALT Linux dependency checks
Code check / Check code (push) Successful in 1m34s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-26 11:59:37 +05:00
Boria138 8e12ec713f fix: repair malformed desktop entries
Code check / Check code (push) Successful in 3m43s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-25 22:38:30 +05:00
Boria138 e809f031ce fix: scroll horizontal library layouts with mouse wheel
Code check / Check code (push) Successful in 1m39s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-25 14:28:09 +05:00
Boria138 1b42c672bb fix: include library layout in gamepad navigation
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-25 14:20:43 +05:00
Boria138 07b53f3160 chore(locale): update
Code check / Check code (push) Successful in 2m2s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-25 13:59:45 +05:00
Boria138 40d80f0ce8 fix: preserve theme card animations across library layouts
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-25 13:58:53 +05:00
Boria138 0b8536b163 feat: add configurable library layout variant
Code check / Check code (push) Successful in 1m38s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-25 13:37:05 +05:00
Boria138 31f6d84537 feat: add vertical cards to horizontal library layouts
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-25 13:13:11 +05:00
Boria138 5c86b3d943 chore: remove unversioned LG Wine aliases from settings
Code check / Check code (push) Successful in 2m2s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-24 20:13:29 +05:00
Boria138 ec2ffee64d chore(locale): update
Code check / Check code (push) Successful in 1m39s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-24 20:08:51 +05:00
Boria138 60e9a2866a chore: move Wine defaults to user.conf settings
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-24 20:07:47 +05:00
Boria138 94269455ec fix: restore gamepad control for user.conf combos
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-24 19:55:38 +05:00
Boria138 f5c07cf3ea fix: add resolution save to global game settings editor
Code check / Check code (push) Successful in 2m43s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-24 12:18:24 +05:00
Boria138 509d4272ab chore(locale): update
Code check / Check code (push) Successful in 1m54s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-24 11:40:43 +05:00
Boria138 ff560fb43a feat: add global game settings editor
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-24 11:39:34 +05:00
Boria138 ed78af49d2 feat: add unified store download queue
Code check / Check code (push) Successful in 1m45s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-23 11:14:24 +05:00
Boria138 5c5a154a0d feat: improve completed download actions
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-23 10:59:46 +05:00
Boria138 ae011adfdf feat: add install all button to DLC dialog
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-23 10:36:12 +05:00
Boria138 b0d97e0e0b chore: added Temporarily disable OptiScaler hint to compatibility_report
Code check / Check code (push) Successful in 1m48s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-22 19:06:39 +05:00
Boria138 8a303bf9ed fix: improve game crash detection
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-22 19:03:40 +05:00
Boria138 a14563dd78 fix: prevent duplicate game card when adding a game
Code check / Check code (push) Successful in 2m42s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-21 15:49:39 +05:00
Codeberg TranslateandBoria138 abb511c173 Translated using Weblate (Russian)
Currently translated at 100.0% (781 of 781 strings)

Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-09-20 18:28:52 +00:00
Boria138 ef0626a069 chore(locale): merge Russian Weblate updates 2026-09-20 23:26:03 +05:00
Boria138 40f06caa16 fix: update library search after adding executable
Code check / Check code (push) Successful in 1m50s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-20 23:23:30 +05:00
Boria138 bfd4bf4065 chore: Added Kex Engine support to graphics_detector
Code check / Check code (push) Successful in 2m15s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-20 14:11:59 +05:00
Boria138 92ecc008f3 chore(locale): update
Code check / Check code (push) Successful in 4m4s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-20 13:25:21 +05:00
Boria138 0c78e9c689 feat: add MangoHud font settings
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-20 13:24:23 +05:00
Codeberg Translateandadem 4840d512b5 Translated using Weblate (Russian)
Currently translated at 100.0% (779 of 779 strings)

Co-authored-by: Andrei Stepanov <adem4ik@gmail.com>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-09-20 07:04:46 +00:00
Boria138 c22992b803 chore: use unity player to graphics_detector
Code check / Check code (push) Successful in 3m38s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-20 12:04:22 +05:00
Renovate Bot 57f955d827 chore(deps): update debian docker tag to trixie-20260918
Code check / Check code (push) Successful in 2m42s
2026-09-20 06:48:57 +00:00
Renovate Bot f9694e576b chore(deps): update archlinux:base-devel docker digest to 4894f5a
Code check / Check code (pull_request) Successful in 1m57s
Package Build - AppImage, Arch, Fedora, Debian / Build AppImage (pull_request) Skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Fedora RPM (43) (pull_request) Skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Fedora RPM (44) (pull_request) Skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Fedora RPM (45) (pull_request) Skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Fedora RPM (rawhide) (pull_request) Skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Debian Package (pull_request) Skipped
Code check / Check code (push) Successful in 1m56s
Package Build - AppImage, Arch, Fedora, Debian / Build Arch Package (pull_request) Skipped
Package Build - AppImage, Arch, Fedora, Debian / changes (pull_request) Successful in 14s
2026-09-20 00:00:58 +00:00
Gitea Actions a74c5631ec chore: download stats 2026-09-18T17:06:55Z 2026-09-18 17:06:56 +00:00
Boria138 55361797c3 chore: round download stats
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-18 22:05:28 +05:00
Boria138 f3999e9bf1 fix: refresh detail page after editing a shortcut
Code check / Check code (push) Successful in 1m56s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-18 21:32:13 +05:00
Boria138 35366bbf12 fix: require confirmation before deleting EGS games
Code check / Check code (push) Successful in 1m36s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-18 11:44:40 +05:00
Boria138 bab6d6b84e feat: add DLC selection and installation for GOG and EGS
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-18 11:40:24 +05:00
Boria138 061ee7fedf fix: keep library search results packed in both layouts
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-18 11:18:21 +05:00
Boria138 8707c93835 feat: verify existing GOG and Epic files during installation
Code check / Check code (push) Successful in 2m1s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-17 22:51:02 +05:00
Boria138 53a44c5708 fix: filter GOG and Epic DLCs from the game library
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-17 22:24:52 +05:00
Boria138 154cf43bf8 fix: show Steam demos and related applications
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-17 22:17:21 +05:00
Boria138 a70bf97774 ci: check Bash 5.1 conditional separator compatibility
Code check / Check code (push) Successful in 2m50s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-16 18:31:34 +05:00
Boria138 a06f76a2e9 fix: wait for background workers during shutdown
Code check / Check code (push) Successful in 2m41s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-15 19:33:04 +05:00
Boria138 649aec7229 fix: restore prefix backup support with libarchive-c 5.1
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-15 19:20:46 +05:00
Boria138 0da0d55537 docs: separate third-party license notices
Code check / Check code (push) Successful in 3m45s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-15 16:25:14 +05:00
Renovate Bot c2f611c73e chore(deps): update https://git.linux-gaming.ru/actions/anylinux-setup-action action to v4
Code check / Check code (push) Successful in 1m50s
2026-09-15 10:33:12 +00:00
Renovate Bot c4f9f05363 chore(deps): update archlinux:base-devel docker digest to 70d777a
Code check / Check code (pull_request) Successful in 3m11s
Package Build - AppImage, Arch, Fedora, Debian / Build Fedora RPM (43) (pull_request) Skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Fedora RPM (44) (pull_request) Skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Fedora RPM (45) (pull_request) Skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Fedora RPM (rawhide) (pull_request) Skipped
Code check / Check code (push) Successful in 3m36s
Package Build - AppImage, Arch, Fedora, Debian / changes (pull_request) Successful in 14s
Package Build - AppImage, Arch, Fedora, Debian / Build AppImage (pull_request) Skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Arch Package (pull_request) Skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Debian Package (pull_request) Skipped
2026-09-15 10:27:15 +00:00
Boria138 56c8a9781b fix: restore gamepad hotplug and active type hints
Code check / Check code (push) Successful in 1m55s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-14 17:11:54 +05:00
Boria138 9d72466402 fix: align autoinstall behavior with library layouts
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-14 17:05:51 +05:00
Boria138 4df207fa3b chore: migrate AppImage builds to anylinux setup action
Code check / Check code (push) Successful in 1m32s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-14 13:11:57 +05:00
Renovate Bot bd6dc490b1 fix(deps): update dependency evdev to v2
Code check / Check code (push) Successful in 1m43s
2026-09-14 07:55:51 +00:00
Renovate Bot 383d17f523 fix(deps): update dependency tqdm to >=4.70.1
Code check / Check code (push) Successful in 1m33s
2026-09-14 07:55:36 +00:00
Codeberg Translateandadem 9b889a8d2e Translated using Weblate (Russian)
Currently translated at 100.0% (779 of 779 strings)

Co-authored-by: Andrei Stepanov <adem4ik@gmail.com>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-09-14 07:54:46 +00:00
Boria138 64c9f4d196 fix: support input from multiple gamepads
Code check / Check code (push) Successful in 1m34s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-14 07:54:40 +00:00
Boria138 0de9e46485 fix: check ALT dependencies before GOG support setup
Code check / Check code (push) Successful in 2m25s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-13 12:53:44 +05:00
Boria138 bdc14d1d86 fix: preserve terminal errors for inspection
Code check / Check code (push) Successful in 1m46s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-13 12:48:39 +05:00
Boria138 1fc8d62a85 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-13 11:58:12 +05:00
Codeberg Translateandadem4ik 0e3a0be146 Translated using Weblate (Russian)
Currently translated at 100.0% (776 of 776 strings)

Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: adem4ik <adem4ik@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-09-11 19:32:38 +00:00
Codeberg Translateandrogerio-mattos 6e2f7452bd Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (773 of 773 strings)

Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: rogerio-mattos <rogerio-mattos@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/pt_BR/
Translation: PortProtonQt/PortProtonQt
2026-09-11 19:32:38 +00:00
Codeberg Translateandgallegonovato 37168f8892 Translated using Weblate (Spanish)
Currently translated at 44.9% (349 of 776 strings)

Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: gallegonovato <gallegonovato@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/es/
Translation: PortProtonQt/PortProtonQt
2026-09-11 19:32:38 +00:00
Codeberg TranslateandRubin13 141f98d81f Translated using Weblate (German)
Currently translated at 100.0% (779 of 779 strings)

Co-authored-by: Rubin13 <rubin13@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/de/
Translation: PortProtonQt/PortProtonQt
2026-09-11 19:32:38 +00:00
Boria138 7031051dc4 feat: added vulkan to graphics API executable detection
Code check / Check code (push) Failing after 30s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-12 00:29:42 +05:00
Boria138 769ad421a2 feat: improve graphics API executable detection
Code check / Check code (push) Successful in 1m58s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-12 00:25:41 +05:00
Boria138 2316efe3d6 fix: prevent autoinstall custom data collisions
Code check / Check code (push) Successful in 2m27s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-11 17:40:57 +05:00
Boria138 09b790fc26 feat: add ID-based GOG and EGS shortcut editing
Code check / Check code (push) Successful in 1m34s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-11 17:19:11 +05:00
Boria138 a48b9050d2 chore: migrate legacy data to persistent storage
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-11 17:12:15 +05:00
Boria138 b602880907 chore: move cache and launcher storage to XDG data directory
Code check / Check code (push) Successful in 2m20s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-11 12:33:40 +05:00
Boria138 05a5b136e9 chore(locale): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-11 12:19:18 +05:00
Boria138 bde4ba9602 feat: offer removal or executable replacement for missing games
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-11 12:16:59 +05:00
Renovate Bot 2634370ee3 chore(deps): update archlinux:base-devel docker digest to 61f7de2
Code check / Check code (push) Successful in 2m5s
2026-09-10 15:56:58 +00:00
Renovate Bot 9cea141f9c chore(deps): update dependency pyright to >=1.1.414
Code check / Check code (push) Successful in 2m16s
2026-09-10 15:56:48 +00:00
Boria138 3d417c1a83 fix: refresh button sizing during live theme changes
Code check / Check code (push) Successful in 3m19s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-10 20:56:21 +05:00
Boria138 27003d4967 fix: support library background during live theme switch
Code check / Check code (push) Successful in 1m57s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-10 20:42:27 +05:00
Boria138 c75755bb64 fix: initialize tray before silent launch
Code check / Check code (push) Failing after 55s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-10 13:55:41 +05:00
Boria138 67652ea258 chore(locale): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-10 13:50:14 +05:00
Boria138 3735c7514c feat: add game pause controls to system tray
Code check / Check code (push) Failing after 1m28s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-10 13:49:01 +05:00
Boria138 803c98b6ff fix: prevent empty tray icon during slow startup
Code check / Check code (push) Failing after 1m25s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-10 12:55:19 +05:00
Boria138 9214018c03 fix: wrap game titles in horizontal library modes
Code check / Check code (push) Successful in 4m19s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-09 17:45:51 +05:00
Boria138 d2597fa8d6 feat: support horizontal auto-hide scrollbars
Code check / Check code (push) Successful in 3m21s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-09 17:43:08 +05:00
Boria138 25e20c3ea1 feat: reload custom themes when files change
Code check / Check code (push) Successful in 1m46s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-09 17:32:14 +05:00
Boria138 f1a5db4f34 fix: use XDG data paths on NixOS
Code check / Check code (push) Successful in 1m39s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-08 20:26:34 +05:00
Boria138 096d86cb7b fix: set icon for built-in terminal window
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-08 20:16:06 +05:00
Boria138 7b7553a1fe feat: add ALT i586 dependency CLI check
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-08 20:13:56 +05:00
Boria138 7c30418d61 fix: filter Wine builds by host architecture
Code check / Check code (push) Successful in 2m52s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-08 14:57:17 +05:00
Boria138 fa30835e97 fix: handle store game shutdown without stale UI state
Code check / Check code (push) Successful in 2m33s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-08 14:37:06 +05:00
Renovate Bot 0bdab8fd40 fix(deps): update python dependencies
Code check / Check code (push) Successful in 2m41s
2026-09-08 09:19:59 +00:00
Renovate Bot 43f4d0a665 chore(deps): update https://git.linux-gaming.ru/actions/setup-python action to v7
Code check / Check code (push) Successful in 3m29s
2026-09-08 09:19:48 +00:00
Renovate Bot 779a5eca65 chore(deps): update https://git.linux-gaming.ru/actions/setup-node action to v7
Code check / Check code (pull_request) Successful in 3m36s
Code check / Check code (push) Successful in 2m21s
2026-09-08 08:59:41 +00:00
Boria138 1a30a105d0 test: use built-in TimeoutError in D-Bus test
Code check / Check code (push) Successful in 2m6s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-08 13:54:40 +05:00
Boria138 45fe72d393 build: require Python 3.11
Code check / Check code (push) Failing after 1m31s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-08 13:44:42 +05:00
Boria138 3b9e531eda chore: added minazuki to GameMode conflicts
Code check / Check code (push) Failing after 2m39s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-07 22:47:05 +05:00
Boria138 822b454bf4 fix: detect EOS overlay registry section case-insensitively
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-07 22:42:45 +05:00
Renovate Bot 77a65d9e81 chore(deps): update archlinux:base-devel docker digest to 84cd9ef
Code check / Check code (push) Successful in 2m44s
2026-09-06 14:56:44 +00:00
Codeberg Translateandadem4ik eee8fb5f0e Translated using Weblate (Russian)
Currently translated at 100.0% (773 of 773 strings)

Co-authored-by: adem4ik <adem4ik@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-09-05 17:10:27 +00:00
Codeberg TranslateandRubin13 4d84d74d70 Translated using Weblate (German)
Currently translated at 100.0% (773 of 773 strings)

Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: Rubin13 <rubin13@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/de/
Translation: PortProtonQt/PortProtonQt
2026-09-05 17:10:27 +00:00
Boria138 c9fea6e713 feat: add vertical library table layout
Code check / Check code (push) Successful in 1m47s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-05 22:07:19 +05:00
Boria138 b4f39b003b fix: close silent tray after store game exits
Code check / Check code (push) Successful in 2m33s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-05 12:37:51 +05:00
Boria138 f7e44d72c8 feat: add EGS desktop and menu shortcuts
Code check / Check code (push) Successful in 2m44s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-05 12:22:12 +05:00
Boria138 747b85ce2f fix: improve EGS update cancellation and progress display
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-05 12:12:03 +05:00
Boria138 b907b5400c fix: handle EGS launch and cancellation correctly
Code check / Check code (push) Successful in 1m42s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-05 11:53:17 +05:00
Boria138 043031baec fix: preserve log button state on compact layout
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-05 10:40:53 +05:00
Boria138 17e7fa2690 chore(changelog): clean
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-03 19:58:28 +05:00
Boria138 be1e517c68 fix: retranslate composed settings labels
Code check / Check code (push) Successful in 2m45s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-02 23:38:53 +05:00
Boria138 bcd089439e chore: correct desktop MIME associations
Code check / Check code (push) Successful in 2m42s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-02 22:54:50 +05:00
Boria138 cb1b984f04 fix: bundle Bash in AppImage for system GameMode
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-02 22:29:12 +05:00
Boria138 22bf9b2451 feat: apply locale changes without restart
Code check / Check code (push) Successful in 2m55s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-02 12:17:28 +05:00
Boria138 c8ff25dd69 test: mute UI sounds during pytest runs
Code check / Check code (push) Successful in 2m14s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-02 12:08:20 +05:00
Boria138 927531620a fix: bound delayed system adapter polling
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-02 12:05:44 +05:00
Boria138 bb14e1a346 feat: add Proton CachyOS WineLand support
Code check / Check code (push) Successful in 3m9s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-02 11:48:24 +05:00
Boria138 2a5a45fabd fix: retry system adapters after delayed initialization
Code check / Check code (push) Successful in 2m24s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-01 17:36:28 +05:00
Boria138 5e0e5b785e chore(localization): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-01 17:22:46 +05:00
Codeberg Translateandadem4ik 90c4901e8e Translated using Weblate (Russian)
Currently translated at 100.0% (757 of 757 strings)

Co-authored-by: adem4ik <adem4ik@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-09-01 12:21:12 +00:00
Boria138 c1e76b8e8c feat: add forced English language setting
Code check / Check code (push) Successful in 2m6s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-09-01 17:19:42 +05:00
Gitea Actions 782c9cae6a chore: download stats 2026-09-01T00:01:40Z 2026-09-01 00:01:40 +00:00
Boria138 725c8d371e chore(locale): update
Code check / Check code (push) Successful in 2m19s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-31 11:07:34 +05:00
Boria138 53d79c50d3 feat: add horizontal library layout
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-31 11:07:00 +05:00
Boria138 af8679aa08 fix: refresh Epic library with all sources
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-31 11:06:59 +05:00
Boria138 96a2bd92e8 fix: handle empty settings categories in search
Code check / Check code (push) Successful in 1m30s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-30 19:58:20 +05:00
Renovate Bot 810d09b0ad chore(deps): update https://git.linux-gaming.ru/actions/checkout action to v7
Code check / Check code (push) Successful in 3m6s
2026-08-30 04:31:27 +00:00
Renovate Bot 359ac7d72e fix(deps): update python dependencies
Code check / Check code (pull_request) Successful in 2m39s
Code check / Check code (push) Successful in 1m33s
2026-08-30 00:01:22 +00:00
Boria138 6135f640fd fix: reuse library cache when toggling installed filter
Code check / Check code (push) Successful in 2m29s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-29 22:25:52 +05:00
Boria138 58d85dcf9f feat: add configurable return-to-desktop action
Code check / Check code (push) Successful in 2m32s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-29 21:54:50 +05:00
Boria138 6b614ce0c5 chore(changelog): update
Code check / Check code (push) Successful in 3m52s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-29 21:29:44 +05:00
Boria138 7b563dff32 chore: filter mobile-only Epic games
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-29 21:27:22 +05:00
Boria138 d04e637030 fix: show Epic library refresh progress
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-29 21:27:22 +05:00
Boria138 00a222073f feat: improve library substring search
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-29 21:27:22 +05:00
Codeberg Translateandrogerio-mattos e09c87491f Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (757 of 757 strings)

Co-authored-by: rogerio-mattos <rogerio-mattos@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/pt_BR/
Translation: PortProtonQt/PortProtonQt
2026-08-29 06:08:47 +00:00
Codeberg TranslateandRubin13 4f5fa36a0d Translated using Weblate (German)
Currently translated at 100.0% (757 of 757 strings)

Co-authored-by: Rubin13 <rubin13@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/de/
Translation: PortProtonQt/PortProtonQt
2026-08-29 06:08:47 +00:00
Boria138 6e70c92afc fix(appimage): preserve MIME metadata in AppImage
Code check / Check code (push) Successful in 1m42s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-29 11:08:33 +05:00
Boria138 ff568fad1c feat: Added EGS integration
Code check / Check code (pull_request) Successful in 2m1s
Code check / Check code (push) Failing after 2m32s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-29 10:36:06 +05:00
Renovate Bot 254f56fe17 chore(deps): update debian docker tag to trixie-20260824
Code check / Check code (push) Successful in 2m12s
2026-08-28 05:55:59 +00:00
Renovate Bot b0e8345517 fix(deps): update python dependencies
Code check / Check code (pull_request) Successful in 2m29s
Code check / Check code (push) Successful in 3m15s
2026-08-28 05:55:09 +00:00
Renovate Bot 897daf983b chore(deps): update https://git.linux-gaming.ru/actions/checkout digest to d23441a
Code check / Check code (push) Successful in 1m27s
2026-08-27 19:30:30 +00:00
Renovate Bot 2effcf5505 chore(deps): update archlinux:base-devel docker digest to 68bfc3b
Package Build - AppImage, Arch, Fedora, Debian / changes (pull_request) Successful in 16s
Package Build - AppImage, Arch, Fedora, Debian / Build AppImage (pull_request) Skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Fedora RPM (43) (pull_request) Skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Fedora RPM (44) (pull_request) Skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Fedora RPM (45) (pull_request) Skipped
Code check / Check code (pull_request) Successful in 2m15s
Code check / Check code (push) Successful in 2m42s
Package Build - AppImage, Arch, Fedora, Debian / Build Arch Package (pull_request) Skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Debian Package (pull_request) Skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Fedora RPM (rawhide) (pull_request) Skipped
2026-08-27 16:47:03 +00:00
Boria138 5aaa7cbc7e fix: register PPDB files as plain text
Code check / Check code (push) Successful in 1m53s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-27 21:11:29 +05:00
Codeberg Translateandadem4ik 6a502711ad Translated using Weblate (Russian)
Currently translated at 100.0% (757 of 757 strings)

Co-authored-by: adem4ik <adem4ik@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-08-27 07:22:20 +00:00
Boria138 4889ad1f48 chore: disable automatic PPDB downloads by default
Code check / Check code (push) Successful in 3m14s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-27 12:21:46 +05:00
Boria138 2d5336bc51 fix: skip invalid Steam cover images
Code check / Check code (push) Successful in 4m37s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-27 11:19:34 +05:00
Boria138 a7fe71558e fix: correct dynamic theme module typing
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-27 11:07:11 +05:00
Boria138 b9de7e40fe chore: added Fedora 45
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-27 11:02:18 +05:00
Boria138 9ad69007ec perf: cache themes for faster live switching
Code check / Check code (push) Failing after 2m25s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-26 18:27:06 +05:00
Boria138 6af8b31a90 feat: apply themes without restarnings
Code check / Check code (push) Successful in 4m21s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-26 18:18:59 +05:00
Boria138 18ae09f4b0 bump to 1.4.1
Code check / Check code (push) Successful in 2m38s
Build AppImage, Arch, Fedora and Debian Packages / Build AppImage (push) Successful in 7m15s
Build AppImage, Arch, Fedora and Debian Packages / Build Arch Package (push) Successful in 2m56s
Build AppImage, Arch, Fedora and Debian Packages / Create and Publish Release (push) Successful in 16s
Build AppImage, Arch, Fedora and Debian Packages / Build Fedora RPM (rawhide) (push) Successful in 3m27s
Build AppImage, Arch, Fedora and Debian Packages / Build Debian Package (push) Successful in 8m19s
Build AppImage, Arch, Fedora and Debian Packages / Build Fedora RPM (44) (push) Successful in 1m59s
Build AppImage, Arch, Fedora and Debian Packages / Build Fedora RPM (43) (push) Successful in 1m48s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-26 13:06:56 +05:00
Boria138 ba56c92726 Revert "chore: update SLR"
This reverts commit ae1d991286.
2026-08-26 13:03:20 +05:00
Codeberg TranslateandBoria138 b55ffc9d09 Translated using Weblate (Russian)
Currently translated at 100.0% (757 of 757 strings)

Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-08-24 10:25:55 +00:00
Boria138 f819e495f2 bump to 1.4.0
Build AppImage, Arch, Fedora and Debian Packages / Build Fedora RPM (43) (push) Successful in 3m11s
Build AppImage, Arch, Fedora and Debian Packages / Build Fedora RPM (44) (push) Successful in 1m45s
Build AppImage, Arch, Fedora and Debian Packages / Build Debian Package (push) Successful in 6m2s
Code check / Check code (push) Successful in 7m7s
Build AppImage, Arch, Fedora and Debian Packages / Build AppImage (push) Successful in 8m2s
Build AppImage, Arch, Fedora and Debian Packages / Build Fedora RPM (rawhide) (push) Successful in 2m5s
Build AppImage, Arch, Fedora and Debian Packages / Create and Publish Release (push) Successful in 31s
Build AppImage, Arch, Fedora and Debian Packages / Build Arch Package (push) Successful in 2m17s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-23 14:33:43 +05:00
Boria138 4e998edae8 chore: count downloads from both GitHub mirrors
Code check / Check code (push) Successful in 7m20s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-23 14:32:13 +05:00
Boria138 6ccfeffdd8 fix: locate vk_gpu_info in build auxiliary binaries
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-23 14:29:56 +05:00
Boria138 3ce2acca89 chore: update GitHub mirror repositories
Code check / Check code (push) Failing after 3m10s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-22 17:19:58 +05:00
Boria138 2092a08e82 chore: migrate legacy AppImage integration safely
Code check / Check code (push) Successful in 4m27s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-22 15:54:10 +05:00
Boria138 79a32d392e chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-22 15:33:59 +05:00
Boria138 f1a34d352b refactor: move notification icons to themes
Package Build - AppImage, Arch, Fedora, Debian / Build AppImage (pull_request) Skipped
Code check / Check code (pull_request) Failing after 2m34s
Package Build - AppImage, Arch, Fedora, Debian / changes (pull_request) Successful in 15s
Package Build - AppImage, Arch, Fedora, Debian / Build Arch Package (pull_request) Skipped
Code check / Check code (push) Successful in 3m44s
Package Build - AppImage, Arch, Fedora, Debian / Build Fedora RPM (43) (pull_request) Failing after 1m14s
Package Build - AppImage, Arch, Fedora, Debian / Build Fedora RPM (44) (pull_request) Failing after 1m15s
Package Build - AppImage, Arch, Fedora, Debian / Build Fedora RPM (rawhide) (pull_request) Failing after 1m35s
Package Build - AppImage, Arch, Fedora, Debian / Build Debian Package (pull_request) Skipped
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-22 15:31:18 +05:00
Boria138 7afd6d0baf fix: pass proxy settings to curl
Code check / Check code (push) Failing after 1m34s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-22 08:07:55 +00:00
Boria138 a0a602daf5 chore: respect selected download mirror
Code check / Check code (push) Successful in 1m57s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-22 08:07:39 +00:00
Boria138 9d797e8072 fix: track GOG launch statistics per game
Code check / Check code (push) Successful in 5m33s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-22 11:41:00 +05:00
Boria138 b695ec6a2a fix: show GOG dependency download status
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-22 11:29:55 +05:00
Boria138 d562bbf18d chore: remove log creation guide from debug log
Code check / Check code (push) Successful in 4m47s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-21 21:05:36 +05:00
Boria138 cf4185007a chore(locale): update
Code check / Check code (push) Successful in 4m14s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-21 12:28:54 +05:00
Boria138 e8dbaeb9f7 feat: add custom theme removal
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-21 12:27:11 +05:00
Boria138 2ec44c6a5b chore: update debug log help links
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-21 12:20:13 +05:00
Boria138 257f3c85cf fix 7z on appimage
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-21 12:12:55 +05:00
Codeberg Translateandrogerio-mattos 53f1f5857c Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (754 of 754 strings)

Co-authored-by: rogerio-mattos <rogerio-mattos@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/pt_BR/
Translation: PortProtonQt/PortProtonQt
2026-08-20 21:25:51 +00:00
Boria138 ae1d991286 chore: update SLR
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-20 15:46:00 +05:00
Boria138 693f0cb7f4 chore: drop ext from ppdb
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-20 00:36:51 +05:00
Boria138 85af880000 build: bundle 7z and vk_gpu_info in AppImage
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-19 23:27:36 +05:00
Boria138 ed1ba4dd28 refactor: remove unused dead code
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-19 21:09:37 +05:00
Boria138 de29dd92a9 chore: keep settings gamepad navigation vertical
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-19 20:33:51 +05:00
Codeberg Translateandrogerio-mattos 6fa6f1af2a Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.8% (753 of 754 strings)

Co-authored-by: rogerio-mattos <rogerio-mattos@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/pt_BR/
Translation: PortProtonQt/PortProtonQt
2026-08-19 00:27:31 +00:00
Boria138 16ef000ed2 fix: cache metadata indexes and preserve source ribbons
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-18 00:09:08 +05:00
Codeberg TranslateandBoria138 299a3cf89e Translated using Weblate (Russian)
Currently translated at 100.0% (754 of 754 strings)

Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-08-17 06:15:22 +00:00
Rubin13 056faafd82 Translated using Weblate (German)
Currently translated at 100.0% (753 of 753 strings)

Translation: PortProtonQt/PortProtonQt
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/de/
2026-08-17 11:11:24 +05:00
Boria138 4615b922c2 chore(locale): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-16 21:24:44 +05:00
Boria138 e842840101 feat: add option to hide control hints
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-16 21:21:59 +05:00
Boria138 8e76a50b1d test: isolate asyncio event loops in D-Bus tests
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-16 12:00:43 +05:00
Boria138 e7cf33cdc0 fix: queue gamepad events before opening modal dialogs
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-16 11:54:10 +05:00
Boria138 3c47d636f2 fix: prevent skipped cards during fast D-pad input
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-16 11:42:55 +05:00
Boria138 0b253a4d6e fix: restore gamepad input after update dialog closes
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-16 11:39:36 +05:00
Boria138 ded84a6130 fix: correct library filter controls layout
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-16 10:57:48 +05:00
Codeberg TranslateandBoria138 4a17f438fd Translated using Weblate (Russian)
Currently translated at 100.0% (753 of 753 strings)

Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-08-15 13:04:09 +00:00
Boria138 3e6e138ff9 fix: show cached library while GOG refreshes
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-15 11:28:18 +05:00
Boria138 2f7dc41c49 fix: refresh only the selected library source
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-15 11:22:05 +05:00
Boria138 ce1ca0d026 fix: prevent repeated card navigation sound
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-15 10:58:35 +05:00
Boria138 6ffdd4988f fix: resize library filters when checkbox is hidden
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-15 10:54:13 +05:00
Boria138 debe88f2bc fix: prevent repeated combo box navigation sounds
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-15 10:48:22 +05:00
Boria138 efeac02ece fix: adapt settings actions to narrow windows
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-15 10:39:26 +05:00
Boria138 08d45ddc70 fix: restore Git version fallback
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-14 15:13:58 +05:00
Boria138 7a62207063 fix: prevent repeated gamepad navigation sounds
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-14 15:08:08 +05:00
Boria138 1deaaf74d8 fix: preserve gamepad input in game card context menu
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-14 15:04:59 +05:00
Boria138 a45792307e fix: correct Meson configuration
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-14 11:42:38 +05:00
Boria138 a52d4a1f49 fix: preserve gamepad input after mouse emulation toggle
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-14 11:36:37 +05:00
Boria138 a5ea3e220f chore: report native gamepad library path
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-14 11:11:45 +05:00
Boria138 10b498acb7 refactor: load gamepad library beside Python module
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-14 11:07:32 +05:00
Boria138 d9f3e7fbb8 build: organize native binaries and sources
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-14 11:04:23 +05:00
Boria138 998a4234e5 fix: avoid duplicate sound in combo navigation
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-14 10:53:28 +05:00
Boria138 97c1addedc fix: limit gogdl update checks to once a month
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-14 10:45:36 +05:00
Boria138 b9a8a07a04 chore: refine installed games filter controls
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-14 10:41:50 +05:00
Boria138 9e5fd9d1a7 refactor: add native SDL3 gamepad input
Assisted-by: Codex:gpt-5.6
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-13 21:13:08 +05:00
Boria138 cea7b40b82 chore: drop Fedora 42 from builds
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-13 15:01:23 +05:00
Boria138 2a89bd7573 fix: play game launch sound before RPM package check
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-12 11:53:37 +05:00
Boria138 c66538e32f feat: add open folder button to Wine manager
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-12 11:47:26 +05:00
Codeberg Translateandgallegonovato d2e06fcbc3 Translated using Weblate (Spanish)
Currently translated at 45.9% (346 of 753 strings)

Co-authored-by: gallegonovato <gallegonovato@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/es/
Translation: PortProtonQt/PortProtonQt
2026-08-11 19:26:23 +00:00
Boria138 4b56725559 chore: set Windows 11 as the default version
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-11 22:35:32 +05:00
Boria138 14cf5c73f8 feat: install Wine archives via drag and drop
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-11 21:05:34 +05:00
Boria138 347685e4f0 bump to v1.3.2
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-11 13:40:40 +05:00
Boria138 5e512279f3 chore(locale): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-10 21:56:21 +05:00
Boria138 05e7366706 chore: document GOG support
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-10 21:56:21 +05:00
Boria138 862bfe4f8b feat: add installed-only library filter
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-10 21:56:21 +05:00
Dervart 12b0889566 theme: add color_text_accent_hover variable to other themes 2026-08-10 06:43:09 +00:00
Boria138 a62bfecfd3 fix: remove last launch date with game shortcut
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-10 11:09:28 +05:00
Boria138 7ec1602be7 chore: extract launcher icons from batch target executables
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-09 22:24:13 +05:00
Boria138 7ae1904bb6 feat: add search for MangoHud, vkBasalt and Gamescope settings
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-07 21:06:45 +05:00
Boria138 527cceccc2 fix: prevent UI freeze during RPM package check
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-07 16:49:43 +05:00
Boria138 42eff0d44b chore: clean dev-scripts
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-07 13:28:40 +05:00
Boria138 12f3d3b753 fix: prevent control hints from being clipped
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-06 12:19:35 +05:00
Boria138 3afe35929f chore: suggest WINE_LG for detected installers
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-06 12:10:04 +05:00
Boria138 32e363d328 chore: detect game launch with explicit marker
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-06 12:03:17 +05:00
Boria138 6443b71c01 fix: prevent WINE manager UI freezes
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-05 15:51:00 +05:00
Boria138 d5db14db54 fix: use theme values for UI fallback styles
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-05 15:16:31 +05:00
Boria138 db2cc0365d fix icon path
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-04 21:30:15 +05:00
Boria138 ab073c5413 fix: allow icon themes to override AppImage icon
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-04 21:18:15 +05:00
Boria138 2212c7c23a feat: add desktop AppImage shortcut
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-04 14:48:08 +05:00
Boria138 3a3ae4be2e chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-03 11:47:14 +05:00
Dervart 3d9151df7b theme: click icons 2026-08-03 06:43:12 +00:00
Dervart 844fcff2da theme: add new variable color_text_accent_hover 2026-08-03 06:43:12 +00:00
Dervart cf542d5ce2 style: make navigation icons monochrome 2026-08-03 06:43:12 +00:00
Boria138 a6c25bad98 feat: add one-click AppImage installer
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-03 11:38:09 +05:00
Boria138 0f0155cfb7 feat: update gogdl in background on startup
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-03 11:21:01 +05:00
Boria138 8b7849b3fd chore(locale): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-02 13:53:56 +05:00
Boria138 e0d8f587fa fix: apply theme colors to file explorer icons
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-02 13:38:46 +05:00
Boria138 393d5cce98 fix: add mouse sounds to theme store cards
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-02 13:15:38 +05:00
Boria138 cf7a14983d fix: measure crashes from game process start
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-01 10:39:29 +05:00
Boria138 024a1670eb fix: use matching duration for detail cover reveal
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-08-01 10:18:06 +05:00
Codeberg TranslateandBoria138 6cc3487d59 Translated using Weblate (Russian)
Currently translated at 100.0% (751 of 751 strings)

Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-08-01 00:01:37 +00:00
Codeberg Translateandrogerio-mattos 0ce8317763 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (751 of 751 strings)

Co-authored-by: rogerio-mattos <rogerio-mattos@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/pt_BR/
Translation: PortProtonQt/PortProtonQt
2026-08-01 00:01:37 +00:00
Codeberg TranslateandRubin13 c3e1222237 Translated using Weblate (German)
Currently translated at 100.0% (751 of 751 strings)

Co-authored-by: Rubin13 <rubin13@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/de/
Translation: PortProtonQt/PortProtonQt
2026-08-01 00:01:37 +00:00
Gitea Actions bdc52c8f02 chore: download stats 2026-08-01T00:01:32Z 2026-08-01 00:01:32 +00:00
Boria138 d202b03025 feat: make game card geometry theme-aware
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-31 11:16:11 +05:00
Boria138 4e9f1ee906 chore: separate system manager error types
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-31 10:39:37 +05:00
Boria138 2590583e98 chore: unify card grid navigation and theme store sounds
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-31 10:35:21 +05:00
Boria138 a62c2b4ee6 fix: prevent duplicate theme preview downloads
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-30 23:44:45 +05:00
Boria138 c3adf4c6de feat: add Dank Material Shell theme support
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-30 14:46:42 +05:00
Boria138 eff8436aa0 feat: theme full detail page statistics container
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-30 14:07:59 +05:00
Boria138 7707d348c2 chore: report missing 32-bit glibc
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-30 11:18:57 +05:00
Boria138 6d624a59c9 fix: focus install button on detail page
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-30 10:56:00 +05:00
Boria138 87f06913f2 fix: correct D-pad game card navigation order
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-30 10:53:46 +05:00
Codeberg TranslateandRubin13 b193d36d42 Translated using Weblate (German)
Currently translated at 99.8% (750 of 751 strings)

Translated using Weblate (German)

Currently translated at 99.8% (746 of 747 strings)

Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: Rubin13 <rubin13@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/de/
Translation: PortProtonQt/PortProtonQt
2026-07-30 05:46:50 +00:00
Boria138 5e12b29c5f fix: add sherrydmn to GameMode conflicts
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-30 10:46:31 +05:00
Boria138 cdfedd1503 fix: speed up and deduplicate compatibility reports
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-29 19:18:21 +05:00
Boria138 11dbd249ab fix: prevent UI freeze after game exit
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-29 19:08:54 +05:00
Boria138 000220dd47 chore: todo moved to https://linux-gaming.ru/roadmap
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-29 18:41:23 +05:00
Boria138 8356659108 fix: recolor control hint icons through theme colors
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-29 12:57:07 +05:00
Boria138 2afa185084 chore: use systemctl and loginctl for system actions
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-28 16:29:55 +00:00
Boria138 a41da6b35b chore(localization): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-28 11:59:33 +05:00
Boria138 bb84524b06 feat: add crash report toggle
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-28 11:57:59 +05:00
Boria138 2cf5369892 feat: report incompatible DXVK configurations
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-28 11:50:56 +05:00
Codeberg Translateandgallegonovato 67026aa040 Translated using Weblate (Spanish)
Currently translated at 46.3% (346 of 746 strings)

Co-authored-by: gallegonovato <gallegonovato@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/es/
Translation: PortProtonQt/PortProtonQt
2026-07-27 19:15:59 +05:00
Codeberg TranslateandRubin13 0e3e300eb5 Translated using Weblate (German)
Currently translated at 100.0% (746 of 746 strings)

Co-authored-by: Rubin13 <rubin13@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/de/
Translation: PortProtonQt/PortProtonQt
2026-07-27 19:15:44 +05:00
Boria138 b9991f89b3 feat: add Steam shortcut for all accounts
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-27 10:51:16 +05:00
Boria138 d9a6e1cca4 feat: add crash compatibility analyzer
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-27 10:30:47 +05:00
Boria138 c4a216422e feat: generalize sakura background as leaf animation
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-27 09:25:31 +05:00
Boria138 91f92a215c feat: add procedural detail page backgrounds
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-27 00:38:07 +05:00
Boria138 13dd00c8d5 chore: refresh GOG library from library update button
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-26 23:58:38 +05:00
Boria138 ef7b0bce16 feat: expand UI sound feedback
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-26 23:55:03 +05:00
Boria138 72546d2bd5 chore(locale): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-26 11:30:12 +05:00
Boria138 0e54c0451a feat: add Steam account selection
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-26 11:26:23 +05:00
Boria138 2d26067f37 fix: restart UI sounds and silence card loading
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-26 10:28:25 +05:00
Boria138 1c9cfea1eb chore(sounds): replace gamepad_connect sound
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-26 10:23:19 +05:00
Boria138 7cc0873ee2 fix: avoid navigation sound when leaving game details
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-24 20:33:45 +05:00
Boria138 bb8fc83259 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-24 20:24:07 +05:00
Boria138 3f2c368946 chore(sounds): increse
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-24 19:51:55 +05:00
Boria138 0ba671ed1a fix: clear GOG metadata cache and hide empty downloads tab
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-24 19:47:38 +05:00
Boria138 d96c78d3cb feat: improve AppImage desktop integration
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-24 19:34:46 +05:00
Boria138 3ad8193701 fix: update desktop database after shortcut changes
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-24 19:19:25 +05:00
Boria138 4fd947cab5 feat: update UI sound feedback
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-24 19:11:13 +05:00
Boria138 a09ee2e804 fix: avoid audio deadlock
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-24 18:58:44 +05:00
Boria138 4a37d901a2 feat: add AppImage desktop integration
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-23 23:36:53 +05:00
Boria138 5cfea4d8fd fix: avoid startup hang when audio service is unavailable
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-23 23:00:26 +05:00
Boria138 7ca9cb4cf5 feat: install GOG support redistributables
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-23 19:45:08 +05:00
Boria138 e5021edbed feat: simplify GOG account login flow
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-23 13:28:16 +05:00
Boria138 96f471336c fix: detect Steam user without MostRecent flag
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-23 13:03:33 +05:00
Boria138 a1441669c1 fix: restore pre-commit checks after GOG changes
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-23 12:50:58 +05:00
Boria138 de794d1aeb chore: added ARM builds
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-23 12:38:40 +05:00
Codeberg Translateandrogerio-mattos d27ffbf407 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (708 of 708 strings)

Co-authored-by: rogerio-mattos <rogerio-mattos@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/zh_Hans/
Translation: PortProtonQt/PortProtonQt
2026-07-22 17:40:58 +00:00
Codeberg Translateandrogerio-mattos d2448b09b7 Translated using Weblate (Russian)
Currently translated at 100.0% (708 of 708 strings)

Co-authored-by: rogerio-mattos <rogerio-mattos@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-07-22 17:40:58 +00:00
Codeberg Translateandrogerio-mattos 549123657d Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (708 of 708 strings)

Co-authored-by: rogerio-mattos <rogerio-mattos@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/pt_BR/
Translation: PortProtonQt/PortProtonQt
2026-07-22 17:40:58 +00:00
Codeberg Translateandgallegonovato 2f89479802 Translated using Weblate (Spanish)
Currently translated at 45.0% (319 of 708 strings)

Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: gallegonovato <gallegonovato@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/es/
Translation: PortProtonQt/PortProtonQt
2026-07-22 17:40:58 +00:00
Codeberg TranslateandRubin13 6325eee8c2 Translated using Weblate (German)
Currently translated at 100.0% (708 of 708 strings)

Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: Rubin13 <rubin13@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/de/
Translation: PortProtonQt/PortProtonQt
2026-07-22 17:40:58 +00:00
Boria138 83c9c9ba64 fix: prevent GOG repair from hanging
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-22 22:39:54 +05:00
Boria138 1542c5bd0c fix: load compatibility badges for GOG games
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-22 20:50:24 +05:00
Boria138 681ba1ff89 fix: switch PPDB URLs to linux-gaming.ru
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-22 20:32:25 +05:00
Boria138 db099bce1f feat: added gog integration 2026-07-22 17:50:58 +05:00
Boria138 5271596481 fix: use Qt Multimedia audio-only fallback
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-22 17:05:15 +05:00
Boria138 c3d7cf4c62 chore: debloat appimage
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-21 21:48:28 +05:00
Boria138 7941258ba7 chore: update development scripts
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-21 14:08:18 +05:00
Boria138 1a105fcf0b chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-21 13:36:36 +05:00
Boria138 95aeb4a62f chore: rework sounds theme, thx to @Vektor
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-21 13:18:53 +05:00
Boria138 55a0a158c8 fix: add Qt Multimedia runtime dependencies
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-20 23:19:28 +05:00
Boria138 daa05187f5 fix: install auxiliary desktop files in Debian package
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-20 23:05:54 +05:00
Boria138 92bb49286b chore(locale): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-20 23:03:10 +05:00
Codeberg TranslateandRubin13 edba3c10bf Translated using Weblate (German)
Currently translated at 100.0% (707 of 707 strings)

Co-authored-by: Rubin13 <rubin13@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/de/
Translation: PortProtonQt/PortProtonQt
2026-07-20 15:18:21 +00:00
Boria138 fa133fff98 feat: add UI sound system with theme-integrated sound effects
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-20 15:18:16 +00:00
Boria138 8e90e9cafc fix: show Edit or Add shortcut button exclusively for non-Steam games
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-19 23:31:59 +05:00
Gitea Actions 6f8436eeb2 chore: update download stats mountly
Signed-off-by: Gitea Actions <gitea-actions@users.noreply.gitea.com>
2026-07-19 09:51:25 +05:00
Renovate Bot 69833e7295 chore(deps): update archlinux:base-devel docker digest to 212b1e5 2026-07-19 03:15:14 +00:00
Renovate Bot 7533769b15 chore(deps): update https://git.linux-gaming.ru/actions/setup-node digest to 2499707 2026-07-19 03:15:04 +00:00
Gitea Actions 174fae6dab chore: download stats 2026-07-19T03:01:01Z 2026-07-19 03:01:01 +00:00
Gitea Actions 497acf85e4 chore: exclude steam-compat from download stats
Signed-off-by: Gitea Actions <gitea-actions@users.noreply.gitea.com>
2026-07-18 23:19:54 +05:00
Gitea Actions 3b57f87770 chore: download stats 2026-07-18T18:07:48Z 2026-07-18 18:07:48 +00:00
Gitea Actions d8a9ee58bc chore: update download badge to green and add download stats top lists 2026-07-18 23:06:53 +05:00
Gitea Actions 66adeb619d chore: download stats 2026-07-18T17:54:31Z 2026-07-18 17:54:31 +00:00
Boria138 333cc09409 feat: add download stats to README 2026-07-18 22:50:25 +05:00
Boria138 229f1ee78f fix(ci): build hotfix packages from the selected branch
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-18 17:59:21 +05:00
Boria138 20b64de731 bump to v1.3.1
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-18 17:52:27 +05:00
Boria138 f0ab40a2da fix CVE-2026-59678
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-18 17:52:27 +05:00
Boria138 2fb580eb09 fix: support Cyrillic and prevent false search matches
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-18 11:33:57 +05:00
Boria138 b45d26ea8c chore(locale): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-17 08:46:43 +05:00
Boria138 32e4b28aac feat: add silent and logging launch modes
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-17 08:45:08 +05:00
Boria138 c853327cac Revert "fix: clear AppImage Vulkan overrides before runtime launch"
This reverts commit 3c793345ba.

Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-17 07:36:58 +05:00
Boria138 7d2c5e4662 Revert "fix: remove executable permissions from PortProton scripts"
This reverts commit a6564d350f.
2026-07-16 23:45:19 +05:00
Boria138 a6564d350f fix: remove executable permissions from PortProton scripts
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-16 23:11:16 +05:00
Boria138 0909faf50c chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-16 16:45:42 +05:00
Boria138 e123bfa79f fix: restore native Steam games in library
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-16 13:03:16 +05:00
Boria138 b45a0683c9 fix: correct SDL3 D-pad vertical directions
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-16 13:03:16 +05:00
Boria138 e567a16437 fix: preserve stop button state on compact layout
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-16 13:03:16 +05:00
Boria138 7e38d9a70f feat: support Steam shortcut metadata editing
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-16 13:03:15 +05:00
Boria138 3c793345ba fix: clear AppImage Vulkan overrides before runtime launch
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-16 07:12:30 +00:00
Boria138 9e0946ae7e ci: support versioned hotfix AppImage builds
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-16 11:51:12 +05:00
Boria138 2bc610940b chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-16 11:30:49 +05:00
Codeberg Translateandrogerio-mattos f9c790b568 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (704 of 704 strings)

Co-authored-by: rogerio-mattos <rogerio-mattos@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/zh_Hans/
Translation: PortProtonQt/PortProtonQt
2026-07-14 15:45:13 +00:00
Codeberg Translateandrogerio-mattos 035e560fd5 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (704 of 704 strings)

Co-authored-by: rogerio-mattos <rogerio-mattos@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/pt_BR/
Translation: PortProtonQt/PortProtonQt
2026-07-14 15:45:13 +00:00
Codeberg TranslateandRubin13 d185c7cfdc Translated using Weblate (German)
Currently translated at 100.0% (704 of 704 strings)

Co-authored-by: Rubin13 <rubin13@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/de/
Translation: PortProtonQt/PortProtonQt
2026-07-14 15:45:13 +00:00
Boria138 97d4ea26d5 fix: unset Vulkan driver override in AppImage runtime
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-14 20:45:02 +05:00
Boria138 a63c894cb9 Revert "fix: exclude AppImage graphics paths from pressure-vessel"
This reverts commit 032398a988.
2026-07-14 20:32:30 +05:00
Boria138 032398a988 fix: exclude AppImage graphics paths from pressure-vessel
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-14 15:28:43 +05:00
Boria138 9a5265f335 Revert "fix: wrap AppImage executables with sharun"
This reverts commit b1155726e0.
2026-07-14 15:05:51 +05:00
Boria138 589c8657a6 fix: use Steam covers in compact details
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-14 12:35:31 +05:00
Boria138 b1155726e0 fix: wrap AppImage executables with sharun
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-14 12:19:23 +05:00
Boria138 4fd11e09fe feat: show cached exe icons in compact details
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-14 11:07:11 +05:00
Boria138 5dc66e0822 refactor: replace pygame gamepad input with SDL3
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-13 17:50:33 +00:00
Boria138 0cd98c0996 fix(appimage): skip portwine_db strace
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-13 22:24:45 +05:00
Boria138 d813ac1fac fix(appimage): added vk_gpu_info to /usr/bin thx to @Samueru-sama
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-13 22:05:46 +05:00
Mikhail Tergoev 258b1ab6c5 bump v1.3.0 2026-07-13 16:19:01 +03:00
Mikhail Tergoev 450d63963d fix timeout for downloading 2026-07-13 16:05:38 +03:00
Boria138 fe8bc1ef8e fix: show executable icon on detail page
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-13 17:58:56 +05:00
Boria138 f0579307db fix: show executable icon while cover downloads
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-13 17:42:28 +05:00
Boria138 a61d62071f fix: use executable icon when cover is unavailable
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-13 17:34:57 +05:00
Boria138 316ba9d4a8 fix: check 32-bit dependencies before autoinstall
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-13 17:21:27 +05:00
Boria138 c4cc79a432 fix: filter non-Windows Steam library entries
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-13 12:09:56 +05:00
Boria138 805732a5c6 fix: ignore stale HLTB detail callbacks
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-13 11:54:50 +05:00
Boria138 8ecb26a3e6 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-12 08:50:52 +05:00
Codeberg Translateandrogerio-mattos 6d800c04fd Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (702 of 702 strings)

Co-authored-by: rogerio-mattos <rogerio-mattos@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/pt_BR/
Translation: PortProtonQt/PortProtonQt
2026-07-12 03:24:48 +00:00
Codeberg Translateandgallegonovato 2addc70dc6 Translated using Weblate (Spanish)
Currently translated at 43.4% (305 of 702 strings)

Co-authored-by: gallegonovato <gallegonovato@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/es/
Translation: PortProtonQt/PortProtonQt
2026-07-12 03:24:48 +00:00
Codeberg TranslateandRubin13 7c662927b1 Translated using Weblate (German)
Currently translated at 100.0% (702 of 702 strings)

Co-authored-by: Rubin13 <rubin13@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/de/
Translation: PortProtonQt/PortProtonQt
2026-07-12 03:24:48 +00:00
Renovate Bot 3b76a7c8a1 chore(deps): update debian docker tag to trixie-20260623 2026-07-12 03:24:44 +00:00
Renovate Bot a94edea9a6 chore(deps): update archlinux:base-devel docker digest to b21289e 2026-07-12 00:01:24 +00:00
Boria138 39ea73ae87 fix: limit ALT i586 dependency install to installed packages
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-11 23:44:29 +05:00
Boria138 4b4ad33a54 fix: align classic-light source corner color
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-11 12:05:51 +05:00
Boria138 b0d5771bcb chore(locale): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-11 11:55:46 +05:00
Boria138 e9ccd6c2b4 feat: add missing executable card cleanup button
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-11 11:53:30 +05:00
Boria138 8d10d90263 fix: unify autoinstall and library search
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-11 11:38:34 +05:00
Boria138 15e780d618 fix: keep wine prefix combo in focus order
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-11 11:29:33 +05:00
Boria138 9166cd9cd3 fix: align library control button styling
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-11 11:21:05 +05:00
Boria138 869666ece9 fix: avoid empty custom_data directories
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-11 11:04:04 +05:00
Boria138 269151c00a fix: use real AppImage update progress
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-10 20:48:35 +05:00
Boria138 c7d689cde6 Revert "fix: use nvidia_new dxvk config always on RTX"
This reverts commit 9c1638daff.

Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-10 20:22:57 +05:00
Boria138 52d72b660e feat(appimage): DPAD scroll for changelog
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-10 18:33:43 +05:00
Boria138 99a0e9ba1d chore(locale): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-10 14:56:30 +05:00
Boria138 b250b86032 feat: add AppImage auto-update UI
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-10 14:30:02 +05:00
Boria138 0797c1a52e chore(appimage): add autoupdate from gitea
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-10 00:22:15 +05:00
Boria138 9ad828ace5 fix: refresh Wine status after version removal
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-08 23:27:43 +05:00
Boria138 a4e0928ff6 feat: add Flatpak PortProton directory auto-detection as portdatapath
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-08 19:50:50 +05:00
Boria138 bcda562b6f chore(locale): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-08 19:41:56 +05:00
Boria138 15bc92ca7f fix: add ALT i586 dependency prompt before game launch
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-08 19:18:51 +05:00
Boria138 9b3bd6b31e fix: handle DOSBox lnk from GOG
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-08 14:00:12 +00:00
Boria138 9c1638daff fix: use nvidia_new dxvk config always on RTX
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-08 13:59:59 +00:00
Boria138 a9b3dff064 refactor: replace jq usage with orjson helpers
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-08 13:59:51 +00:00
Boria138 6c1bef2642 fix(scripts): quote printf messages
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-08 17:26:56 +05:00
Boria138 545ce073d7 chore: hide Steam menu action when Steam is unavailable
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-08 17:23:09 +05:00
Boria138 5e7f81e206 chore: remove shortcuts when deleting PortProton games
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-08 17:15:55 +05:00
Dervart 41794c44a9 feat: support gradient type, direction, and cover color count for detail
page
2026-07-07 22:40:57 +07:00
Boria138 d6517cb7c1 feat: add DETAIL_PAGE_GRADIENT for custom detail page gradient override
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-07 12:07:12 +05:00
Boria138 808910c6fc feat: add detail page background modes (gradient, static_waves, waves)
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-06 18:03:13 +05:00
Boria138 d17fbb713e chore: add gamepad tooltip for combo boxes in favorites tab
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-06 17:22:16 +05:00
Codeberg Translateandrogerio-mattos 863cc4d336 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (689 of 689 strings)

Co-authored-by: rogerio-mattos <rogerio-mattos@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/pt_BR/
Translation: PortProtonQt/PortProtonQt
2026-07-05 18:12:59 +00:00
Codeberg Translateandrogerio-mattos df4dc4497d Translated using Weblate (Spanish)
Currently translated at 38.4% (265 of 689 strings)

Co-authored-by: rogerio-mattos <rogerio-mattos@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/es/
Translation: PortProtonQt/PortProtonQt
2026-07-05 18:12:59 +00:00
Boria138 33575fc27a fix: remove unconditional icon recoloring fallback in AutoSizeButton
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-05 23:12:09 +05:00
Boria138 34920b8a5e chore: replace wine combo popup widening with gamepad tooltip
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-05 23:01:57 +05:00
Boria138 c068129a46 fix: widen wine popup and refresh installed status
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-05 18:42:53 +05:00
Renovate Bot 498497d3e2 chore(deps): update https://git.linux-gaming.ru/actions/setup-python digest to ece7cb0 2026-07-05 06:54:41 +00:00
Renovate Bot f193089ff3 chore(deps): update archlinux:base-devel docker digest to 5fb487a 2026-07-05 00:01:23 +00:00
Dervart 952af795d5 fix: classic themes button text/icon state colors 2026-07-04 13:17:22 +07:00
Boria138 6e3f70f0c6 fix: prevent icon color inheritance recursion
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-04 11:08:50 +05:00
Boria138 a795bddbc3 fix: keep compact wine table rows in classic-light
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-04 10:52:22 +05:00
Boria138 76a435d421 fix: prevent recursive theme loads for icon colors
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-04 10:48:29 +05:00
Boria138 9e13e5d7fa fix: keep AutoSizeButton text centered on hover
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-04 10:31:15 +05:00
Boria138 186d065f4a chore: improve themed combo boxes and icon recoloring
- Move CustomComboBox to custom_widgets
- Use CustomComboBox consistently for combo boxes
- Recolor context menu icons through ICON_COLORS
- Fix AutoSizeButton text color for iconless buttons

Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-03 23:56:23 +05:00
Dervart 270c96e1cd update theme guide readme 2026-07-03 16:50:00 +00:00
Dervart 608fc12c2b themes: update styles 2026-07-03 16:50:00 +00:00
Dervart 53862ec4e3 classic-light: add styles 2026-07-03 16:50:00 +00:00
Dervart 7744394f07 standart-light: add missed styles 2026-07-03 16:50:00 +00:00
Dervart acd8269b47 feat: add class CustomComboBox for editable combo context menu 2026-07-03 16:50:00 +00:00
Dervart c087b698ab update standart-light theme 2026-07-03 16:50:00 +00:00
Dervart ad9694df98 fix: AutoSizeButton text now recolors with icon on state change 2026-07-03 16:50:00 +00:00
Dervart cb5c39db53 fix: remove * svg color from AutoSizeButton 2026-07-03 16:50:00 +00:00
Dervart b19ce9fd17 feat: AutoSizeButton now recolors icons on state change (hover, pressed,
disabled)
2026-07-03 16:50:00 +00:00
Boria138 c36c52162c fix: keep search expanded with virtual keyboard
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-03 17:59:51 +05:00
Boria138 c8e3bd40b2 fix: prevent recursive theme loading for icon colors
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-03 17:20:22 +05:00
Boria138 d5fedd827d feat: add theme SVG icon recoloring
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-07-02 23:41:24 +05:00
Gitea Actions 8d9a60dc28 chore: update steam apps list 2026-07-01T00:01:20Z 2026-07-01 00:01:20 +00:00
Boria138 3e51f06126 fix: close library filters on tab switch
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-30 18:05:31 +05:00
Boria138 39ee989175 fix: decouple search animation duration from game card scale
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-30 17:57:52 +05:00
Boria138 67bc16f3f6 test: update classic theme required styles
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-30 17:43:02 +05:00
Dervart 9c46909973 refactor: styles for library controls popup and filter combobox 2026-06-30 19:09:34 +07:00
Boria138 452ab7a157 fix: smooth library controls animation
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-30 13:53:12 +05:00
Boria138 fc58f0cac9 chore: use ppai icon for autoinstall
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-29 14:08:45 +05:00
Boria138 0040307b7f fix: remove redundant ppdb download after autoinstall
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-29 10:18:40 +05:00
Boria138 0f5b33bce4 feat: add local PPAI autoinstall file support
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-29 10:05:18 +05:00
Dervart bf9c76be9c fix: border-radius to constant 2026-06-28 12:34:04 +00:00
Dervart ee67e82320 fix: ThemeStore add bottom margin to detail header layout 2026-06-28 12:34:04 +00:00
Dervart c7990e6ac3 fix: scrollbar border style 2026-06-28 12:34:04 +00:00
Dervart 7ead4fb61f Update styles.py 2026-06-28 12:34:04 +00:00
Dervart 6a3ef0005c feat: AutoSizeButton: allow tuple padding (2 or 4 values) 2026-06-28 12:34:04 +00:00
Boria138 5068c11a3d fix: ignore commented autoinstall exe entries
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-28 16:19:22 +05:00
Boria138 e40cabae2e docs(theme): fix TOC anchor links for Gitea rendering
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-28 11:02:44 +05:00
Boria138 5975fa0ba0 docs(theme): rewrite theme guide with real examples and new sections
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-28 10:59:52 +05:00
Renovate Bot ca2127e3ce chore(deps): update archlinux:base-devel docker digest to cf028ae 2026-06-28 05:36:59 +00:00
Renovate Bot dd7c5c934b chore(deps): update debian:13 docker digest to d07d1b5 2026-06-28 05:36:47 +00:00
Boria138 a2a5694a69 chore: switch to library when opening autoinstall card
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-28 10:34:45 +05:00
Boria138 b0ce5aff7b fix: match autoinstall entries by target exe path
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-28 10:29:48 +05:00
Boria138 fb2162b260 feat(preloader): added bat, pulse, dots and wave type
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-28 00:33:15 +05:00
Boria138 0f87c67774 feat(detail-page): add Open Folder button for PortProton games
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-27 22:28:27 +05:00
Boria138 0bc6c5eee1 fix: show library download progress on launch button
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-27 18:36:30 +05:00
Boria138 86ce0bb528 fix(theme): prevent clipped buttons in standart-light
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-27 16:12:13 +05:00
Boria138 221ca1b5b5 fix: prevent autoinstall script download thread crash
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-27 14:09:32 +05:00
Boria138 6bce55a116 fix: restore child theme inheritance in standart-light
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-27 11:53:27 +05:00
Boria138 779156bfde fix: repair run-after exe launch output handling
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-27 11:01:34 +05:00
Boria138 c08b3d2ff6 fix: restore lost styles and changed values since 519edd1
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-27 10:44:26 +05:00
Boria138 c6e9e5ac22 fix: recompute inherited light theme styles
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-26 22:36:47 +05:00
Boria138 4e4a4eaa0d refactor: move theme store into dedicated modules
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-26 21:39:40 +05:00
Boria138 3e5da67ac5 chore(locale): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-26 15:06:46 +05:00
Boria138 84a015d1fc chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-25 21:25:21 +05:00
Boria138 a04e1069c4 fix: refresh theme store visibility after saving settings
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-25 21:21:59 +05:00
Boria138 a56528a61d debug: trace CLI detail page navigation
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-25 18:47:11 +05:00
Boria138 a5bc4269b2 chore(changelog): move PR changes to main for avoid conflicts
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-25 18:02:33 +05:00
Codeberg TranslateandRubin13 473c824124 Translated using Weblate (German)
Currently translated at 100.0% (689 of 689 strings)

Translated using Weblate (German)

Currently translated at 100.0% (687 of 687 strings)

Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: Rubin13 <rubin13@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/de/
Translation: PortProtonQt/PortProtonQt
2026-06-25 07:06:40 +00:00
Boria138 4b378f59f5 chore(locale): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-25 00:12:54 +05:00
Boria138 1a62acbd9d feat: hide theme store behind settings checkbox (disabled by default)
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-25 00:10:12 +05:00
Boria138 ff03834ade fix: replace fuzz.ratio with fuzz.partial_ratio for stable first-letter search
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-24 23:51:40 +05:00
Boria138 460ed51fc4 feat(theme_security): rewrite security checker with allowlist approach
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-24 11:26:45 +05:00
Codeberg Translateandgallegonovato 5c9318808a Translated using Weblate (Spanish)
Currently translated at 37.9% (261 of 687 strings)

Co-authored-by: gallegonovato <gallegonovato@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/es/
Translation: PortProtonQt/PortProtonQt
2026-06-23 17:18:57 +00:00
Codeberg TranslateandRubin13 730c04560d Translated using Weblate (German)
Currently translated at 63.4% (436 of 687 strings)

Translated using Weblate (German)

Currently translated at 44.9% (309 of 688 strings)

Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: Rubin13 <rubin13@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/de/
Translation: PortProtonQt/PortProtonQt
2026-06-23 17:18:57 +00:00
Boria138 9e759f044d fix: refine magic numbers rule to avoid false positives in AGENTS.md
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-23 22:18:44 +05:00
Boria138 c45b81ea2b ci: add patchelf dependency and replace DEPLOY_SYS_PYTHON with DEPLOY_PYTHON for AppImage build
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-23 21:50:42 +05:00
Boria138 b438cf900e feat: theme store grid with dynamic layout and gamepad support
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-23 18:33:24 +05:00
Boria138 61205191ea fix(locale): remove untranslated {0} Wine… string from i18n
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-23 17:50:59 +05:00
Boria138 cab84b3a8e chore(locale): fix weblate warnings
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-23 17:40:42 +05:00
Boria138 e812c8e4da feat(theme-store): added more rows
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-23 17:16:50 +05:00
Codeberg Translateandgallegonovato 6689c692f6 Translated using Weblate (Spanish)
Currently translated at 31.8% (219 of 688 strings)

Translated using Weblate (Spanish)

Currently translated at 23.4% (161 of 688 strings)

Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: gallegonovato <gallegonovato@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/es/
Translation: PortProtonQt/PortProtonQt
2026-06-23 13:59:12 +05:00
Codeberg TranslateandRubin13 7ecdcc0c96 Translated using Weblate (German)
Currently translated at 40.2% (277 of 688 strings)

Translated using Weblate (German)

Currently translated at 35.8% (246 of 686 strings)

Translated using Weblate (German)

Currently translated at 35.0% (237 of 676 strings)

Translated using Weblate (German)

Currently translated at 34.1% (231 of 676 strings)

Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: Rubin13 <rubin13@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/de/
Translation: PortProtonQt/PortProtonQt
2026-06-23 13:59:11 +05:00
Boria138 397c4686d6 test: remove dependency on real themes from theme manager tests
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-23 13:57:58 +05:00
Boria138 f95a475315 fix(theme): only generate styles from immediate parent's styles/ dir
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-23 13:19:34 +05:00
Boria138 d3673c4aeb chore: speedup theme store
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-23 12:31:40 +05:00
Boria138 31c8428255 fix(theme): recompute QSS styles with child palette
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-23 10:12:47 +05:00
Boria138 b01fae652a fix(theme): walk full inheritance chain for constant injection
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-23 09:51:47 +05:00
Boria138 c92855366e fix(theme): use AST-based constant injection instead of hardcoded paths
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-22 21:55:44 +05:00
Boria138 13dc84c1ad fix: parent theme styles shadowed by generated standart styles
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-22 20:32:27 +05:00
Boria138 d477acffd5 fix: add protondb cache cleanup on steam apps refresh
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-22 20:28:49 +05:00
Boria138 7147f6087a feat(locale): fix fuzzy and add missing translations for ru, zh_CN, pt_BR
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-22 18:56:51 +05:00
Boria138 b8fa8925ad feat(locale): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-22 18:52:31 +05:00
Boria138 e28a8b5321 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-22 18:52:05 +05:00
Boria138 182ed098a3 feat: add theme store and URI install support
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-22 18:49:29 +05:00
Boria138 a75d6a41d2 theme(security): allow safe theme API calls in custom themes
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-22 17:19:52 +05:00
Boria138 915a7077c6 chore(themes): clean
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-22 16:44:37 +05:00
Boria138 c183635778 fix(theme): merge standart constants as base in _build_generated_styles
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-22 14:49:28 +05:00
Boria138 519edd1efc chore(theme): rewrite it to const
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-22 12:30:16 +05:00
Boria138 201a96f73d fix: replace source badges with PPDB badge on detail page
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-21 22:08:53 +05:00
Boria138 9593af224b feat: improve game source corner marker
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-21 17:09:26 +05:00
Boria138 9d8ba97c2d fix: keep detail fade animation from sticking on resize
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-21 15:53:41 +05:00
Boria138 843af631e3 feat(locale): add German translation via Weblate
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-21 12:55:24 +05:00
Boria138 b36f263bb4 Merge weblate/main: resolve German translation conflicts 2026-06-21 12:52:40 +05:00
Codeberg TranslateandRubin13 7e15069f3b Added translation using Weblate (German)
Co-authored-by: Rubin13 <rubin13@noreply.codeberg.org>
2026-06-21 12:46:42 +05:00
Boria138 edcfe2c018 feat: add gjs-osk based virtual keyboard layouts
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-21 12:45:52 +05:00
Codeberg TranslateandRubin13 4ccd2d6640 Translated using Weblate (German)
Currently translated at 26.4% (179 of 676 strings)

Translated using Weblate (German)

Currently translated at 21.7% (147 of 676 strings)

Translated using Weblate (German)

Currently translated at 18.0% (122 of 676 strings)

Translated using Weblate (German)

Currently translated at 5.9% (40 of 676 strings)

Translated using Weblate (German)

Currently translated at 0.5% (4 of 681 strings)

Added translation using Weblate (German)

Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: Rubin13 <rubin13@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/de/
Translation: PortProtonQt/PortProtonQt
2026-06-21 07:08:13 +00:00
Boria138 de0ed85599 fix: improve compact game card scaling
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-21 12:07:55 +05:00
Boria138 f4ee6eef14 fix: skip hidden cards in grid navigation
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-21 11:43:00 +05:00
Renovate Bot 30bbb591d3 chore(deps): update archlinux:base-devel docker digest to 0cf5eb7 2026-06-21 05:40:50 +00:00
Renovate Bot 208b6aea3b chore(deps): pin archlinux docker tag to 0cf5eb7 2026-06-21 00:01:22 +00:00
Boria138 df402b58dd feat: redirect keyboard input to search from focused game cards
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-21 01:16:26 +05:00
Boria138 baaef49dd9 feat: reduce minimum card size slider from 200 to 150 px
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-21 00:49:45 +05:00
Boria138 67553f1b57 drop unneded files
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-20 23:04:12 +05:00
Boria138 a455a7d005 fix: adapt detail page layout on narrow screens
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-20 22:26:46 +05:00
Boria138 65ab28db1f fix: use SVG favorite star overlays
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-20 18:54:09 +05:00
Boria138 9688679ff8 fix: skip malformed po entries during l10n update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-20 18:16:46 +05:00
Boria138 311d74a629 changed: show only ProtonDB service name on badge
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-20 18:13:23 +05:00
Boria138 e807e2246a feat: make control hint icons clickable
Code check / Check code (push) Successful in 1m28s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-20 12:37:26 +05:00
Boria138 cc01552bfa chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-19 17:49:35 +05:00
Codeberg Translateandrogerio-mattos 6fb33bd9ac Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (681 of 681 strings)

Co-authored-by: rogerio-mattos <rogerio-mattos@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/zh_Hans/
Translation: PortProtonQt/PortProtonQt
2026-06-19 11:38:28 +00:00
Codeberg Translateandrogerio-mattos 0ed071f980 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (681 of 681 strings)

Co-authored-by: rogerio-mattos <rogerio-mattos@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/pt_BR/
Translation: PortProtonQt/PortProtonQt
2026-06-19 11:38:27 +00:00
Boria138 ccd60ff787 chore(locale): update zh_CN
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-18 23:59:01 +05:00
Boria138 23264203d8 ci: ignore locale changes in code check
Code check / Check code (push) Failing after 57s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-18 23:49:25 +05:00
Codeberg TranslateandBoria138 ad7461d7cc Translated using Weblate (Russian)
Code check / Check code (push) Successful in 2m0s
Currently translated at 100.0% (681 of 681 strings)

Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-06-18 18:46:32 +00:00
Boria138 27feb9cfdd chore(locale): update
Code check / Check code (push) Successful in 1m33s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-18 23:44:39 +05:00
Boria138 ffc1895295 fix: move PW_GPU_INFO to ppdb log variables
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-18 23:41:21 +05:00
Boria138 2edc3bf9aa feat: add optional PPDB auto-download
Code check / Check code (push) Successful in 1m30s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-18 23:30:41 +05:00
Boria138 ac827903b5 debug: log primary GPU from glxinfo as PW_GPU_INFO
Code check / Check code (push) Successful in 2m14s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-18 23:03:24 +05:00
Boria138 ef05259289 chore: remove translation spellcheck
Code check / Check code (push) Successful in 2m15s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-18 16:54:10 +05:00
Boria138 4b59fe0fb9 feat: add D7VK UI and debug log support
Code check / Check code (push) Successful in 2m31s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-18 16:26:03 +05:00
Boria138 12c344181e fix: download autoinstall scripts to temp directory
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-18 16:16:35 +05:00
Mikhail Tergoev 43b97acc27 Merge branch 'main' of git.linux-gaming.ru:Linux-Gaming/PortProtonQt
Code check / Check code (push) Successful in 1m28s
2026-06-18 13:36:13 +03:00
Mikhail Tergoev 6c6a5c7aae add support: d7vk 2026-06-18 13:35:54 +03:00
Boria138 5c43e22726 refactor: move main window tabs into modules
Code check / Check code (push) Successful in 1m57s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-18 11:45:27 +05:00
Boria138 4bf3f34fbe fix: refresh cached PPDB autoinstall images
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-18 11:26:00 +05:00
Boria138 687c4cfb9d ui: implement theme-aware PPDB rating badges
Code check / Check code (push) Successful in 2m10s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-18 11:16:06 +05:00
Boria138 45d210dd72 feat: use PPDB data for PortProton badges
Code check / Check code (push) Successful in 3m29s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-18 00:56:52 +05:00
Gitea Actions e840f07e60 chore: update steam apps list 2026-06-17T19:38:00Z 2026-06-17 19:38:01 +00:00
Boria138 69b949198d fix: handle wrapped PPDB ratings response
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-18 00:37:06 +05:00
Gitea Actions bcd6c73d37 chore: update steam apps list 2026-06-17T19:34:57Z 2026-06-17 19:34:57 +00:00
Codeberg Translateandrogerio-mattos 8caa7727c6 Translated using Weblate (Portuguese (Brazil))
Check Translations / check-translations (push) Failing after 18s
Code check / Check code (push) Successful in 1m30s
Currently translated at 81.0% (550 of 679 strings)

Co-authored-by: rogerio-mattos <rogerio-mattos@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/pt_BR/
Translation: PortProtonQt/PortProtonQt
2026-06-18 00:31:44 +05:00
Boria138 e905e2fb24 feat: add PPDB ratings data to get_id script
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-18 00:29:38 +05:00
Boria138 6ca70e86b4 feat: load autoinstalls from PPDB API
Code check / Check code (push) Successful in 3m18s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-17 12:13:22 +00:00
Boria138 1d42a8cd97 refactor: deduplicate animation helpers
Code check / Check code (push) Successful in 1m49s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-17 10:53:21 +05:00
Boria138 f0d5873342 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-16 23:01:00 +05:00
Boria138 aeac40a003 fix: refresh playtime and last launch live
Code check / Check code (push) Successful in 3m29s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-16 22:57:47 +05:00
Boria138 0059162dff feat: add Steam-style playtime display
Code check / Check code (push) Successful in 2m47s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-16 22:41:11 +05:00
Boria138 d432e44ca6 feat: move playtime statistics from bash to Python
Code check / Check code (push) Successful in 1m54s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-16 11:48:33 +05:00
Boria138 f860513626 chore: drop unneded topic files
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-15 22:16:06 +05:00
Boria138 e6cdf92fc1 feat: move last_launch to XDG_DATA_HOME with auto-migration
Code check / Check code (push) Successful in 1m25s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-15 16:40:38 +05:00
Boria138 c3b54b43dd test: add desktop shortcut creation and path resolution tests
Code check / Check code (push) Successful in 2m10s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-14 15:17:59 +05:00
Boria138 f3a2c179a3 test: add dbus_tools tests (68 tests for notifications, idle inhibit, power profiles)
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-14 15:04:48 +05:00
Boria138 85032b3c1f refactor: remove proton_downloads debug code from WINE/Proton manager
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-14 14:53:33 +05:00
Boria138 fa8935b2aa chore(appimage): drop OPTDEPENDS_PACKAGES
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-14 14:49:16 +05:00
Boria138 0ff032885a chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-13 23:33:57 +05:00
Dervart dcaba9bf1f fix: remove commented styles for AutoHideScrollArea
Code check / Check code (pull_request) Successful in 1m23s
Code check / Check code (push) Failing after 1s
2026-06-13 23:06:48 +07:00
Dervart 930d253fd1 feat: new class AutoHideScrollArea for Library & Autoinstall tab
Code check / Check code (pull_request) Successful in 3m49s
2026-06-13 22:56:53 +07:00
Boria138 84dd5ad676 ci(code check): switch to Arch container
Code check / Check code (push) Successful in 3m12s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-13 13:57:26 +05:00
Boria138 a017399c7a test: add 367 autotests for regression-prone areas
Code check / Check code (push) Failing after 1m0s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-13 12:45:33 +05:00
Boria138 0d9a4b560c fix: force-push weblate branch in accept-weblate.sh
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-13 11:40:15 +05:00
Codeberg Translateandrogerio-mattos 73491d8259 Translated using Weblate (Chinese (Simplified Han script))
Code check / Check code (push) Successful in 56s
Check Translations / check-translations (push) Failing after 21s
Currently translated at 94.9% (645 of 679 strings)

Co-authored-by: rogerio-mattos <rogerio-mattos@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/zh_Hans/
Translation: PortProtonQt/PortProtonQt
2026-06-12 23:07:54 +00:00
Codeberg Translateandrogerio-mattos f492f0019b Translated using Weblate (Portuguese (Brazil))
Currently translated at 74.9% (509 of 679 strings)

Co-authored-by: rogerio-mattos <rogerio-mattos@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/pt_BR/
Translation: PortProtonQt/PortProtonQt
2026-06-12 23:07:54 +00:00
Boria138 a1c3f1cb8b docs: add bilingual README (English and Russian)
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-12 15:38:34 +05:00
Boria138 9d8d9edf51 build: automate Debian versioning in bump_ver.py
Code check / Check code (push) Successful in 59s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-12 12:49:26 +05:00
Boria138 b2d42a44be ci: filter out unwanted Debian build artifacts
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-12 12:37:40 +05:00
Codeberg Translateandrogerio-mattos 2ce141af90 Translated using Weblate (Portuguese (Brazil))
Check Translations / check-translations (push) Failing after 14s
Code check / Check code (push) Successful in 56s
Currently translated at 61.1% (415 of 679 strings)

Co-authored-by: rogerio-mattos <rogerio-mattos@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/pt_BR/
Translation: PortProtonQt/PortProtonQt
2026-06-11 21:46:17 +05:00
Boria138 dacc44d62c refactor(ui): unify GNOME dark theme check with Cinnamon logic
Code check / Check code (push) Successful in 58s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-11 21:45:22 +05:00
Boria138 a6edaa5f4d fix: dark theme detection for MATE
Code check / Check code (push) Successful in 59s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-11 21:34:15 +05:00
Boria138 7612491f2b fix: use startswith for XDG_SESSION_DESKTOP matching
Code check / Check code (push) Successful in 59s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-11 10:38:43 +05:00
Boria138 8f968133f0 fix: dark theme detection for Cinnamon and XFCE
Code check / Check code (push) Successful in 1m0s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-11 10:31:28 +05:00
Boria138 8a5eea305c fix scripts: drop flatpak fatal
Code check / Check code (push) Successful in 56s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-10 18:24:52 +05:00
Boria138 bb629e4063 feat: implement XDG Desktop Portal notification fallback
Code check / Check code (push) Successful in 59s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-10 17:30:23 +05:00
Boria138 4d6f6c1b82 bump to 1.2.0
Build AppImage, Arch, Fedora and Debian Packages / Build Arch Package (push) Successful in 2m7s
Build AppImage, Arch, Fedora and Debian Packages / Build Fedora RPM (42) (push) Successful in 1m7s
Build AppImage, Arch, Fedora and Debian Packages / Build Fedora RPM (44) (push) Successful in 1m22s
Build AppImage, Arch, Fedora and Debian Packages / Build Debian Package (push) Successful in 2m2s
Build AppImage, Arch, Fedora and Debian Packages / Create and Publish Release (push) Successful in 30s
Code check / Check code (push) Successful in 58s
Build AppImage, Arch, Fedora and Debian Packages / Build AppImage (push) Successful in 7m3s
Build AppImage, Arch, Fedora and Debian Packages / Build Fedora RPM (43) (push) Successful in 1m6s
Build AppImage, Arch, Fedora and Debian Packages / Build Fedora RPM (rawhide) (push) Successful in 1m30s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-10 11:01:19 +05:00
Codeberg TranslateandBoria138 4451d7e26a Translated using Weblate (Russian)
Check Translations / check-translations (push) Successful in 15s
Code check / Check code (push) Successful in 57s
Currently translated at 100.0% (679 of 679 strings)

Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-06-10 05:58:37 +00:00
Boria138 a4199e2a16 chore(locale): update
Check Translations / check-translations (push) Failing after 25s
Code check / Check code (push) Successful in 58s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-10 10:56:09 +05:00
Boria138 401d1ddac2 feat: add file delete and rename to file explorer
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-10 10:55:42 +05:00
Boria138 86f66a1174 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-10 10:44:49 +05:00
Boria138 8d5a99f0de fix: delay library controls auto-close after combo selection
Code check / Check code (push) Successful in 59s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-09 20:34:51 +05:00
Dervart 92f795f0e5 fix: combobox styles for filters
Code check / Check code (push) Successful in 1m0s
Code check / Check code (pull_request) Successful in 59s
2026-06-09 20:36:45 +07:00
Codeberg TranslateandBoria138 821c9172b2 Translated using Weblate (Russian)
Check Translations / check-translations (push) Failing after 18s
Code check / Check code (push) Successful in 58s
Currently translated at 100.0% (672 of 672 strings)

Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-06-09 11:26:33 +00:00
Codeberg Translateandrogerio-mattos 9c2febb40a Translated using Weblate (Portuguese (Brazil))
Currently translated at 43.2% (290 of 670 strings)

Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: rogerio-mattos <rogerio-mattos@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/pt_BR/
Translation: PortProtonQt/PortProtonQt
2026-06-09 11:26:33 +00:00
Boria138 da21309b0c chore(locale): update
Check Translations / check-translations (push) Failing after 1m6s
Code check / Check code (push) Successful in 1m7s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-09 16:24:47 +05:00
Boria138 9be9187ea5 feat: add sound driver setting to gui
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-09 16:24:13 +05:00
Boria138 18d1ad2d92 fix: skip exiftool when it is not installed
Code check / Check code (push) Successful in 58s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-09 15:56:22 +05:00
Boria138 f9cefe501b fix: move badge view control to library submenu
Code check / Check code (push) Successful in 59s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-09 15:46:28 +05:00
Boria138 d385e4e120 fix: make refresh button compact in library toolbar
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-09 15:42:42 +05:00
Mikhail Tergoev 4d9f7be000 update WINE_LG to 11-10
Code check / Check code (push) Successful in 58s
2026-06-08 22:08:06 +03:00
Boria138 ee6255a507 fix: collapse filters on card hover
Code check / Check code (push) Successful in 58s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-08 16:43:21 +00:00
Boria138 2a8630db1b feat: make search compat
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-08 16:43:21 +00:00
Boria138 078bb9e8c7 feat: improve library filter controls
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-08 16:43:21 +00:00
Mikhail Tergoev be7f7056d3 Merge branch 'scripts-show-ppdb'
Code check / Check code (push) Successful in 2m0s
2026-06-08 18:16:08 +03:00
Mikhail Tergoev b31dcb9c63 fix merge conflict
Code check / Check code (push) Failing after 13m6s
2026-06-08 18:13:56 +03:00
Boria138 0958914cf1 fix: handle uppercase exe in show-ppdb
Code check / Check code (pull_request) Successful in 56s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-08 13:42:22 +05:00
Boria138 ff23e4c0df feat: add nrg disc image launch support
Code check / Check code (pull_request) Successful in 52s
Code check / Check code (push) Successful in 53s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-08 09:54:47 +05:00
Boria138 4ae1b71823 fix: fall back to Xbox gamepad type without SDL3
Code check / Check code (push) Successful in 1m15s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-08 09:20:06 +05:00
Boria138 25bf639f00 fix: avoid runtime cwd in system scripts dir
Code check / Check code (push) Successful in 55s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-07 16:30:43 +05:00
Boria138 5dfdc91b75 chore: create shortcuts only in app by default
Code check / Check code (push) Successful in 54s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-07 16:18:44 +05:00
Mikhail Tergoev e5076a683c update CHANGELOG.md 2026-06-07 12:09:16 +03:00
Mikhail Tergoev c3d3668eee mouse emulator sensitivity = 20 2026-06-07 12:09:16 +03:00
Renovate Bot f6d2a37d6f chore(deps): update archlinux:base-devel docker digest to c84ad63
Code check / Check code (push) Successful in 53s
2026-06-07 04:16:26 +00:00
Renovate Bot 6969c534a8 chore(deps): update https://git.linux-gaming.ru/actions/checkout digest to df4cb1c
Package Build - AppImage, Arch, Fedora, Debian / Build Fedora RPM (44) (pull_request) Has been skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Fedora RPM (rawhide) (pull_request) Has been skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Arch Package (pull_request) Has been skipped
Package Build - AppImage, Arch, Fedora, Debian / changes (pull_request) Successful in 14s
Package Build - AppImage, Arch, Fedora, Debian / Build AppImage (pull_request) Has been skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Fedora RPM (43) (pull_request) Has been skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Debian Package (pull_request) Has been skipped
Code check / Check code (push) Successful in 55s
Code check / Check code (pull_request) Successful in 1m4s
Package Build - AppImage, Arch, Fedora, Debian / Build Fedora RPM (42) (pull_request) Has been skipped
2026-06-07 00:00:52 +00:00
Boria138 4fcf48a7cf chore(locale): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-06 22:59:40 +05:00
Boria138 090818a356 Merge remote-tracking branch 'origin/weblate'
Check Translations / check-translations (push) Successful in 15s
Code check / Check code (push) Successful in 53s
2026-06-06 22:53:16 +05:00
Codeberg TranslateandBoria138 7451d1f876 Translated using Weblate (Russian)
Currently translated at 100.0% (670 of 670 strings)

Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-06-06 17:53:02 +00:00
Boria138 f30e3fd405 chore(locale): update
Check Translations / check-translations (push) Failing after 19s
Code check / Check code (push) Successful in 53s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-06 22:51:41 +05:00
Boria138 01e2c3bfd5 chore: add Weblate accept script 2026-06-06 22:51:06 +05:00
Boria138 52e1b303ba Merge remote-tracking branch 'weblate/main'
Code check / Check code (push) Successful in 53s
Check Translations / check-translations (push) Failing after 12s
2026-06-06 22:46:13 +05:00
Boria138 ab954936fc Merge branch 'weblate'
Check Translations / check-translations (push) Failing after 13s
Code check / Check code (push) Successful in 55s
2026-06-06 22:41:58 +05:00
Codeberg Translateandrogerio-mattos d25342331d Translated using Weblate (Portuguese (Brazil))
Currently translated at 32.8% (220 of 670 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 32.3% (217 of 670 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 30.2% (203 of 670 strings)

Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: rogerio-mattos <rogerio-mattos@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/pt_BR/
Translation: PortProtonQt/PortProtonQt
2026-06-06 17:41:26 +00:00
Codeberg Translateandgallegonovato 26d1661f63 Translated using Weblate (Spanish)
Currently translated at 8.6% (58 of 670 strings)

Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: gallegonovato <gallegonovato@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/es/
Translation: PortProtonQt/PortProtonQt
2026-06-06 17:41:26 +00:00
Boria138 6ddb630fea fix: adjust vkBasalt CAS and action controls
Code check / Check code (push) Successful in 58s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-06 22:40:21 +05:00
Codeberg Translateandrogerio-mattos 2b934bef6e Translated using Weblate (Portuguese (Brazil))
Currently translated at 30.2% (203 of 670 strings)

Co-authored-by: rogerio-mattos <rogerio-mattos@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/pt_BR/
Translation: PortProtonQt/PortProtonQt
2026-06-06 16:07:54 +00:00
Codeberg Translateandgallegonovato 5d2101475e Translated using Weblate (Spanish)
Currently translated at 8.6% (58 of 670 strings)

Co-authored-by: gallegonovato <gallegonovato@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/es/
Translation: PortProtonQt/PortProtonQt
2026-06-06 16:07:54 +00:00
Boria138 c16b481679 fix: add LG latest aliases to default Wine selection
Code check / Check code (push) Successful in 55s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-06 19:38:21 +05:00
Boria138 b91ed1b135 fix: read XDG paths always and fix Flatpak container download disable
Code check / Check code (push) Successful in 56s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-06 18:30:56 +05:00
Boria138 a25c30f463 fix: restore right gamepad stick working
Code check / Check code (push) Successful in 54s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-06 16:48:11 +05:00
Boria138 ebded297d3 fix: select vkBasalt user config in Flatpak
Code check / Check code (push) Successful in 55s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-06 16:17:05 +05:00
Boria138 73d8c8e030 fix: improve GPU info command diagnostics
Code check / Check code (push) Successful in 54s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-06 13:09:03 +05:00
Boria138 079d79f2c8 fix: keep selected table row color on hover
Code check / Check code (push) Successful in 53s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-06 12:49:14 +05:00
Boria138 4f8e0c2d41 fix: speed up winetricks list loading
Code check / Check code (push) Successful in 55s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-06 12:45:27 +05:00
Mikhail Tergoev 37d9104274 add support third-party installation scripts
Code check / Check code (push) Successful in 54s
2026-06-05 18:42:58 +03:00
Boria138 764bb3ced5 fix: handle spaced exe names in last launch cache
Code check / Check code (push) Successful in 54s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-05 20:20:04 +05:00
37dd71284f Translated using Weblate (Chinese (Simplified Han script))
Code check / Check code (push) Successful in 55s
Check Translations / check-translations (push) Successful in 9s
Currently translated at 95.5% (640 of 670 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 95.5% (640 of 670 strings)

Co-authored-by: Anonymous <anonymous@noreply.codeberg.org>
Co-authored-by: Poesty Li <poesty7450@gmail.com>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/zh_Hans/
Translation: PortProtonQt/PortProtonQt
2026-06-05 14:33:00 +00:00
03da1b2c61 Translated using Weblate (Russian)
Currently translated at 100.0% (670 of 670 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (670 of 670 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (670 of 670 strings)

Co-authored-by: Anonymous <anonymous@noreply.codeberg.org>
Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Co-authored-by: Simple16 <simple16@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-06-05 14:33:00 +00:00
e77a7edf4c Translated using Weblate (Portuguese (Brazil))
Currently translated at 3.4% (23 of 670 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 3.4% (23 of 670 strings)

Co-authored-by: Anonymous <anonymous@noreply.codeberg.org>
Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/pt_BR/
Translation: PortProtonQt/PortProtonQt
2026-06-05 14:33:00 +00:00
Codeberg TranslateandAnonymous 065cf835c5 Translated using Weblate (Belarusian)
Currently translated at 0.0% (0 of 670 strings)

Co-authored-by: Anonymous <anonymous@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/be/
Translation: PortProtonQt/PortProtonQt
2026-06-05 14:33:00 +00:00
Boria138 3001fdac30 chore(locales): return es
Check Translations / check-translations (push) Failing after 9s
Code check / Check code (push) Successful in 53s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-05 19:32:48 +05:00
Boria138 4456d06b50 chore(locales): drop unused locales
Code check / Check code (push) Successful in 57s
Check Translations / check-translations (push) Failing after 10s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-05 19:17:36 +05:00
Codeberg TranslateandBoria138 1d423d7ebe Translated using Weblate (Portuguese (Brazil))
Currently translated at 3.4% (23 of 670 strings)

Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/pt_BR/
Translation: PortProtonQt/PortProtonQt
2026-06-05 14:12:52 +00:00
Boria138 1c91219cef fix: improve vkBasalt gamepad navigation
Code check / Check code (push) Successful in 1m11s
Check Translations / check-translations (push) Failing after 22s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-05 16:41:49 +05:00
Boria138 718b7f0eaa chore: avoid translating tool names in settings buttons
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-05 16:33:43 +05:00
Boria138 0b4fcd37d4 feat: add vkBasalt toggle key setting
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-05 16:25:58 +05:00
Boria138 f08ae3091e chore: move vkbasalt to separate tab
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-05 16:12:29 +05:00
Boria138 947a5d522a chore: add SpecialK to spell ignore
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-05 13:48:52 +05:00
Codeberg TranslateandBoria138 2ad468491e Translated using Weblate (Russian)
Code check / Check code (push) Successful in 56s
Check Translations / check-translations (push) Failing after 15s
Currently translated at 100.0% (674 of 674 strings)

Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-06-05 08:34:50 +00:00
Boria138 5bb0848f56 Merge branch 'weblate'
Code check / Check code (push) Successful in 54s
Check Translations / check-translations (push) Successful in 10s
2026-06-05 12:35:07 +05:00
Boria138 6d6ed36bc0 chore(locale): update
Check Translations / check-translations (push) Failing after 1m0s
Code check / Check code (push) Successful in 58s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-05 12:34:19 +05:00
Boria138 93d6c4610c feat: add vkBasalt exe settings
Code check / Check code (push) Successful in 59s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-05 12:31:31 +05:00
Boria138 72ec18e099 ci: use own action mirrors
Code check / Check code (push) Successful in 1m58s
Build vk_gpu_info on Debian 11 / Build vk_gpu_info on Debian 11 (push) Successful in 3m14s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-05 10:57:03 +05:00
Boria138 a04b0e41e9 chore(scripts): use unpack for p7zip archives
Code check / Check code (push) Failing after 1s
Code check / Check code (pull_request) Failing after 1s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-05 09:00:46 +05:00
Codeberg Translateandrogerio-mattos 6e4664589b Added translation using Weblate (Portuguese (Brazil))
Co-authored-by: rogerio-mattos <rogerio-mattos@noreply.codeberg.org>
2026-06-05 00:00:41 +00:00
Mikhail Tergoev 6ccf99c73f add download error checking
Code check / Check code (push) Failing after 30s
2026-06-04 17:03:29 +03:00
Mikhail Tergoev 20372331d6 revert logging scripts to terminal 2026-06-04 16:34:29 +03:00
Boria138 b17bbb2f46 fix: avoid file explorer focus jumps from gamepad axis
Code check / Check code (push) Successful in 58s
Prevent left stick axis events from forcing focus to the first path
button in FileExplorer. Keep list reset to the first row only for a
discrete D-pad down transition from path buttons.

Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-04 12:03:24 +05:00
Codeberg TranslateandBoria138 4debfae5aa Translated using Weblate (Russian)
Code check / Check code (push) Successful in 56s
Check Translations / check-translations (push) Failing after 17s
Currently translated at 100.0% (669 of 669 strings)

Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-06-04 05:34:30 +00:00
Boria138 36a086129e chore(locale): update
Check Translations / check-translations (push) Failing after 23s
Code check / Check code (push) Successful in 55s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-04 10:32:26 +05:00
Boria138 912dc2c77e feat: add exe settings favorites tab
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-04 10:31:14 +05:00
Boria138 26f3a35560 fix: move default Wine settings to Wine tab
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-04 10:05:18 +05:00
Boria138 ad8cbb35dc fix: refresh autoinstall status after install
Code check / Check code (push) Successful in 56s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-04 09:50:21 +05:00
Boria138 612c10595d feat(scripts): automate metainfo updates in bump_ver.py
Code check / Check code (push) Successful in 56s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-04 09:29:13 +05:00
Boria138 ac3d1045e4 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-04 09:08:51 +05:00
Mikhail Tergoev 363ff0d86e Merge branch 'scripts-specialk'
Code check / Check code (push) Successful in 54s
2026-06-03 20:32:27 +03:00
Mikhail Tergoev fe6b84db56 Merge branch 'scripts-default' 2026-06-03 20:10:19 +03:00
Mikhail Tergoev 02ebc440ec Merge branch 'scripts-wrapper'
Code check / Check code (push) Successful in 55s
2026-06-03 20:07:47 +03:00
Mikhail Tergoev bf6421547d Merge branch 'scripts-winetrics' 2026-06-03 20:02:07 +03:00
Mikhail Tergoev 4679fb7eb0 Merge branch 'scripts-ppdb'
Code check / Check code (push) Successful in 56s
2026-06-03 19:59:20 +03:00
Mikhail Tergoev 5c5d544bc7 Merge branch 'scripts-wayland' 2026-06-03 19:55:25 +03:00
Boria138 a4abeca70d Merge branch 'weblate'
Code check / Check code (push) Successful in 54s
Check Translations / check-translations (push) Successful in 16s
2026-06-03 19:57:59 +05:00
Boria138 bb39b07445 chore: improve exe settings row highlight
Code check / Check code (push) Successful in 57s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-03 10:30:18 +05:00
Boria138 4c27ca8365 chore(locale): update
Code check / Check code (push) Successful in 53s
Check Translations / check-translations (push) Successful in 11s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-02 22:40:02 +05:00
Boria138 8b0eb13d72 chore: remove ppdb cleanup success message from exe settings
Code check / Check code (push) Successful in 56s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-02 22:39:24 +05:00
Boria138 08ec0773fa feat: support Special K with OptiScaler
Code check / Check code (pull_request) Successful in 55s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-02 21:56:56 +05:00
Boria138 52f7c04cff feat: add SpecialK injection support
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-02 21:26:03 +05:00
Boria138 00e20f2165 feat: add default exe Wine and prefix settings
Code check / Check code (pull_request) Successful in 54s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-02 20:41:29 +05:00
Codeberg TranslateandBoria138 758c731106 Translated using Weblate (Russian)
Currently translated at 100.0% (668 of 668 strings)

Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-06-02 07:07:50 +00:00
Boria138 01a82510f2 feat: support launch wrapper in run-after setting
Code check / Check code (pull_request) Successful in 58s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-02 09:48:38 +05:00
Boria138 72daab8cd6 chore: add SLR log only on SLR_DEBUG=1
Code check / Check code (push) Successful in 58s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-01 21:45:57 +05:00
Boria138 a0445d8c45 feat(scripts): added cli to winetricks
Code check / Check code (pull_request) Successful in 56s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-01 14:00:50 +05:00
Boria138 343bc12c1e chore(locale): update
Code check / Check code (push) Successful in 54s
Check Translations / check-translations (push) Failing after 22s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-01 11:23:31 +05:00
Boria138 8aff408bda fix: keep autoinstall running after leaving card
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-01 11:23:05 +05:00
Boria138 66586b2a36 fix: prevent MangoHud auto-enable from config
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-01 11:14:09 +05:00
Boria138 3fb6727818 chore(locale): update
Code check / Check code (push) Successful in 55s
Check Translations / check-translations (push) Successful in 11s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-01 10:40:55 +05:00
Boria138 520fa55988 feat(system): add logout and make power actions init agnostic
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-06-01 10:40:14 +05:00
Gitea Actions b34004cff3 chore: update steam apps list 2026-06-01T00:00:46Z 2026-06-01 00:00:46 +00:00
Renovate Bot 2eb8c1f7b6 chore(deps): update archlinux:base-devel docker digest to 2507482
Code check / Check code (push) Successful in 52s
2026-05-31 03:14:21 +00:00
Renovate Bot f36073ee32 chore(deps): pin debian docker tag to 4ae6766
Package Build - AppImage, Arch, Fedora, Debian / Build AppImage (pull_request) Has been skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Fedora RPM (42) (pull_request) Has been skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Fedora RPM (43) (pull_request) Has been skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Fedora RPM (44) (pull_request) Has been skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Fedora RPM (rawhide) (pull_request) Has been skipped
Package Build - AppImage, Arch, Fedora, Debian / Build Debian Package (pull_request) Has been skipped
Code check / Check code (push) Successful in 53s
Package Build - AppImage, Arch, Fedora, Debian / Build Arch Package (pull_request) Has been skipped
Package Build - AppImage, Arch, Fedora, Debian / changes (pull_request) Successful in 13s
Code check / Check code (pull_request) Successful in 55s
2026-05-31 00:01:28 +00:00
Boria138 a258a63c8e fix: migrate shortcuts using current launcher mode
Code check / Check code (push) Successful in 54s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-30 20:16:17 +05:00
Boria138 def3fe27f8 feat: appimage shortcut migration and steam scripts update
Code check / Check code (push) Successful in 55s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-30 18:47:37 +05:00
Boria138 45fd7da18a fix: backspace in folder rename dialog
Code check / Check code (push) Successful in 54s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-30 18:33:34 +05:00
Boria138 6afce40576 fix: create folders in parent directory
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-30 18:30:15 +05:00
Boria138 c2f45736db fix: use AppImage scripts for silent launch
Code check / Check code (push) Successful in 56s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-30 10:29:13 +05:00
Boria138 4f3fdb621e fix: select MangoHud conf from flatpak home config first
Code check / Check code (push) Successful in 54s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-30 10:08:51 +05:00
Boria138 e40e9811cf fix: stabilize Steam shortcut launch wrappers
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-30 10:08:51 +05:00
Codeberg TranslateandBoria138 d1bfab6c7c Translated using Weblate (Russian)
Check Translations / check-translations (pull_request) Successful in 16s
Code check / Check code (pull_request) Successful in 54s
Check Translations / check-translations (push) Successful in 14s
Code check / Check code (push) Successful in 53s
Currently translated at 100.0% (667 of 667 strings)

Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-05-29 13:53:57 +00:00
Boria138 4f8929da40 fix: filter network shares from mounted drives
Code check / Check code (push) Successful in 55s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-29 09:37:36 +05:00
Boria138 4b0b613659 chore: fix autoFullscreenGamepad settings style
Code check / Check code (push) Successful in 57s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-28 13:08:49 +05:00
Boria138 0802e7852f chore(build): fix typo on arch
Code check / Check code (push) Successful in 1m31s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-28 10:17:30 +05:00
Boria138 4a03d803f4 chore(locale): added Belarusian po template
Check Translations / check-translations (push) Successful in 10s
Code check / Check code (push) Successful in 55s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-28 10:14:07 +05:00
Boria138 4271461282 chore(locale): update
Code check / Check code (push) Successful in 55s
Check Translations / check-translations (push) Successful in 11s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-28 10:08:45 +05:00
Boria138 f4477101cc chore(mangohud): fix typo
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-28 10:07:57 +05:00
Boria138 0dc11ecd3c feat(input): use SDL3 for gamepad type detection
Code check / Check code (push) Successful in 55s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-28 09:58:00 +05:00
Boria138 3248392e78 chore(locale): update
Check Translations / check-translations (push) Failing after 20s
Code check / Check code (push) Successful in 56s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-27 21:30:57 +05:00
Boria138 9468c3f286 feat(settings): return gamepad type setting
Code check / Check code (push) Successful in 54s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-27 21:27:22 +05:00
Boria138 c826153ddf fix: repair native Wayland launch setup
Code check / Check code (pull_request) Successful in 53s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-27 20:47:24 +05:00
Boria138 f2b80604cb feat(mangohud): added display_server to PortProton preset
Code check / Check code (push) Successful in 54s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-27 20:35:32 +05:00
Boria138 dd61c72a3a fix: copy ppdb templates and fix runtime game path
Code check / Check code (pull_request) Successful in 54s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-27 19:15:44 +05:00
Boria138 36a36ad7d2 fix: load bundled terminal color schemes
Code check / Check code (push) Successful in 57s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-27 19:00:47 +05:00
Boria138 03ada79e88 fix: improve installed autoinstall handling
Code check / Check code (push) Successful in 56s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-27 15:30:07 +05:00
Boria138 20444bc3d1 feat: add drag and drop restore for ppack backups
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-27 15:02:34 +05:00
Boria138 ae89b5a0fb ci: merge package build workflows
Code check / Check code (push) Successful in 55s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-27 12:11:16 +05:00
Boria138 3372bb58ba fix: pass Steam launch options to games
Code check / Check code (push) Successful in 57s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-27 12:03:09 +05:00
Boria138 200b257622 fix: launch Steam games via detected client type
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-27 12:03:09 +05:00
VanoMJ 0b8ef53cdd ci: build Debian package
Build Check - AppImage, Arch, Fedora, Debian / changes (pull_request) Successful in 14s
Build Check - AppImage, Arch, Fedora, Debian / Build AppImage (pull_request) Has been skipped
Build Check - AppImage, Arch, Fedora, Debian / Build Fedora RPM (42) (pull_request) Has been skipped
Build Check - AppImage, Arch, Fedora, Debian / Build Fedora RPM (43) (pull_request) Has been skipped
Build Check - AppImage, Arch, Fedora, Debian / Build Fedora RPM (44) (pull_request) Has been skipped
Build Check - AppImage, Arch, Fedora, Debian / Build Fedora RPM (rawhide) (pull_request) Has been skipped
Build Check - AppImage, Arch, Fedora, Debian / Build Debian Package (pull_request) Successful in 2m39s
Code check / Check code (push) Successful in 55s
Code check / Check code (pull_request) Successful in 54s
Build Check - AppImage, Arch, Fedora, Debian / Build Arch Package (pull_request) Has been skipped
2026-05-26 21:42:23 +03:00
Boria138 41aea94fff fix: detect Steam directory via .steam symlink
Code check / Check code (push) Successful in 54s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-26 21:48:35 +05:00
Boria138 0a4cb81906 fix: add missing .cmd launch support
Code check / Check code (push) Successful in 55s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-26 21:05:54 +05:00
Boria138 1743c69261 feat: add hidden time display mode
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-26 20:57:35 +05:00
Boria138 d0d1dff778 bump to 1.1.0 (hotfix)
Build AppImage, Arch and Fedora Packages / Build Fedora RPM (43) (push) Successful in 1m3s
Build AppImage, Arch and Fedora Packages / Build Fedora RPM (rawhide) (push) Successful in 1m20s
Code check / Check code (push) Successful in 54s
Build AppImage, Arch and Fedora Packages / Build AppImage (push) Successful in 6m53s
Build AppImage, Arch and Fedora Packages / Build Arch Package (push) Successful in 2m8s
Build AppImage, Arch and Fedora Packages / Build Fedora RPM (44) (push) Successful in 1m9s
Build AppImage, Arch and Fedora Packages / Create and Publish Release (push) Successful in 17s
Build AppImage, Arch and Fedora Packages / Build Fedora RPM (42) (push) Successful in 1m9s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-26 11:48:45 +05:00
Boria138 07e07dbe09 chore(locale): update
Check Translations / check-translations (push) Successful in 10s
Code check / Check code (push) Successful in 54s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-26 11:44:38 +05:00
Boria138 004916a82b fix: filter invalid GPU entries in settings
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-26 11:44:15 +05:00
Codeberg TranslateandBoria138 ae2115ad0a Translated using Weblate (Russian)
Check Translations / check-translations (push) Successful in 15s
Code check / Check code (push) Successful in 55s
Currently translated at 100.0% (665 of 665 strings)

Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-05-26 06:33:50 +00:00
Boria138 357a0dcf42 chore(locale): update
Check Translations / check-translations (push) Failing after 20s
Code check / Check code (push) Successful in 56s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-26 11:31:45 +05:00
Boria138 e5df48b9b0 chore: move gamepad fullscreen option in settings
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-26 11:31:10 +05:00
Boria138 48217b93f5 feat: validate PORT_DATA_PATH read-write access
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-26 11:27:29 +05:00
Boria138 cc2372107a feat: add version-based download counter
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-26 11:12:26 +05:00
Boria138 a32d63f5e5 refactor: centralize script D-Bus calls
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-26 10:58:35 +05:00
Boria138 cbf29005ff fix: remove obsolete PROGRAMS prefix
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-26 10:35:39 +05:00
Boria138 8d10bae8f2 fix: avoid duplicate library refresh
Code check / Check code (push) Successful in 56s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-25 21:42:38 +05:00
Boria138 28d0417ede chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-25 21:32:47 +05:00
Boria138 7efb0aadec fix: reset PortProton user config from CLI
Code check / Check code (push) Successful in 55s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-25 21:18:17 +05:00
Boria138 d4d7e9c044 fix: always show pinned prefixes
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-25 21:15:06 +05:00
Boria138 eb18178958 fix: reset PortProton user config with app settings
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-25 21:10:51 +05:00
Boria138 979e208969 fix: update PortProton dependency progress from live output
Code check / Check code (push) Successful in 57s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-25 21:03:32 +05:00
Boria138 8704ba00e9 fix: keep Wine settings tab populated without dist directory
Code check / Check code (push) Successful in 55s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-25 20:31:58 +05:00
Mikhail Tergoev d9d8242475 add check write access to the game directory
Code check / Check code (push) Successful in 55s
2026-05-25 18:12:59 +03:00
Codeberg TranslateandBoria138 64e626b2b2 Translated using Weblate (Russian)
Check Translations / check-translations (push) Successful in 17s
Code check / Check code (push) Successful in 53s
Currently translated at 100.0% (664 of 664 strings)

Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-05-25 05:14:31 +00:00
Boria138 8af84460eb fix: improve library toolbar focus navigation
Code check / Check code (push) Successful in 55s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-25 10:03:38 +05:00
Boria138 b7e83ad1d2 fix: handle gamepad fullscreen startup
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-25 09:56:21 +05:00
Boria138 ffff6efa68 fix: keep Wine and LG builds in dist
Code check / Check code (push) Successful in 56s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-25 09:46:53 +05:00
Boria138 fabf14fc46 chore(localization): update
Code check / Check code (push) Successful in 53s
Check Translations / check-translations (push) Failing after 22s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-25 09:35:55 +05:00
Boria138 88db436b94 fix: keep mouse emulation available after launcher start
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-25 09:35:18 +05:00
Boria138 592d24c9c6 ui: depersonalize interface by using generic terminology
Code check / Check code (push) Successful in 56s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-25 09:02:54 +05:00
Boria138 c472c785cc feat(ui): add quick launch button
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-25 08:45:03 +05:00
Boria138 759e931dfc ui: remove redundant tab titles
Code check / Check code (push) Successful in 55s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-25 08:30:01 +05:00
Boria138 93f5ea49d4 chore(build): replace steam compat
Code check / Check code (push) Successful in 56s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-25 08:15:04 +05:00
Mikhail Tergoev d9c55bed61 Merge branch 'main' of git.linux-gaming.ru:Linux-Gaming/PortProtonQt
Code check / Check code (push) Successful in 55s
2026-05-24 21:35:19 +03:00
Mikhail Tergoev 64bbabd0f1 fix auto update compat tools 2026-05-24 21:33:59 +03:00
Boria138 c3e9433f9d fix: defer empty library refresh until window shows
Code check / Check code (push) Successful in 54s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-24 17:26:48 +05:00
Boria138 c4274bbef6 fix: restore legacy squashfs via easyterm
Code check / Check code (push) Successful in 54s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-24 17:20:59 +05:00
Boria138 cdfd983580 fix: avoid prefix restore on theme restart
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-24 17:13:44 +05:00
Boria138 749113b48c fix: use classic autoinstall covers for list themes
Code check / Check code (push) Successful in 55s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-24 15:03:05 +05:00
Boria138 5fdba88c5c fix: refresh empty library after silent launch
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-24 14:54:30 +05:00
Boria138 a20887da5b fix: refresh library after all PortProton shortcut creation
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-24 14:44:40 +05:00
Boria138 c9b8871fb1 fix: fallback to exe icon when cover download fails
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-24 14:38:48 +05:00
Boria138 6db27ef7af feat: add GUI support for bat msi reg launch files
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-24 14:25:55 +05:00
Boria138 97de53303c fix: force 96 DPI on prefix initialization
Code check / Check code (push) Successful in 55s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-24 11:02:59 +05:00
Simple16 07ac67e934 Updating the Russian localization
Check Translations / check-translations (push) Successful in 15s
Code check / Check code (push) Successful in 51s
2026-05-24 05:27:33 +00:00
Simple16 66e1e437f8 Updating the Russian localization 2026-05-24 05:27:33 +00:00
Boria138 12c98adbd7 fix: resolve pyright type errors in wine_extractor, downloader, and prefix_backup
Code check / Check code (push) Successful in 53s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-24 10:27:14 +05:00
Boria138 d7de29008e fix(deps): update python dependencies
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-24 10:21:03 +05:00
Boria138 4d99a66e84 chore: finally migrate custom data to https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt-Custom-Metadata
Code check / Check code (push) Successful in 53s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-24 09:55:35 +05:00
Simple16 288242195b Updating the English localization
Code check / Check code (push) Successful in 56s
Code check / Check code (pull_request) Successful in 56s
2026-05-24 09:26:37 +05:00
Boria138 892124efba fix: normalize Proton dist hyphen spacing
Code check / Check code (push) Successful in 54s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-24 03:24:49 +00:00
Renovate Bot ae7bd3e5ff fix(deps): update dependency dbus-fast to v5
Code check / Check code (push) Successful in 56s
2026-05-24 03:19:56 +00:00
Renovate Bot 042b90d663 chore(deps): update ghcr.io/renovatebot/renovate:latest docker digest to 47421f2
Code check / Check code (pull_request) Successful in 55s
Code check / Check code (push) Successful in 57s
2026-05-24 00:00:43 +00:00
Boria138 4fdaf0115e feat: rework prefix backups with libarchive progress UI
Code check / Check code (push) Successful in 56s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-23 16:31:16 +00:00
Boria138 b00f62776c feat: add svg cover image support
Code check / Check code (push) Successful in 57s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-23 21:29:43 +05:00
Boria138 69674b5c75 fix: check moved Python files in meson hook
Code check / Check code (push) Successful in 58s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-23 21:14:37 +05:00
Boria138 eaa3467410 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-23 21:07:19 +05:00
Boria138 47a949fe6e chore(scripts): fix easyterm location
Code check / Check code (push) Successful in 55s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-23 20:41:22 +05:00
Mikhail Tergoev 8902369fe7 fix create desktop and choose ppdb for setup-msi
Code check / Check code (push) Successful in 57s
2026-05-23 16:41:08 +03:00
Mikhail Tergoev c0529ac9fd move easyterm to scripts_utils 2026-05-23 13:49:36 +03:00
Mikhail Tergoev a9ed377b00 add runner terminal function: python_term 2026-05-23 13:40:08 +03:00
Mikhail Tergoev bc523762b6 add runner python3 function: python_module 2026-05-23 13:20:50 +03:00
Boria138 2f5159129c fix: include check_variables defaults in --show-ppdb output
Code check / Check code (push) Successful in 59s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-23 14:10:47 +05:00
Boria138 eef8c7d496 chore(locale): rm zh_Hans
Code check / Check code (push) Successful in 55s
Check Translations / check-translations (push) Successful in 13s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-23 11:08:38 +05:00
Boria138 64cad59d53 chore(locale): rename zh_Hans to zh_CN for glibc compatibility
Code check / Check code (push) Successful in 57s
Check Translations / check-translations (push) Failing after 17s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-05-23 11:03:51 +05:00
618 changed files with 177391 additions and 26189 deletions

No files matched your search

-142
View File
@@ -1,142 +0,0 @@
name: Nightly Build - AppImage, Arch, Fedora
on:
workflow_dispatch:
env:
BUILD_BRANCH: ${{ github.ref_name }}
PKGDEST: "/tmp/portprotonqt"
PACKAGE: "portprotonqt"
jobs:
build-appimage:
name: Build AppImage
runs-on: ubuntu-22.04
container:
image: archlinux:base-devel@sha256:6db772fd1dd128b9cf7b7231ca5284af70879596fe4ec754c911cfc4ac30d5eb
options: --privileged --device /dev/fuse
steps:
- name: Prepare container
run: |
pacman-key --init
pacman -Sy --noconfirm archlinux-keyring
pacman -Syu --noconfirm --disable-download-timeout --needed git wget gnupg nodejs npm xorg-server-xvfb zsync
- uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
ref: ${{ env.BUILD_BRANCH }}
- name: Install appimage dependencies
run: |
cd build-aux/AppImage
chmod +x get-dependencies.sh portprotonqt-appimage.sh
./get-dependencies.sh --local --branch "${{ env.BUILD_BRANCH }}"
- name: Build AppImage
run: |
cd build-aux/AppImage
./portprotonqt-appimage.sh
- name: Upload AppImage
uses: https://gitea.com/actions/gitea-upload-artifact@v4
with:
name: PortProtonQt-AppImage
path: build-aux/AppImage/dist/*.AppImage
build-fedora:
name: Build Fedora RPM
runs-on: ubuntu-latest
strategy:
matrix:
fedora_version: [42, 43, 44, rawhide]
container:
image: fedora:${{ matrix.fedora_version }}
options: --privileged
steps:
- name: Install build dependencies
run: |
dnf install -y git rpmdevtools meson ninja-build python3-devel \
systemd-rpm-macros vulkan-loader-devel redhat-rpm-config nodejs npm \
gcc gettext
- name: Setup rpmbuild environment
run: |
useradd rpmbuild -u 5002 -g users || true
mkdir -p /home/rpmbuild/{BUILD,RPMS,SPECS,SRPMS,SOURCES}
chown -R rpmbuild:users /home/rpmbuild
echo '%_topdir /home/rpmbuild' > /home/rpmbuild/.rpmmacros
- name: Checkout repo
uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
ref: ${{ env.BUILD_BRANCH }}
- name: Copy fedora.spec
run: |
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
- name: Build RPM
run: |
su rpmbuild -c "rpmbuild -ba /home/rpmbuild/SPECS/${{ env.PACKAGE }}.spec"
- name: Upload RPM package
uses: https://gitea.com/actions/gitea-upload-artifact@v4
with:
name: PortProtonQt-RPM-Fedora-${{ matrix.fedora_version }}
path: /home/rpmbuild/RPMS/**/*.rpm
build-arch:
name: Build Arch Package
runs-on: ubuntu-22.04
container:
image: archlinux:base-devel@sha256:6db772fd1dd128b9cf7b7231ca5284af70879596fe4ec754c911cfc4ac30d5eb
steps:
- name: Prepare container
run: |
pacman -Syuu --noconfirm --disable-download-timeout --needed git wget gnupg nodejs npm
sed -i 's/#MAKEFLAGS="-j2"/MAKEFLAGS="-j$(nproc) -l$(nproc)"/g' /etc/makepkg.conf
sed -i 's/OPTIONS=(.*)/OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge lto)/g' /etc/makepkg.conf
yes | pacman -Scc
pacman-key --init
pacman -S --noconfirm archlinux-keyring
mkdir -p /__w/portproton-repo
pacman-key --recv-key 3056513887B78AEB --keyserver keyserver.ubuntu.com
pacman-key --lsign-key 3056513887B78AEB
pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst'
pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst'
cat << EOM >> /etc/pacman.conf
[chaotic-aur]
Include = /etc/pacman.d/chaotic-mirrorlist
EOM
pacman -Syy
useradd -m user -G wheel && echo "user ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
echo "PACKAGER=\"Boris Yumankulov <boria138@altlinux.org>\"" >> /etc/makepkg.conf
chown user -R /tmp
chown user -R ..
- name: Checkout
uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
ref: ${{ env.BUILD_BRANCH }}
- name: Build
run: |
cd /__w/portproton-repo
cp -r "$GITHUB_WORKSPACE" PortProtonQt
cd /__w/portproton-repo/PortProtonQt/build-aux
sed -i "s|source=(\"git+https://git.linux-gaming.ru/Boria138/PortProtonQt.git\")|source=(\"git+https://git.linux-gaming.ru/Boria138/PortProtonQt.git#branch=${{ env.BUILD_BRANCH }}\")|" PKGBUILD-git
chown user -R ..
su user -c "yes '' | makepkg --noconfirm -s -p PKGBUILD-git"
- name: Upload Arch package
uses: https://gitea.com/actions/gitea-upload-artifact@v4
with:
name: PortProtonQt-Arch
path: ${{ env.PKGDEST }}/*
+9 -10
View File
@@ -7,7 +7,7 @@ on:
- main
- scripts
paths:
- 'build-aux/vk_gpu_info.c'
- 'build-aux/src/vk_gpu_info.c'
- '.gitea/workflows/build-vk-gpu-info-debian.yml'
jobs:
@@ -25,33 +25,32 @@ jobs:
apt-get install -y build-essential pkg-config libvulkan-dev git curl wget nodejs npm
- name: Set up Node.js
uses: https://gitea.com/actions/setup-node@v2
uses: https://git.linux-gaming.ru/actions/setup-node@v2
with:
node-version: 20
- name: Checkout code
uses: https://gitea.com/actions/checkout@v3
uses: https://git.linux-gaming.ru/actions/checkout@v3
- name: Compile vk_gpu_info
run: |
cd build-aux
gcc -o vk_gpu_info vk_gpu_info.c -lvulkan
mkdir -p build-aux/bin
gcc -o build-aux/bin/vk_gpu_info build-aux/src/vk_gpu_info.c -lvulkan
- name: Test vk_gpu_info execution
run: |
cd build-aux
# Check if the executable was created
if [ -f "./vk_gpu_info" ]; then
if [ -f "build-aux/bin/vk_gpu_info" ]; then
echo "vk_gpu_info executable created successfully"
# Try to run it (may fail if no Vulkan devices present, but that's OK for build test)
timeout 10s ./vk_gpu_info || echo "vk_gpu_info ran but may have failed due to lack of Vulkan hardware (expected in CI)"
timeout 10s build-aux/bin/vk_gpu_info || echo "vk_gpu_info ran but may have failed due to lack of Vulkan hardware (expected in CI)"
else
echo "ERROR: vk_gpu_info executable was not created"
exit 1
fi
- name: Upload vk_gpu_info binary
uses: https://gitea.com/actions/gitea-upload-artifact@v4
uses: https://git.linux-gaming.ru/actions/gitea-upload-artifact@v4
with:
name: vk_gpu_info-debian11-binary
path: build-aux/vk_gpu_info
path: build-aux/bin/vk_gpu_info
+94 -20
View File
@@ -1,17 +1,27 @@
name: Build AppImage, Arch and Fedora Packages
name: Build AppImage, Arch, Fedora and Debian Packages
on:
workflow_dispatch:
inputs:
mode:
description: "Run mode"
required: true
default: "hotfix"
type: choice
options:
- hotfix
- release
push:
tags:
- 'v[0-9]*.[0-9]*'
env:
# Common version, will be used for tagging the release
VERSION: 1.0
VERSION: 1.5.0
PKGDEST: "/tmp/portprotonqt"
PACKAGE: "portprotonqt"
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
RUN_MODE: ${{ github.event_name == 'workflow_dispatch' && inputs.mode || 'release' }}
jobs:
build-appimage:
@@ -22,18 +32,24 @@ jobs:
options: --privileged --device /dev/fuse
steps:
- name: Prepare container
run: |
pacman-key --init
pacman -Sy --noconfirm archlinux-keyring
pacman -Syu --noconfirm --disable-download-timeout --needed git wget gnupg nodejs npm xorg-server-xvfb zsync
uses: https://git.linux-gaming.ru/actions/anylinux-setup-action@7278cbb7c3692fce7241d427614ef7984192f138 # v3
- uses: https://gitea.com/actions/checkout@v4
- name: Install CI dependencies
run: pacman -S --noconfirm --needed nodejs npm
- uses: https://git.linux-gaming.ru/actions/checkout@v4
- name: Install appimage dependencies
run: |
cd build-aux/AppImage
chmod +x get-dependencies.sh portprotonqt-appimage.sh
./get-dependencies.sh
if [ "${{ env.RUN_MODE }}" = "hotfix" ]; then
./get-dependencies.sh --branch "${{ github.ref_name }}"
elif [ "${{ github.event_name }}" = "push" ]; then
./get-dependencies.sh --tag "${{ github.ref_name }}"
else
./get-dependencies.sh
fi
- name: Build AppImage
run: |
@@ -41,10 +57,10 @@ jobs:
./portprotonqt-appimage.sh
- name: Upload AppImage
uses: https://gitea.com/actions/gitea-upload-artifact@v4
uses: https://git.linux-gaming.ru/actions/gitea-upload-artifact@v4
with:
name: PortProtonQt-AppImage
path: build-aux/AppImage/dist/*.AppImage
path: build-aux/AppImage/dist/*.AppImage*
build-arch:
name: Build Arch Package
@@ -78,18 +94,21 @@ jobs:
chown user -R ..
- name: Checkout
uses: https://gitea.com/actions/checkout@v4
uses: https://git.linux-gaming.ru/actions/checkout@v4
- name: Build
run: |
cd /__w/portproton-repo
cp -r "$GITHUB_WORKSPACE" PortProtonQt
cd /__w/portproton-repo/PortProtonQt/build-aux
if [ "${{ env.RUN_MODE }}" = "hotfix" ]; then
sed -i "s|^source=.*|source=(\"git+https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt.git#branch=${{ github.ref_name }}\")|" PKGBUILD
fi
chown user -R ..
su user -c "yes '' | makepkg --noconfirm -s"
- name: Upload Arch package
uses: https://gitea.com/actions/gitea-upload-artifact@v4
uses: https://git.linux-gaming.ru/actions/gitea-upload-artifact@v4
with:
name: PortProtonQt-Arch
path: ${{ env.PKGDEST }}/*
@@ -100,7 +119,7 @@ jobs:
strategy:
matrix:
fedora_version: [42, 43, 44, rawhide]
fedora_version: [43, 44, 45, rawhide]
container:
image: fedora:${{ matrix.fedora_version }}
@@ -109,9 +128,16 @@ jobs:
steps:
- name: Install build dependencies
run: |
dnf install -y git rpmdevtools meson ninja-build python3-devel \
# Select nearby mirrors and abandon slow downloads after 20 seconds.
dnf --setopt=fastestmirror=True --setopt=max_parallel_downloads=10 \
--setopt=minrate=100k --setopt=timeout=20 \
upgrade -y --exclude=openh264,mozilla-openh264
dnf --setopt=fastestmirror=True --setopt=max_parallel_downloads=10 \
--setopt=minrate=100k --setopt=timeout=20 \
install -y --disablerepo=fedora-cisco-openh264 \
git rpmdevtools meson ninja-build python3-devel \
systemd-rpm-macros vulkan-loader-devel redhat-rpm-config nodejs npm \
gcc gettext
gcc gettext 'pkgconfig(sdl3)'
- name: Setup rpmbuild environment
run: |
@@ -121,11 +147,14 @@ jobs:
echo '%_topdir /home/rpmbuild' > /home/rpmbuild/.rpmmacros
- name: Checkout repo
uses: https://gitea.com/actions/checkout@v4
uses: https://git.linux-gaming.ru/actions/checkout@v4
- name: Copy fedora.spec
run: |
cp build-aux/fedora.spec /home/rpmbuild/SPECS/${{ env.PACKAGE }}.spec
if [ "${{ env.RUN_MODE }}" = "hotfix" ]; then
sed -i "s|git checkout v%{pypi_version}|git checkout ${{ github.ref_name }}|" /home/rpmbuild/SPECS/${{ env.PACKAGE }}.spec
fi
chown -R rpmbuild:users /home/rpmbuild
- name: Build RPM
@@ -133,16 +162,61 @@ jobs:
su rpmbuild -c "rpmbuild -ba /home/rpmbuild/SPECS/${{ env.PACKAGE }}.spec"
- name: Upload RPM package
uses: https://gitea.com/actions/gitea-upload-artifact@v4
uses: https://git.linux-gaming.ru/actions/gitea-upload-artifact@v4
with:
name: PortProtonQt-RPM-Fedora-${{ matrix.fedora_version }}
path: /home/rpmbuild/RPMS/**/*.rpm
build-debian:
name: Build Debian Package
runs-on: ubuntu-latest
container:
image: debian:13
options: --privileged
steps:
- name: Install build dependencies
run: |
# Bootstrap Nala before mirror ranking without the slow CDN used by this runner.
sed -i -e 's|http://deb.debian.org/debian-security|http://security.debian.org/debian-security|g' \
-e 's|http://deb.debian.org/debian|http://ftp.ru.debian.org/debian|g' \
/etc/apt/sources.list.d/debian.sources
apt-get update
apt-get install -y --no-install-recommends nala
if timeout --kill-after=5s 120s nala fetch --auto --fetches=3 &&
test -s /etc/apt/sources.list.d/fetch.sources; then
# Keep updates and security; use only ranked mirrors for the base suite.
sed -i 's/^Suites: trixie trixie-updates$/Suites: trixie-updates/' \
/etc/apt/sources.list.d/debian.sources
else
echo "::warning::Mirror selection failed; keeping the bootstrap Debian sources"
fi
nala update
nala install -y build-essential debhelper dpkg-dev gettext git \
libsdl3-dev libvulkan-dev meson ninja-build nodejs npm \
pkgconf python3
- name: Checkout
uses: https://git.linux-gaming.ru/actions/checkout@v4
- name: Build Debian package
run: |
DEB_BUILD_OPTIONS=noautodbgsym dpkg-buildpackage -us -uc -b
mkdir -p dist/deb
mv ../*.deb dist/deb/
- name: Upload Debian package
uses: https://git.linux-gaming.ru/actions/gitea-upload-artifact@v4
with:
name: PortProtonQt-DEB-Debian-13
path: dist/deb/*
release:
name: Create and Publish Release
if: github.event_name != 'workflow_dispatch' || inputs.mode == 'release'
runs-on: ubuntu-latest
steps:
- uses: https://gitea.com/actions/checkout@v4
- uses: https://git.linux-gaming.ru/actions/checkout@v4
- name: Install required dependencies
run: |
@@ -150,7 +224,7 @@ jobs:
sudo apt install -y original-awk unzip
- name: Download all artifacts
uses: https://gitea.com/actions/download-artifact@v3
uses: https://git.linux-gaming.ru/actions/download-artifact@v3
continue-on-error: true
with:
path: release/
@@ -170,7 +244,7 @@ jobs:
awk "/^## \\[$VERSION\\]/ {flag=1; next} /^## \\[/ || /^---/ {flag=0} flag" CHANGELOG.md > changelog.txt
- name: Release
uses: https://gitea.com/actions/gitea-release-action@v1
uses: https://git.linux-gaming.ru/actions/gitea-release-action@v1
env:
NODE_OPTIONS: '--experimental-fetch' # if nodejs < 18
with:
-42
View File
@@ -1,42 +0,0 @@
name: Check Translations
run-name: Check spelling in translation files
on:
push:
branches: [main, scripts]
paths:
- 'portprotonqt/locales/**'
pull_request:
paths:
- 'portprotonqt/locales/**'
workflow_dispatch:
jobs:
check-translations:
runs-on: ubuntu-latest
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
with:
python-version-file: "pyproject.toml"
- name: Install Python dependencies
run: pip install pyaspeller babel
- name: Run spell check
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
-195
View File
@@ -1,195 +0,0 @@
name: Build Check - AppImage, Arch, Fedora
on:
workflow_dispatch:
pull_request:
paths:
- 'build-aux/AppImage/**'
- 'build-aux/fedora-git.spec'
- 'build-aux/PKGBUILD-git'
- '.gitea/workflows/code-build.yml'
env:
PKGDEST: "/tmp/portprotonqt"
PACKAGE: "portprotonqt"
PR_REPO_URL: ${{ github.event.pull_request.head.repo.clone_url }}
PR_BRANCH: ${{ github.head_ref }}
jobs:
changes:
runs-on: ubuntu-latest
outputs:
appimage: ${{ steps.check.outputs.appimage }}
fedora: ${{ steps.check.outputs.fedora }}
arch: ${{ steps.check.outputs.arch }}
steps:
- uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
fetch-depth: 0
- name: Ensure git is installed
run: |
sudo apt update
sudo apt install -y git
- name: Check changed files
id: check
run: |
# Get changed files
git diff --name-only ${{ github.event.pull_request.base.sha }}...${{ github.event.pull_request.head.sha }} > changed_files.txt
echo "Changed files:"
cat changed_files.txt
# Check AppImage files
if grep -q "build-aux/AppImage/" changed_files.txt; then
echo "appimage=true" >> $GITHUB_OUTPUT
else
echo "appimage=false" >> $GITHUB_OUTPUT
fi
# Check Fedora spec files (only fedora-git.spec)
if grep -q "build-aux/fedora-git.spec" changed_files.txt; then
echo "fedora=true" >> $GITHUB_OUTPUT
else
echo "fedora=false" >> $GITHUB_OUTPUT
fi
# Check Arch PKGBUILD-git
if grep -q "build-aux/PKGBUILD-git" changed_files.txt; then
echo "arch=true" >> $GITHUB_OUTPUT
else
echo "arch=false" >> $GITHUB_OUTPUT
fi
build-appimage:
name: Build AppImage
runs-on: ubuntu-22.04
needs: changes
if: needs.changes.outputs.appimage == 'true' || github.event_name == 'workflow_dispatch'
container:
image: archlinux:base-devel@sha256:6db772fd1dd128b9cf7b7231ca5284af70879596fe4ec754c911cfc4ac30d5eb
options: --privileged --device /dev/fuse
steps:
- name: Prepare container
run: |
pacman-key --init
pacman -Sy --noconfirm --disable-download-timeout --needed archlinux-keyring
pacman -Syu --noconfirm --disable-download-timeout --needed git wget gnupg nodejs npm xorg-server-xvfb zsync
- uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Install appimage dependencies
run: |
cd build-aux/AppImage
chmod +x get-dependencies.sh portprotonqt-appimage.sh
./get-dependencies.sh --local --branch "${{ env.PR_BRANCH }}" --repo "${{ env.PR_REPO_URL }}"
- name: Build AppImage
run: |
cd build-aux/AppImage
./portprotonqt-appimage.sh
- name: Upload AppImage
uses: https://gitea.com/actions/gitea-upload-artifact@v4
with:
name: PortProtonQt-AppImage
path: build-aux/AppImage/dist/*.AppImage
build-fedora:
name: Build Fedora RPM
runs-on: ubuntu-latest
needs: changes
if: needs.changes.outputs.fedora == 'true' || github.event_name == 'workflow_dispatch'
strategy:
matrix:
fedora_version: [42, 43, 44, rawhide]
container:
image: fedora:${{ matrix.fedora_version }}
options: --privileged
steps:
- name: Install build dependencies
run: |
dnf install -y git rpmdevtools meson ninja-build python3-devel \
systemd-rpm-macros redhat-rpm-config nodejs npm \
gcc vulkan-loader-devel gettext
- name: Setup rpmbuild environment
run: |
useradd rpmbuild -u 5002 -g users || true
mkdir -p /home/rpmbuild/{BUILD,RPMS,SPECS,SRPMS,SOURCES}
chown -R rpmbuild:users /home/rpmbuild
echo '%_topdir /home/rpmbuild' > /home/rpmbuild/.rpmmacros
- name: Checkout repo
uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Copy fedora-git.spec
run: |
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
- name: Build RPM
run: |
su rpmbuild -c "rpmbuild -ba /home/rpmbuild/SPECS/${{ env.PACKAGE }}.spec"
- name: Upload RPM package
uses: https://gitea.com/actions/gitea-upload-artifact@v4
with:
name: PortProtonQt-RPM-Fedora-${{ matrix.fedora_version }}
path: /home/rpmbuild/RPMS/**/*.rpm
build-arch:
name: Build Arch Package
runs-on: ubuntu-22.04
needs: changes
if: needs.changes.outputs.arch == 'true' || github.event_name == 'workflow_dispatch'
container:
image: archlinux:base-devel@sha256:6db772fd1dd128b9cf7b7231ca5284af70879596fe4ec754c911cfc4ac30d5eb
steps:
- name: Prepare container
run: |
pacman -Sy --noconfirm --disable-download-timeout --needed git wget gnupg nodejs npm
sed -i 's/#MAKEFLAGS="-j2"/MAKEFLAGS="-j$(nproc) -l$(nproc)"/g' /etc/makepkg.conf
sed -i 's/OPTIONS=(.*)/OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge lto)/g' /etc/makepkg.conf
yes | pacman -Scc
pacman-key --init
pacman -S --noconfirm archlinux-keyring
mkdir -p /__w/portproton-repo
pacman-key --recv-key 3056513887B78AEB --keyserver keyserver.ubuntu.com
pacman-key --lsign-key 3056513887B78AEB
pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst'
pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst'
cat << EOM >> /etc/pacman.conf
[chaotic-aur]
Include = /etc/pacman.d/chaotic-mirrorlist
EOM
pacman -Syy
useradd -m user -G wheel && echo "user ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
echo "PACKAGER=\"Boris Yumankulov <boria138@altlinux.org>\"" >> /etc/makepkg.conf
chown user -R /tmp
chown user -R ..
- name: Checkout
uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Build
run: |
cd /__w/portproton-repo
git clone -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/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"
- name: Upload Arch package
uses: https://gitea.com/actions/gitea-upload-artifact@v4
with:
name: PortProtonQt-Arch
path: ${{ env.PKGDEST }}/*
+26 -11
View File
@@ -7,31 +7,46 @@ on:
- "data/**"
- "*.md"
- "dev-scripts/**"
- "portprotonqt/locales/**"
push:
branches: [main, scripts]
paths-ignore:
- "data/**"
- "*.md"
- "dev-scripts/**"
- "portprotonqt/locales/**"
workflow_dispatch:
jobs:
pre-commit:
name: Check code
runs-on: ubuntu-latest
container:
image: archlinux:base-devel@sha256:996c3a1d6b0d87b01242f6fcd8cfa3ad3eece1a67ab5c8f108e20af1d7b97bdd
steps:
- uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Set up Node.js
uses: https://gitea.com/actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
with:
node-version: 20
- name: Install uv manually
- name: Rank Arch mirrors
run: |
curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
uv --version
if curl -fL --retry 2 --connect-timeout 10 --max-time 60 \
https://github.com/westandskif/rate-mirrors/releases/download/v0.33.0/rate-mirrors-v0.33.0-x86_64-unknown-linux-musl.tar.gz \
-o /tmp/rate-mirrors.tar.gz &&
echo 'e0ffb221649b7e1ce6b67ffaabe7cfd2b619c8bf8d6971e07ff9507d4e19a4b3 /tmp/rate-mirrors.tar.gz' | sha256sum -c - &&
tar -xzf /tmp/rate-mirrors.tar.gz -C /tmp --strip-components=1 \
rate-mirrors-v0.33.0-x86_64-unknown-linux-musl/rate_mirrors &&
timeout --kill-after=5s 120s /tmp/rate_mirrors --allow-root --protocol=https --disable-untested-fallback \
--save=/tmp/arch-mirrorlist arch --max-delay=21600 &&
grep -q '^Server = https://' /tmp/arch-mirrorlist; then
install -m 644 /tmp/arch-mirrorlist /etc/pacman.d/mirrorlist
else
echo '::warning::Mirror ranking failed; keeping the original Arch mirrorlist'
fi
sed -i -E 's/^#?[[:space:]]*ParallelDownloads[[:space:]]*=.*/ParallelDownloads = 5/' /etc/pacman.conf
- name: Install system dependencies
run: |
pacman -Syu --noconfirm --needed git nodejs npm mesa libarchive libpulse sdl3 pyside6 qt6-svg qt6-imageformats uv
pacman -Scc --noconfirm
- uses: https://git.linux-gaming.ru/actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
- name: Sync dependencies into venv
run: uv sync --all-extras --dev
+22
View File
@@ -0,0 +1,22 @@
name: Download stats
on:
schedule:
- cron: '0 0 1 * *'
workflow_dispatch: {}
jobs:
stats:
runs-on: ubuntu-latest
steps:
- uses: https://git.linux-gaming.ru/actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
fetch-depth: 0
- name: Update download stats
env:
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
GITEA_ACTOR: ${{ gitea.actor }}
GITEA_SERVER: "git.linux-gaming.ru"
GITEA_REPOSITORY: ${{ gitea.repository }}
run: bash dev-scripts/get_download_stats.sh
+2 -2
View File
@@ -11,10 +11,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
uses: https://git.linux-gaming.ru/actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
- name: Set up Python
uses: https://gitea.com/actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
uses: https://git.linux-gaming.ru/actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
with:
python-version-file: "pyproject.toml"
+338
View File
@@ -0,0 +1,338 @@
name: Package Build - AppImage, Arch, Fedora, Debian
on:
workflow_dispatch:
pull_request:
paths:
- 'build-aux/AppImage/**'
- 'build-aux/fedora-git.spec'
- 'build-aux/PKGBUILD-git'
- 'debian/**'
- '.gitea/workflows/package-build.yml'
env:
BUILD_BRANCH: ${{ github.ref_name }}
PKGDEST: "/tmp/portprotonqt"
PACKAGE: "portprotonqt"
PR_REPO_URL: ${{ github.event.pull_request.head.repo.clone_url }}
PR_BRANCH: ${{ github.head_ref }}
jobs:
changes:
runs-on: ubuntu-latest
outputs:
appimage: ${{ steps.check.outputs.appimage }}
fedora: ${{ steps.check.outputs.fedora }}
arch: ${{ steps.check.outputs.arch }}
debian: ${{ steps.check.outputs.debian }}
steps:
- uses: https://git.linux-gaming.ru/actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
if: github.event_name == 'pull_request'
with:
fetch-depth: 0
- name: Ensure git is installed
if: github.event_name == 'pull_request'
run: |
sudo apt update
sudo apt install -y git
- name: Check changed files
if: github.event_name == 'pull_request'
id: check
run: |
git diff --name-only ${{ github.event.pull_request.base.sha }}...${{ github.event.pull_request.head.sha }} > changed_files.txt
echo "Changed files:"
cat changed_files.txt
if grep -q "build-aux/AppImage/" changed_files.txt; then
echo "appimage=true" >> $GITHUB_OUTPUT
else
echo "appimage=false" >> $GITHUB_OUTPUT
fi
if grep -q "build-aux/fedora-git.spec" changed_files.txt; then
echo "fedora=true" >> $GITHUB_OUTPUT
else
echo "fedora=false" >> $GITHUB_OUTPUT
fi
if grep -q "build-aux/PKGBUILD-git" changed_files.txt; then
echo "arch=true" >> $GITHUB_OUTPUT
else
echo "arch=false" >> $GITHUB_OUTPUT
fi
if grep -q "debian/" changed_files.txt; then
echo "debian=true" >> $GITHUB_OUTPUT
else
echo "debian=false" >> $GITHUB_OUTPUT
fi
- name: Skip change detection
if: github.event_name == 'workflow_dispatch'
run: true
build-appimage:
name: Build AppImage
runs-on: ubuntu-22.04
needs: changes
if: needs.changes.outputs.appimage == 'true' || github.event_name == 'workflow_dispatch'
container:
image: archlinux:base-devel@sha256:996c3a1d6b0d87b01242f6fcd8cfa3ad3eece1a67ab5c8f108e20af1d7b97bdd
options: --privileged --device /dev/fuse
steps:
- name: Rank Arch mirrors
run: |
if curl -fL --retry 2 --connect-timeout 10 --max-time 60 \
https://github.com/westandskif/rate-mirrors/releases/download/v0.33.0/rate-mirrors-v0.33.0-x86_64-unknown-linux-musl.tar.gz \
-o /tmp/rate-mirrors.tar.gz &&
echo 'e0ffb221649b7e1ce6b67ffaabe7cfd2b619c8bf8d6971e07ff9507d4e19a4b3 /tmp/rate-mirrors.tar.gz' | sha256sum -c - &&
tar -xzf /tmp/rate-mirrors.tar.gz -C /tmp --strip-components=1 \
rate-mirrors-v0.33.0-x86_64-unknown-linux-musl/rate_mirrors &&
timeout --kill-after=5s 120s /tmp/rate_mirrors --allow-root --protocol=https --disable-untested-fallback \
--save=/tmp/arch-mirrorlist arch --max-delay=21600 &&
grep -q '^Server = https://' /tmp/arch-mirrorlist; then
install -m 644 /tmp/arch-mirrorlist /etc/pacman.d/mirrorlist
else
echo '::warning::Mirror ranking failed; keeping the original Arch mirrorlist'
fi
sed -i -E 's/^#?[[:space:]]*ParallelDownloads[[:space:]]*=.*/ParallelDownloads = 5/' /etc/pacman.conf
- name: Prepare container
uses: https://git.linux-gaming.ru/actions/anylinux-setup-action@b2d1ce4216f71162e00ae58fa11ee9aeb723d0d5 # v5
- name: Install CI dependencies
run: pacman -S --noconfirm --needed nodejs npm
- uses: https://git.linux-gaming.ru/actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
if: github.event_name == 'pull_request'
- uses: https://git.linux-gaming.ru/actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
if: github.event_name == 'workflow_dispatch'
with:
ref: ${{ env.BUILD_BRANCH }}
- name: Install appimage dependencies
run: |
cd build-aux/AppImage
chmod +x get-dependencies.sh portprotonqt-appimage.sh
if [ "${{ github.event_name }}" = "pull_request" ]; then
./get-dependencies.sh --local --branch "${{ env.PR_BRANCH }}" --repo "${{ env.PR_REPO_URL }}"
else
./get-dependencies.sh --local --branch "${{ env.BUILD_BRANCH }}"
fi
- name: Build AppImage
run: |
cd build-aux/AppImage
./portprotonqt-appimage.sh
- name: Upload AppImage
uses: https://git.linux-gaming.ru/actions/gitea-upload-artifact@v4
with:
name: PortProtonQt-AppImage
path: build-aux/AppImage/dist/*.AppImage*
build-fedora:
name: Build Fedora RPM
runs-on: ubuntu-latest
needs: changes
if: needs.changes.outputs.fedora == 'true' || github.event_name == 'workflow_dispatch'
strategy:
matrix:
fedora_version: [43, 44, 45, rawhide]
container:
image: fedora:${{ matrix.fedora_version }}
options: --privileged
steps:
- name: Install build dependencies
run: |
# Select nearby mirrors and abandon slow downloads after 20 seconds.
dnf --setopt=fastestmirror=True --setopt=max_parallel_downloads=10 \
--setopt=minrate=100k --setopt=timeout=20 \
upgrade -y --exclude=openh264,mozilla-openh264
dnf --setopt=fastestmirror=True --setopt=max_parallel_downloads=10 \
--setopt=minrate=100k --setopt=timeout=20 \
install -y --disablerepo=fedora-cisco-openh264 \
git rpmdevtools meson ninja-build python3-devel \
systemd-rpm-macros vulkan-loader-devel redhat-rpm-config nodejs npm \
gcc gettext 'pkgconfig(sdl3)'
- name: Setup rpmbuild environment
run: |
useradd rpmbuild -u 5002 -g users || true
mkdir -p /home/rpmbuild/{BUILD,RPMS,SPECS,SRPMS,SOURCES}
chown -R rpmbuild:users /home/rpmbuild
echo '%_topdir /home/rpmbuild' > /home/rpmbuild/.rpmmacros
- name: Checkout PR
uses: https://git.linux-gaming.ru/actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
if: github.event_name == 'pull_request'
- name: Checkout branch
uses: https://git.linux-gaming.ru/actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
if: github.event_name == 'workflow_dispatch'
with:
ref: ${{ env.BUILD_BRANCH }}
- name: Copy fedora.spec
run: |
if [ "${{ github.event_name }}" = "pull_request" ]; then
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
else
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
fi
chown -R rpmbuild:users /home/rpmbuild
- name: Build RPM
run: |
su rpmbuild -c "rpmbuild -ba /home/rpmbuild/SPECS/${{ env.PACKAGE }}.spec"
- name: Upload RPM package
uses: https://git.linux-gaming.ru/actions/gitea-upload-artifact@v4
with:
name: PortProtonQt-RPM-Fedora-${{ matrix.fedora_version }}
path: /home/rpmbuild/RPMS/**/*.rpm
build-arch:
name: Build Arch Package
runs-on: ubuntu-22.04
needs: changes
if: needs.changes.outputs.arch == 'true' || github.event_name == 'workflow_dispatch'
container:
image: archlinux:base-devel@sha256:996c3a1d6b0d87b01242f6fcd8cfa3ad3eece1a67ab5c8f108e20af1d7b97bdd
steps:
- name: Rank Arch mirrors
run: |
if curl -fL --retry 2 --connect-timeout 10 --max-time 60 \
https://github.com/westandskif/rate-mirrors/releases/download/v0.33.0/rate-mirrors-v0.33.0-x86_64-unknown-linux-musl.tar.gz \
-o /tmp/rate-mirrors.tar.gz &&
echo 'e0ffb221649b7e1ce6b67ffaabe7cfd2b619c8bf8d6971e07ff9507d4e19a4b3 /tmp/rate-mirrors.tar.gz' | sha256sum -c - &&
tar -xzf /tmp/rate-mirrors.tar.gz -C /tmp --strip-components=1 \
rate-mirrors-v0.33.0-x86_64-unknown-linux-musl/rate_mirrors &&
timeout --kill-after=5s 120s /tmp/rate_mirrors --allow-root --protocol=https --disable-untested-fallback \
--save=/tmp/arch-mirrorlist arch --max-delay=21600 &&
grep -q '^Server = https://' /tmp/arch-mirrorlist; then
install -m 644 /tmp/arch-mirrorlist /etc/pacman.d/mirrorlist
else
echo '::warning::Mirror ranking failed; keeping the original Arch mirrorlist'
fi
sed -i -E 's/^#?[[:space:]]*ParallelDownloads[[:space:]]*=.*/ParallelDownloads = 5/' /etc/pacman.conf
- name: Prepare container
run: |
pacman -Syu --noconfirm --needed git wget gnupg nodejs npm
sed -i 's/#MAKEFLAGS="-j2"/MAKEFLAGS="-j$(nproc) -l$(nproc)"/g' /etc/makepkg.conf
sed -i 's/OPTIONS=(.*)/OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge lto)/g' /etc/makepkg.conf
yes | pacman -Scc
pacman-key --init
pacman -S --noconfirm archlinux-keyring
mkdir -p /__w/portproton-repo
pacman-key --recv-key 3056513887B78AEB --keyserver keyserver.ubuntu.com
pacman-key --lsign-key 3056513887B78AEB
pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst'
pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst'
cat << EOM >> /etc/pacman.conf
[chaotic-aur]
Include = /etc/pacman.d/chaotic-mirrorlist
EOM
pacman -Syy
useradd -m user -G wheel && echo "user ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
echo "PACKAGER=\"Boris Yumankulov <boria138@altlinux.org>\"" >> /etc/makepkg.conf
chown user -R /tmp
chown user -R ..
- name: Checkout PR
uses: https://git.linux-gaming.ru/actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
if: github.event_name == 'pull_request'
- name: Checkout branch
uses: https://git.linux-gaming.ru/actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
if: github.event_name == 'workflow_dispatch'
with:
ref: ${{ env.BUILD_BRANCH }}
- name: Build
run: |
cd /__w/portproton-repo
if [ "${{ github.event_name }}" = "pull_request" ]; then
git clone -b ${{ env.PR_BRANCH }} ${{ env.PR_REPO_URL }} PortProtonQt
else
cp -r "$GITHUB_WORKSPACE" PortProtonQt
fi
cd /__w/portproton-repo/PortProtonQt/build-aux
if [ "${{ github.event_name }}" = "pull_request" ]; then
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
else
sed -i "s|source=(\"git+https://git.linux-gaming.ru/Boria138/PortProtonQt.git\")|source=(\"git+https://git.linux-gaming.ru/Boria138/PortProtonQt.git#branch=${{ env.BUILD_BRANCH }}\")|" PKGBUILD-git
fi
chown user -R ..
su user -c "yes '' | makepkg --noconfirm -s -p PKGBUILD-git"
- name: Upload Arch package
uses: https://git.linux-gaming.ru/actions/gitea-upload-artifact@v4
with:
name: PortProtonQt-Arch
path: ${{ env.PKGDEST }}/*
build-debian:
name: Build Debian Package
runs-on: ubuntu-latest
needs: changes
if: needs.changes.outputs.debian == 'true' || github.event_name == 'workflow_dispatch'
container:
image: debian:trixie-20260918@sha256:9cc080028c43b27d2074d63a5f9caf7166d731494965616c1a6d2827a004585c
options: --privileged
steps:
- name: Install build dependencies
run: |
# Bootstrap Nala before mirror ranking without the slow CDN used by this runner.
sed -i -e 's|http://deb.debian.org/debian-security|http://security.debian.org/debian-security|g' \
-e 's|http://deb.debian.org/debian|http://ftp.ru.debian.org/debian|g' \
/etc/apt/sources.list.d/debian.sources
apt-get update
apt-get install -y --no-install-recommends nala
if timeout --kill-after=5s 120s nala fetch --auto --fetches=3 &&
test -s /etc/apt/sources.list.d/fetch.sources; then
# Keep updates and security; use only ranked mirrors for the base suite.
sed -i 's/^Suites: trixie trixie-updates$/Suites: trixie-updates/' \
/etc/apt/sources.list.d/debian.sources
else
echo "::warning::Mirror selection failed; keeping the bootstrap Debian sources"
fi
nala update
nala install -y build-essential debhelper dpkg-dev gettext git \
libsdl3-dev libvulkan-dev meson ninja-build nodejs npm \
pkgconf python3
- name: Checkout PR
uses: https://git.linux-gaming.ru/actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
if: github.event_name == 'pull_request'
- name: Checkout branch
uses: https://git.linux-gaming.ru/actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
if: github.event_name == 'workflow_dispatch'
with:
ref: ${{ env.BUILD_BRANCH }}
- name: Build Debian package
run: |
DEB_BUILD_OPTIONS=noautodbgsym dpkg-buildpackage -us -uc -b
mkdir -p dist/deb
mv ../*.deb dist/deb/
- name: Upload Debian package
uses: https://git.linux-gaming.ru/actions/gitea-upload-artifact@v4
with:
name: PortProtonQt-DEB-Debian-13
path: dist/deb/*
+3 -3
View File
@@ -8,12 +8,12 @@ on:
jobs:
renovate:
runs-on: ubuntu-latest
container: ghcr.io/renovatebot/renovate:latest@sha256:2ccc5b1f0340593c40e1598547aa98feee4e521a0906a423fe0be0431a733dfa
container: ghcr.io/renovatebot/renovate:latest@sha256:47421f2f3f82048e969b5195dd808d5ac2c5f69d43d192191c4a3dca390afe06
steps:
- uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: https://git.linux-gaming.ru/actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
- name: Set up Node.js
uses: https://gitea.com/actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
uses: https://git.linux-gaming.ru/actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7
with:
node-version: 20
+3 -8
View File
@@ -8,6 +8,7 @@ wheels/
# Meson
builddir/
build-deb/
# Virtual environments
.venv
@@ -37,16 +38,10 @@ Thumbs.db
.ropeproject
.zed
# 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
CODE_QUALITY_PLAN.md
.repowise
+11 -1
View File
@@ -24,7 +24,7 @@ repos:
hooks:
- id: pyright
name: pyright
entry: pyright
entry: uv run pyright
language: system
types_or: [python, pyi]
require_serial: true
@@ -57,3 +57,13 @@ repos:
language: system
files: (^portprotonqt/.*\.py$|^build-aux/share/portproton/|meson\.build$)
pass_filenames: false
- repo: local
hooks:
- id: pytest
name: pytest
entry: uv run pytest tests/ -x -q --tb=line
language: system
types: [python]
files: ^(tests/|portprotonqt/)
pass_filenames: false
+1 -1
View File
@@ -1 +1 @@
3.10
3.11
+292 -26
View File
@@ -1,7 +1,7 @@
# PortProtonQt — AI Agent Guidelines
**Project:** PortProtonQt — GUI for PortProton, Steam, Epic Games Store
**Language:** Python 3.10+
**Project:** PortProtonQt — Game library manager and launcher for Linux
**Language:** Python 3.11+
**Platform:** Linux (POSIX)
**License:** GPL-3.0
**Build:** Meson + uv
@@ -78,6 +78,31 @@ Example:
---
## Commit Classification
Use Conventional Commit prefixes according to the primary purpose of the change:
| Prefix | Use for |
|--------|---------|
| `feat` | A new user-facing capability or supported workflow |
| `fix` | A correction for a confirmed defect or regression in existing behavior |
| `chore` | Maintenance, integration adjustments, filtering, metadata, or routine upkeep that is neither a feature nor a confirmed bug fix |
| `refactor` | Internal restructuring with no intended behavior change |
| `perf` | A measurable performance improvement |
| `test` | Test-only changes |
| `docs` | Documentation-only changes |
| `build` | Build system or dependency changes |
| `ci` | CI or automation configuration changes |
| `style` | Formatting-only changes with no behavior change |
| `revert` | Reverting an earlier commit |
- Classify by intent, not merely by whether code behavior changed.
- Do not default to `fix` for every behavioral correction or edge-case filter.
- Use `fix` only when the task identifies a bug/regression or the defect is clearly demonstrated.
- If `feat`, `fix`, and `chore` are ambiguous, prefer `chore` unless the task clearly establishes a new capability or confirmed defect.
---
## Forbidden Patterns
```python
@@ -107,6 +132,19 @@ shadow.setBlurRadius(20)
shadow.setColor(QColor(0, 0, 0, 150))
label.setStyleSheet("color: #bbbbbb;")
QColor(128, 128, 128)
# NEVER: Unexplained magic numbers in business logic
# Status codes, flags, timeouts, limits, protocol values — use named constants or enums
if status == 3: ... # BAD
if key_value >= 0x01000000: ... # BAD
# NEVER: Visual constants in application code (game_card.py, detail_pages/, etc.)
# ALL visual/layout constants MUST live in themes/standart/styles/constants.py
# Application code reads them via self.theme.CONSTANT_NAME
COMPACT_CARD_WIDTH_THRESHOLD = 150 # BAD: in game_card.py
RIBBON_SIZE_RATIO = 0.28 # BAD: in game_card.py
BADGE_ICON_SIZE = 16 # BAD: in detail_pages/widgets.py
SOURCE_CORNER_RATIO = 0.28 # BAD: in detail_pages/widgets.py
```
```python
@@ -144,7 +182,16 @@ 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
# ALWAYS: Use descriptive named constants, enums, or built-in Qt values instead of magic numbers
STATUS_COMPLETED = 3
if status == STATUS_COMPLETED:
...
# ALWAYS: Use named Qt.Key constants with comments for keyboard system key checks
# Skip system/modifier keys (Shift, Enter, Arrow keys, etc.)
if key_value >= Qt.Key.Key_Escape.value: ...
```
---
@@ -164,11 +211,16 @@ QColor(self.theme.color_disabled_text)
- 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
- **Before adding any helper, wrapper, class, or infrastructure, search for an existing method that already performs the operation and call it directly**
- **NEVER add a task-local helper that only wraps an existing method or a single call; keep the call in the modified block unless extraction is required by the function limits**
- If the user identifies overengineering, remove the unnecessary abstraction before continuing; do not layer another fix on top of it
- 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**
- When removing async/download code, preserve callback completion paths in callers
- Add or update regression tests for callback-driven UI loading paths touched by the change
- Never invent modules
- Do not move files unless requested
- Do not create new files for organization (unless task requires a new module)
@@ -183,6 +235,7 @@ QColor(self.theme.color_disabled_text)
- Preserve existing patterns
- Keep surrounding code unchanged
- Keep formatting changes limited to touched logic or required hook fixes
- **NEVER delete existing style constants from theme files (QSS strings like `*_STYLE`). All styles must be preserved during rewrites. Deleted styles break child theme inheritance.**
---
@@ -222,11 +275,13 @@ AI agents MAY:
- No blocking I/O in UI thread
- No synchronous HTTP in UI thread
- Cache API responses in `~/.cache/PortProtonQt`
- Cache API responses in `$XDG_DATA_HOME/PortProtonQt/cache` (default: `~/.local/share/PortProtonQt/cache`)
- Avoid repeated disk reads in loops
- Avoid O(n²) in game lists
- Lazy load images
- Limit threads to CPU cores
- Skip worker creation for valid cached downloads and URLs already marked failed; still complete callbacks exactly once through the owner's event loop
- Reuse cached download paths only while the file exists and matches the requested destination
### Clarification: "No Shared Mutable Global State" Does NOT Mean Removing Caches
@@ -235,10 +290,10 @@ Rule intent: avoid shared mutable globals that hold application state or cause h
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`
- Disk caches under `$XDG_DATA_HOME/PortProtonQt/cache` (default: `~/.local/share/PortProtonQt/cache`)
- `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").
Do not delete or disable caching or downloaders to satisfy this rule. Caching is required by the Performance Rules ("Cache API responses in `$XDG_DATA_HOME/PortProtonQt/cache`" and "Avoid repeated disk reads in loops").
---
@@ -249,6 +304,9 @@ Do not delete or disable caching or downloaders to satisfy this rule. Caching is
- No heavy operations in paintEvent
- Use methods instead of lambda for complex logic
- Use QThread for long tasks
- Retain every background worker that can outlive its caller in an owner field or collection until it finishes
- Register window-owned workers and retained worker collections in the application shutdown path; cancel when supported and wait before interpreter exit
- Add or update shutdown regression tests when adding or changing a background worker, including executor-backed workers
---
@@ -276,7 +334,7 @@ Do not assume conventions. Never invent behavior.
```bash
# Setup
uv python install 3.10
uv python install 3.11
uv sync
source .venv/bin/activate
pre-commit install --install-hooks
@@ -305,6 +363,7 @@ git commit -m "feat: description in English ≤72 chars"
| uv-lock | uv.lock up to date |
| ruff-check | Linting (E, W, F, B, C4, UP) |
| pyright | Type checking |
| pytest | Unit tests |
| 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 |
@@ -331,6 +390,7 @@ These tools are executed ONLY via pre-commit hooks.
- `pre-commit run --all-files`
- `pre-commit run ruff-check`
- `pre-commit run pyright`
- `pre-commit run pytest`
#### Rationale
@@ -341,6 +401,100 @@ Do not attempt to execute binaries manually.
---
## Testing
### Structure
```
tests/
├── conftest.py # Shared fixtures (tmp_config_dir, sample_steam_apps)
├── test_utils.py # Steam API utils (normalize_name, search, VDF, Steam utils)
├── test_validators.py # Config validators (string, int, bool, path, url)
├── test_cache_manager.py # CacheManager (save/load/TTL/atomic writes)
├── test_appimage_updater.py # AppImage auto-update worker, mirrors, changelog parsing
├── test_dark_theme.py # Dark theme detection (XFCE/MATE/Cinnamon/GNOME)
├── test_steam_cache.py # exiftool skip, cache eviction, delete_cached_app_files
├── test_downloader.py # Cache/error callbacks, worker ownership, and shutdown regressions
├── test_base_config.py # BaseConfig read/write, caching, versioning
├── test_cli.py # normalize_launch_path, URL/resolution parsing
├── test_debug_env_utils.py # Debug environment helpers, runtime variables
├── test_easyterm.py # Terminal final output, exit status, keyboard and gamepad closing
├── test_input_manager.py # Gamepad input navigation and focus regressions
├── test_sound_manager.py # UI sound playback, widget events, gamepad connection, theme sound files
├── test_boot_animation.py # Theme video inheritance, fullscreen boot rendering, gamepad skip, loading transitions, and shutdown
├── test_main_window.py # Main window data processing and callback regressions
├── test_library_resize.py # Library resize batching, cover reuse, and flow layout regressions
├── test_library_loading.py # Incremental loading, source switching, first-paint focus, and cover callbacks
├── test_store_games.py # GOG and EGS library, launch, install, and stop regressions
├── test_portproton_config.py # exec_line parsing, launcher tail, extensions
├── test_portproton_scripts.py # Shell script launch, second exe, exit codes, user.conf
├── test_portproton_api.py # PPDB API helpers, autoinstall localization fallback
├── test_autoinstall_status.py # Autoinstall installed-status matching regressions
├── test_migration.py # Desktop shortcut migration, prefix backup, squashfs
├── test_file_explorer.py # File explorer themed icon state regressions
├── test_icon_extractor.py # NE/PE icon extraction, DIB decoding, thumbnails
├── test_dbus_tools.py # D-Bus tools (notifications, idle inhibit, power profiles)
├── test_time_utils.py # Playtime parsing, last launch cache, formatting
├── test_shortcuts.py # Desktop shortcut creation, paths with spaces, .desktop entry
├── test_theme_store.py # Theme store UI worker lifecycle and race regressions
├── test_theme_manager.py # Theme AST injection, parent resolution, ThemeWrapper, style integrity
├── test_theme_security.py # Theme security checker (allowlist AST, forbidden modules/methods, SVG/font/image safety)
├── test_settings_search.py # MangoHud, vkBasalt, Gamescope settings search and layout regressions
├── test_detail_pages.py # Detail page gradient stops, wave background modes, palette handling
└── test_proton_manager.py # Local Wine/Proton drag-and-drop and safe archive extraction
```
### Running Tests
```bash
# Run all tests
uv run pytest tests/ -v
# Run specific test file
uv run pytest tests/test_utils.py -v
# Run specific test class
uv run pytest tests/test_utils.py::TestNormalizeName -v
# Run with pre-commit
pre-commit run pytest
```
### Writing Tests
- Tests MUST use `pytest` with `tmp_path` fixture for file isolation
- Tests MUST mock external resources (network, system paths, env vars)
- Tests MUST NOT depend on system state (installed apps, real Steam dirs)
- Use `monkeypatch` for environment variables and function patching
- Keep tests locale-independent: assert stable identifiers or numbers instead of translated strings; resolve values created through `_()` from the same application mapping using stable identifiers; use `monkeypatch` to provide deterministic text when testing translated search or matching
- Test regression scenarios from git fix commits
### Library Refresh Regressions
- Late metadata/download completion must preserve scroll position and focused card in an already populated library; first-card focus belongs to initial loading
- Cover both library layouts and refresh completion while the autoinstall tab is active
- For reported scrolling regressions, supplement unit tests with a full application cycle: isolated empty cache, forced ProtonDB connection failure, scroll and refresh both tabs, switch back, then close the application
- Record scroll values and visible cards around late updates; distinguish an intentional refresh reset from an unsolicited rollback after the user resumes scrolling
- Use temporary XDG config/data directories for GUI reproduction; never clear the user's real cache or alter system-wide network settings
- Report baseline reproduction and final-code results separately; passing callback tests alone does not prove the visible regression is fixed
### Key Regression Areas
| Module | Regression | Commit |
|--------|-----------|--------|
| `time_utils` | Spaced exe names in cache | 764bb3c |
| `time_utils` | SHA256 hash + L5- index | 7a02b6b |
| `time_utils` | Malformed playtime data | dd65021 |
| `theme_manager` | AST injection lost dict constants, leaked CONTAINER_STYLE | 519edd1 |
| `theme_manager` | Recursive load_theme when styles.py calls get_icon during exec_module | d5fedd8 |
| `classic/styles.py` | Missing styles after theme rewrite (NAV, COMBOBOX, TAB, etc.) | 519edd1 |
| `classic-light/styles.py` | NameError: border_none not defined (no styles/constants.py) | 519edd1 |
| `detail_pages` | DETAIL_PAGE_GRADIENT stops override, wave background modes | — |
| `detail_pages` | Edit/Add shortcut buttons shown together for non-Steam games | 7e38d9a |
| `wine_extractor` | Archive traversal and process-wide cwd changes during extraction | — |
---
## AI Agent Checklist
### Writing Code
@@ -359,6 +513,7 @@ Do not attempt to execute binaries manually.
- [ ] 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
- [ ] Background workers have explicit ownership and shutdown cleanup with regression coverage
- [ ] **No hardcoded styles or constants (use theme constants)**
- [ ] **New constants added to theme files only**
@@ -628,6 +783,11 @@ shadow.setBlurRadius(self.theme.shadow_blur_radius)
label.setStyleSheet(self.theme.CONTENT_STYLE)
```
**Tooltip rule:**
- Prefer the themed `gamepad_tooltip`/`TOOLTIP_STYLE` mechanism for in-app `QWidget` tooltips
- Avoid `setToolTip()` for regular widgets when the themed tooltip can be used
- `setToolTip()` is acceptable only for APIs that are not regular widgets, such as `QSystemTrayIcon`
### Comments
```python
# NEVER: Russian or verbose
@@ -681,7 +841,7 @@ Review scope: prioritize new/modified code. Existing unrelated legacy issues sho
- Emoji usage
- TODO without tickets
- Poor variable naming (x, tmp, data)
- Magic numbers
- Unexplained magic numbers in business logic (status codes, flags, timeouts, limits, protocol values)
- Non-English comments
- **Hardcoded styles or constants (colors, sizes, shadow values, etc.)**
@@ -703,6 +863,15 @@ Fix: Use theme constant
shadow.setColor(QColor(0, 0, 0, 150)) # Bad
shadow.setColor(QColor(self.theme.color_shadow_card)) # Good
[MEDIUM] Hardcoded style constant in application code
File: portprotonqt/game_card.py:52
Issue: Visual constant defined in application code instead of theme
Fix: Add to themes/standart/styles/constants.py and read via self.theme
COMPACT_CARD_WIDTH_THRESHOLD = 150 # Bad: in game_card.py
# In constants.py: COMPACT_CARD = {"width_threshold": 150, ...}
# In game_card.py: self.theme.COMPACT_CARD["width_threshold"] # Good
```
### Approval
@@ -756,20 +925,113 @@ install_data(
```
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
├── portprotonqt/ # Python package
│ ├── animations/ # UI animation modules
│ │ ├── detail_background.py
│ │ ├── detail_page.py
│ │ ├── game_card.py
│ │ ├── library_controls.py
│ │ └── virtual_keyboard.py
│ ├── config/ # Application configuration
│ │ ├── base.py
│ │ ├── cache.py
│ │ ├── display.py
│ │ ├── favorites.py
│ │ ├── game.py
│ │ ├── gamepad.py
│ │ ├── portproton.py
│ │ ├── proxy.py
│ │ ├── ui.py
│ │ ├── validators.py
│ │ └── window.py
│ ├── debug_utils/ # Debug data collection and processing
│ │ ├── debug_log_manager.py
│ │ ├── env_utils.py
│ │ ├── game_debug.py
│ │ ├── gpu_info.py
│ │ ├── log_processor.py
│ │ ├── system_info.py
│ │ └── xorg_utils.py
│ ├── detail_pages/ # Game detail page components
│ │ ├── utils.py
│ │ └── widgets.py
│ ├── dialogs/ # Application dialogs
│ │ ├── appimage_update.py
│ │ ├── base.py
│ │ ├── compatibility_report.py
│ │ ├── dialog_utils.py
│ │ ├── file_explorer.py
│ │ ├── prefix_backup.py
│ │ ├── proton_manager.py
│ │ ├── settings_dialog.py
│ │ ├── settings_gamescope.py
│ │ ├── settings_mangohud.py
│ │ ├── settings_vkbasalt.py
│ │ ├── wine_downloader.py
│ │ ├── wine_extractor.py
│ │ ├── wine_loader.py
│ │ └── winetricks_dialog.py
│ ├── input_manager/ # Keyboard and gamepad input routing
│ │ ├── buttons.py
│ │ ├── constants.py
│ │ ├── dialog_modes.py
│ │ ├── dpad.py
│ │ ├── file_explorer.py
│ │ ├── keyboard.py
│ │ ├── mixin.py
│ │ ├── runtime.py
│ │ ├── settings.py
│ │ └── settings_visual.py
│ ├── scripts_utils/ # Helpers used by PortProton scripts
│ │ ├── dbus_tools.py
│ │ ├── easyterm.py
│ │ ├── graphics_detector.py
│ │ ├── idle_inhibit.py
│ │ ├── json_tools.py
│ │ ├── mount_points.py
│ │ ├── power_profiles.py
│ │ ├── prefix_backup.py
│ │ └── shortcut_tools.py
│ ├── steam_api/ # Steam API, cache, and shortcuts
│ │ ├── api.py
│ │ ├── cache.py
│ │ ├── shortcuts.py
│ │ └── utils.py
│ ├── system_manager/ # System settings backends
│ │ ├── audio.py
│ │ ├── bluetooth.py
│ │ ├── common.py
│ │ ├── network.py
│ │ └── storage.py
│ ├── tabs/ # Main window tabs and workers
│ │ ├── autoinstall_tab.py
│ │ ├── control_hints.py
│ │ ├── download_tab.py
│ │ ├── library_tab.py
│ │ ├── settings_tab.py
│ │ ├── system_tab.py
│ │ ├── theme_store.py
│ │ ├── theme_store_workers.py
│ │ ├── theme_tab.py
│ │ ├── wine_tab.py
│ │ └── workers.py
│ ├── locales/ # Translation catalogs
│ ├── terminal_schemes/ # Terminal color schemes
│ ├── themes/ # Built-in themes and assets
│ ├── app.py # Entry point
│ ├── game_card.py # Game card widget
│ ├── gog_api.py # GOG integration
│ ├── main_window.py # Main window
│ ├── native_gamepad.py # Native SDL3 gamepad backend
│ ├── portproton_api.py # PortProton integration
│ ├── theme_manager.py # Theme management
│ └── logger.py # Logging
├── tests/ # Unit tests
├── build-aux/ # Build resources
├── dev-scripts/ # Development scripts
├── documentation/ # Documentation
├── meson.build # Meson config
├── pyproject.toml # Python config
└── .pre-commit-config.yaml
```
@@ -785,6 +1047,12 @@ PortProtonQt/
- These scripts are for developer convenience only
- Do not refactor or improve dev-scripts unless explicitly requested
## PortProton Scripts
- In `build-aux/share/portproton/scripts/`, run `portprotonqt.scripts_utils` modules through the existing `python_module` function
- Do not add direct `python3 -m portprotonqt.scripts_utils.*` calls where `python_module` is available
- When adding new PortProton component variables (for example `D7VK_*`), update matching env filters in scripts, runtime `var.log`, and Qt debug/UI helpers
---
## Dependencies
@@ -815,12 +1083,10 @@ PortProtonQt/
- [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
**Last updated:** 2026-08-11
**Version:** 1.3
**Status:** Release
+424 -1
View File
@@ -3,6 +3,429 @@
Все заметные изменения в этом проекте фиксируются в этом файле.
Формат основан на [Keep a Changelog](https://keepachangelog.com/) и придерживается принципов [Semantic Versioning](https://semver.org/).
## [Unreleased]
### Added
### Changed
### Fixed
- В меню системного трея при запуске игры с `--silent` добавлены отсутствовавшие действия приостановки и возобновления игры
### Contributors
---
## [1.5.0] - 2026-10-14
### Added
- Добавлен поиск настроек игры вводом с клавиатуры без предварительного выбора поля поиска
- Добавлена навигация геймпадом к кнопкам под таблицами
- Добавлена настройка скрытия курсора в полноэкранном режиме, включённая по умолчанию
- Добавлена настройка отключения поиска установленных Proton в Steam для списков выбора версий и окна управления WINE/Proton
- Добавлена возможность добавления загрузочной WebM-заставки из тем при переходе в fullscreen, включая автоматический переход при подключении геймпада
- Добавлен переход к загрузке Wine/Proton из списка версий в настройках игры
- Добавлены выбор и установка DLC при установке игр GOG
- При установке GOG в папку с уже имеющейся игрой добавлены автоматический импорт, проверка файлов и загрузка недостающих или повреждённых файлов
- Добавлена возможность приостанавливать и возобновлять запущенную игру через системный трей
- Добавлена настройка отключения проверки i586-зависимостей в ALT Linux
- Добавлена настройка принудительного применения английского языка
- Добавлено редактирование названия и обложки игр GOG по ID
- Добавлена интеграция Epic Games Store с авторизацией, библиотекой, установкой, импортом, восстановлением и удалением игр
- Добавлена поддержка сборок Proton CachyOS WineLand
- Добавлена кнопка возврата на рабочий стол в системной вкладке при указании команды в `PORTPROTONQT_RETURN_TO_DESKTOP_SCRIPT`
- Добавлены режимы библиотеки `horizontal` и `horizontal_top` с циклической навигацией и плиткой открытия полной сетки в топ-режиме
- В панель библиотеки добавлен выбор типа сетки
- В виджет с исчезающей полосой прокрутки добавлена поддержка горизонтальной ориентации
- Добавлен режим библиотеки `vertical` с табличным отображением названия, последнего запуска, проведённого времени и источника игры
- При открытии карточки с отсутствующим исполняемым файлом добавлен выбор: удалить карточку или указать другой файл
- Добавлен отдельный раздел настройки шрифтов MangoHud с масштабом, размером и выбором шрифта
- Добавлен графический редактор глобальных настроек игр из `user.conf`
- В режиме `PW_USE_SUPPLIED_DXVK_VKD3D` добавлена поддержка D7VK из сборки Proton
### Changed
- Настройка `WINE_FULLSCREEN_FSR` по умолчанию отключена
- Кнопки менеджера Wine/Proton приведены к общему стилю приложения и дополнены иконками
- Списки DLL и шрифтов в Winetricks теперь сортируются по алфавиту
- Оформление Winetricks приведено к общему стилю приложения
- В поле запуска второго `.exe` / враппера теперь можно указать тот же исполняемый файл, что и основной
- Описания приложения в README, метаданных и пакетах сделаны нейтральными, без перечисления источников игр и привязки к Windows
- Ускорено изменение размера карточек библиотеки
- Удалён GDK Proton из списка доступных сборок
- Улучшено отображение описаний параметров в настройках игры: они размещаются под названием, а текущая строка выделяется рамкой
- После завершения загрузки показывается системное уведомление, а строка результата открывает карточку игры мышью или кнопкой A геймпада
- Улучшено определение вылетов игр: учитывается код завершения команды Wine/Proton и время работы игровых процессов, включая дочерний движок, без учёта времени завершения скрипта запуска
- Каталоги пользовательских данных игр переведены на единый формат `источник-ID`
- Данные приложения организованы в `$XDG_DATA_HOME/PortProtonQt` (по умолчанию `~/.local/share/PortProtonQt`): кеш перенесён из `.cache` в `cache`, данные лаунчеров — в `launcher`, загружаемые бинарники — в `bin`, чтобы временный кеш AnyLinux не вызывал повторную загрузку при каждом запуске AppImage
- Минимальная поддерживаемая версия Python повышена с 3.10 до 3.11
- Поиск в библиотеке теперь находит совпадения в любой части названия и показывает одноимённые игры из разных источников
- Тема теперь применяется без перезапуска приложения
- Добавлена сборка Fedora 45
- Автоматическая загрузка PPDB с linux-gaming.ru теперь отключена по умолчанию
- Кнопка «Открыть PPDB» переименована в «Редактировать PPDB», чтобы не путать открытие файла с его запуском
- Обновлён перевод на Немецкий `https://translate.codeberg.org/projects/portprotonqt/portprotonqt/de/`
- Обновлён перевод на Португальский (Бразилия) `https://translate.codeberg.org/projects/portprotonqt/portprotonqt/pt_BR/`
- Обновлён перевод на Русский `https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/`
- Обновлён перевод на Испанский `https://translate.codeberg.org/projects/portprotonqt/portprotonqt/es/`
- В AppImage добавлен Bash для предотвращения конфликтов Vulkan со Steam Runtime при использовании системного GameMode
- Удалена ассоциация PortProtonQt с исполняемыми файлами Linux
- MIME-тип образов MDS заменён на используемый libMirage `application/x-mds`
- Открытие карточек и тихий запуск унифицированы
- `minazuki` добавлен в список конфликтующих с GameMode процессов
- Встроенный терминал после ошибки остаётся открытым и закрывается клавишей Enter или кнопкой A геймпада
- В список советов при вылете добавлено отключение Optiscaler
- Повышен статус разработки в `pyproject.toml` с Alpha до Production
- DXVK и VKD3D-Proton теперь загружаются только для выбранного режима Vulkan, а D7VK — только при его включении
### Fixed
- Исправлена запись `MANGOHUD_CONFIG` в `.ppdb` при выключенном MangoHud
- Исправлены ложный статус установки и открытие чужой карточки для Rockstar Games Launcher при совпадении имени `launcher.exe`
- Исправлен запуск второго `.exe` через `PW_RUN_AFTER_EXE` из пути с кириллицей
- Исправлены мерцание сетки и задержка выделения карточек при открытии библиотеки
- Исправлено обновление сетки комбинацией Guide + Select
- Исправлены создание и восстановление `.desktop`-файлов с переносами строк в названии игры
- Исправлено появление дубля карточки при добавлении и после установки игры
- Исправлено отсутствие новых `.exe` в поиске библиотеки до обновления сетки
- Исправлено обновление названия на детальной странице после редактирования ярлыка без повторного открытия страницы
- Исправлено отображение дополнений и наборов GOG как отдельных игр в библиотеке
- Исправлено отсутствие установленных демоверсий, модов, приложений и бета-версий Steam в библиотеке
- Исправлена синтаксическая ошибка в `functions_helper`, препятствовавшая запуску PortProton с Bash 5.1
- Исправлено управление интерфейсом при одновременном подключении нескольких геймпадов
- Исправлена коллизия пользовательских данных автоустановок с одинаковыми именами исходных исполняемых файлов
- Исправлен запуск PortProtonQt на NixOS через `steam-run`
- Исправлена проверка и установка недостающих i586-зависимостей в ALT Linux перед запуском игр
- Исправлено отсутствие иконки у окна встроенного терминала
- Исправлена потеря финального вывода при ошибке встроенного терминала
- Исправлено открытие карточек GOG через URI при старте приложения
- Исправлен сброс состояния кнопки записи лога при переключении детальной страницы в компактный режим
- Исправлено отображение значка PortProtonQt в системном трее при медленной инициализации приложения
- Исправлено отсутствие вкладок Wi-Fi и Bluetooth при запуске до инициализации системных адаптеров
- Исправлена ошибка, из-за которой не работал поиск по настройкам при отсутствии доступных параметров MangoHud или Gamescope
- Фильтр установленных игр теперь переключается без повторной загрузки библиотеки
- Некорректные изображения в кэше Steam теперь пропускаются при поиске обложек
- Исправлено открытие `.ppdb` на разделах с битом исполнения у всех файлов
- Исправлено создание резервной копии префикса с `libarchive-c 5.1`
- Исправлено завершение приложения при активных фоновых операциях
- Исправлено автоматическое включение NVAPI, DLSS и трассировки лучей для видеокарт NVIDIA RTX
- Исправлено применение принудительно выбранного языка в конфигурациях эмуляторов Steam
### Contributors
- @dark_siders
- @rogerio-mattos
- @Rubin13
- @adem4ik
- @gallegonovato
---
## [1.4.1] - 2026-08-26
### Changed
- Обновлён перевод на Русский `https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/`
### Fixed
- Произведён откат Steam Runtime Sniper до версии V3 из-за несовместимости GStreamer внутри Proton 10.x с SLR 4
### Contributors
---
## [1.4.0] - 2026-08-23
### Added
- Добавлен анализатор проблем в случае вылета Windows-программы
- Добавлены анимированные и статические фоны детальной страницы `aurora`, `diagnostics`, `metaballs`, `leaf` и `veins`, вдохновлённые проектом omikuji
- Добавлена интеграция GOG с авторизацией, библиотекой, установкой, импортом, восстановлением и удалением игр
- Добавлена отдельная галочка `Only Installed`, сочетаемая с фильтрами источника и скрывающая неустановленные игры
- Добавлено отображение иконок `.exe` вместо обложек на компактной детальной странице
- Добавлено редактирование ярлыков Steam по AppID
- Добавлены тихий и логируемый режимы запуска `.exe` через меню «Открыть с помощью»
- Добавлена пользовательская интеграция AppImage
- Добавлен однокнопочный установщик AppImage с загрузкой через Gitea или GitHub и автоматической интеграцией в систему
- В игровые ярлыки добавлены действия для запуска в тихом режиме и с записью лога
- Добавлен аргумент командной строки `--log` для запуска игры в режиме логирования
- Добавлены звуки интерфейса
- Добавлен выбор аккаунта Steam в настройках с автоматическим режимом по умолчанию и режимом `All` для добавления ярлыков всем пользователям
- Добавлено безопасное чтение вариантов dark/light палитры matugen из Dank Material Shell
- Добавлен поиск параметров MangoHud, vkBasalt и Gamescope по названиям и описаниям
- Добавлена установка локальных архивов WINE/Proton перетаскиванием в библиотеку или менеджер версий
- Добавлена кнопка открытия папки WINE в менеджере версий
- Добавлена настройка для скрытия подсказок по управлению
- Добавлена кнопка удаления пользовательских тем
### Changed
- GitHub-зеркала [PortProtonQt](https://github.com/linux-gaming-ru/PortProtonQt) и [метаданных WINE/Proton](https://github.com/linux-gaming-ru/PortProtonQt-Wine-Metadata) перенесены в организацию `linux-gaming-ru`
- Иконки системных уведомлений перенесены в темы и теперь соответствуют выбранной теме
- Выбранное зеркало теперь используется для загрузки метаданных WINE/Proton, проверки обновлений AppImage и получения списка изменений
- Обновлена ссылка на раздел помощи в логе ошибки
- В AppImage добавлены `7z` для извлечения содержимого ISO и MDF-образов и `vk_gpu_info` для определения видеокарт Vulkan
- Вертикальная навигация геймпадом в сетках настроек больше не переходит между столбцами
- Удалена сборка для Fedora 42
- Версия Windows по умолчанию изменена с 10 на 11
- Обновлены все иконки подсказок управления
- API и ссылки PPDB переведены с `ppdb.linux-gaming.ru` на `linux-gaming.ru`
- Блок игровой статистики на полной детальной странице помещён в тематизируемый контейнер, как в компактном режиме
- Кэш EXE-иконок унифицирован для карточек и детальных страниц
- Папки `custom_data` теперь используют имя exe и MD5 полного пути для предотвращения конфликтов одинаковых имён
- Управление геймпадом переведено с `pygame` на SDL3, зависимость `pygame` удалена
- Обновлён перевод на Немецкий `https://translate.codeberg.org/projects/portprotonqt/portprotonqt/de/`
- Обновлён перевод на Португальский (Бразилия) `https://translate.codeberg.org/projects/portprotonqt/portprotonqt/pt_BR/`
- Обновлён перевод на Китайский (упрощённый) `https://translate.codeberg.org/projects/portprotonqt/portprotonqt/zh_Hans/`
- Возвращено отображение нативных Linux-игр в библиотеке Steam без отображения саундтреков
- После создания или удаления ярлыков меню обновляется база desktop-файлов
- `sherrydmn` добавлен в список конфликтующих с GameMode процессов
### Fixed
- Настройки прокси теперь передаются `curl` при загрузке файлов скриптами PortProton
- Устранена повторная перестройка индексов Steam и PPDB для каждой карточки в экономном режиме
- Скрытие бейджей больше не скрывает ленту источника игры на карточках библиотеки
- Обновление сетки библиотеки теперь загружает только источник, выбранный одиночным фильтром
- Исправлено обрезание кнопок настроек PortProtonQt в узких окнах
- Исправлено удаление даты последнего запуска при удалении ярлыка игры
- Исправлено извлечение иконок для лаунчеров, запускающих целевой EXE через соседний `.bat` или `.cmd`
- Исправлено зависание интерфейса при проверке RPM-пакетов перед запуском игры
- Исправлено обрезание подсказок управления при переносе на вторую строку
- Исправлены подлагивания интерфейса при загрузке списка WINE/Proton и подсчёте размеров установленных версий
- Исправлена перекраска иконок встроенного файлового менеджера через `ICON_COLORS`
- Исправлено применение длительности fade-анимации к появлению обложки при анимациях `slide` и `bounce` детальной страницы
- Исправлено игнорирование параметров темы для размеров, отступов, скруглений и тени карточек в сеточном и списочном режимах
- Исправлены медленная загрузка превью и повторные сетевые запросы при прокрутке магазина тем
- Исправлен непоследовательный порядок навигации по карточкам игр с помощью D-pad
- Системные действия в режиме `--ppqtos` переведены на `systemctl` и `loginctl`
- Исправлена перекраска SVG-иконок подсказок управления через `ICON_COLORS`
- Исправлен ввод кириллицы при поиске игр
- Поиск игр ограничен названиями без совпадений по описаниям
- Исправлено состояние кнопки остановки при переключении детальной страницы на компактный вид
- Исправлено зависание интерфейса после завершения игры
- Исправлено определение основного аккаунта Steam по самому новому `Timestamp` в `loginusers.vdf` с резервным поиском по `AutoLogin` или единственному профилю `userdata` и поддержкой `MostRecent` для совместимости со старыми версиями Steam
- Распаковка WINE/Proton больше не меняет рабочий каталог приложения и отклоняет пути из архива, выходящие за каталог установки
### Contributors
- @Dervart
- @Rubin13
- @rogerio-mattos
- @Vekt0R_null
---
## [1.3.2] - 2026-08-10
### Fixed
- Исправлено определение SteamID по `AutoLogin` или единственному профилю `userdata`, если в `loginusers.vdf` отсутствует `MostRecent`
---
## [1.3.1] - 2026-07-18
### Fixed
- Исправлено CVE-2026-59678: уязвимость повышения привилегий в Polkit-правилах udisks и NetworkManager, где проверка командной строки через `ps` позволяла локальным пользователям обойти авторизацию
### Changed
- `--ppqtos` теперь требует что бы пользователь был в группе `portprotonqt`
---
## [1.3.0] - 2026-07-13
### Added
- Добавлена проверка 32-битных зависимостей ALT Linux перед запуском игр с предложением установить их через `pkexec`
- Добавлены 3 режима фона детальной страницы через тему: `gradient` (градиент по умолчанию), `static_waves` (статические волны), `waves` (анимированные волны)
- Добавлена поддержка открытия локальных `.ppai` автоустановок через ассоциацию файлов, CLI и перетаскивание в окно приложения
- Добавлена возможность печати для поиска напрямую с карточки игры в библиотеке и автоинсталлах
- Добавлен `AutoHideScrollArea` — QScrollArea с автоматически скрывающейся полосой прокрутки с анимацией fade-in/out
- Добавлен тип отображения времени `Steam` с часами, десятичными минутами
- Добавлено обновление отображения последнего запуска и проведённого времени без перезапуска приложения
- Добавлена поддержка D7VK
- Добавлена настройка автоматического скачивания PPDB с `ppdb.linux-gaming.ru`
- Добавлены раскладки и варианты виртуальной клавиатуры на основе keymap-данных `gjs-osk`
- Добавлен перевод на Немецкий `https://translate.codeberg.org/projects/portprotonqt/portprotonqt/de/`
- Добавлен магазин тем с загрузкой и применением тем из `ppdb.linux-gaming.ru` (скрыт за настройкой по умолчанию, так как сторонние темы могут быть небезопасны)
- Добавлена поддержка установки тем по URI `portprotonqt://theme/<id>` с `ppdb.linux-gaming.ru`
- Добавлено автообновление AppImage через интерфейс с резервным GitHub-зеркалом
- Добавлена запись параметров запуска из `.lnk` в `.ppdb`
- Добавлен автовыбор директории Flatpak-версии PortProton (`~/.var/app/ru.linux_gaming.PortProton`) как `portdatapath`, если директория существует
- Добавлена кнопка «Открыть папку» на детальной странице для игр PortProton
- Добавлена перекраска SVG-иконок через константу темы `ICON_COLORS`
- Добавлена константа темы `DETAIL_PAGE_GRADIENT` для полного переопределения стопов градиента фона детальной страницы
- Добавлена кнопка удаления карточек PortProton без существующего exe в библиотеке
### Changed
- Минимальный масштаб слайдера размера карточек снижен с 200 до 100 px
- Улучшено компактное отображение бейджей и названий карточек при малом масштабе
- Убран дебаг-код `proton_downloads` из менеджера WINE/Proton
- Проверка безопасности тем теперь включает SVG, изображения и шрифты — небезопасные файлы блокируют загрузку темы целиком
- Файл `last_launch` перемещён из `~/.cache/PortProtonQt/` в `~/.local/share/PortProtonQt/` согласно XDG спецификации
- Файл `statistics` перемещён из `portdatapath/tmp` в `~/.local/share/PortProtonQt/` согласно XDG спецификации и очищен от устаревших полей
- Из-за проблем с кешем fontconfig весь кеш Appimage перенесён в `~/.cache/AppImage-Cache/PortProtonQt/`
- Автоустановки теперь загружаются с сайта `ppdb.linux-gaming.ru`
- Бейдж PortProton теперь использует данные `ppdb.linux-gaming.ru`, ведёт на страницу отчёта по id и скрывается, если отчёта нет
- Бейдж ProtonDB теперь отображает название сервиса вместо текстового рейтинга
- Бейдж источника игры заменён на загнутый угол карточки для Steam и PortProton
- Иконки подсказок управления теперь можно нажимать мышью для выполнения соответствующего действия
- Звезда избранного переведена со шрифтового символа на SVG-иконку
- Улучшено адаптивное отображение детальной страниц
- Обновлён перевод на Португальский (Бразилия) `https://translate.codeberg.org/projects/portprotonqt/portprotonqt/pt_BR/`
- Обновлён перевод на Китайский (упрощённый) `https://translate.codeberg.org/projects/portprotonqt/portprotonqt/zh_Hans/`
- Обновлён перевод на Испанский `https://translate.codeberg.org/projects/portprotonqt/portprotonqt/es/`
- Кеш ProtonDB теперь очищается при обновлении списка приложений Steam
- Убрана поддержка `.lnк` файлов из `start.sh`
- Устаревший `Proton-Sarek` заменён на `dwproton`
- Улучшена читаемость списка версий Wine/Proton и префиксов в настройках exe
- Удаление игры из PortProton теперь также удаляет ярлыки из меню приложений и с рабочего стола
- Пункт «Добавить в Steam» скрывается в контекстном меню, если Steam не установлен
- Поиск во вкладке автоустановок унифицирован с поиском в библиотеке
### Fixed
- Исправлено попадание саундтреков и нативных Linux-игр в библиотеку Steam
- Исправлено определение тёмной темы для `Cinnamon`, `XFCE` и `MATE`
- Исправлена навигация по сетке карточек после перехода к результатам поиска
- Исправлен нестабильный поиск по первым буквам
- Исправлен поиск исполняемых файлов из `.lnk` с неверным регистром имени
- Исправлена обработка путей с пробелами в `portwine_create_shortcut`
- Исправлен запуск второго `.exe` через `PW_RUN_AFTER_EXE`
- Исправлено падение фонового чтения вывода запуска при невалидных UTF-8 байтах
- Исправлено отображение процентов скачивания библиотек на кнопке запуска
- Исправлено определение установленных автоустановок с одинаковыми именами лаунчеров и закомментированными `PW_EXE_FILE` в `.ppai`
- Исправлены рывки при раскрытии панели настроек библиотеки
- Исправлено закрытие панели фильтров библиотеки при переключении вкладок
- Исправлено сворачивание поиска при открытии виртуальной клавиатуры
- Исправлено обновление статуса установленных Wine/Proton после скачивания без переоткрытия менеджера версий
- Исправлено обновление статуса установленных Wine/Proton после удаления без переоткрытия менеджера версий
- Исправлено создание пустых папок `custom_data` и добавлена очистка пустых директорий пользовательских данных
### Contributors
- @CastroFidel
- @Dervart
- @rogerio-mattos
- @Simple16
- @Rubin13
- @gallegonovato
---
## [1.2.0] - 2026-06-10
### Added
- Добавлено удаление и переименование файла в файловом менеджере
- Добавлена поддержка Special K
- Добавлены настройки Wine, префикса и 3D Api по умолчанию
- Добавлена настройка выбора звукового драйвера
- Добавлена поддержка команд в настройке `запуск после`
- Добавлена кнопка выхода во вкладку `Система`
- Добавлена поддержка перетаскивания `.ppack` для восстановления префиксов
- Добавлен скрытый тип отображения времени, скрывающий последний запуск и проведённое время
- Добавлена сборка Deb-пакета (Debian 13+ и Ubuntu 25.04+)
- Добавлена кнопка открытия установленного приложения из карточки автоустановки
- Добавлено создание `.desktop` ярлыков под AppImage и их миграция при смене AppImage
- Добавлено обновление `steam_scripts` в миграции ярлыков
- Добавлена вкладка избранных параметров в диалог настроек exe
- Добавлена вкладка настроек vkBasalt в диалог настроек exe
- Добавлена проверка хэш-суммы после скачивания компонентов
- Добавлена поддержка запуска `.nrg`
- Начат португальский перевод `https://translate.codeberg.org/projects/portprotonqt/portprotonqt/pt_BR/`
### Changed
- Действия управления питанием во вкладке `Система` переведены на использование `loginctl`
- В пресет MangoHud `PortProton` добавлен параметр `display_server`
- Возвращена настройка типа геймпада для подсказок: Авто, Xbox или PlayStation (для авто нужен libSDL3)
- Убрано лишнее сообщение об успешной очистке PPDB в диалоге настроек exe
- Улучшено выделение строк и читаемость комбобоксов в настройках exe
- Увеличена скорость передвижения курсора при эмуляции мыши
- Ярлыки по умолчанию создаются только внутри PortProtonQt, без копирования в меню приложений и на рабочий стол
- Обновлён WINE_LG: 11-1 -> 11-10
- Обновлён испанский перевод `https://translate.codeberg.org/projects/portprotonqt/portprotonqt/es/`
### Fixed
- Исправлена работа Winetricks с версиями Proton/Wine имеющими путь `files/bin/wine`
- `exiftool` больше не запускается, если он не установлен
- Исправлено копирование PPDB к exe
- Исправлено отображение настроек `.bat`, `.cmd`, `.msi` и `.reg`
- Исправлена настройка запуска нативного Wayland
- Исправлен запуск PortProtonQt AppImage в режиме `--silent`
- Исправлен запуск добавленных в Steam приложений из AppImage
- Исправлено отключение скачивания контейнера во Flatpak
- Исправлено чтение XDG Base Directory в скриптах: теперь пути читаются всегда, если заданы, без привязки к Flatpak
- Исправлена миграция ярлыков на рабочем столе
- Исправлен выбор системного `MangoHud.conf` в Flatpak: сначала проверяется `~/.config`, затем `XDG_CONFIG_HOME`
- Исправлен выбор системного `vkBasalt.conf` в Flatpak: сначала проверяется `~/.config`, затем `XDG_CONFIG_HOME`
- Исправлено авто-включение MangoHud при наличии `MANGOHUD_CONFIG`
- Добавлена пропущенная поддержка `.cmd` рядом с `.bat`
- Исправлено определение каталога Steam на OpenSUSE и Deb-based системах
- Исправлен запуск игр Steam с учётом native, Snap и Flatpak установок
- Исправлена передача параметров запуска игр в Steam compatibility mode
- Исправлено определение установленных автоустановок по `.desktop`
- Исправлена загрузка встроенных цветовых схем терминала
- Исправлено попадание NFS и SMB шар в список смонтированных дисков
- Исправлено создание папки в файловом менеджере
- Исправлено редактирование имени папки в файловом менеджере
- Исправлен сброс фокуса в файловом менеджере при навигации геймпадом
- Исправлено прерывание автоустановки при выходе из карточки
- Исправлено чтение последнего запуска для приложений с пробелами в имени exe
- Исправлено отображение настроек exe с расширением в верхнем регистре
- Исправлена неработоспособность правого стика геймпада из-за обработки прокрутки
- Получение списка компонентов winetricks теперь занимает 0.11 с, а не 6.8
- Исправлено бесконечное скачивание компонентов из автоустановок, если скорость скачивания падает до нуля
### Contributors
- @VanoMJ
- @CastroFidel
- @Dervart
- @rogerio-mattos
- @gallegonovato
---
## [1.1.0] - 2026-05-26
### Added
- Добавлен диалог прогресса для создания и восстановления резервных копий префиксов
- Добавлено автосоздание ярлыков GOG игр
- Для обложек добавлена поддержка SVG
- Добавлена поддержка `.bat`, `.msi` и `.reg`
- Добавлена кнопка `Быстрый запуск` в библиотеку для открытия детальной страницы любого исполняемого файла без создания ярлыка
- Добавлена проверка доступа на чтение и запись для `PORT_DATA_PATH` при выборе и запуске
### Changed
- Обезличен интерфейс: игровые термины (Игра, Игровое время, Играть и т.д.) заменены на более общие (Приложение, Время в приложении, Запуск)
- Резервные копии `.ppack` теперь создаются через `libarchive-c` в формате `pax` с `zstd` вместо SquashFS (лучше скорость и качество сжатия)
- При ошибке загрузки обложки Steam/SGDB теперь используется иконка из `.exe`
- Удалены заголовки вкладок `Библиотека` и `Автоустановка`
- Улучшена навигация по библиотеке с клавиатуры и геймпада: фокус ставится на первую карточку, а верхние кнопки доступны из первого ряда
- Пустая библиотека теперь корректно обновляется после запуска приложения через правую кнопку мыши
- Для тем с режимом библиотеки `list` теперь используются обложки автоустановок
- Установка Wine/LG-сборок в `data/dist` теперь не зависит от настройки загрузки Proton в Steam
- При сбросе настроек PortProtonQt теперь также сбрасывается `user.conf` PortProton
- Удалён отдельный пакет `portprotonqt-steam-compat` теперь установленный через галочку режим совместимости self-update
- D-Bus операции скриптов перенесены в `scripts_utils.dbus_tools` на базе `dbus-fast`
- Настройка авто-перехода в полноэкранный режим при подключении геймпада перенесена в подпункт настройки полноэкранного запуска
### Fixed
- Исправлена некорректная установка DPI в Wine, когда опция `Использовать системный DPI` отключена
- Исправлено определение версии DXVK в логе, если у приложения отсутствует PPDB
- Исправлена пустая вкладка настроек Wine при отсутствии каталога `data/dist`
- Исправлено обновление прогресса кнопок при загрузке библиотек и зависимостей PortProton
- Исправлен повторный запуск восстановления префикса после смены темы сразу после восстановления
- Исправлена эмуляция мыши с геймпада после запуска приложений через лаунчеры
- Исправлен запуск PortProtonQt в полноэкранном режиме, если геймпад подключён до старта приложения
- Исправлено отображение префиксов `DEFAULT` и `DOTNET` при отсутствии соответствующих каталогов
- Исправлена локализация AppImage на РОСА «ФРЕШ»
- Исправлено обновление библиотеки после создания ярлыков PortProton
- Исправлен запуск `exiftool` для ярлыков с отсутствующими `.exe`
- Исправлено восстановление профиля питания после остановки приложения из трея
- Исправлено применения языка `Китайский (упрощённый)`
- Исправлено попадание служебных строк PortProton в список видеокарт и скрытие выбора видеокарты при одной доступной GPU
### Contributors
- @Castro-Fidel
- @Simple16
- @Dervart
---
## [1.0] - 2026-05-23
### Added
@@ -59,7 +482,7 @@
- Улучшенно качестве иконок из `exe` файлов
- В трей добавлены компактный и детальный режимы меню
- Автоустановки теперь можно остановить
- Префиксы `DEFAULT`, `DOTNET` и `PROGRAMS` теперь всегда отображаются вверху списков префиксов
- Префиксы `DEFAULT` и `DOTNET` теперь всегда отображаются вверху списков префиксов
- Из лога удалена версия скриптов, так как скрипты теперь внутри PortProtonQt
- Из downloader удалена отдельная проверка сети через Yandex и Google
- Выбор видеокарты теперь не отображается в настройках PortProtonQt если видеокарта всего одна
+12
View File
@@ -0,0 +1,12 @@
[Desktop Entry]
Name=Install PortProtonQt
Name[ru]=Установить PortProtonQt
Name[es]=Instalar PortProtonQt
Comment=Download and install the latest PortProtonQt AppImage
Comment[ru]=Скачать и установить последнюю версию PortProtonQt AppImage
Exec=sh -c "(curl -fsSL https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt/raw/branch/main/install.sh || curl -fsSL https://raw.githubusercontent.com/linux-gaming-ru/PortProtonQt/main/install.sh) | sh"
Icon=system-software-install
StartupNotify=false
Terminal=true
Type=Application
Categories=Game;
-419
View File
@@ -15,422 +15,3 @@ 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, see <https://www.gnu.org/licenses/>.
We make use of various projects, some of which require their license to be preserved. Here's their respective licenses:
-----------------------------------------------------------------------------------------------------------------------
===============
= icoextract: =
===============
MIT License
Copyright (c) 2015-2016 Fadhil Mandaga
Copyright (c) 2019-2025 James Lu <james@overdrivenetworks.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
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.
===============
= portproton: =
===============
MIT License
Copyright (c) 2025 Mikhail Tergoev
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
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.
===============================
= HowLongToBeat-Python-API : =
===============================
MIT License
Copyright (c) 2020 JaeguKim
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
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.
===============================
= mdf2iso : =
===============================
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
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.
Preamble
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.
+53 -30
View File
@@ -1,68 +1,91 @@
📘 Эта документация также доступна на [русском](README.ru.md)
---
<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. Объединяет библиотеки в одном месте и упрощает запуск Windows-игр на Linux.</p>
<img src="build-aux/share/icons/hicolor/scalable/apps/ru.linux_gaming.PortProtonQt.svg" width="128">
<p align="center">An application for managing a game library and launching games on Linux. It brings games from different sources together in one place.</p>
<p>
<a href="https://github.com/linux-gaming-ru/PortProtonQt/releases"><img src="https://img.shields.io/github/v/release/linux-gaming-ru/PortProtonQt?style=flat-square&amp;label=Release" alt="Releases"></a>
<a href="https://github.com/linux-gaming-ru/PortProtonQt/releases"><img src="https://img.shields.io/badge/Downloads-14.1k-green?style=flat-square" alt="Total Downloads"></a>
<a href="LICENSE"><img src="https://img.shields.io/badge/License-GPL--3.0-blue?style=flat-square" alt="License: GPL-3.0"></a>
<a href="pyproject.toml"><img src="https://img.shields.io/badge/Python-3.11%2B-blue?style=flat-square&amp;logo=python" alt="Python 3.11+"></a>
<a href="https://github.com/linux-gaming-ru/PortProtonQt"><img src="https://img.shields.io/badge/Platform-Linux-blue?style=flat-square&amp;logo=linux" alt="Platform: Linux"></a>
<a href="https://translate.codeberg.org/engage/portprotonqt/"><img src="https://img.shields.io/badge/Translations-Weblate-2eccaa?style=flat-square&amp;logo=weblate" alt="Translate on Weblate"></a>
<a href="https://repology.org/project/portprotonqt/versions"><img src="https://repology.org/badge/tiny-repos/portprotonqt.svg" alt="Packaging status on Repology"></a>
</p>
<p><a href="https://github.com/linux-gaming-ru/PortProtonQt/releases">Releases</a> · <a href="https://github.com/linux-gaming-ru/PortProtonQt/issues">Issue tracker</a> · <a href="https://translate.codeberg.org/engage/portprotonqt/">Translations</a> · <a href="https://repology.org/project/portprotonqt/versions">Packages</a></p>
</div>
### Установка (devel)
### Installation (devel)
```sh
uv python install 3.10
uv python install 3.11
uv sync
source .venv/bin/activate # For bash/zsh
# or
source .venv/bin/activate.fish # For fish
```
Запуск производится по команде portprotonqt
Launch the application using the `portprotonqt` command.
### Установка (release)
### Installation (release)
Выберите подходящий пакет для вашей системы или AppImage.
Choose the appropriate package for your system or the AppImage.
Запуск производится по команде portprotonqt или по ярлыку в меню
Launch using the `portprotonqt` command or via the shortcut in your application menu.
### Разработка
### Development
Для автоматической подготовки окружения (установка Python 3.10, зависимостей, pre-commit хуков и генерация переводов) выполните скрипт:
To automatically prepare the environment (install Python 3.11, dependencies, pre-commit hooks, and generate translations), run the following script:
```sh
./dev-scripts/prepare_env.sh
```
Затем активируйте виртуальное окружение. Команда активации для вашей оболочки будет выведена в конце работы скрипта. Обычно это:
Then activate the virtual environment. The activation command for your shell will be displayed at the end of the script execution. Usually, it is:
```sh
source .venv/bin/activate # Для bash/zsh
# или
source .venv/bin/activate.fish # Для fish
source .venv/bin/activate # For bash/zsh
# or
source .venv/bin/activate.fish # For fish
```
pre-commit сам запустится при коммите, если вы хотите запустить его вручную введите команду:
`pre-commit` will automatically run on every commit. If you want to run it manually, use:
```sh
pre-commit run --all-files
```
## Авторы
## Authors
* [Boria138](https://git.linux-gaming.ru/Boria138) - Основной разработчик
* [BlackSnaker](https://git.linux-gaming.ru/BlackSnaker) - Автор идеи, а так же начальной реализации проекта
* [Mikhail Tergoev (Castro-Fidel)](https://git.linux-gaming.ru/CastroFidel) - Автор оригинального проекта PortProton
* [Boria138](https://git.linux-gaming.ru/Boria138) - Lead Developer
* [BlackSnaker](https://git.linux-gaming.ru/BlackSnaker) - Author of the idea and initial implementation
* [Mikhail Tergoev (Castro-Fidel)](https://git.linux-gaming.ru/CastroFidel) - Author of the original PortProton project
### Контрибьюторы
### Contributors
Мы благодарим всех, кто внёс вклад в развитие PortProtonQt, включая тех, кто участвует через коммиты, а также тех, кто помогает другими способами (тестирование, идеи, переводы, документация и т.д.). Полный список участников, можно найти в [списке активности репозитория](https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt/activity/contributors). Дополнительные участники также перечислены в файле [CHANGELOG.md](CHANGELOG.md). Если вы внесли вклад, но не указаны, свяжитесь с основными разработчиками, чтобы мы могли вас отметить!
We thank everyone who has contributed to the development of PortProtonQt, including those who participate through commits as well as those who help in other ways (testing, ideas, translations, documentation, etc.). A full list of participants can be found in the [repository activity list](https://github.com/linux-gaming-ru/PortProtonQt/graphs/contributors). Additional participants are also listed in the [CHANGELOG.md](CHANGELOG.md) file. If you have contributed but are not listed, please contact the lead developers so we can acknowledge you!
## Зависимости и лицензии
## Dependencies and Licenses
PortProtonQt использует код и зависимости от следующих проектов:
PortProtonQt uses code and dependencies from the following projects:
- [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).
- [Icoextract](https://github.com/jlu5/icoextract) — icon extraction library, [MIT](https://github.com/jlu5/icoextract/blob/master/LICENSE) license.
- [HowLongToBeat Python API](https://github.com/ScrappyCocco/HowLongToBeat-PythonAPI) — library for interacting with HowLongToBeat, [MIT](https://github.com/ScrappyCocco/HowLongToBeat-PythonAPI/blob/master/LICENSE.md) license.
- [Iso9660 Analyzer Tool (IAT)](https://sourceforge.net/projects/iat.berlios/) — library for converting mdf and nrg to iso, GPLv2 license.
- [heroic-gogdl](https://github.com/Heroic-Games-Launcher/heroic-gogdl) — GOG downloading module, [GPLv3](https://github.com/Heroic-Games-Launcher/heroic-gogdl/blob/main/LICENSE) license.
- [Legendary](https://github.com/Heroic-Games-Launcher/legendary) — Epic Games launcher alternative, [GPLv3](https://github.com/Heroic-Games-Launcher/legendary/blob/master/LICENSE) license.
- [pyte](https://github.com/selectel/pyte) — ANSI escape code parser, [LGPLv3](https://github.com/selectel/pyte?tab=LGPL-3.0-1-ov-file) license.
- [gjs-osk](https://github.com/Vishram1123/gjs-osk) — base for virtual keyboard layout data, GPLv3 license.
- [omikuji](https://github.com/omikuji-launcher/omikuji) — inspiration and source material for the procedural detail page backgrounds, [GPLv3](https://github.com/omikuji-launcher/omikuji/blob/master/LICENSE) license.
- [Bottles](https://github.com/bottlesdevs/Bottles) — source of the compatibility analysis rules, GPL-3.0-only license.
PortProtonQt is licensed under the terms in [LICENSE](LICENSE). See
[THIRD_PARTY_NOTICES](THIRD_PARTY_NOTICES) for third-party licenses.
> [!WARNING]
> **Будьте осторожны!** Если вы берёте тему не из официального репозитория или надёжного источника, убедитесь, что в её файле `styles.py` нет вредоносного или нежелательного кода. Поскольку `styles.py` — это обычный Python-файл, он может содержать любые инструкции. Всегда проверяйте содержимое чужих тем перед использованием.
> **Be careful!** If you are using a theme not from the official repository or a trusted source, make sure its `styles.py` file does not contain malicious or unwanted code. Since `styles.py` is a regular Python file, it can contain any instructions. Always check the contents of third-party themes before use.
+91
View File
@@ -0,0 +1,91 @@
📘 This documentation is also available in [English](README.md)
---
<div align="center">
<img src="build-aux/share/icons/hicolor/scalable/apps/ru.linux_gaming.PortProtonQt.svg" width="128">
<p align="center">Приложение для управления игровой библиотекой и запуска игр на Linux. Объединяет игры из разных источников в одном месте.</p>
<p>
<a href="https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt/releases"><img src="https://img.shields.io/github/v/release/linux-gaming-ru/PortProtonQt?style=flat-square&amp;label=Релиз" alt="Релизы"></a>
<a href="https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt/releases"><img src="https://img.shields.io/badge/Загрузки-14.1k-green?style=flat-square" alt="Всего загрузок"></a>
<a href="LICENSE"><img src="https://img.shields.io/badge/Лицензия-GPL--3.0-blue?style=flat-square" alt="Лицензия: GPL-3.0"></a>
<a href="pyproject.toml"><img src="https://img.shields.io/badge/Python-3.11+-blue?style=flat-square&amp;logo=python" alt="Python 3.11+"></a>
<a href="https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt"><img src="https://img.shields.io/badge/Платформа-Linux-blue?style=flat-square&amp;logo=linux" alt="Платформа: Linux"></a>
<a href="https://translate.codeberg.org/engage/portprotonqt/"><img src="https://img.shields.io/badge/Переводы-Weblate-2eccaa?style=flat-square&amp;logo=weblate" alt="Перевести на Weblate"></a>
<a href="https://repology.org/project/portprotonqt/versions"><img src="https://repology.org/badge/tiny-repos/portprotonqt.svg?header=Репозитории" alt="Пакеты в Repology"></a>
</p>
<p><a href="https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt/releases">Релизы</a> · <a href="https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt/issues">Сообщить о проблеме</a> · <a href="https://translate.codeberg.org/engage/portprotonqt/">Переводы</a> · <a href="https://repology.org/project/portprotonqt/versions">Пакеты</a></p>
</div>
### Установка (devel)
```sh
uv python install 3.11
uv sync
source .venv/bin/activate # For bash/zsh
# or
source .venv/bin/activate.fish # For fish
```
Запуск производится по команде portprotonqt
### Установка (release)
Выберите подходящий пакет для вашей системы или AppImage.
Запуск производится по команде portprotonqt или по ярлыку в меню
### Разработка
Для автоматической подготовки окружения (установка Python 3.11, зависимостей, pre-commit хуков и генерация переводов) выполните скрипт:
```sh
./dev-scripts/prepare_env.sh
```
Затем активируйте виртуальное окружение. Команда активации для вашей оболочки будет выведена в конце работы скрипта. Обычно это:
```sh
source .venv/bin/activate # Для bash/zsh
# или
source .venv/bin/activate.fish # Для fish
```
pre-commit сам запустится при коммите, если вы хотите запустить его вручную введите команду:
```sh
pre-commit run --all-files
```
## Авторы
* [Boria138](https://git.linux-gaming.ru/Boria138) - Основной разработчик
* [BlackSnaker](https://git.linux-gaming.ru/BlackSnaker) - Автор идеи, а так же начальной реализации проекта
* [Mikhail Tergoev (Castro-Fidel)](https://git.linux-gaming.ru/CastroFidel) - Автор оригинального проекта PortProton
### Контрибьюторы
Мы благодарим всех, кто внёс вклад в развитие PortProtonQt, включая тех, кто участвует через коммиты, а также тех, кто помогает другими способами (тестирование, идеи, переводы, документация и т.д.). Полный список участников, можно найти в [списке активности репозитория](https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt/activity/contributors). Дополнительные участники также перечислены в файле [CHANGELOG.md](CHANGELOG.md). Если вы внесли вклад, но не указаны, свяжитесь с основными разработчиками, чтобы мы могли вас отметить!
## Зависимости и лицензии
PortProtonQt использует код и зависимости от следующих проектов:
- [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).
- [Iso9660 Analyzer Tool (IAT)](https://sourceforge.net/projects/iat.berlios/) — библиотека для конвертации mdf и nrg в iso, лицензия GPLv2
- [heroic-gogdl](https://github.com/Heroic-Games-Launcher/heroic-gogdl) — модуль загрузки игр GOG, лицензия [GPLv3](https://github.com/Heroic-Games-Launcher/heroic-gogdl/blob/main/LICENSE).
- [Legendary](https://github.com/Heroic-Games-Launcher/legendary) — альтернатива Epic Games Launcher, лицензия [GPLv3](https://github.com/Heroic-Games-Launcher/legendary/blob/master/LICENSE).
- [pyte](https://github.com/selectel/pyte) — разбор ANSI escape-кодов, лицензия [LGPLv3](https://github.com/selectel/pyte?tab=LGPL-3.0-1-ov-file)
- [gjs-osk](https://github.com/Vishram1123/gjs-osk) — основа данных раскладок виртуальной клавиатуры, лицензия GPLv3.
- [omikuji](https://github.com/omikuji-launcher/omikuji) — источник вдохновения и материалов для процедурных фонов детальной страницы, лицензия [GPLv3](https://github.com/omikuji-launcher/omikuji/blob/master/LICENSE).
- [Bottles](https://github.com/bottlesdevs/Bottles) — источник правил анализа совместимости, лицензия GPL-3.0-only.
Условия лицензии PortProtonQt приведены в файле [LICENSE](LICENSE). Лицензии
сторонних проектов приведены в файле [THIRD_PARTY_NOTICES](THIRD_PARTY_NOTICES).
> [!WARNING]
> **Будьте осторожны!** Если вы берёте тему не из официального репозитория или надёжного источника, убедитесь, что в её файле `styles.py` нет вредоносного или нежелательного кода. Поскольку `styles.py` — это обычный Python-файл, он может содержать любые инструкции. Всегда проверяйте содержимое чужих тем перед использованием.
+42
View File
@@ -0,0 +1,42 @@
# Security Policy
## Reporting a vulnerability
Do not publish suspected vulnerability details in public issues, discussions,
or pull requests. Send reports to [support@linux-gaming.ru](mailto:support@linux-gaming.ru).
Please include enough information to reproduce and assess the issue:
- PortProtonQt version or commit and installation source.
- Linux distribution and relevant launcher or runtime details.
- Affected feature and clear reproduction steps.
- Expected behavior, observed behavior, and potential security impact.
- A minimal proof of concept or sanitized logs, if available.
- A suggested mitigation or fix, if known.
Do not include passwords, tokens, private keys, or personal data. Redact
usernames, home directory paths, and other sensitive details from logs where
practical. Test only with systems, accounts, and files you own or are
authorized to use.
## Scope
This policy covers security issues in PortProtonQt, including its handling of
local files and archives, launcher data, network requests, downloaded content,
and application configuration. Issues in third-party launchers, libraries,
compatibility tools, or distribution packages should also be reported to their
maintainers. Please report cases where PortProtonQt's handling creates or
increases the risk.
## Supported versions
Please check whether the issue affects the latest published release and
include the affected version in your report. Older releases may not receive
security fixes; users should update when a fix becomes available.
## Coordinated disclosure
Keep vulnerability details private while maintainers investigate and prepare a
fix or mitigation. Coordinate public disclosure with the maintainers, allowing
reasonable time for a fix to reach users. Response and remediation times depend
on the issue; no fixed response time is promised.
+1278
View File
File diff suppressed because it is too large. Load diff
-58
View File
@@ -1,58 +0,0 @@
- [X] Адаптировать структуру проекта для поддержки инструментов сборки
- [X] Добавить возможность управления с геймпада
- [X] Добавить возможность управления с тачскрина (Формально и так есть)
- [X] Добавить возможность управления с мыши и клавиатуры
- [X] Добавить систему тем [Документация](documentation/theme_guide)
- [X] Вынести все константы, такие как уровень закругления карточек, в темы (частично выполнено)
- [X] Добавить метаданные для тем (скриншоты, описание, домашняя страница и автор)
- [X] [Добавить сессию Gamescope, аналогичную той, что используется в SteamOS](https://git.linux-gaming.ru/Boria138/gamescope-session-portprotonqt)
- [X] Разобраться почему теряется часть стилей в Gamescope
- [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 для ускорения времени запуска
- [X] Улучшить функцию поиска в Steam API для исправления некорректного определения ID (например, Graven определялся как ENGRAVEN или GRAVENFALL, Spore — как SporeBound или Spore Valley)
- [X] Убрать логи Steam API в релизной версии, так как они замедляют выполнение кода
- [X] Решить проблему с ограничением Steam API в 50 тысяч игр за один запрос (иногда нужные игры не попадают в выборку и остаются без обложки)
- [X] Избавиться от вызовов yad
- [X] Реализовать собственный системный трей вместо использования трея PortProton
- [X] Добавить экранную клавиатуру в поиск
- [X] Добавить сортировку карточек по различным критериям (доступны: по недавности, количеству наигранного времени, избранному или алфавиту)
- [X] Добавить индикацию запуска приложения
- [X] Достигнуть паритета функциональности с Ingame
- [X] Достигнуть паритета функциональности с PortProton
- [X] Добавить возможность изменения названия, описания и обложки через файлы `.local/share/PortProtonQT/custom_data/exe_name/{desc,name,cover}`
- [X] Добавить встроенное переопределение названия, описания и обложки, например, по пути `portprotonqt/custom_data` [Документация](documentation/metadata_override/)
- [X] Добавить переводы в переопределения
- [X] Добавить в карточку игры сведения о поддержке геймпада
- [X] Добавить в карточки данные с ProtonDB
- [X] Добавить в карточки данные с AreWeAntiCheatYet
- [X] Продублировать бейджи с карточки на страницу с деталями игры
- [X] Добавить парсинг ярлыков из Steam
- [X] Добавить на карточку бейдж, указывающий, что игра из Steam
- [X] Добавить поддержку версий Steam для Flatpak и Snap
- [X] Реализовать добавление игры как сторонней в Steam без перезапуска
- [X] Отображать данные о самом последнем пользователе Steam, а не первом попавшемся
- [X] Исправить склонения в детальном выводе времени, например, не «3 часов назад», а «3 часа назад»
- [X] Добавить перевод через gettext [Документация](documentation/localization_guide)
- [X] Отображать описания игр и другие данные на языке системы
- [X] Добавить недокументированные параметры конфигурации в GUI (time_detail_level, games_sort_method, games_display_filter)
- [X] Добавить систему избранного для карточек
- [X] Заменить все `print` на `logging`
- [X] Привести все логи к единому языку
- [X] Уменьшить количество подстановок в переводах
- [X] Стилизовать все элементы без стилей (QMessageBox, QSlider, QDialog)
- [X] Убрать жёсткую привязку путей к стрелочкам QComboBox в `styles.py`
- [X] Исправить частичное применение тем на лету
- [X] Исправить наложение подписей скриншотов при первом перелистывании в полноэкранном режиме
- [ ] Добавить поддержку GOG (?)
- [X] Определиться с названием (PortProtonQt или PortProtonQT или вообще третий вариант)
- [X] Добавить данные с HowLongToBeat на страницу с деталями игры
- [X] Добавить виброотдачу на геймпаде при запуске игры
- [X] Исправить некорректную работу слайдера увеличения размера карточек([Последствия регрессии после этого коммита](https://github.com/Boria138/PortProtonQt/commit/aebdd60b5537280f06a922ff80469cd4ab27bc63)
- [X] Исправить баг с наложением карточек друг на друга при изменении фильтра отображения ([Последствия регрессии после этого коммита](https://github.com/Boria138/PortProtonQt/commit/aebdd60b5537280f06a922ff80469cd4ab27bc63))
- [X] Скопировать логику управления с D-pad на стрелки с клавиатуры
- [X] Добавить подсказки к управлению с геймпада
- [X] Добавить миниатюры к выбору файлов в диалоге добавления игры
- [X] Добавить быстрый доступ к смонтированным дискам к выбору файлов в диалоге добавления игры
+23 -38
View File
@@ -5,6 +5,8 @@ set -eu
# Initialize variables
LOCAL_MODE=false
BRANCH="main"
USE_BRANCH=false
TAG=""
REPO_URL="https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt.git"
# Parse arguments
@@ -16,12 +18,22 @@ while [ $# -gt 0 ]; do
--branch)
if [ -n "${2:-}" ] && [ "${2#-}" = "$2" ]; then
BRANCH="$2"
USE_BRANCH=true
shift
else
echo "Error: --branch requires an argument"
exit 1
fi
;;
--tag)
if [ -n "${2:-}" ] && [ "${2#-}" = "$2" ]; then
TAG="$2"
shift
else
echo "Error: --tag requires an argument"
exit 1
fi
;;
--repo)
if [ -n "${2:-}" ] && [ "${2#-}" = "$2" ]; then
REPO_URL="$2"
@@ -40,14 +52,16 @@ while [ $# -gt 0 ]; do
done
ARCH="$(uname -m)"
EXTRA_PACKAGES="https://raw.githubusercontent.com/pkgforge-dev/Anylinux-AppImages/refs/heads/main/useful-tools/get-debloated-pkgs.sh"
if [ "$LOCAL_MODE" = true ]; then
echo "Using local PKGBUILD-git from repository..."
PPQT_PKGBUILD=""
elif [ -n "$TAG" ]; then
echo "Using stable version of PortProtonQt from $TAG tag..."
PPQT_PKGBUILD="https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt/raw/tag/$TAG/build-aux/PKGBUILD"
else
echo "Using stable version of PortProtonQt from main branch..."
PPQT_PKGBUILD="https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt/raw/branch/main/build-aux/PKGBUILD"
echo "Using stable version of PortProtonQt from $BRANCH branch..."
PPQT_PKGBUILD="https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt/raw/branch/$BRANCH/build-aux/PKGBUILD"
fi
echo "Tweak makepkg..."
@@ -68,23 +82,6 @@ echo "---------------------------------------------------------------"
pacman-key --init
pacman -S --noconfirm archlinux-keyring
# Chaotic-AUR keys
pacman-key --recv-key 3056513887B78AEB --keyserver keyserver.ubuntu.com
pacman-key --lsign-key 3056513887B78AEB
pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst'
pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst'
# Enable the multilib repository
cat << EOM >> /etc/pacman.conf
[multilib]
Include = /etc/pacman.d/mirrorlist
[chaotic-aur]
Include = /etc/pacman.d/chaotic-mirrorlist
SigLevel = Never
EOM
# Disable locale noextract
sed -i -E 's@[[:space:]]*usr/share/locale/\*@@g; s@[[:space:]]+@ @g; s@[[:space:]]+$@@' /etc/pacman.conf
@@ -97,28 +94,16 @@ 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/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
if [ "$USE_BRANCH" = true ]; then
sed -i "s|^source=.*|source=(\"git+${REPO_URL}#branch=$BRANCH\")|" PKGBUILD
elif [ -n "$TAG" ]; then
sed -i "s|^source=.*|source=(\"git+${REPO_URL}#tag=$TAG\")|" PKGBUILD
fi
makepkg -si --noconfirm
echo "Installing debloated packages..."
echo "---------------------------------------------------------------"
wget --retry-connrefused --tries=30 "$EXTRA_PACKAGES" -O ./get-debloated-pkgs.sh
chmod +x ./get-debloated-pkgs.sh
./get-debloated-pkgs.sh --add-common --prefer-nano
get-debloated-pkgs --add-common --prefer-nano
if [ "$LOCAL_MODE" = true ]; then
# For git version, we use portprotonqt-git
+68 -14
View File
@@ -2,7 +2,6 @@
set -eu
SHARUN="https://raw.githubusercontent.com/pkgforge-dev/Anylinux-AppImages/refs/heads/main/useful-tools/quick-sharun.sh"
ARCH="$(uname -m)"
VERSION="$(cat ~/version)"
export ARCH VERSION
@@ -10,38 +9,93 @@ export OUTPATH=./dist
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 UPINFO="gitea-releases-zsync|git.linux-gaming.ru|Linux-Gaming|PortProtonQt|latest|*$ARCH.AppImage.zsync"
export DEPLOY_OPENGL=1
export DEPLOY_SDL=1
export DEPLOY_SYS_PYTHON=1
export DEPLOY_PYTHON=1
export MAIN_BIN=portprotonqt
export OPTIMIZE_LAUNCH=1
# Adjust comp settings to bypass oom-killer
export DWARFS_COMP="zstd:level=15 -S22 -B5"
# DEPLOY ALL LIBS
wget --retry-connrefused --tries=30 "$SHARUN" -O ./quick-sharun
chmod +x ./quick-sharun
# Add udev rules
mkdir -p ./AppDir/etc/udev/rules.d
cp /usr/lib/udev/rules.d/60-portprotonqt.rules ./AppDir/etc/udev/rules.d
# Add PortProton scripts
# Copy manually to avoid tracing 208 .ppdb files with quick-sharun
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
cp -r /usr/share/portproton ./AppDir/share
# QSoundEffect only needs PCM WAV and PulseAudio. Remove the optional native
# PipeWire path and FFmpeg media backend before quick-sharun scans Qt plugins.
pacman -Rdd --noconfirm libpipewire qt6-multimedia-ffmpeg
# Deploy dependencies
# Qt libs have to be passed manually due to the app being a python script
./quick-sharun \
GAMEPAD_LIBRARY=$(find /usr/lib -type f \
-path '*/site-packages/portprotonqt/libportprotonqt_gamepad.so' \
-print -quit)
test -n "$GAMEPAD_LIBRARY"
quick-sharun \
/usr/bin/portprotonqt* \
/usr/bin/bash \
/usr/bin/update-desktop-database \
/usr/bin/update-mime-database \
/usr/bin/vk_gpu_info \
"$GAMEPAD_LIBRARY" \
/usr/lib/libQt6Core.so* \
/usr/lib/libQt6Gui.so* \
/usr/lib/libQt6Multimedia.so* \
/usr/lib/libQt6Network.so* \
/usr/lib/qt6/plugins/imageformats/libqwebp.so
/usr/lib/qt6/plugins/imageformats/libqwebp.so \
/usr/lib/7zip/7z*
# quick-sharun removes MIME package XML files during dependency deployment
mkdir -p ./AppDir/share/mime/packages
cp /usr/share/mime/packages/ru.linux_gaming.PortProtonQt.xml \
./AppDir/share/mime/packages
# DEPLOY_PYTHON copies the distro's complete Python installation. Remove
# build/development content and PySide bindings not imported by PortProtonQt.
PYTHON_DIR=$(find ./AppDir/lib -maxdepth 1 -type d -name 'python3.*' -print -quit)
PYTHON_SITE=$PYTHON_DIR/site-packages
PYSIDE_DIR=$PYTHON_SITE/PySide6
rm -rf \
"$PYTHON_DIR"/ensurepip \
"$PYTHON_DIR"/idlelib \
"$PYTHON_DIR"/pydoc_data \
"$PYTHON_DIR"/tkinter \
"$PYTHON_DIR"/turtledemo \
"$PYTHON_DIR"/venv \
"$PYTHON_SITE"/Cython \
"$PYTHON_SITE"/cython.py \
"$PYTHON_SITE"/mesonbuild \
"$PYTHON_SITE"/pygments \
"$PYTHON_SITE"/pyximport \
"$PYTHON_SITE"/setuptools \
"$PYTHON_SITE"/vapoursynth \
"$PYTHON_SITE"/wheel \
"$PYTHON_SITE"/cython-*.dist-info \
"$PYTHON_SITE"/meson-*.dist-info \
"$PYTHON_SITE"/pygments-*.dist-info \
"$PYTHON_SITE"/setuptools-*.dist-info \
"$PYTHON_SITE"/vapoursynth-*.dist-info \
"$PYTHON_SITE"/wheel-*.dist-info
find "$PYTHON_DIR" -depth -type d \( -name test -o -name tests \) \
-exec rm -rf {} +
find "$PYTHON_SITE" -type f -name '*.pyi' -delete
for module in "$PYSIDE_DIR"/Qt*.so; do
case "${module##*/}" in
QtCore.*|QtGui.*|QtMultimedia.*|QtNetwork.*|QtSvg.*|QtWidgets.*) continue ;;
esac
rm -f "$module"
done
rm -rf "$PYSIDE_DIR"/QtAsyncio
# Turn AppDir into AppImage
./quick-sharun --make-appimage
quick-sharun --make-appimage
+21 -31
View File
@@ -1,13 +1,26 @@
pkgname=('portprotonqt' 'portprotonqt-steam-compat')
pkgver=1.0
# Maintainer: Boris Yumankulov <boriabloger[at]protonmail[dot]com>
pkgname=portprotonqt
pkgver=1.5.0
pkgrel=1
pkgdesc="Modern GUI for managing and launching games from PortProton and Steam"
arch=('any')
pkgdesc="Game library manager and launcher for Linux"
arch=('x86_64')
url="https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt"
license=('GPL-3.0')
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')
depends=('python-requests' 'python-babel' 'python-evdev' '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' 'file' 'findutils' 'gawk' 'grep' 'tar' 'xz' 'zstd' 'gzip' 'unrar' 'qt6-svg' 'qt6-imageformats' 'qt6-multimedia' 'pciutils' 'mesa-utils' 'vulkan-icd-loader' 'procps-ng' 'psmisc' '7zip' 'python-dbus-fast' 'sdl3' 'desktop-file-utils')
makedepends=('meson' 'ninja' 'vulkan-headers' 'gettext' 'sdl3')
conflicts=("portprotonqt-steam-compat")
provides=('portprotonqt-steam-compat')
replaces=('portprotonqt-steam-compat')
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'
'squashfs-tools: for legacy PortProton prefix backup support'
)
source=("git+https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt#tag=v$pkgver")
sha256sums=('SKIP')
@@ -16,34 +29,11 @@ build() {
meson compile -C build
}
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'
)
package() {
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
}
+20 -30
View File
@@ -1,13 +1,26 @@
pkgname=('portprotonqt-git' 'portprotonqt-git-steam-compat')
# Maintainer: Boris Yumankulov <boriabloger[at]protonmail[dot]com>
pkgname=portprotonqt-git
pkgver=.
pkgrel=1
pkgdesc="Modern GUI for managing and launching games from PortProton and Steam (development build)"
arch=('any')
pkgdesc="Game library manager and launcher for Linux (development build)"
arch=('x86_64')
url="https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt"
license=('GPL-3.0')
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')
depends=('python-requests' 'python-babel' 'python-evdev' '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' 'file' 'findutils' 'gawk' 'grep' 'tar' 'xz' 'zstd' 'gzip' 'unrar' 'qt6-svg' 'qt6-imageformats' 'qt6-multimedia' 'pciutils' 'mesa-utils' 'vulkan-icd-loader' 'procps-ng' 'psmisc' '7zip' 'python-dbus-fast' 'sdl3' 'desktop-file-utils')
makedepends=('meson' 'ninja' 'vulkan-headers' 'gettext' 'sdl3')
conflicts=("portprotonqt-steam-compat")
provides=('portprotonqt-steam-compat')
replaces=('portprotonqt-steam-compat')
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'
'squashfs-tools: for legacy PortProton prefix backup support'
)
source=("git+https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt.git")
sha256sums=('SKIP')
@@ -21,34 +34,11 @@ build() {
meson compile -C build
}
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'
)
package() {
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
}
File renamed without changes.
+16 -20
View File
@@ -1,5 +1,5 @@
%global pypi_name portprotonqt
%global pypi_version 1.0
%global pypi_version 1.5.0
%global oname PortProtonQt
%global build_timestamp %(date +"%Y%m%d")
%global _python_no_extras_requires 1
@@ -9,11 +9,11 @@
Name: %{pypi_name}-git
Version: %{pypi_version}
Release: %{rel_build}
Summary: Modern GUI for managing and launching games from PortProton and Steam (development build)
Summary: Game library manager and launcher for Linux (development build)
License: GPL-3.0
URL: https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt
ExclusiveArch: x86_64 aarch64
ExclusiveArch: x86_64
BuildRequires: meson >= 0.61.2
BuildRequires: ninja-build
@@ -22,6 +22,7 @@ BuildRequires: git
BuildRequires: gettext
BuildRequires: systemd-rpm-macros
BuildRequires: vulkan-loader-devel
BuildRequires: pkgconfig(sdl3)
BuildRequires: gcc
Obsoletes: python3-%{pypi_name}-git < %{version}-%{release}
@@ -33,7 +34,6 @@ Requires: python3-websocket-client
Requires: python3-orjson
Requires: python3-psutil
Requires: python3-pyside6
Requires: python3-pygame
Requires: python3-requests
Requires: python3-tqdm
Requires: python3-vdf
@@ -45,11 +45,11 @@ Requires: python3-libarchive-c
Requires: perl-Image-ExifTool
Requires: qt6-qtsvg
Requires: qt6-qtimageformats
Requires: qt6-qtmultimedia
Requires: cabextract
Requires: gzip
Requires: unzip
Requires: curl
Requires: jq
Requires: file
Requires: findutils
Requires: gawk
@@ -63,9 +63,9 @@ Requires: pciutils
Requires: vulkan-loader
Requires: procps-ng
Requires: psmisc
Requires: squashfs-tools
Requires: 7zip
Requires: python3-dbus-fast
Requires: desktop-file-utils
# System Tab
Recommends: NetworkManager
@@ -74,17 +74,14 @@ Recommends: upower
Recommends: pulseaudio-utils
Recommends: python3-qrcode
# For legacy PortProton prefix backup support
Recommends: squashfs-tools
Obsoletes: %{pypi_name}-steam-compat < %{?epoch:%{epoch}:}%{version}-%{release}
Provides: %{pypi_name}-steam-compat = %{?epoch:%{epoch}:}%{version}-%{release}
%description
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.
An application for managing a game library and launching games on Linux. It brings games from different sources together in one place.
%{?python_disable_dependency_generator}
@@ -115,17 +112,16 @@ install -Dpm 0644 ./completions/_portprotonqt -t %{buildroot}%{zsh_completions_d
%{_datadir}/icons/hicolor/scalable/apps/ru.linux_gaming.PortProtonQt.svg
%{_metainfodir}/ru.linux_gaming.PortProtonQt.metainfo.xml
%{_udevrulesdir}/60-portprotonqt.rules
%{_sysusersdir}/portprotonqt.conf
%{_datadir}/polkit-1/rules.d/ru.linux_gaming.PortProtonQt.rules
%{_datadir}/applications/ru.linux_gaming.PortProtonQt.desktop
%{_datadir}/applications/ru.linux_gaming.PortProtonQt.log.desktop
%{_datadir}/applications/ru.linux_gaming.PortProtonQt.silent.desktop
%{_datadir}/mime/packages/ru.linux_gaming.PortProtonQt.xml
%{_datadir}/portproton/scripts/
%{_datadir}/portproton/conf/
%{_datadir}/portproton/img/
%{bash_completions_dir}/portprotonqt
%{fish_completions_dir}/portprotonqt.fish
%{zsh_completions_dir}/_portprotonqt
%files -n %{pypi_name}-git-steam-compat
%{_datadir}/steam/compatibilitytools.d/PortProtonQt/
%changelog
+16 -20
View File
@@ -1,16 +1,16 @@
%global pypi_name portprotonqt
%global pypi_version 1.0
%global pypi_version 1.5.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 and Steam
Summary: Game library manager and launcher for Linux
License: GPL-3.0
URL: https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt
ExclusiveArch: x86_64 aarch64
ExclusiveArch: x86_64
BuildRequires: meson >= 0.61.2
BuildRequires: ninja-build
@@ -19,6 +19,7 @@ BuildRequires: git
BuildRequires: gettext
BuildRequires: systemd-rpm-macros
BuildRequires: vulkan-loader-devel
BuildRequires: pkgconfig(sdl3)
BuildRequires: gcc
Obsoletes: python3-%{pypi_name} < %{version}-%{release}
@@ -30,7 +31,6 @@ Requires: python3-websocket-client
Requires: python3-orjson
Requires: python3-psutil
Requires: python3-pyside6
Requires: python3-pygame
Requires: python3-requests
Requires: python3-tqdm
Requires: python3-vdf
@@ -42,11 +42,11 @@ Requires: python3-libarchive-c
Requires: perl-Image-ExifTool
Requires: qt6-qtsvg
Requires: qt6-qtimageformats
Requires: qt6-qtmultimedia
Requires: cabextract
Requires: gzip
Requires: unzip
Requires: curl
Requires: jq
Requires: file
Requires: findutils
Requires: gawk
@@ -60,9 +60,9 @@ Requires: pciutils
Requires: vulkan-loader
Requires: procps-ng
Requires: psmisc
Requires: squashfs-tools
Requires: 7zip
Requires: python3-dbus-fast
Requires: desktop-file-utils
# System Tab
Recommends: NetworkManager
@@ -71,17 +71,14 @@ Recommends: upower
Recommends: pulseaudio-utils
Recommends: python3-qrcode
# For legacy PortProton prefix backup support
Recommends: squashfs-tools
Obsoletes: %{pypi_name}-steam-compat < %{?epoch:%{epoch}:}%{version}-%{release}
Provides: %{pypi_name}-steam-compat = %{?epoch:%{epoch}:}%{version}-%{release}
%description
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.
An application for managing a game library and launching games on Linux. It brings games from different sources together in one place.
%{?python_disable_dependency_generator}
@@ -113,17 +110,16 @@ install -Dpm 0644 ./completions/_portprotonqt -t %{buildroot}%{zsh_completions_d
%{_datadir}/icons/hicolor/scalable/apps/ru.linux_gaming.PortProtonQt.svg
%{_metainfodir}/ru.linux_gaming.PortProtonQt.metainfo.xml
%{_udevrulesdir}/60-portprotonqt.rules
%{_sysusersdir}/portprotonqt.conf
%{_datadir}/polkit-1/rules.d/ru.linux_gaming.PortProtonQt.rules
%{_datadir}/applications/ru.linux_gaming.PortProtonQt.desktop
%{_datadir}/applications/ru.linux_gaming.PortProtonQt.log.desktop
%{_datadir}/applications/ru.linux_gaming.PortProtonQt.silent.desktop
%{_datadir}/mime/packages/ru.linux_gaming.PortProtonQt.xml
%{_datadir}/portproton/scripts/
%{_datadir}/portproton/conf/
%{_datadir}/portproton/img/
%{bash_completions_dir}/portprotonqt
%{fish_completions_dir}/portprotonqt.fish
%{zsh_completions_dir}/_portprotonqt
%files -n %{pypi_name}-steam-compat
%{_datadir}/steam/compatibilitytools.d/PortProtonQt/
%changelog
Binary file not shown.
@@ -0,0 +1 @@
g portprotonqt - -
@@ -2,13 +2,13 @@
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
Comment=Game library manager and launcher for Linux
Comment[ru]=Приложение для управления игровой библиотекой и запуска игр на Linux
Comment[es]=Gestor de biblioteca de juegos y lanzador para Linux
Comment[pt]=Gerenciador de biblioteca de jogos e inicializador para Linux
Comment[de]=Spielebibliotheksverwaltung und Spielestarter für Linux
Terminal=false
Icon=ru.linux_gaming.PortProtonQt
StartupWMClass=ru.linux_gaming.PortProtonQt
Categories=Game;Utility;
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;
MimeType=x-scheme-handler/portproton;x-scheme-handler/portprotonqt;application/x-portproton-prefix-backup;application/x-portproton-autoinstall;application/x-ms-dos-exec;application/x-ms-dos-executable;application/x-msdos-program;application/vnd.microsoft.portable-executable;application/x-ms-dos-batch;application/x-bat;application/x-msi;text/x-ms-regedit;application/x-dosexec;application/x-iso9660-image;application/x-cd-image;application/x-raw-disk-image;application/x-mdf;application/x-mds;application/x-nrg;
@@ -0,0 +1,20 @@
[Desktop Entry]
Name=PortProtonQt (log)
Name[ru]=PortProtonQt (режим лога)
Name[es]=PortProtonQt (modo de registro)
Name[pt]=PortProtonQt (modo de registro)
Name[de]=PortProtonQt (Protokollmodus)
Exec=portprotonqt --log %u
Type=Application
Comment=Launch Windows applications with logging through PortProtonQt
Comment[ru]=Запуск Windows-приложений с записью лога через PortProtonQt
Comment[es]=Ejecuta aplicaciones de Windows con registro mediante PortProtonQt
Comment[pt]=Executa aplicativos do Windows com registro pelo PortProtonQt
Comment[de]=Startet Windows-Anwendungen mit Protokollierung über PortProtonQt
Terminal=false
Icon=ru.linux_gaming.PortProtonQt
StartupWMClass=ru.linux_gaming.PortProtonQt
Categories=Game;
NoDisplay=true
MimeType=application/x-ms-dos-executable;application/x-msdos-program;application/x-ms-dos-exec;application/x-dosexec;application/vnd.microsoft.portable-executable;
StartupNotify=true
@@ -0,0 +1,20 @@
[Desktop Entry]
Name=PortProtonQt (silent)
Name[ru]=PortProtonQt (тихий режим)
Name[es]=PortProtonQt (modo silencioso)
Name[pt]=PortProtonQt (modo silencioso)
Name[de]=PortProtonQt (stiller Modus)
Exec=portprotonqt --silent %u
Type=Application
Comment=Launch Windows applications silently through PortProtonQt
Comment[ru]=Тихий запуск Windows-приложений через PortProtonQt
Comment[es]=Ejecuta aplicaciones de Windows silenciosamente mediante PortProtonQt
Comment[pt]=Executa aplicativos do Windows silenciosamente pelo PortProtonQt
Comment[de]=Startet Windows-Anwendungen lautlos über PortProtonQt
Terminal=false
Icon=ru.linux_gaming.PortProtonQt
StartupWMClass=ru.linux_gaming.PortProtonQt
Categories=Game;
NoDisplay=true
MimeType=application/x-ms-dos-executable;application/x-msdos-program;application/x-ms-dos-exec;application/x-dosexec;application/vnd.microsoft.portable-executable;
StartupNotify=true
@@ -5,15 +5,15 @@
<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 and Steam</summary>
<summary xml:lang="ru">Современный интерфейс для управления и запуска игр из PortProton и Steam</summary>
<summary>Game library manager and launcher for Linux</summary>
<summary xml:lang="ru">Приложение для управления игровой библиотекой и запуска игр на Linux</summary>
<description>
<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.
An application for managing a game library and launching games on Linux. It brings games from different sources together in one place.
</p>
<p xml:lang="ru">
Современный и удобный интерфейс для управления и запуска игр из PortProton и Steam. Объединяет библиотеки в одном месте и упрощает запуск Windows-игр на Linux.
Приложение для управления игровой библиотекой и запуска игр на Linux. Объединяет игры из разных источников в одном месте.
</p>
</description>
@@ -24,34 +24,69 @@
</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 version="1.5.0" date="2026-10-14">
<description></description>
</release>
<release version="1.4.1" date="2026-08-26">
<description/>
</release>
<release version="1.4.0" date="2026-08-23">
<description/>
</release>
<release version="1.3.2" date="2026-08-10">
<description/>
</release>
<release version="1.3.1" date="2026-07-17">
<description/>
</release>
<release version="1.3.0" date="2026-07-13">
<description/>
</release>
<release version="1.2.0" date="2026-06-10">
<description/>
</release>
<release version="1.1.0" date="2026-05-26">
<description/>
</release>
<release version="1.0" date="2026-05-23">
<description/>
</release>
<release version="0.1.12" date="2026-04-17" type="development">
<description/>
</release>
<release version="0.1.11" date="2026-02-18" type="development">
<description/>
</release>
<release version="0.1.10" date="2026-01-14" type="development">
<description/>
</release>
<release version="0.1.9" date="2025-12-08" type="development">
<description/>
</release>
<release version="0.1.8" date="2025-10-18" type="development">
<description/>
</release>
<release version="0.1.7" date="2025-10-12" type="development">
<description/>
</release>
<release version="0.1.6" date="2025-09-23" type="development">
<description/>
</release>
<release version="0.1.5" date="2025-08-31" type="development">
<description/>
</release>
<release version="0.1.4" date="2025-07-21" type="development">
<description/>
</release>
<release version="0.1.3" date="2025-07-05" type="development">
<description/>
</release>
<release version="0.1.2" date="2025-06-15" type="development">
<description/>
</release>
<release version="0.1.1" date="2025-05-17" type="development">
<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>
@@ -4,6 +4,22 @@
<comment>PortProton prefix backup</comment>
<comment xml:lang="ru">Резервная копия префикса PortProton</comment>
<glob pattern="*.ppack"/>
<sub-class-of type="application/vnd.squashfs"/>
</mime-type>
<mime-type type="application/x-portproton-autoinstall">
<comment>PortProton auto install script</comment>
<comment xml:lang="ru">Скрипт автоустановки PortProton</comment>
<glob pattern="*.ppai"/>
</mime-type>
<mime-type type="application/x-portproton-ppdb">
<comment>PortProton configuration</comment>
<comment xml:lang="ru">Конфигурация PortProton</comment>
<sub-class-of type="text/plain"/>
<glob pattern="*.ppdb" weight="100"/>
</mime-type>
<mime-type type="application/x-portproton-user-conf">
<comment>PortProton user configuration</comment>
<comment xml:lang="ru">Пользовательская конфигурация PortProton</comment>
<sub-class-of type="text/plain"/>
<glob pattern="user.conf" weight="100"/>
</mime-type>
</mime-info>
@@ -1,21 +1,15 @@
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]);
if (!subject.local || !subject.active ||
!subject.isInGroup("portprotonqt")) {
return polkit.Result.NOT_HANDLED;
}
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;
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") {
return polkit.Result.YES;
}
return polkit.Result.NOT_HANDLED;
});
Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

File diff suppressed because it is too large. Load diff
View File
File mode changed.
View File
File mode changed.
@@ -1,24 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: Age of Empires Online
# image: celeste
# info_en: A multiplayer real-time strategy game where players build their civilizations, gather resources, and battle against opponents. The game features a unique economic system and the ability to develop cities through various missions and quests.
# info_ru: Многопользовательская стратегия в реальном времени, где игроки строят свои цивилизации, собирают ресурсы и сражаются с противниками. Игра предлагает уникальную экономическую систему и возможность развивать свои города с помощью различных миссий и задач.
########################################################################
export PW_PREFIX_NAME="AGE_OF_EMPIRES_ONLINE"
export LAUNCH_PARAMETERS="/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/Celeste.Installer.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="Age of Empires Online"
start_portproton
if try_download "https://github.com/ProjectCeleste/Celeste.Launcher/releases/latest/download/Celeste.Installer.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/users/steamuser/AppData/Roaming/ProjectCeleste/Celeste Launcher.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,24 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: Albion Online
# image: albiononline
# info_en: A multiplayer sandbox MMORPG where players can explore an open world, engage in crafting, gather resources, and battle against other players. The game features a unique class system that allows players to change their roles based on the gear they equip.
# info_ru: Многопользовательская песочница в жанре MMORPG, где игроки могут исследовать открытый мир, заниматься ремеслом, добычей ресурсов и сражаться с другими игроками. Игра предлагает уникальную систему классов, позволяющую игрокам изменять свои роли в зависимости от выбранного снаряжения.
########################################################################
export PW_PREFIX_NAME="ALBION_ONLINE"
export LAUNCH_PARAMETERS="/S"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/albion-online-setup.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="Albion Online"
start_portproton
if try_download "https://live.albiononline.com/clients/20260311101310/albion-online-setup.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/Program Files (x86)/AlbionOnline/launcher/AlbionLauncher.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,26 +0,0 @@
#!/usr/bin/env bash
# author: chal55rus (Sergey P.)
# type: games
# name: Ankama Launcher
# image: ankama
# info_en: Launcher for Ankama studio games.
# info_ru: Лаунчер для игр Ankama.
########################################################################
export LAUNCH_PARAMETERS="/S"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/Ankama-Setup.exe"
export PW_WINE_USE="WINE_LG"
export PW_PREFIX_NAME="ANKAMA"
start_portproton
if try_download "https://download.ankama.com/launcher/full/win/" "${PW_AUTOINSTALL_EXE}" no_mirror
then
get_and_set_reg_file --add 'Software\Wine\X11 Driver' 'Decorated' 'REG_SZ' "N" "user"
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/users/steamuser/AppData/Local/Programs/Ankama Launcher/Ankama Launcher.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
export PORTWINE_CREATE_SHORTCUT_NAME="Ankama Launcher"
portwine_create_shortcut
fi
stop_portproton
@@ -1,26 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: Anomaly Zone
# image: anomalyzone
# info_en: An action game about stalkers, where players explore mysterious worlds and fight against a variety of opponents. The game offers an exciting storyline and the opportunity to improve the character by unlocking new abilities and equipment.
# info_ru: Экшен-игра про сталкеров, где игроки исследуют таинственные миры и сражаются с разнообразными противниками. Игра предлагает захватывающий сюжет и возможность улучшать персонажа, открывая новые способности и снаряжение.
########################################################################
export PW_PREFIX_NAME="ANOMALY_ZONE"
export LAUNCH_PARAMETERS="/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/az_webinst.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="Anomaly Zone"
start_portproton
if try_download "https://anomaly-zone.ru/file/az_webinst.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_kill_autostart Launcher.exe &
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/Program Files/New Story Games/Anomaly-Zone/Launcher.exe"
pw_create_unique_exe
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,26 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: Arizona Games Launcher
# image: arizonagameslauncher
# info_en: Launcher for the Arizona Role Play game.
# info_ru: Лаунчер для игры Arizona Role Play.
########################################################################
export PW_PREFIX_NAME="ARIZONA_GAMES_LAUNCHER"
export LAUNCH_PARAMETERS="/S"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/Arizona Installer.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="Arizona Games Launcher"
export PW_VULKAN_USE="0"
start_portproton
if try_download "https://pc.az-ins.com/Arizona%20Launcher.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_kill_autostart "Arizona Games" &
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/users/steamuser/AppData/Local/Programs/Arizona Games Launcher/Arizona Games Launcher.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,26 +0,0 @@
#!/usr/bin/env bash
# Author: Castro-Fidel (linux-gaming.ru)
# type: games
# name: Battle.net Launcher
# image: battle_net
# info_en: Launcher for Activision and Blizzard studio games.
# info_ru: Лаунчер для игр Activision и Blizzard.
########################################################################
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/Battle.net-Setup.exe"
export PW_WINE_USE="PROTON_LG"
export WINEDLLOVERRIDES="locationapi="
export PW_PREFIX_NAME="BATTLE_NET"
export WINE_SIMULATE_WRITECOPY="1"
start_portproton
if try_download "https://battle.net/download/getInstallerForGame?os=win&version=LIVE&gameProgram=BATTLENET_APP" "${PW_AUTOINSTALL_EXE}" no_mirror
then
try_remove_dir "$WINEPREFIX/drive_c/ProgramData/Battle.net"
pw_kill_autostart Battle.net.exe &
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$(find "$WINEPREFIX/drive_c/" -type f -name "Battle.net.exe" | grep "Battle.net/Battle.net.exe")"
portwine_create_shortcut
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
fi
stop_portproton
@@ -1,29 +0,0 @@
#!/usr/bin/env bash
# Author: Castro-Fidel (linux-gaming.ru)
# type: games
# name: Black Desert Online (RU)
# image: bdo
# info_en: A massively multiplayer online role-playing game set in an open world, renowned for its stunning graphics and deep character customization system. Players can explore vast lands, complete quests, engage in PvP battles, and participate in various crafting activities.
# info_ru: Многопользовательская ролевая игра с открытым миром, известная своей потрясающей графикой и глубокой системой кастомизации персонажей. Игроки могут исследовать обширные земли, выполнять задания, участвовать в PvP-сражениях и заниматься различными ремеслами.
########################################################################
export PW_PREFIX_NAME="DOTNET"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/BlackDesert_Installer_RU.exe"
export LAUNCH_PARAMETERS="/silent"
export PW_USE_D3D_EXTRAS="1"
export PW_WINE_USE="PROTON_LG"
pw_clear_pfx
start_portproton
wait_wineserver
if try_download "https://nez-o-dn.playblackdesert.com/UploadData/installer/BlackDesert_Installer_RU.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/Pearlabyss/BlackDesert/BlackDesertLauncher.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
export PORTWINE_CREATE_SHORTCUT_NAME="Black Desert Online"
portwine_create_shortcut
fi
stop_portproton
@@ -1,26 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus (Sergey P.)
# type: games
# name: Blood and Soul
# image: bloodandsoul
# info_en: A multiplayer role-playing game featuring a rich combat system and vibrant graphics, inspired by Eastern mythology. Players can choose from various classes, explore unique locations, and battle powerful foes.
# info_ru: Многопользовательская ролевая игра с богатой системой боя и яркой графикой, вдохновленная восточной мифологией. Игроки могут выбирать из различных классов, исследовать уникальные локации и сражаться с могущественными врагами.
########################################################################
export PW_PREFIX_NAME="BLOOD_AND_SOUL"
export LAUNCH_PARAMETERS="/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/bs-install.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="Blood and Soul"
start_portproton
if try_download "https://bsclassic.com/files/bs-install.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/Program Files (x86)/Blood and Soul Classic/launcher.exe"
pw_create_unique_exe
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,25 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: Broken Ranks (ENG)
# image: brokenranks
# info_en: An MMORPG game offering deep sleep and a unique combat system that focuses on the strategy and activities of the person. Players explore a dark world full of intrigue and danger, developing their characters and making key decisions that affect the course of history.
# info_ru: MMORPG игра, предлагающая глубокий сон и уникальную боевую систему, которая ориентирует внимание на стратегию и деятельность персоны. Игроки исследуют мрачный мир, полный интриг и опасностей, развивая своих героев и принимая ключевые решения, влияющие на ход истории.
########################################################################
export PW_PREFIX_NAME="BROKEN_RANKS"
export LAUNCH_PARAMETERS="/q"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/BrokenRanksInstaller.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="Broken Ranks"
start_portproton
if try_download "https://eu.brokenranks.com/BrokenRanksInstaller.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_kill_autostart ConsoleLauncher.exe &
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/Whitemoon/BrokenRanks/ConsoleLauncher.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,28 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: CALIBER
# image: caliber
# info_en: A tactical third-person shooter where players can choose from various characters with unique abilities and engage in team-based modes. The game features realistic graphics and dynamic combat, providing an engaging gameplay experience.
# info_ru: Тактический шутер от третьего лица, где игроки могут выбирать из различных персонажей с уникальными способностями и сражаться в командных режимах. Игра предлагает реалистичную графику и динамичные бои, обеспечивая увлекательный игровой процесс.
########################################################################
export PW_PREFIX_NAME="CALIBER"
export LAUNCH_PARAMETERS="/VERYSILENT /CLOSEAPPLICATIONS"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/CaliberSetup.exe"
export PW_WINE_USE="PROTON_LG"
# export DISABLE_CP_DEFPFX="1"
export PORTWINE_CREATE_SHORTCUT_NAME="CALIBER"
start_portproton
if try_download "https://cdn.playcaliber.com/caliber-s3/p1/a88c3b70f76a0e56b1e08b62c9895cfe/launcher/setup/CaliberSetup.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_kill_autostart VC_redist.x64.exe 3 &
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/Program Files (x86)/1C Game Studios/Caliber/Launcher.exe"
pw_create_unique_exe "caliber_launcher_pp"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,24 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: Chicken Invaders Universe
# image: chickeninvadersuniverse
# info_en: An exciting arcade game where players battle aggressive space chickens to defend their planet. The game features multiple levels, a cooperative mode, and the ability to upgrade their spaceship.
# info_ru: Захватывающая аркадная игра, в которой игроки сражаются с агрессивными курицами из космоса, защищая свою планету. Игра предлагает множество уровней, кооперативный режим и возможность улучшения космического корабля.
########################################################################
export PW_PREFIX_NAME="CHICKEN_INVADERS_UNIVERSE"
export LAUNCH_PARAMETERS="/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/ChickenInvadersUniverseInstaller.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="Chicken Invaders Universe"
start_portproton
if try_download "https://universe.chickeninvaders.com/files/ChickenInvadersUniverseInstaller.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/Program Files (x86)/ChickenInvadersUniverse/CIU.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,25 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: CONTRACT WARS
# image: cwc
# info_en: A multiplayer first-person shooter where players engage in battles between two teams on various maps. The game offers a wide selection of weapons and character customization options, making each match unique.
# info_ru: Многопользовательский шутер от первого лица, где игроки участвуют в противостоянии между двумя командами на разнообразных картах. Игра предлагает широкий выбор оружия и возможностей для настройки персонажей, что делает каждый матч уникальным.
########################################################################
export LAUNCH_PARAMETERS="/VERYSILENT"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/CWClient_Install.exe"
export PW_PREFIX_NAME="CONTRACT_WARS"
export PW_WINE_USE="WINE_LG"
start_portproton
if try_download "https://cdn-01.contractwarsgame.com/standalone/CWClient_Install.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/Games/CWClient/CWClientLauncher.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
export PORTWINE_CREATE_SHORTCUT_NAME="CONTRACT WARS"
portwine_create_shortcut
fi
stop_portproton
@@ -1,28 +0,0 @@
#!/usr/bin/env bash
# Author: Castro Fidel
# type: games
# name: Crossout
# image: crossout
# info_en: A multiplayer game featuring post-apocalyptic vehicle combat, where players build unique battle machines and fight against each other on open arenas. The game offers various battle modes and a rich customization system, allowing each player to express their individuality on the battlefield.
# info_ru: Многопользовательская игра с элементами постапокалиптического десанта, где игроки создают уникальные боевые машины и сражаются друг с другом на открытых аренах. Игра предлагает разнообразные режимы боя и богатую систему кастомизации, позволяя каждому выражать свою индивидуальность на поле боя.
########################################################################
export LAUNCH_PARAMETERS="/VERYSILENT"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/crossout.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="Crossout"
export PW_PREFIX_NAME="CROSSOUT"
export PW_WINE_USE="WINE_LG"
start_portproton
if try_download "https://yupmaster.gaijinent.com/launcher/current.php?id=CrossoutLauncher" "${PW_AUTOINSTALL_EXE}" no_mirror
then
get_and_set_reg_file --add 'Software\Wine\X11 Driver' 'Decorated' 'REG_SZ' "N" "user"
pw_kill_autostart launcher.exe 3 &
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="${WINEPREFIX}/drive_c/users/$USER/AppData/Local/Crossout Launcher/launcher.exe"
pw_create_unique_exe "crossout_launcher_pp"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,23 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: DC Universe Online (ENG)
# image: dcuniverseonline
# info_en: An MMORPG where players create their own superheroes or supervillains in the DC Comics universe and engage in epic battles alongside iconic characters like Superman and Batman. The game features extensive quests, exciting PvP modes, and the ability to team up with other players.
# info_ru: MMORPG, в которой игроки создают собственных супергероев или суперзлодеев во вселенной DC Comics и участвуют в эпических битвах с известными персонажами, такими как Супермен и Бэтмен. Игра предлагает обширные квесты, захватывающие PvP-режимы и возможность совместной игры с другими игроками.
########################################################################
export PW_PREFIX_NAME="DC_UNIVERSE_ONLINE"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/DCUO_setup.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="DC Universe Online"
start_portproton
if try_download "https://launch.daybreakgames.com/installer/DCUO_setup.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
"$pw_7z" x -y "${PW_AUTOINSTALL_EXE}" -o"$WINEPREFIX/drive_c/Program Files (x86)/Daybreak Game Company"
PW_EXE_FILE="$WINEPREFIX/drive_c/Program Files (x86)/Daybreak Game Company/LaunchPad.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,28 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: Doomsday
# image: doomsday
# info_en: A real-time strategy game where players manage a group of survivors in a post-apocalyptic world, aiming to rebuild civilization and defend against various threats. The game features base-building elements, tactical combat, and a deep narrative experience.
# info_ru: Стратегическая игра в реальном времени, где игроки управляют отрядом выживших в постапокалиптическом мире, стремясь восстановить цивилизацию и защититься от различных угроз. Игра предлагает элементы строительства базы, тактические сражения и глубокую проработку сюжета.
########################################################################
export PW_PREFIX_NAME="DOOMSDAY"
export LAUNCH_PARAMETERS="/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/dls_installer.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="Doomsday"
bad_url="$(curl https://dls.igg.com/download/pc/h/ | grep downloadUrl | awk -F'downloadUrl":"' '{print $2}' | awk -F'"' '{print $1}')"
good_url="${bad_url//\\/}"
start_portproton
if try_download "$good_url" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_kill_autostart Launcher.exe &
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/Program Files (x86)/Doomsday/DoomsdayLastSurvivors.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,24 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: Eldevin (ENG)
# image: eldevin
# info_en: An MMORPG with vibrant graphics where players explore a vast fantasy world, complete quests, and battle enemies to develop their characters. The game features diverse classes and skills, as well as crafting and group interaction systems.
# info_ru: MMORPG с красочной графикой, где игроки исследуют обширный фэнтезийный мир, выполняют квесты и сражаются с врагами, чтобы развивать свои персонажи. Игра предлагает разнообразные классы и навыки, а также системы крафта и группового взаимодействия.
########################################################################
export PW_PREFIX_NAME="ELDEVIN"
export LAUNCH_PARAMETERS="/S"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/eldevin_win64.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="Eldevin"
start_portproton
if try_download "https://www.eldevin.com/cdn/files/eldevin_win64.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/Program Files/Eldevin/Eldevin.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,25 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: Elsword (ENG)
# image: elsword
# info_en: An anime-style MMORPG that combines elements of a platformer and a real-time combat system, allowing players to fight in exciting dungeons and PvP arenas. The game offers a variety of characters with unique skills, as well as opportunities for customization and playing together with friends.
# info_ru: MMORPG c аниме-стилем, которая сочетает в себе элементы платформера и боевой системы в реальном времени, позволяя игрокам сражаться в захватывающих подземельях и PvP-аренах. Игра предлагает множество персонажей с уникальными навыками, а также возможности для кастомизации и совместной игры с друзьями.
########################################################################
export PW_WINE_USE="WINE_LG"
export PW_PREFIX_NAME="ELSWORD"
export LAUNCH_PARAMETERS="/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/ElswordInstaller_NA(64bit).exe"
export PORTWINE_CREATE_SHORTCUT_NAME="Elsword"
start_portproton
if try_download "https://elsword-us.dn.playkog.com/Download/Downloader/ElswordInstaller_NA(64bit).exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/KOGGames/Elsword64/elsword.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,36 +0,0 @@
#!/usr/bin/env bash
# Author: Castro-Fidel (linux-gaming.ru)
# type: games
# name: Epic Games Launcher
# image: epicgames
# info_en: Launcher for the Epic Games game library.
# info_ru: Лаунчер для библиотеки игр Epic Games.
########################################################################
export LAUNCH_PARAMETERS="/q"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/EpicGamesLauncherInstaller.msi"
export PW_USE_D3D_EXTRAS="1"
export PORTWINE_CREATE_SHORTCUT_NAME="Epic Games Launcher"
export PW_WINE_USE="PROTON_LG"
export PW_USE_ESYNC="1"
export PW_USE_FSYNC="1"
export PW_PREFIX_NAME="DEFAULT"
pw_clear_pfx
start_portproton
if try_download "https://launcher-public-service-prod06.ol.epicgames.com/launcher/api/installer/download/EpicGamesLauncherInstaller.msi" "${PW_AUTOINSTALL_EXE}" no_mirror
then
try_remove_file "${WINEPREFIX}/drive_c/ProgramData/Epic/EpicGamesLauncher/EpicOnlineServicesInstaller.exe"
try_remove_dir "${WINEPREFIX}/drive_c/ProgramData/Epic/EpicOnlineServices"
try_remove_dir "${WINEPREFIX}/drive_c/Program Files (x86)/Epic Games/Epic Online Services/"
try_remove_dir "${WINEPREFIX}/drive_c/Program Files (x86)/Epic Games/Launcher/"
# try_remove_dir "${WINEPREFIX}/drive_c/ProgramData/Epic"
pw_run msiexec /i "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="${WINEPREFIX}/drive_c/Program Files/Epic Games/Launcher/Portal/Binaries/Win64/EpicGamesLauncher.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,54 +0,0 @@
#!/usr/bin/env bash
# Author: cefeiko
# type: games
# name: EVE Online Launcher
# image: eve
# info_en: Launcher for the EVE Online game. A vast multiplayer online game where players explore an endless cosmos, engage in trading, manufacturing, and combat with other players in a unique sandbox environment. The game is known for its complex economy, political intrigue, and the ability to form alliances among players to conquer galactic territories.
# info_ru: Лаунчер для игры EVE Online. Масштабная многопользовательская онлайн-игра, в которой игроки исследуют бескрайний космос, занимаются торговлей, производством и ведением космических боев с другими игроками в уникальной песочнице. Игра известна своей сложной экономикой, политическими интригами и возможностью создания альянсов между игроками для завоевания галактических территорий.
########################################################################
export PW_WINDOWS_VER="10"
export PW_WINE_USE="WINE_LG"
export PW_USE_WINE_DXGI="0"
export PW_VULKAN_USE="2"
export PW_USE_GSTREAMER="0"
export PW_PREFIX_NAME="EVE_ONLINE"
export PW_WINE_FULLSCREEN_FSR="0"
export PW_USE_GAMEMODE="0"
export PW_USE_D3D_EXTRAS="1"
export PW_USE_SHADER_CACHE="0"
export PW_USE_EAC_AND_BE="1"
export PW_DLL_INSTALL="vcrun2022 d3dcompiler_47 arial tahoma" # msdelta
export WINEDLLOVERRIDES="msvcp140,msvcp140_1=n"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/eve-online-latest+Setup.exe"
start_portproton
if try_download "https://launcher.ccpgames.com/eve-online/release/win32/x64/eve-online-latest+Setup.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
EVE_LAUNCHER_DIR="${WINEPREFIX}/drive_c/users/steamuser/AppData/Local/eve-online"
$pw_7z x "${PORT_WINE_TMP_PATH}/eve-online-latest+Setup.exe" -o"${EVE_LAUNCHER_DIR}" -y
EVE_VERSION="$(cat "${EVE_LAUNCHER_DIR}/RELEASES" | awk '{print $2}' | awk -F"-" '{print $3}')"
$pw_7z x "${EVE_LAUNCHER_DIR}/eve-online-${EVE_VERSION}-full.nupkg" -o"${EVE_LAUNCHER_DIR}/tmp" -y
create_new_dir "${EVE_LAUNCHER_DIR}/app-$EVE_VERSION"
create_new_dir "${EVE_LAUNCHER_DIR}/packages/SquirrelTemp"
cp -r "${EVE_LAUNCHER_DIR}/tmp/lib/net45/." "${EVE_LAUNCHER_DIR}/app-$EVE_VERSION"
cp "${EVE_LAUNCHER_DIR}/eve-online-${EVE_VERSION}-full.nupkg" "${EVE_LAUNCHER_DIR}/packages"
mv "${EVE_LAUNCHER_DIR}/app-${EVE_VERSION}/eve-online_ExecutionStub.exe" "${EVE_LAUNCHER_DIR}/eve-online.exe"
cp "${EVE_LAUNCHER_DIR}/RELEASES" "${EVE_LAUNCHER_DIR}/packages"
mv "${EVE_LAUNCHER_DIR}/setupIcon.ico" "${EVE_LAUNCHER_DIR}/app.ico"
rm -rf "${EVE_LAUNCHER_DIR}/background.gif" "${EVE_LAUNCHER_DIR}/eve-online-${EVE_VERSION}-full.nupkg" "${EVE_LAUNCHER_DIR}/RELEASES" "${EVE_LAUNCHER_DIR}/tmp"
PW_EXE_FILE="${EVE_LAUNCHER_DIR}/eve-online.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
export PORTWINE_CREATE_SHORTCUT_NAME="EVE Online Launcher"
portwine_create_shortcut
fi
stop_portproton
@@ -1,26 +0,0 @@
#!/usr/bin/env bash
# author: chal55rus
# type: games
# name: ExoTanks
# image: exotanks
# info_en: A multiplayer battle game where players control exoskeletons and fight in various arenas using powerful weapons and strategic gameplay. The game offers both team and solo modes, along with the ability to customize their exoskeleton for a unique playing style.
# info_ru: Многопользовательская боевая игра, в которой игроки управляют экзоскелетами и сражаются в различных аренах, используя мощное вооружение и стратегический подход. Игра предлагает как командные, так и одиночные режимы, а также возможность кастомизации своего экзоскелета для уникального стиля игры.
########################################################################
export PW_PREFIX_NAME="EXOTANKS"
export LAUNCH_PARAMETERS="/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/ExoTanksMOBA_Setup.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="ExoTanks"
start_portproton
if try_download "https://www.exotanks.com/ExoTanksMOBA_Setup.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_kill_autostart ExoTanksMOBA_Launcher.exe &
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/Games/ExoTanksMOBA/ExoTanksMOBA_LauncherUpdater/Engine/Binaries/Win64/ExoTanksMOBA_LauncherUpdater.exe"
# PW_EXE_FILE="$WINEPREFIX/drive_c/Games/ExoTanksMOBA/ExoTanksMOBA_Launcher/Engine/Binaries/Win64/ExoTanksMOBA_Launcher.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,26 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: Farlight 84
# image: farlight84
# info_en: A multiplayer battle royale game set in a colorful and futuristic world where players fight against each other using unique skills and weapons. The game features exciting gameplay with building elements, as well as the ability to utilize various vehicles to navigate the map.
# info_ru: Многопользовательская игра в жанре королевская битва, которая проходит в красочном и футуристическом мире, где игроки сражаются друг с другом с использованием уникальных навыков и оружия. Игра предлагает захватывающий геймплей с элементами строительства, а также возможность использовать различные транспортные средства для перемещения по карте.
########################################################################
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/Farlight84_setup_1.3.0.1_238.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="Farlight 84"
export PW_PREFIX_NAME="FARLIGHT_84"
export PW_WINE_USE="WINE_LG"
start_portproton
if try_download "https://static-gl.lilithgame.com/p/pcsdk/launcher/10060/prodef4621e968ad6b383b8754148b63/0/launcher/res/release/Farlight84_setup_1.3.0.1_238.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
create_new_dir "$WINEPREFIX/drive_c/Program Files (x86)/Farlight84"
"$pw_7z" x -y "${PW_AUTOINSTALL_EXE}" -o"$WINEPREFIX/drive_c/Program Files (x86)/Farlight84"
"$pw_7z" x -y "$WINEPREFIX/drive_c/Program Files (x86)/Farlight84/launcher.7z" -o"$WINEPREFIX/drive_c/Program Files (x86)/Farlight84"
PW_EXE_FILE="$WINEPREFIX/drive_c/Program Files (x86)/Farlight84/Farlight84Launcher.exe"
try_remove_file "$WINEPREFIX/drive_c/Program Files (x86)/Farlight84/launcher.7z"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
portwine_create_shortcut
fi
stop_portproton
@@ -1,40 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus (Sergey P.), cefeiko, Castro-Fidel (linux-gaming.ru)
# type: games
# name: Gameforge Client
# image: gameforge
# info_en: Launcher for Gameforge studio games.
# info_ru: Лаунчер для игр Gameforge.
##########################################################################
pw_shutdown_please () {
if [[ "$PW_USE_RUNTIME" != 1 ]]
then echo "PW_USE_RUNTIME: `echo $PW_USE_RUNTIME`"
else
sleep 10
while true ; do
if [[ -z "`ps aux | grep -v grep | grep -wm 1 "$1" | awk '{print $2}'`" ]] && [[ -n "`pgrep wrap | head -n 1`" ]] ; then
echo -e "PID "$1" not found"
sleep 1
else
killall -s TERM gfclient.exe
killall -s TERM GameforgeInstaller.exe
break
fi
done
fi
}
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/GameforgeInstaller.exe"
start_portproton
if try_download "https://raw.githubusercontent.com/WarfaceZ/lutris-clients/master/GameforgeInstaller.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_shutdown_please SparkWebHelper.exe &
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/Program Files (x86)/GameforgeClient/gfclient.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
export PORTWINE_CREATE_SHORTCUT_NAME="GameforgeClient"
portwine_create_shortcut
fi
stop_portproton
@@ -1,25 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: GameXP
# image: gamexp
# info_en: Launcher for GameXP studio games.
# info_ru: Лаунчер для игр GameXP.
########################################################################
export PW_PREFIX_NAME="GAMEXP"
export LAUNCH_PARAMETERS="/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/InstallGameXPlauncher.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="GameXP"
start_portproton
if try_download "https://clotho-install.gamexp.com/launcher/InstallGameXPlauncher-0-pr.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_kill_autostart gamexp-launcher.exe &
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/users/steamuser/AppData/Local/Programs/GameXP/Launcher/gamexp-launcher.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,28 +0,0 @@
#!/usr/bin/env bash
# Author: Castro-Fidel (linux-gaming.ru)
# type: games
# name: GOG Galaxy Launcher
# image: gog
# info_en: Launcher for the GOG game library.
# info_ru: Лаунчер для библиотеки игр GOG.
########################################################################
GOG_VER=2.0
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/setup_galaxy_${GOG_VER}.exe"
export LAUNCH_PARAMETERS="/VERYSILENT"
export PW_PREFIX_NAME="GOG"
export DISABLE_CP_DEFPFX="1"
export PW_WINE_USE="PROTON_LG_9-12"
export PORTWINE_CREATE_SHORTCUT_NAME="GOG GALAXY"
start_portproton
if try_download "https://webinstallers.gog-statics.com/download/GOG_Galaxy_${GOG_VER}.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/Program Files (x86)/GOG Galaxy/GalaxyClient.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,32 +0,0 @@
#!/usr/bin/env bash
# Author: Castro Fidel
# type: games
# name: Guild Wars 2
# image: gw2
# info_en: An MMORPG with a vibrant world and a unique system of dynamic events, where players can freely explore the realms of Tyria and engage in large-scale battles. The game offers a variety of races and classes, with an emphasis on cooperative play and player interaction.
# info_ru: MMORPG с ярким миром и уникальной системой динамических событий, где игроки могут свободно исследовать просторы Тираи и участвовать в масштабных сражениях. Игра предлагает разнообразие рас и классов, а также акцент на совместной игре и взаимодействии между игроками.
########################################################################
export LAUNCH_PARAMETERS="/VERYSILENT"
export PW_PREFIX_NAME="GW2"
export WINEDLLOVERRIDES="mscoree,mshtml="
export PW_MUST_HAVE_DLL=""
export PW_WINE_USE="WINE_LG"
export PW_PREFIX_NAME="GUILD_WARS_2"
start_portproton
create_new_dir "${WINEPREFIX}/drive_c/Program Files/Guild Wars 2/"
export PW_AUTOINSTALL_EXE="${WINEPREFIX}/drive_c/Program Files/Guild Wars 2/Gw2Setup-64.exe"
if try_download "https://s3.amazonaws.com/gw2cdn/client/branches/Gw2Setup-64.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_kill_autostart Gw2.exe 3 &
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="${WINEPREFIX}/drive_c/Program Files/Guild Wars 2/Gw2.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
mv -f "${WINEPREFIX}/drive_c/users/steamuser/Temp/"* "${WINEPREFIX}/drive_c/Program Files/Guild Wars 2/"
export PORTWINE_CREATE_SHORTCUT_NAME="Guild Wars 2"
portwine_create_shortcut
fi
stop_portproton
@@ -1,30 +0,0 @@
#!/usr/bin/env bash
# Author: Castro-Fidel (linux-gaming.ru)
# type: games
# name: HoYoPlay
# image: hoyoplay
# info_en: Launcher for HoYoverse studio games.
# info_ru: Лаунчер для игр HoYoverse.
########################################################################
export PW_VULKAN_USE=2
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/Hoyolauncher_installer.exe"
export PW_PREFIX_NAME="HO_YO_PLAY"
export PORTWINE_CREATE_SHORTCUT_NAME="HoYoPlay"
export PW_WINE_USE="WINE_HYP_10-10"
start_portproton
if try_download "https://sg-public-api.hoyoverse.com/event/download_porter/trace/hyp_global/hyphoyoverse/default?url=https%3A%2F%2Fhoyoplay.hoyoverse.com%2F" "${PW_AUTOINSTALL_EXE}" no_mirror
then
get_and_set_reg_file --add 'Software\Wine\X11 Driver' 'Decorated' 'REG_SZ' "N" "user"
pw_kill_autostart HYP.exe &
export PATH_TO_GAME="${PORT_WINE_TMP_PATH}"
pw_run "${PW_AUTOINSTALL_EXE}"
export PW_EXE_FILE="$WINEPREFIX/drive_c/Program Files/HoYoPlay/launcher.exe"
pw_create_unique_exe "hoyoplay_launcher_pp"
try_remove_file "${PW_AUTOINSTALL_EXE}"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,25 +0,0 @@
#!/usr/bin/env bash
# Author: Castro Fidel
# type: games
# name: Indiegala Client
# image: igclient
# info_en: Launcher for the Indiegala game library.
# info_ru: Лаунчер для библиотеки игр Indiegala.
########################################################################
export LAUNCH_PARAMETERS="/S"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/igclient_setup.exe"
export PW_DLL_INSTALL="vcrun2019"
start_portproton
if try_download "https://content.indiegalacdn.com/common/IGClientSetup.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_kill_autostart IGClient.exe 3 &
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="${WINEPREFIX}/drive_c/Program Files/IGClient/IGClient.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
export PORTWINE_CREATE_SHORTCUT_NAME="IGClient"
portwine_create_shortcut
fi
stop_portproton
@@ -1,24 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus (Sergey P.)
# type: games
# name: ITCH.IO
# image: itch
# info_en: Launcher for the library of indie games.
# info_ru: Лаунчер для библиотеки инди-игр.
##########################################################################
export LAUNCH_PARAMETERS="--silent"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/itch-setup.exe"
start_portproton
if try_download "https://itch.io/app/download?platform=windows" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_kill_autostart itch.exe &
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE=$(find "$WINEPREFIX/drive_c/users" -type f -name "itch.exe")
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
export PORTWINE_CREATE_SHORTCUT_NAME="Itch"
portwine_create_shortcut
fi
stop_portproton
@@ -1,23 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: Last Chaos
# image: lastchaos
# info_en: Last Chaos is a classic MMORPG with six classes, castle sieges, a Korean grind and kilometers of dungeons. The confrontation between Apollo and Eres is gaining momentum, so hurry up to take one of the sides.
# info_ru: Last Chaos – классическая MMORPG с шестью классами, осадами замков, корейским гриндом и километрами подземелий. Противостояние Апполона и Эреса набирает обороты, так что спешите принять одну из сторон.
########################################################################
export PW_PREFIX_NAME="LAST_CHAOS"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/Last Chaos.zip"
export PORTWINE_CREATE_SHORTCUT_NAME="Last Chaos"
start_portproton
if try_download "https://last-chaos.ru/download/Last%20Chaos.zip" "${PW_AUTOINSTALL_EXE}" no_mirror
then
"$pw_7z" x -y "${PW_AUTOINSTALL_EXE}" -o"${WINEPREFIX}/drive_c/Program Files/"
PW_EXE_FILE="${WINEPREFIX}/drive_c/Program Files/Last Chaos/LC.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,30 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: Lesta Game Center
# image: lgc
# info_en: Launcher for Lesta Games studio games.
# info_ru: Лаунчер для игр Lesta Games.
########################################################################
export LAUNCH_PARAMETERS="/VERYSILENT"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/Lesta_Game_Center_Install_RU.exe"
export PW_PREFIX_NAME="LGC"
export PW_USE_ESYNC="1"
export PW_USE_FSYNC="1"
export PW_USE_NTSYNC="0"
start_portproton
if try_download "https://redirect.lesta.ru/LGC/Lesta_Game_Center_Install_RU.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_kill_autostart lgc.exe &
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/ProgramData/Lesta/GameCenter/api/lgc_api.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="Lesta Game Center"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,26 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: Lost Light
# image: lostlight
# info_en: A multiplayer first-person shooter with survival elements, where players explore a post-apocalyptic world and fight for resources. Players must team up to overcome dangers and complete missions, while constantly feeling the tension from potential encounters with other groups.
# info_ru: Многопользовательская игра в жанре шутера от первого лица с элементами выживания, где игроки исследуют постапокалиптический мир и сражаются за ресурсы. Игроки должны объединяться в команды, чтобы преодолевать опасности и выполнять миссии, при этом постоянно испытывая напряжение от возможных столкновений с другими группами.
########################################################################
export PW_PREFIX_NAME="LOST_LIGHT"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/LostLight_installer.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="Lost Light"
URL_LOST_LIGHT="$(curl -s --list-only "https://adl.easebar.com/d/g/yhtj/c/lostlightcspc" | grep 'var pc_link =' | awk -F\" '{print $2}')"
start_portproton
if try_download "${URL_LOST_LIGHT}" "${PW_AUTOINSTALL_EXE}" no_mirror
then
"$pw_7z" x -y "${PW_AUTOINSTALL_EXE}" -o"$WINEPREFIX/drive_c/Program Files (x86)/LostLight"
export PW_EXE_FILE="$WINEPREFIX/drive_c/Program Files (x86)/LostLight/launcher.exe"
pw_create_unique_exe "lostlight_launcher_pp"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,26 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: Metal War Online
# image: mwo
# info_en: A multiplayer online action game with strategic elements, where players control combat robots and battle on various arenas. The game offers extensive customization options for the machines and a variety of game modes, allowing each player to create a unique fighting style.
# info_ru: Многопользовательская онлайн-игра в жанре экшен с элементами стратегии, где игроки управляют боевыми роботами и сражаются на различных аренах. Игра предлагает богатую кастомизацию техники и разнообразные игровые режимы, позволяя каждому игроку создавать уникальный стиль боя.
########################################################################
export LAUNCH_PARAMETERS="/s /nr /l=Russian"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/MWO_Launcher_Setup.exe"
start_portproton
if try_download "http://mwogame.com/download.php" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_run "${PW_AUTOINSTALL_EXE}"
if [[ -d "$WINEPREFIX/drive_c/games/" ]] ; then
PW_EXE_FILE="$WINEPREFIX/drive_c/games/MetalWarOnline/MWOLauncher.exe"
else
PW_EXE_FILE="$WINEPREFIX/drive_c/Games/MetalWarOnline/MWOLauncher.exe"
fi
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
export PORTWINE_CREATE_SHORTCUT_NAME="Metal War Online"
portwine_create_shortcut
fi
stop_portproton
@@ -1,25 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: Mini World
# image: miniworld
# info_en: A sandbox game where players can explore, build, and create their unique worlds in a 3D environment. The game offers various modes, including survival and creative, as well as the ability to interact with other players in a multiplayer format.
# info_ru: Песочница, в которой игроки могут исследовать, строить и создавать свои уникальные миры в 3D-окружении. Игра предлагает разнообразные режимы, включая выживание и творчество, а также возможность взаимодействовать с другими игроками в многопользовательском формате.
########################################################################
URL_VER=$(curl https://www.miniworldgame.com/ | awk -F"/app_install/" '{print $2}' | awk -F"universal" '{print $1}')
export PW_PREFIX_NAME="MINI_WORLD"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/miniworld_universal.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="Mini World"
start_portproton
if try_download "https://mwu-api.miniworldgame.com/app_install/${URL_VER//[[:space:]]/}universal" "${PW_AUTOINSTALL_EXE}" no_mirror
then
"$pw_7z" x -y "${PW_AUTOINSTALL_EXE}" -o"$WINEPREFIX/drive_c/users/steamuser/AppData/Roaming/miniworldOverseasgame"
PW_EXE_FILE="$WINEPREFIX/drive_c/users/steamuser/AppData/Roaming/miniworldOverseasgame/MicroMiniNew.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,28 +0,0 @@
#!/usr/bin/env bash
# Author: ValoKarDin
# type: games
# name: Modern Warships
# image: mw
# info_en: A multiplayer military game where players control modern battle ships and fight on naval arenas. The game offers a wide selection of vessels, realistic graphics, and thrilling multiplayer battles.
# info_ru: Многопользовательская военная игра, где игроки управляют современными боевыми кораблями и сражаются на морских аренах. Игра предлагает широкий выбор судов, реалистичную графику и захватывающие многопользовательские сражения.
########################################################################
export LAUNCH_PARAMETERS="/VERYSILENT"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/modern_warships.exe"
export PW_PREFIX_NAME="MODERN_WARSHIPS"
export PORTWINE_CREATE_SHORTCUT_NAME="Modern Warships"
start_portproton
if try_download "https://gdn.gaijin.net/launcher/current.php?id=ModernWarshipsLauncher" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_kill_autostart launcher.exe &
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/users/$USER/AppData/Local/ModernWarships/launcher.exe"
pw_create_unique_exe "modern_warships_pp"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,30 +0,0 @@
#!/usr/bin/env bash
# Author: cefeiko
# type: games
# name: OSU
# image: osu
# info_en: A rhythm game where players click circles in time with music and rhythm. The game features various modes and a community where users can create and share their own maps.
# info_ru: Ритм-игра, в которой игроки нажимают кружки, следуя музыке и ритму. Игра предлагает различные режимы и комьюнити, где пользователи могут создавать и делиться собственными картами.
########################################################################
export PW_PREFIX_NAME="OSU"
export PORTWINE_CREATE_SHORTCUT_NAME="OSU"
export PW_WINE_USE="WINE_LG"
start_portproton
create_new_dir "${WINEPREFIX}/drive_c/Program Files (x86)/OSU/"
export PW_AUTOINSTALL_EXE="${WINEPREFIX}/drive_c/Program Files (x86)/OSU/osu!.exe"
if try_download "https://m1.ppy.sh/r/osu!install.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
if [[ -f "${PORT_DATA_PATH}/data/pfx_dotnet/drive_c/Program Files (x86)/OSU/osu!install.exe" ]] ; then
mv -f "${PORT_DATA_PATH}/data/pfx_dotnet/drive_c/Program Files (x86)/OSU/osu!install.exe" "${PORT_DATA_PATH}/data/pfx_dotnet/drive_c/Program Files (x86)/OSU/osu!.exe"
fi
export PW_EXE_FILE="$WINEPREFIX/drive_c/Program Files (x86)/OSU/osu!.exe"
pw_create_unique_exe
try_remove_file "${PW_EXE_FILE}.ppdb"
portwine_create_shortcut
kill_portwine
fi
stop_portproton
@@ -1,27 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: Panzar
# image: panzar
# info_en: A multiplayer online action game where players battle in teams using various character classes and unique abilities. The game features tactical battles on large maps with destructible environments.
# info_ru: Многопользовательская онлайн-игра в жанре экшен, где игроки сражаются в командах, используя различные классы персонажей и уникальные способности. Игра предлагает тактические сражения на больших картах с разрушительным взаимодействием окружения.
########################################################################
export LAUNCH_PARAMETERS="/VERYSILENT"
export PW_WINDOWS_VER="7"
export PW_PREFIX_NAME="PANZAR"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/Panzar.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="Panzar"
start_portproton
if try_download "https://www.panzar.ru/ru/download/installer/" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_kill_autostart start.exe 3 &
pw_run "${PW_AUTOINSTALL_EXE}"
export PW_EXE_FILE="${WINEPREFIX}/drive_c/Games/Panzar/start.exe"
pw_create_unique_exe
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,23 +0,0 @@
#!/usr/bin/env bash
# Author: Castro Fidel (linux-gaming.ru)
# type: games
# name: Path of Exile
# image: poe
# info_en: A free online action RPG where players explore a dark world, fight monsters, and develop their characters through a deep skill and item system. The game is known for its challenging gameplay and constantly updated content, including seasonal leagues and unique mechanics.
# info_ru: Бесплатная онлайн-игра в жанре action RPG, в которой игроки исследуют мрачный мир, сражаются с монстрами и развивают свои персонажи через глубокую систему навыков и предметов. Игра известна своим сложным геймплеем и постоянно обновляемым контентом, включая сезонные лиги и уникальные механики.
########################################################################
export LAUNCH_PARAMETERS="/S"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/PathOfExileInstaller.exe"
start_portproton
if try_download "https://web.poecdn.com/protected/downloads/PathOfExileInstaller.exe?key=lpKVe-ZJOqVrur8612s8gg" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/Program Files (x86)/Grinding Gear Games/Path of Exile/PathOfExile.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
export PORTWINE_CREATE_SHORTCUT_NAME="Path of Exile"
portwine_create_shortcut
fi
stop_portproton
@@ -1,26 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus (Sergey P.)
# type: games
# name: Plarium Play
# image: plariumplay
# info_en: Launcher for Plarium studio games.
# info_ru: Лаунчер для игр Plarium.
########################################################################
export LAUNCH_PARAMETERS="/s"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/plarium_play_setup.exe"
export PW_WINDOWS_VER="10"
export PW_PREFIX_NAME="DOTNET"
export PORTWINE_CREATE_SHORTCUT_NAME="Plarium Play"
start_portproton
if try_download "https://installer.plarium.com/desktop?lid=2&arc=64&os=windows" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_kill_autostart PlariumPlay.exe &
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/users/steamuser/AppData/Local/PlariumPlay/PlariumPlay.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,26 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: Rise of Flight
# image: riseofflight
# info_en: A flight combat simulator set during World War I, providing players with a realistic experience of piloting historical fighters. The game features various missions, a multiplayer mode, and detailed graphics, allowing players to immerse themselves in the atmosphere of aerial battles of that era.
# info_ru: Симулятор авиационных боев, действие которого происходит во время Первой мировой войны, предлагающий игрокам реалистичный опыт управления историческими истребителями. Игра включает в себя различные миссии, многопользовательский режим и детализированную графику, что позволяет ощутить атмосферу воздушных сражений того времени.
########################################################################
export PW_PREFIX_NAME="RISE_OF_FLIGHT"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/ROF_UE.zip"
export LAUNCH_PARAMETERS="/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-"
export PORTWINE_CREATE_SHORTCUT_NAME="Rise of Flight"
start_portproton
if try_download "https://il2bosrd1.cdnvideo.ru/ROF/ROF_UE.zip" "${PW_AUTOINSTALL_EXE}" no_mirror
then
"$pw_7z" x -y "${PW_AUTOINSTALL_EXE}" -o"$WINEPREFIX/drive_c/Program Files (x86)/1C-777/Rise of Flight"
pw_kill_autostart "3rd_party" &
pw_run "$WINEPREFIX/drive_c/Program Files (x86)/1C-777/Rise of Flight/ROF_UE/setup.exe"
PW_EXE_FILE="$WINEPREFIX/drive_c/Program Files (x86)/1C-777/Rise of Flight/bin_game/release/rof_updater.exe"
try_remove_dir "$WINEPREFIX/drive_c/Program Files (x86)/1C-777/Rise of Flight/ROF_UE"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
portwine_create_shortcut
fi
stop_portproton
@@ -1,27 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus (Sergey P.)
# type: games
# name: Rockstar Games Launcher
# image: Rockstar
# info_en: Launcher for Rockstar studio games.
# info_ru: Лаунчер для игр Rockstar.
########################################################################
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/Rockstar-Games-Launcher.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="Rockstar"
export PW_WINE_USE="WINE_LG"
export PW_PREFIX_NAME="ROCKSTAR"
start_portproton
if try_download "https://gamedownloads.rockstargames.com/public/installer/Rockstar-Games-Launcher.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
try_remove_dir "$WINEPREFIX/drive_c/Program Files/Rockstar Games/Launcher"
pw_kill_autostart RockstarService.exe &
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$(find "$WINEPREFIX/drive_c/" -type f -name "Launcher.exe" | grep "Rockstar Games/Launcher/Launcher.exe")"
pw_create_unique_exe "rockstar_launcher_pp"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,23 +0,0 @@
#!/usr/bin/env bash
# Author: Boria138
# type: games
# name: Russian Fishing 4
# image: rf4launcher
# info_en: A realistic fishing simulator that immerses players in the enjoyable process of catching fish in various beautiful bodies of water across Russia. The game features a wide selection of tackle, fish species, and opportunities for competition with other anglers.
# info_ru: Реалистичный симулятор рыбалки, который предлагает игрокам погрузиться в увлекательный процесс ловли рыбы в различных красивых водоемах России. Игра включает в себя широкий выбор снастей, видов рыб и возможностей для соревнований с другими рыбаками.
########################################################################
export LAUNCH_PARAMETERS="/q"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/RF4SetupRU.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="Russian Fishing 4"
export PW_PREFIX_NAME="RUSSIAN_FISHING"
start_portproton
if try_download "https://cdn6.rf4game.ru/rf4/RF4SetupRU.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
create_new_dir "${WINEPREFIX}/drive_c/games/Russian Fishing 4"
mv "${PORT_WINE_TMP_PATH}/RF4SetupRU.exe" "${WINEPREFIX}/drive_c/games/Russian Fishing 4/RF4.exe"
PW_EXE_FILE="${WINEPREFIX}/drive_c/games/Russian Fishing 4/RF4.exe"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,23 +0,0 @@
#!/usr/bin/env bash
# Author: Dervart
# type: games
# name: Saturn
# image: saturn
# info_en: A multiplayer online game that combines elements of strategy and role-playing, where players can explore space, build colonies, and battle opponents. The game features a deep crafting system and character development, allowing each player to create a unique strategy.
# info_ru: Многопользовательская онлайн-игра, сочетающая элементы стратегии и ролевого развлечения, где игроки могут исследовать космос, строить колонии и сражаться с противниками. Игра предлагает глубокую систему крафта и развития персонажей, позволяя каждому игроку строить уникальную стратегию.
########################################################################
export PW_PREFIX_NAME="NINSAR"
export PW_WINE_USE="WINE_LG"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/saturn.zip"
start_portproton
if try_download "https://cdn-s3.quadrosim.ru/saturn/saturn.zip" "${PW_AUTOINSTALL_EXE}" no_mirror
then
"$pw_7z" x -y "${PW_AUTOINSTALL_EXE}" -o"$WINEPREFIX/drive_c/Program Files (x86)/saturn"
PW_EXE_FILE="$WINEPREFIX/drive_c/Program Files (x86)/saturn/Saturn.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
export PORTWINE_CREATE_SHORTCUT_NAME="Saturn"
portwine_create_shortcut
fi
stop_portproton
@@ -1,28 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: Secret World Legends (ENG)
# image: swl
# info_en: An MMORPG with a unique story and setting based on myths, legends, and secret societies, allowing players to explore a modern world filled with supernatural beings and mysteries. The game offers freedom in skill selection and character building, along with engaging quests and a rich narrative.
# info_ru: MMORPG с уникальной историей и сеттингом, основанная на мифах, легендах и тайных обществах, позволяющая игрокам исследовать современный мир, полный сверхъестественных существ и загадок. Игра предлагает свободу в выборе навыков и построении персонажей, а также захватывающие квесты и глубокий сюжет.
########################################################################
export WINEDLLOVERRIDES="d3d9=b"
export LAUNCH_PARAMETERS="/VERYSILENT"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/SecretWorldLegendsMin.exe"
export PW_PREFIX_NAME="SECRET_WORLD_LEGENDS"
start_portproton
if try_download "https://web-cdn.funcom.com/downloads/swl/SecretWorldLegendsMin.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_kill_autostart ClientPatcher.exe &
# pw_kill_autostart PatcherSetup.exe &
pw_run "${PW_AUTOINSTALL_EXE}"
# PW_EXE_FILE="${WINEPREFIX}/drive_c/Program Files (x86)/Funcom/Secret World Legends/SecretWorldLegendsDX11.exe"
PW_EXE_FILE="${WINEPREFIX}/drive_c/Program Files (x86)/Funcom/Secret World Legends/ClientPatcher.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
export PORTWINE_CREATE_SHORTCUT_NAME="Secret World Legends"
portwine_create_shortcut
fi
stop_portproton
@@ -1,24 +0,0 @@
#!/usr/bin/env bash
# Author: Castro-Fidel (linux-gaming.ru)
# type: games
# name: STALCRAFT
# image: stalcraft
# info_en: A multiplayer open-world game inspired by the S.T.A.L.K.E.R. universe, where players explore abandoned zones, battle mutants and other stalkers, and complete various quests. The game combines elements of survival, RPG, and first-person shooter, offering a unique experience in a post-apocalyptic world.
# info_ru: Многопользовательская игра с открытым миром, вдохновленная вселенной S.T.A.L.K.E.R., где игроки исследуют заброшенные зоны, сражаются с мутантами и другими сталкерами, а также выполняют различные квесты. Игра сочетает элементы выживания, RPG и шутера от первого лица, предлагая уникальный опыт в постапокалиптическом мире.
########################################################################
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/EXBO_Setup_ru.exe"
export PW_PREFIX_NAME="DOTNET"
start_portproton
if try_download "https://exbo2.b-cdn.net/EXBO_Setup_ru.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_kill_autostart ExboLauncher &
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/users/steamuser/AppData/Roaming/EXBO/java/bin/ExboLauncher.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
export PORTWINE_CREATE_SHORTCUT_NAME="STALCRAFT"
portwine_create_shortcut
fi
stop_portproton
@@ -1,26 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: Star Conflict
# image: starconflict
# info_en: A multiplayer online game in the space simulator genre, where players control various fighting ships and engage in large-scale space battles. The game features a unique customization system and character progression, along with diverse combat modes and strategic elements.
# info_ru: Многопользовательская онлайн-игра в жанре космического симулятора, где игроки управляют различными боевыми кораблями и сражаются в масштабных космических сражениях. Игра предлагает уникальную систему кастомизации и развитие персонажей, а также разнообразные режимы боя и стратегические элементы.
########################################################################
export PW_PREFIX_NAME="STAR_CONFLICT"
export LAUNCH_PARAMETERS="/VERYSILENT"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/starconf_installer.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="Star Conflict"
start_portproton
if try_download "https://yupmaster.gaijinent.com/launcher/current.php?id=StarConflictLauncher" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_kill_autostart launcher.exe &
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="${WINEPREFIX}/drive_c/users/steamuser/AppData/Local/StarConflict/launcher.exe"
pw_create_unique_exe
try_remove_file "${PW_AUTOINSTALL_EXE}"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,28 +0,0 @@
#!/usr/bin/env bash
# Author: Castro-Fidel (linux-gaming.ru)
# type: games
# name: Steam (UNSTABLE)
# image: steam
# info_en: Launcher for the Steam game library.
# info_ru: Лаунчер для библиотеки игр Steam.
########################################################################
export PW_WINE_USE="WINE_LG"
export LAUNCH_PARAMETERS="/S /D=c:\Program Files (x86)\Steam"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/SteamSetup.exe"
start_portproton
if try_download "https://cdn.akamai.steamstatic.com/client/installer/SteamSetup.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_kill_autostart steam.exe &
pw_run "${PW_AUTOINSTALL_EXE}"
if [[ -f "$WINEPREFIX/drive_c/Program Files (x86)/Steam/Steam.exe" ]]
then mv -f "$WINEPREFIX/drive_c/Program Files (x86)/Steam/Steam.exe" "$WINEPREFIX/drive_c/Program Files (x86)/Steam/steam.exe"
fi
PW_EXE_FILE="$WINEPREFIX/drive_c/Program Files (x86)/Steam/steam.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
export PORTWINE_CREATE_SHORTCUT_NAME="STEAM_PP"
portwine_create_shortcut
fi
stop_portproton
@@ -1,24 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: Tanki Online
# image: tankionline
# info_en: A multiplayer browser game where players control tanks and engage in dynamic team battles across various maps. The game offers a wide selection of weapons and modifications, allowing players to create unique tanks and develop strategies for victory.
# info_ru: Многопользовательская браузерная игра, в которой игроки управляют танками и участвуют в динамичных командных сражениях на различных картах. Игра предлагает широкий выбор оружия и модификаций, позволяя создавать уникальные танки и разрабатывать тактики для победы.
########################################################################
export PW_PREFIX_NAME="TANKI_ONLINE"
export LAUNCH_PARAMETERS="/S"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/TankiOnlineSetup.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="Tanki Online"
start_portproton
if try_download "https://tankionline.com/desktop/TankiOnlineSetup.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/users/steamuser/AppData/Local/Programs/Tanki Online/Tanki Online.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,24 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: The Lord of the Rings Online (ENG)
# image: lordofringsonline
# info_en: An MMORPG based on the works of J. R. R. Tolkien, allowing players to explore Middle-earth, take part in epic quests and battles with famous characters and creatures from the Lord of the Rings universe. The game offers deep customization of characters, a rich plot and many opportunities to play alone or in a group.
# info_ru: MMORPG, основанная на произведениях Дж. Р. Р. Толкиена, позволяющая игрокам исследовать Средиземье, принимать участие в эпических квестах и сражениях с известными персонажами и созданиями из вселенной Властелина колец. Игра предлагает глубокую кастомизацию персонажей, богатый сюжет и множество возможностей для игры в одиночку или в группе.
########################################################################
export PW_PREFIX_NAME="THE_LORD_OF_THE_RINGS_ONLINE"
export LAUNCH_PARAMETERS="/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP- /LANG=en"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/lotrolive.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="The Lord of the Rings Online"
start_portproton
if try_download "https://files.lotro.com/lotro/installers/lotrolive.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/Program Files (x86)/StandingStoneGames/The Lord of the Rings Online/LotroLauncher.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,25 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: The World of Nifty Craft (ENG)
# image: theworldofniftycraft
# info_en: A multiplayer online sandbox game where players can build, explore, and progress in a vibrant and diverse world filled with adventures. The game features a crafting system, unique opportunities for creativity, and interaction with other players.
# info_ru: Многопользовательская онлайн-игра в жанре песочницы, где игроки могут строить, исследовать и развиваться в ярком и разнообразном мире, наполненном приключениями. Игра предлагает систему крафта, уникальные возможности для творчества и взаимодействия с другими игроками.
########################################################################
export PW_PREFIX_NAME="THE_WORLD_NIFTY_CRAFT"
export LAUNCH_PARAMETERS="/S"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/web_installer.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="The World of Nifty Craft"
start_portproton
if try_download "https://installer.launcher.xsolla.com/xlauncher-builds/xsolla-launcher-update/9969/bin/web_installer.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/users/steamuser/AppData/Local/The World of Nifty Craft/launcher.exe"
pw_create_unique_exe "Nifty_Craft_launcher"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,30 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: Toontown Rewritten (ENG)
# image: toontownrewritten
# info_en: A multiplayer online game, where players take on the roles of cartoon characters battling foes in humorous and adventurous locations. The game offers cooperative gameplay, quests, mini-games, and opportunities for interaction with other players in a colorful world.
# info_ru: Многопользовательская онлайн-игра, где игроки берут на себя роли мультяшных персонажей, сражаясь с противниками в локациях, наполненных юмором и приключениями. Игра предлагает кооперативный геймплей, квесты, мини-игры и возможность взаимодействия с другими игроками в красочном мире.
########################################################################
URL_VER=$(curl https://www.toontownrewritten.com/play \
| awk -F"https://cdn.toontownrewritten.com/launcher/windows/TTRInstaller-" '{print $2}' \
| awk -F".exe" '{print $1}' | grep "v1" | head -n1)
export PW_PREFIX_NAME="TOONTOWN_REWRITTEN"
export LAUNCH_PARAMETERS="/S"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/TTRInstaller-$URL_VER.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="Toontown Rewritten"
start_portproton
if try_download "https://cdn.toontownrewritten.com/launcher/windows/TTRInstaller-$URL_VER.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_kill_autostart Launcher.exe &
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/Program Files (x86)/Toontown Rewritten/Launcher.exe"
pw_create_unique_exe "Toontown_Launcher"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,28 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus
# type: games
# name: Toribash
# image: toribash
# info_en: A fighting game where players control the joints of a character, creating their own movements and combos in real time. The game offers a deep level of strategy and creative expression, allowing users to develop their own techniques and engage in battles with other players.
# info_ru: Файтинг, где игроки управляют суставами персонажа, создавая собственные движения и комбо в реальном времени. Игра предлагает глубокий уровень стратегии и творческого самовыражения, позволяя пользователям разрабатывать свои собственные приемы и участвовать в боях с другими игроками.
########################################################################
URL_VER=$(curl https://www.toribash.com/downloads.php \
| awk -F"https://cache.toribash.com/Toribash-" '{print $2}' \
| awk -F"-Setup.exe" '{print $1}' | grep "5" | head -n1)
export PW_PREFIX_NAME="TORIBASH"
export LAUNCH_PARAMETERS="/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/Toribash-${URL_VER}-Setup.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="Toribash"
start_portproton
if try_download "https://cache.toribash.com/Toribash-${URL_VER}-Setup.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/Games/Toribash/toribash.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,25 +0,0 @@
#!/usr/bin/env bash
# Author: Castro-Fidel (linux-gaming.ru)
# type: games
# name: Ubisoft Game Launcher
# image: ubc
# info_en: Launcher for Ubisoft studio games.
# info_ru: Лаунчер для игр Ubisoft.
########################################################################
export LAUNCH_PARAMETERS="/S /D=c:\Program Files (x86)\Ubisoft Game Launcher"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/UbisoftConnectInstaller.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="Ubisoft Connect"
export WINE_SIMULATE_WRITECOPY="1"
start_portproton
if try_download "https://static3.cdn.ubi.com/orbit/launcher_installer/UbisoftConnectInstaller.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_kill_autostart UbisoftConnect.exe &
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/Program Files (x86)/Ubisoft Game Launcher/UbisoftConnect.exe"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,25 +0,0 @@
#!/usr/bin/env bash
# Author: chal55rus (Sergey P.)
# type: games
# name: VK Play Games Center
# image: mygames
# info_en: Launcher for the VK Play game library.
# info_ru: Лаунчер для библиотеки игр VK Play.
########################################################################
export PW_PREFIX_NAME="VK_PLAY"
# export LAUNCH_PARAMETERS=""
export PW_AUTOINSTALL_EXE="${PORT_DATA_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/users/steamuser/AppData/Local/VKPlayLoader.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="VK Play"
export WINEDLLOVERRIDES="mscoree,mshtml="
export PW_MUST_HAVE_DLL=""
export PW_WINE_USE="WINE_LG"
start_portproton
if try_download "https://static.gc.vkplay.ru/VKPlayLoader.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
PW_EXE_FILE="$WINEPREFIX/drive_c/users/steamuser/AppData/Local/VKPlayLoader.exe"
try_remove_file "${PW_EXE_FILE}.ppdb"
portwine_create_shortcut
fi
stop_portproton
@@ -1,25 +0,0 @@
#!/usr/bin/env bash
# Author: Castro Fidel
# type: games
# name: Warframe
# image: warframe
# info_en: A free-to-play multiplayer online action RPG where players control ancient warriors known as Tenno and battle against various factions in diverse missions across the galaxy. The game offers extensive character customization options, cooperative gameplay, and continuously updated content.
# info_ru: Бесплатная многопользовательская онлайн-игра в жанре экшен-RPG, в которой игроки управляют древними воинами, известными как Тенно, и сражаются против различных фракций в разнообразных миссиях по всей галактике. Игра предлагает множество возможностей для кастомизации персонажей, кооперативный геймплей и постоянно обновляющийся контент.
########################################################################
export LAUNCH_PARAMETERS="/q"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/Warframe.msi"
export PORTWINE_CREATE_SHORTCUT_NAME="Warframe"
start_portproton
if try_download "http://content.warframe.com/dl/Warframe.msi" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_kill_autostart Launcher.exe 3 &
pw_run msiexec /i "${PW_AUTOINSTALL_EXE}"
export PW_EXE_FILE="${WINEPREFIX}/drive_c/users/$USER/AppData/Local/Warframe/Downloaded/Public/Tools/Launcher.exe"
pw_create_unique_exe "warframe_launcher_pp"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,25 +0,0 @@
#!/usr/bin/env bash
# Author: cefeiko
# type: games
# name: Wargaming Game Center
# image: wgc
# info_en: Launcher for Wargaming studio games.
# info_ru: Лаунчер для игр Wargaming.
########################################################################
export LAUNCH_PARAMETERS="/VERYSILENT"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/Wargaming_Game_Center_Install_WoT_EU.exe"
export PW_PREFIX_NAME="WGC"
start_portproton
if try_download "https://redirect.wargaming.net/WGC/Wargaming_Game_Center_Install_WoT_EU.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_kill_autostart wgc.exe &
pw_run "${PW_AUTOINSTALL_EXE}"
PW_EXE_FILE="$WINEPREFIX/drive_c/ProgramData/Wargaming.net/GameCenter/api/wgc_api.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="Wargaming Game Center"
try_remove_file "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_EXE_FILE}.ppdb"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
@@ -1,31 +0,0 @@
#!/usr/bin/env bash
# Author: Cefeiko
# type: games
# name: World of Sea Battle
# image: wosb
# info_en: A multiplayer game where players control ships and participate in naval battles, aiming to defeat their opponents. The game offers various gameplay modes, ship customization options, and tactical planning for team actions.
# info_ru: Многопользовательская игра, в которой игроки управляют кораблями и участвуют в морских сражениях, стремясь одержать победу над противниками. Игра предлагает различные игровые режимы, возможность кастомизации судов и тактическое планирование командных действий.
########################################################################
export LAUNCH_PARAMETERS="/S"
export PW_PREFIX_NAME="WORLD_OF_SEA_BATTLE"
export PW_VULKAN_USE="2"
export PW_AUTOINSTALL_EXE="${PORT_WINE_TMP_PATH}/installer.exe"
export PORTWINE_CREATE_SHORTCUT_NAME="World of Sea Battle"
WOSB_VERSION="$(curl -s --list-only --connect-timeout 3 https://www.worldofseabattle.com/download2 2>/dev/null | grep 'installer.exe' | awk -F'xsolla-launcher-update/' '{print $2}' | awk -F'/' '{print $1}')"
[[ -n "$WOSB_VERSION" ]] && print_info "Found version: $WOSB_VERSION" || fatal "Error while get version of WOSB INSTALLER."
start_portproton
if try_download "https://installer.launcher.xsolla.com/xlauncher-builds/xsolla-launcher-update/${WOSB_VERSION}/bin/installer.exe" "${PW_AUTOINSTALL_EXE}" no_mirror
then
pw_run "${PW_AUTOINSTALL_EXE}"
try_remove_file "${PW_AUTOINSTALL_EXE}"
if [[ -f "$WINEPREFIX/drive_c/Games/Wosb Launcher/launcher.exe" ]]
then export PW_EXE_FILE="$WINEPREFIX/drive_c/Games/Wosb Launcher/launcher.exe"
else export PW_EXE_FILE="$WINEPREFIX/drive_c/users/steamuser/AppData/Local/Wosb Launcher/launcher.exe"
fi
pw_create_unique_exe "wosb_launcher_pp"
kill_portwine
portwine_create_shortcut
fi
stop_portproton
+135 -36
View File
@@ -6,6 +6,19 @@ export url_git="https://git.linux-gaming.ru/CastroFidel/PortWINE"
########################################################################
$PW_DEBUG
if [[ "$(realpath "$0")" == "/usr/share/portproton/scripts/start.sh" ]] ; then
PORT_SCRIPTS_PATH="/usr/share/portproton/scripts/"
else
PORT_SCRIPTS_PATH="$(dirname "$(realpath "$0")")"
fi
if [[ "${1:-}" == "cli" ]] \
&& [[ "${2:-}" == "--alt-i586-dependencies" ]] ; then
source "$PORT_SCRIPTS_PATH/functions_helper"
pw_alt_i586_dependencies "${3:-}"
exit $?
fi
if [[ $(id -u) = 0 ]] \
&& [[ ! -e "/userdata/system/batocera.conf" ]]
then
@@ -13,18 +26,10 @@ then
exit 1
fi
if [[ "$(realpath "$0")" == "/usr/share/portproton/scripts/start.sh" ]] ; then
PORT_SCRIPTS_PATH="/usr/share/portproton/scripts/"
else
PORT_SCRIPTS_PATH="$(dirname "$(realpath "$0")")"
fi
PORT_IMG_PATH="$(dirname "$PORT_SCRIPTS_PATH")/img"
PORT_CONF_PATH="$(dirname "$PORT_SCRIPTS_PATH")/conf"
if [[ -z "$PORT_DATA_PATH" ]] ; then
if [[ -n "${FLATPAK_ID:-}" ]] \
&& [[ -n "${XDG_DATA_HOME:-}" ]] ; then
if [[ -n "${XDG_DATA_HOME:-}" ]] ; then
PORT_DATA_PATH="$(dirname "${XDG_DATA_HOME}")"
elif [[ -f "$HOME/.config/PortProtonQt.conf" ]] \
&& grep "portdata_path" "$HOME/.config/PortProtonQt.conf" ; then
@@ -37,12 +42,26 @@ if [[ -z "$PORT_DATA_PATH" ]] ; then
fi
fi
if [[ -f "$HOME/.config/PortProtonQt.conf" ]] \
&& grep "disable_runtime_download = True" "$HOME/.config/PortProtonQt.conf" ; then
if [[ -n "${XDG_CONFIG_HOME:-}" ]] \
&& grep -q "disable_runtime_download = True" "$XDG_CONFIG_HOME/PortProtonQt.conf" ; then
export PW_DISABLE_RUNTIME_DOWNLOAD=1
elif [[ -f "$HOME/.config/PortProtonQt.conf" ]] \
&& grep -q "disable_runtime_download = True" "$HOME/.config/PortProtonQt.conf" ; then
export PW_DISABLE_RUNTIME_DOWNLOAD=1
fi
export PORT_SCRIPTS_PATH PORT_IMG_PATH PORT_DATA_PATH PORT_CONF_PATH
if [[ -n "${XDG_CONFIG_HOME:-}" ]] \
&& [[ -f "$XDG_CONFIG_HOME/PortProtonQt.conf" ]] \
&& grep -q "auto_download_ppdb = False" "$XDG_CONFIG_HOME/PortProtonQt.conf" ; then
export PW_FIND_PPDB=0
elif [[ -f "$HOME/.config/PortProtonQt.conf" ]] \
&& grep -q "auto_download_ppdb = False" "$HOME/.config/PortProtonQt.conf" ; then
export PW_FIND_PPDB=0
else
export PW_FIND_PPDB=1
fi
export PORT_SCRIPTS_PATH PORT_DATA_PATH PORT_CONF_PATH
export PW_LOG_FILE="${PORT_DATA_PATH}/PortProton.log"
# shellcheck source=/dev/null
@@ -92,7 +111,7 @@ if [[ "${1,,}" =~ \.ppack$ ]] ; then
export PW_NO_RESTART_PPDB="1"
export PW_DISABLED_CREATE_DB="1"
PW_EXE_FILE="$1"
elif [[ "${1,,}" =~ \.(exe|bat|msi|reg|lnk)$ ]] ; then
elif [[ "${1,,}" =~ \.(exe|bat|cmd|msi|reg)$ ]] ; then
if [[ -f "$1" ]] ; then
PW_EXE_FILE="$(realpath -s "$1")"
elif [[ -f "$OLDPWD/$1" ]] ; then
@@ -101,11 +120,7 @@ elif [[ "${1,,}" =~ \.(exe|bat|msi|reg|lnk)$ ]] ; then
PW_EXE_FILE="$1"
MISSING_DESKTOP_FILE="1"
fi
if [[ -n "${PW_EXE_FILE}" && "${1,,}" =~ \.lnk$ ]] ; then
get_lnk "${PW_EXE_FILE}"
PW_EXE_FILE="$(realpath "${link_path}" 2>/dev/null)"
fi
elif [[ "$1" =~ ^--(debug|launch|edit-db)$ && "${2,,}" =~ \.(exe|bat|msi|reg)$ ]] ; then
elif [[ "$1" =~ ^--(debug|launch|edit-db)$ && "${2,,}" =~ \.(exe|bat|cmd|msi|reg)$ ]] ; then
if [[ -f "$2" ]] ; then
PW_EXE_FILE="$(realpath -s "$2")"
elif [[ -f "$OLDPWD/$2" ]] ; then
@@ -128,7 +143,7 @@ create_new_dir "${HOME}/.local/share/applications"
create_new_dir "${PORT_DATA_PATH}/data/dist"
IFS=$'\n'
for dist_dir in $(lsbash "${PORT_DATA_PATH}/data/dist/") ; do
dist_dir_new=$(echo "${dist_dir}" | awk '$1=$1' | sed -e s/[[:blank:]]/_/g)
dist_dir_new=$(echo "${dist_dir}" | awk '$1=$1' | sed -e 's/[[:blank:]]*-[[:blank:]]*/-/g' -e 's/[[:blank:]]/_/g')
if [[ ! -d "${PORT_DATA_PATH}/data/dist/${dist_dir_new^^}" ]] ; then
mv -- "${PORT_DATA_PATH}/data/dist/$dist_dir" "${PORT_DATA_PATH}/data/dist/${dist_dir_new^^}"
fi
@@ -139,7 +154,7 @@ create_new_dir "${PORT_DATA_PATH}/data/prefixes/DEFAULT"
create_new_dir "${PORT_DATA_PATH}/data/prefixes/DOTNET"
try_force_link_dir "${PORT_DATA_PATH}/data/prefixes" "${PORT_DATA_PATH}"
pushd "${PORT_DATA_PATH}/data/prefixes/" 1>/dev/null || fatal
pushd "${PORT_DATA_PATH}/data/prefixes/" 1>/dev/null || fatal "Failed to enter prefixes directory"
for pfx_dir in ./* ; do
[[ -d "$pfx_dir" ]] || continue
pfx_dir_new="${pfx_dir//[[:blank:]]/_}"
@@ -147,7 +162,7 @@ for pfx_dir in ./* ; do
mv -- "${PORT_DATA_PATH}/data/prefixes/$pfx_dir" "${PORT_DATA_PATH}/data/prefixes/${pfx_dir_new^^}"
fi
done
popd 1>/dev/null || fatal
popd 1>/dev/null || fatal "Failed to return from prefixes directory"
create_new_dir "${PORT_WINE_TMP_PATH}"/gecko
create_new_dir "${PORT_WINE_TMP_PATH}"/mono
@@ -155,10 +170,12 @@ create_new_dir "${PORT_WINE_TMP_PATH}"/mono
export PW_VULKAN_DIR="${PORT_WINE_TMP_PATH}/VULKAN"
create_new_dir "${PW_VULKAN_DIR}"
cd "${PORT_SCRIPTS_PATH}" || fatal
cd "${PORT_SCRIPTS_PATH}" || fatal "Scripts directory not found: ${PORT_SCRIPTS_PATH}"
# shellcheck source=/dev/null
source "${PORT_SCRIPTS_PATH}/var"
# HACK: Avoid inheriting a system scripts cwd in pressure-vessel.
cd "${XDG_DATA_HOME:-$HOME}" || fatal "Data directory not found: ${XDG_DATA_HOME:-$HOME}"
[[ ! -f "$VKBASALT_CONFIG_FILE" ]] && cp -f "${PORT_CONF_PATH}/vkBasalt.conf" "$VKBASALT_CONFIG_FILE"
[[ ! -f "$DXVK_CONFIG_FILE" ]] && cp -f "${PORT_CONF_PATH}/dxvk.conf" "$DXVK_CONFIG_FILE"
@@ -205,8 +222,8 @@ fi
print_info "The first mirror in used: $MIRROR"
if check_gamescope_session
then PW_TERM="env LANG=C python3 -m portprotonqt.easyterm --fullscreen -e"
else PW_TERM="env LANG=C python3 -m portprotonqt.easyterm -e"
then PW_TERM="env LANG=C ${PORTPROTONQT_PYTHON:-python3} -m portprotonqt.scripts_utils.easyterm --fullscreen -e"
else PW_TERM="env LANG=C ${PORTPROTONQT_PYTHON:-python3} -m portprotonqt.scripts_utils.easyterm -e"
fi
pw_cleanup () {
@@ -246,7 +263,6 @@ get_wine_and_pfx () {
case "$1" in
--help)
help_info () {
files_from_autoinstall=$(ls "${PORT_SCRIPTS_PATH}/pw_autoinstall")
echo -e "Usage: [--repair] [--reinstall] [--autoinstall]
--repair Forces all scripts to be updated to a working state
@@ -257,7 +273,7 @@ case "$1" in
--launch Launches the application immediately, requires the path to the .exe file
--edit-db After the variable, the path to the .exe file is required and then the variables.
(List their variables and values for example PW_MANGOHUD=1 PW_VKBASALT=0, etc.)
--get-user-conf Get a value from user.conf file, requires variable name
--get-user-conf Get one or all values from user.conf file
--set-user-conf Set a value in user.conf file, requires variable name and value
--del-user-conf Delete a value from user.conf file, requires variable name
--list-db List all available database variables
@@ -269,12 +285,12 @@ case "$1" in
--winecmd Open wine command prompt, requires WINE version and prefix name
--winereg Open wine registry editor, requires WINE version and prefix name
--wine_uninstaller Open wine uninstaller, requires WINE version and prefix name
--winetricks-list-all List winetricks DLLs, fonts, and settings
--winetricks-install Install winetricks items, requires WINE version and prefix name
--clear_pfx Clear specified prefix, requires WINE version and prefix name
--mangohud-preview Starts MangoHud preview in vkcube (optional argument: inline MangoHud config)
--initial Initial setup command
--autoinstall --autoinstall and the name of what needs to be installed is given in the list below:
$(echo $files_from_autoinstall | awk '{for (i = 1; i <= NF; i++) {if (i % 10 == 0) {print ""} printf "%s ", $i}}')
--autoinstall Runs the specified .ppai autoinstall script
Usage examples:
portproton cli --launch /path/to/game.exe
@@ -285,8 +301,10 @@ Usage examples:
portproton cli --backup-prefix DEFAULT /path/to/backup/directory
portproton cli --restore-prefix /path/to/backup/file.ppack
portproton cli --winecfg WINE_LG DEFAULT
portproton cli --winetricks-list-all WINE_LG DEFAULT
portproton cli --winetricks-install WINE_LG DEFAULT --no-force corefonts
portproton cli --mangohud-preview \"fps,frametime,cpu_temp,gpu_temp\"
portproton cli --autoinstall [script_name_from_pw_autoinstall]
portproton cli --autoinstall /path/to/script.ppai
"
}
help_info
@@ -325,8 +343,21 @@ Usage examples:
export PW_USE_D3D_EXTRAS=1
export WINE_LARGE_ADDRESS_AWARE=0
trap "stop_portproton" SIGTERM SIGINT
# shellcheck source=/dev/null
. "${PORT_SCRIPTS_PATH}/pw_autoinstall/${2}"
if [[ "$2" =~ ^https?://.*\.ppai($|\?) ]] ; then
autoinstall_script="${PORT_WINE_TMP_PATH}/$(basename "${2%%\?*}")"
if try_download "$2" "${autoinstall_script}" no_mirror ; then
# shellcheck source=/dev/null
. "${autoinstall_script}"
try_remove_file "${autoinstall_script}"
else
fatal "Not found autoinstal script: $2"
fi
elif [[ -f "$2" ]] ; then
# shellcheck source=/dev/null
. "${2}"
else
fatal "Not found autoinstal script: $2"
fi
stop_portproton
;;
--debug)
@@ -357,12 +388,12 @@ Usage examples:
exit 0
;;
--show-ppdb)
# --show-ppdb /полный/путь/до/файла.exe ИЛИ /полный/путь/до/файла.exe.ppdb
# --show-ppdb /полный/путь/до/файла.(exe|bat|cmd|msi|reg) ИЛИ /полный/путь/до/файла.ext.ppdb
input_path="$2"
case "$input_path" in
*.ppdb) exe_path="${input_path%.ppdb}" ;;
*.exe) exe_path="$input_path" ;;
*.[bB][aA][tT]|*.[cC][mM][dD]|*.[eE][xX][eE]|*.[mM][sS][iI]|*.[rR][eE][gG]) exe_path="$input_path" ;;
esac
ppdb_path="${exe_path}.ppdb"
@@ -396,6 +427,11 @@ Usage examples:
done < <(grep -E '^export ' "$USER_CONF" 2>/dev/null | sed -E 's/[[:space:]]*#.*$//' | sed '/^[[:space:]]*$/d')
fi
[[ -n "${PW_DEFAULT_WINE_USE:-}" && -z "${all_vars[PW_WINE_USE]+x}" ]] && all_vars["PW_WINE_USE"]="$PW_DEFAULT_WINE_USE"
[[ -n "${PW_DEFAULT_PREFIX_NAME:-}" && -z "${all_vars[PW_PREFIX_NAME]+x}" ]] && all_vars["PW_PREFIX_NAME"]="$PW_DEFAULT_PREFIX_NAME"
[[ -n "${PW_DEFAULT_VULKAN_USE:-}" && -z "${all_vars[PW_VULKAN_USE]+x}" ]] && all_vars["PW_VULKAN_USE"]="$PW_DEFAULT_VULKAN_USE"
all_vars["PW_PLUGINS_VER"]="$PW_PLUGINS_VER"
while IFS='=' read -r key val; do
key="${key#export }"
val="${val#\"}"
@@ -403,7 +439,12 @@ Usage examples:
if [[ -z "${all_vars[$key]+x}" ]]; then
all_vars["$key"]="$val"
fi
done < <(grep -E '^export ' "$PORT_SCRIPTS_PATH/var" | sed -E 's/[[:space:]]*#.*$//' | sed '/^[[:space:]]*$/d')
done < <(
{
grep -E '^export ' "$PORT_SCRIPTS_PATH/var"
grep -E '^check_variables ' "$PORT_SCRIPTS_PATH/var" | sed -E 's/^check_variables ([^[:space:]]+) (.*)$/export \1=\2/'
} | sed -E 's/[[:space:]]*#.*$//' | sed '/^[[:space:]]*$/d'
)
for key in "${!all_vars[@]}"; do
echo "${key}=\"${all_vars[$key]}\""
@@ -437,7 +478,7 @@ Usage examples:
--winecmd)
get_wine_and_pfx "$2" "$3"
start_portproton
cd "${PORT_DATA_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c" || fatal
cd "${PORT_DATA_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c" || fatal "Prefix drive_c directory not found"
PW_USE_TERMINAL=1 pw_run cmd
stop_portproton
;;
@@ -454,6 +495,64 @@ Usage examples:
pw_run uninstaller
stop_portproton
;;
--winetricks-list-all)
get_wine_and_pfx "$2" "$3"
update_winetricks >&2
sh -n "${PORT_WINE_TMP_PATH}/winetricks" >&2 || exit 1
awk '
function save_entry() {
if (category == "") {
return
}
count[category]++
entries[category, count[category]] = name " " title
category = ""
name = ""
title = ""
}
/^w_metadata[[:space:]]+/ {
save_entry()
if ($3 == "dlls" || $3 == "fonts" || $3 == "settings") {
name = $2
category = $3
}
next
}
category != "" && /^[[:space:]]*title="/ {
title = $0
sub(/^[[:space:]]*title="/, "", title)
sub(/[[:space:]]*\\$/, "", title)
sub(/"$/, "", title)
}
END {
save_entry()
split("dlls fonts settings", categories, " ")
for (i = 1; i <= 3; i++) {
category = categories[i]
print "__PORTPROTONQT_WINETRICKS_SECTION__:" category
for (j = 1; j <= count[category]; j++) {
print entries[category, j]
}
}
}
' "${PORT_WINE_TMP_PATH}/winetricks"
winetricks_status="$?"
exit "$winetricks_status"
;;
--winetricks-install)
get_wine_and_pfx "$2" "$3"
winetricks_force="$4"
shift 4
start_portproton
update_winetricks
winetricks_args=("--unattended")
[[ "$winetricks_force" == "--force" ]] && winetricks_args+=("--force")
"${PORT_WINE_TMP_PATH}/winetricks" "${winetricks_args[@]}" "$@"
winetricks_status=$?
wait_wineserver
stop_portproton
exit "$winetricks_status"
;;
--clear_pfx)
get_wine_and_pfx "$2" "$3"
pw_clear_pfx
+18 -4
View File
@@ -3,9 +3,10 @@
###BASE VARIABLES###
export PW_PROTON_LG_VER="PROTON_LG_10-30"
export PW_WINE_LG_VER="WINE_LG_11-1"
export PW_WINE_LG_VER="WINE_LG_11-10"
export PW_LIBS_VER="_v3.0.20260218"
export PW_PLUGINS_VER="_v20"
export D7VK_VAR_VER="v1.10"
export DXVK_NEW_VER="2.7.1-509"
export DXVK_OLD_VER="2.6.2"
export DXVK_SAREK_VER="sarek-1.11.0"
@@ -14,6 +15,9 @@ export VKD3D_OLD_VER="2.14.1"
export VKD3D_SAREK_VER="sarek-2.6.0"
export PW_LSFG_VK_VER="2.0.0-dev25-p11"
export PW_OPTISCALER_VER="v03-0.9.0-pre8"
export PW_SPECIALK_VER="SK_26_5_15"
export PW_RESHADE_VER="6.8.0"
export PW_D3D8TO9_VER="1.15.1"
export PW_GALLIUM_NINE_VER="0.10"
export DOTPFX_VER="48v9"
export DEFPFX_VER="v1"
@@ -29,13 +33,22 @@ export PW_RT_MOUNT_RW=("/media" "/mnt" "/run/media/${USER}" "${PORT_DATA_PATH}")
check_variables PW_WINE_USE "PROTON_LG"
check_variables PROTON_USE_XALIA "0"
check_variables PW_USE_RUNTIME "1"
check_variables PW_USE_D7VK "0"
check_variables PW_USE_SPECIALK "0"
check_variables PW_USE_RESHADE "0"
check_variables PW_RESHADE_API "auto"
check_variables PW_RESHADE_EXE ""
check_variables PW_RESHADE_FONT ""
check_variables PW_RESHADE_SCREENSHOT_PATH ""
check_variables PW_RESHADE_SCREENSHOT_KEY "44,0,0,0"
check_variables PW_RESHADE_OVERLAY_KEY "36,0,0,0"
check_variables PW_USE_ESYNC "0"
check_variables PW_USE_FSYNC "0"
check_variables PW_USE_NTSYNC "0"
check_variables PW_USE_GAMEMODE "0"
check_variables PW_USE_INHIBIT_SLEEP "1"
check_variables PW_USE_TERMINAL "0"
check_variables PW_WINDOWS_VER "10"
check_variables PW_WINDOWS_VER "11"
check_variables PW_USE_GSTREAMER "1"
check_variables PW_USE_D3D_EXTRAS "1"
check_variables PW_PREFIX_NAME "DEFAULT"
@@ -58,7 +71,7 @@ check_variables PW_USE_GALLIUM_NINE "0"
check_variables PW_USE_GALLIUM_ZINK "0"
check_variables PW_USE_WINED3D_VULKAN "0"
check_variables PW_USE_SUPPLIED_DXVK_VKD3D "1"
check_variables PW_WINE_FULLSCREEN_FSR "1"
check_variables PW_WINE_FULLSCREEN_FSR "0"
check_variables WINE_FULLSCREEN_FSR_MODE "0"
###DXVK_AND_VKD3D###
@@ -70,6 +83,7 @@ check_variables VKD3D_LIMIT_TESS_FACTORS "64"
check_variables PW_VKBASALT "0"
check_variables PW_VKBASALT_EFFECTS "Curves:cas"
check_variables PW_VKBASALT_FFX_CAS "0.50"
check_variables PW_VKBASALT_TOOGLE_KEY "Home"
export VKBASALT_CONFIG_FILE="${PORT_DATA_PATH}/data/vkBasalt.conf"
###GAMESCOPE###
@@ -80,7 +94,7 @@ export PW_GAMESCOPE_ARGS_NEW=" -f --sharpness 10 --hdr-sdr-content-nits 0"
###MANGOHUD###
check_variables PW_MANGOHUD "0"
export DEFAULT_MANGOHUD_CONFIG="arch,cpu_mhz,cpu_temp,engine_version,gamemode,gpu_core_clock,gpu_mem_clock,gpu_name,gpu_temp,ram,resolution,vkbasalt,vram,vulkan_driver,wine,winesync"
export DEFAULT_MANGOHUD_CONFIG="arch,cpu_mhz,cpu_temp,engine_version,gamemode,gpu_core_clock,gpu_mem_clock,gpu_name,gpu_temp,ram,resolution,vkbasalt,vram,vulkan_driver,wine,winesync,display_server"
###DGVOODOO2###
check_variables PW_DGVOODOO2 "0"
Loaded 100 of 618 files, more files were not shown because too many files have changed in this diff. Show more