Compare commits

..
336 Commits
Author SHA1 Message Date
Boria138 c02a64f5bf fix: stop games via PortProton CLI instead of force kill
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-19 18:08:06 +05:00
Boria138 cd7bf7ba1e feat: enforce LG dist versions
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-19 17:13:48 +05:00
Boria138 8e964823f9 refactor: unify scripts path resolution and remove duplicate helpers
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-19 17:09:25 +05:00
Boria138 0e80f60ac7 fix: resolve autoinstall dir from start.sh
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-19 16:53:03 +05:00
Mikhail Tergoev f4cca57a1a add CLI: --stop 2026-04-19 13:43:32 +03:00
Mikhail Tergoev bb64c6d2cd again, and again global cleanup of scripts 2026-04-19 13:33:00 +03:00
Mikhail Tergoev 2774c67b7f global cleanup of scripts again 2026-04-19 11:14:58 +03:00
Mikhail Tergoev 2420c53c25 firt work without PP 2026-04-19 11:00:27 +03:00
Boria138 8e6a338575 feat: resolve PortProton scripts from repo or system paths
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-19 12:13:38 +05:00
Mikhail Tergoev 2999eeeb97 second global cleanup of scripts 2026-04-18 20:43:28 +03:00
Mikhail Tergoev 8543698099 first global cleanup of scripts 2026-04-18 19:17:21 +03:00
Mikhail Tergoev c4081f1933 add scripts from PortWINE (PortProton) 2026-04-18 16:58:06 +03:00
Boria138 d76f06d0b6 fix: use Annotated DBus signatures in bluetooth agent
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-17 15:36:08 +05:00
Boria138 945b8ca24e fix: drop dbus-fast annotations from bluetooth agent
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-17 14:56:46 +05:00
Boria138 300c08626b bump to 0.1.12
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-17 12:52:08 +05:00
Boria138 c573f45337 chore localization update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-16 18:30:37 +05:00
Boria138 4321d215ea chore(settings): drop PW_USE_SAREK_ASYNC
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-16 18:29:55 +05:00
Boria138 662f0bf494 fix(polkit): allow ppqtos child nmcli for VPN import
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-16 14:01:02 +05:00
Boria138 75f216ca6c chore(agents): added sign and license rule
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-16 12:21:48 +05:00
Boria138 c462925477 chore(localization): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-16 12:09:57 +05:00
Boria138 2a34b08a0a chore(system): drop scan from Wi-Fi
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-16 11:47:10 +05:00
Boria138 33fd22af23 chore(system): replace Wi-Fi show hide text to icon
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-16 11:42:57 +05:00
Boria138 a7d43068ed fix(system): migrate to dbus and drop bluetoothctl
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-16 11:34:43 +05:00
Boria138 d522ece132 fix(system): fix bluetooth with passkey
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-16 09:38:10 +05:00
Codeberg TranslateandBoria138 dab39e2821 Translated using Weblate (Russian)
Currently translated at 100.0% (662 of 662 strings)

Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-04-15 13:31:23 +00:00
Codeberg TranslateandBoria138 d7121db730 Translated using Weblate (Russian)
Currently translated at 100.0% (662 of 662 strings)

Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-04-15 13:27:49 +00:00
Boria138 4a44d95055 I forget update po oops
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-15 18:25:53 +05:00
Boria138 ae084974dd refactor: trim system i18n keys and simplify UI labels
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-15 18:24:17 +05:00
Codeberg TranslateandBoria138 1cb7d08479 Translated using Weblate (Russian)
Currently translated at 99.3% (660 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-04-15 13:17:26 +00:00
Boria138 980fb964b7 refactor: reduce i18n scope for system tab and managers
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-15 18:00:22 +05:00
Boria138 7aa3b04ff4 chore(locale): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-15 13:58:50 +05:00
Boria138 68829bc00b chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-15 13:34:36 +05:00
Boria138 71a8ebd89a feat: added system tab with wifi and bluetooth
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-15 08:31:20 +00:00
Boria138 b17575dece fix: open launch file via IPC in existing app instance
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-13 10:29:48 +05:00
Boria138 60135211e5 feat: fix stop icon after wine download during launch
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-12 17:37:31 +05:00
Boria138 082be63f7d fix: parse MangoHud and Gamescope toggles from PPDB 2026-04-12 13:57:40 +05:00
Boria138 fc5572a262 fix: prevent badge overlay on app startup
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-09 22:51:11 +05:00
Boria138 ab67e9bf4e fix: allow hidden badge_view_mode from ui config
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-09 22:41:28 +05:00
Codeberg TranslateandBoria138 a7ae3b834f Translated using Weblate (Russian)
Currently translated at 100.0% (619 of 619 strings)

Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-04-09 16:27:09 +00:00
Boria138 00b0c0fdfc feat: Add hidden badge mode
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-09 21:24:24 +05:00
Boria138 cf46e3b67f feat: Add Steam compat tool toggle to settings
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-09 21:13:46 +05:00
Boria138 044abe9543 fix: reorder MangoHud Actions section above Presets
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-09 18:27:20 +05:00
Boria138 07da5368b2 chore(build): added dummy dependency linker for ALT Linux
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-09 13:01:14 +05:00
Codeberg TranslateandBoria138 f40b93b6ed Translated using Weblate (Russian)
Currently translated at 100.0% (617 of 617 strings)

Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-04-08 15:47:09 +00:00
Boria138 4db56869d1 fix: avoid /dev/stdout in autoinstall log
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-08 20:43:33 +05:00
Boria138 0e782b3463 feat: refine MangoHud preset sections
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-08 20:36:55 +05:00
Boria138 9bc1760107 fix: enlarge and center compact badge icons at 1.5x
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-08 20:10:49 +05:00
Boria138 ce6a28c2d9 fix: use anticheat slug for AWACY links and cache refresh
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-08 17:49:35 +05:00
Boria138 a8dfc19b04 chore: drop default WINE button in wine settings tab
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-07 09:29:52 +05:00
Boria138 8e87c2183c Revert "fix: correct gamepad face button mapping"
This reverts commit 5beec85ee8.
2026-04-07 09:20:28 +05:00
Boria138 5070f1fdc7 fix: refresh library grid after game card deletion
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-07 09:17:27 +05:00
Boria138 5beec85ee8 fix: correct gamepad face button mapping
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-06 18:52:22 +05:00
Boria138 a964b2882e fix: restore library loading after fast cli launch
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-05 18:07:25 +05:00
Boria138 14c5b0406a fix: detect bluetooth gamepad scroll axis
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-04 20:34:40 +05:00
Boria138 0adc218908 fix: update GameCard Property declarations for PySide6
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-04 09:47:37 +05:00
Boria138 ccdf79f89f fix(settings): block PW_USE_SAREK_ASYNC for Steam games
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-03 14:38:54 +05:00
Boria138 650653399b fix(settings): block D3D Extras and return EAC for Steam games
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-03 10:16:31 +05:00
Boria138 ad565ea3e5 fix(settings): block Galium Nine for Steam games
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-02 20:03:47 +05:00
Boria138 771fc8990a fix(settings): block EAC and BE runtime for Steam games
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-02 19:54:40 +05:00
Boria138 e8cc1f919e fix: remove runtime ExeSettingsDialog cast in Gamescope settings
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-02 19:06:02 +05:00
Boria138 9a6a83db23 fix: remove runtime ExeSettingsDialog cast in MangoHud settings
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-02 19:03:56 +05:00
Boria138 4f823d4ebc refactor: move MangoHud layout section below switches
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-02 18:54:37 +05:00
Boria138 28d3333269 fix: preserve toggle settings order in dialog
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-02 18:46:48 +05:00
Boria138 4bce23b83c chore(locale): add localized comments to desktop file
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-02 12:26:07 +05:00
Codeberg TranslateandBoria138 471a9c1099 Translated using Weblate (Russian)
Currently translated at 100.0% (621 of 621 strings)

Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-04-02 05:41:04 +00:00
Boria138 a291c54e14 feat: add toggle buttons for MangoHud and Gamescope in settings
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-02 10:37:50 +05:00
Boria138 53bc799e4f refactor: reorder toggle settings in logical groups
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-02 09:17:25 +05:00
Boria138 b48fbd3383 fix: normalize Gamescope args before change detection
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-02 00:07:55 +05:00
Boria138 91b434a5d9 chore(data): drop unneded now linux-gaming_topics
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-04-01 11:26:53 +05:00
Gitea Actions ac1ed68b86 chore: update steam apps list 2026-04-01T00:01:47Z 2026-04-01 00:01:48 +00:00
Boria138 50f1fbd1d6 fix: remove deprecated AST node usage in theme checks
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-31 20:38:50 +05:00
Boria138 fa93eacd3a rework blocked check style
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-31 20:34:10 +05:00
Boria138 1f72d6edb6 Revert "fix(theme-security): harden custom theme loading and validation"
This reverts commit 605b80850f.
2026-03-31 19:05:52 +05:00
Boria138 605b80850f fix(theme-security): harden custom theme loading and validation
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-30 21:52:01 +05:00
Boria138 78d04a7a5f Reapply "fix: improve theme fallbacks for preloader and custom themes"
This reverts commit 02ab53c996.
2026-03-30 21:10:55 +05:00
Boria138 007713f1be chore: drop renovate i'm too lazy for fix rate limit
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-30 10:23:41 +05:00
Boria138 a28465fd7f fix: simplify file URI handling in CLI path normalization
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-30 10:13:41 +05:00
Boria138 21696eea9b feat(settings): add custom preset buttons for Gamescope
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-29 19:06:02 +05:00
Boria138 4d732c8f22 fix(cli): support file:// URIs from pcmanfm for launch files
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-29 19:02:23 +05:00
Boria138 8cee173ed2 feat: add remove Steam compat tool CLI flag 2026-03-29 16:15:33 +05:00
Boria138 02ab53c996 Revert "fix: improve theme fallbacks for preloader and custom themes"
This reverts commit 04ca284807.
2026-03-29 15:27:06 +05:00
Boria138 04ca284807 fix: improve theme fallbacks for preloader and custom themes
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-29 15:20:55 +05:00
Boria138 c12e1996cb feat(cli): add reinstall option to shell completions
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-28 23:51:38 +05:00
Boria138 76e922a431 feat(cli): added --reinstall-steam-compat-tool
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-28 23:45:40 +05:00
Codeberg TranslateandBoria138 51e903e961 Translated using Weblate (Russian)
Currently translated at 100.0% (615 of 615 strings)

Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
Translation: PortProtonQt/PortProtonQt
2026-03-28 17:34:27 +00:00
Codeberg TranslateandBoria138 052a804c14 Translated using Weblate (Spanish)
Currently translated at 1.3% (8 of 615 strings)

Co-authored-by: Boria138 <boria138@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/es/
Translation: PortProtonQt/PortProtonQt
2026-03-28 17:34:27 +00:00
Boria138 f2a2013ba7 chore: clean MangoHud preview warnings ignore
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-28 20:16:55 +05:00
Boria138 0f394b8974 Translated using Weblate (Russian)
Currently translated at 100.0% (617 of 617 strings)

Translation: PortProtonQt/PortProtonQt
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
2026-03-28 14:42:47 +00:00
Boria138 a1817abe65 chore(localization): unify
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-28 19:42:25 +05:00
Boria138 1a48635582 chore(localization): simplify Mangohud preview error text
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-28 19:32:22 +05:00
Boria138 183dbb8253 Translated using Weblate (Russian)
Currently translated at 100.0% (614 of 614 strings)

Translation: PortProtonQt/PortProtonQt
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
2026-03-28 14:27:45 +00:00
Boria138 d2f21aa585 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-28 19:27:13 +05:00
Boria138 eb6e4dcb40 feat: add default WINE button in wine settings tab
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-28 19:25:56 +05:00
Boria138 a1f2913e88 feat(mangohud): added preview
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-28 17:45:51 +05:00
Boria138 841da7eed0 feat(settings): block gstreamer/runtime/dgvoodoo2 for Steam games
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-28 12:33:51 +05:00
Boria138 bb1f3ba1ee chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-28 10:53:58 +05:00
Boria138 a3b9e8b5e1 fix: make virtual keyboard width responsive
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-28 10:49:58 +05:00
Boria138 c7f3ee79bb fix(input_manager): resolve combobox tab-switch regression from 169ff00 2026-03-27 21:41:32 +05:00
Boria138 2aab2b0286 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-27 20:56:39 +05:00
Boria138 ca3fd2947a refactor: remove screenshot captions
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-27 20:54:56 +05:00
Boria138 627d708e81 fix: keep PPQt settings tab active after save
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-27 20:04:12 +05:00
Boria138 513c9872da Revert "fix: drop from Steam LD_LIBRARY_PATH only curl"
This reverts commit 26aa44c0d4.
2026-03-27 12:44:27 +05:00
Boria138 26aa44c0d4 fix: drop from Steam LD_LIBRARY_PATH only curl
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-26 21:18:15 +05:00
Boria138 53664b2ab7 fix: lock 3D Api field in Steam game settings
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-25 16:15:45 +05:00
Boria138 6e07e56741 Translated using Weblate (Russian)
Currently translated at 100.0% (612 of 612 strings)

Translation: PortProtonQt/PortProtonQt
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
2026-03-25 06:57:34 +00:00
Boria138 dd22838e25 chore: drop PPQT_GUI
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-24 20:49:20 +05:00
Boria138 fa721ad84c fix(locales): update only entries
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-24 10:53:27 +05:00
Boria138 8a1a1582a2 fix: lock prefix field in Steam game settings
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-24 10:45:12 +05:00
Boria138 4a2649a33d chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-24 10:41:36 +05:00
Boria138 cd39183e47 fix: replace Steam Add Game button with Open Game Folder
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-24 10:39:16 +05:00
Boria138 de004667d4 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-23 23:53:36 +05:00
Boria138 8c0f8bb657 feat: add MangoHud system config export button
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-23 23:53:04 +05:00
Boria138 ae8c264da7 fix: dont unset ld preload
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-23 20:51:28 +05:00
Boria138 b1f5b001b2 chore: Prefer 7zz over 7z when extracting ISO files.
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-23 19:33:16 +05:00
Boria138 cf80c92a5d fix: replace udisks ISO flow with pure 7z extraction
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-23 19:25:46 +05:00
Boria138 2c1cd96e43 chore(build): added udisks2 dep for ISO mount
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-23 18:33:55 +05:00
Boria138 ca0293474b chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-23 18:23:07 +05:00
Boria138 3408d71003 feat: add ISO launch support
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-23 18:21:26 +05:00
Boria138 4a0378686d fix: start from steam
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-23 12:53:39 +05:00
Boria138 30ddac4cab chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-23 10:56:49 +05:00
Boria138 cb2c3baf10 fix: resolve .desktop lookup via custom_data metadata 2026-03-23 10:35:53 +05:00
Boria138 bf65f451d1 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-22 22:27:54 +05:00
Boria138 7a02b6b666 fix: resolve stats by exact exe path and clean on delete
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-22 22:27:48 +05:00
Boria138 0b5013df2b chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-22 21:08:00 +05:00
Boria138 2e7a977fec fix: refresh tray submenus on tray menu open
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-22 21:06:49 +05:00
Boria138 dc0a402113 fix: sync autostart checkbox with desktop file presence
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-22 17:13:03 +05:00
Boria138 d53a5f7ce9 fix: prioritize custom/steam/sgdb/exe cover on CLI launch
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-22 16:56:19 +05:00
Boria138 b0b1bf2fcb chore(localization): compile locales after extract
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-22 16:32:44 +05:00
Boria138 7de71798b9 chore(build): fix locales generate
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-22 16:18:02 +05:00
Simple16 39e92cf437 Translated using Weblate (Russian)
Currently translated at 100.0% (609 of 609 strings)

Translation: PortProtonQt/PortProtonQt
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
2026-03-22 09:54:54 +00:00
Boria138 d7071c84e7 Translated using Weblate (Spanish)
Currently translated at 0.6% (4 of 609 strings)

Translation: PortProtonQt/PortProtonQt
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/es/
2026-03-22 09:54:54 +00:00
Boria138 4dcd845978 fix: use direct venv binary in xdg autostart Exec
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-22 14:54:29 +05:00
Boria138 4dcf257a38 i18n: reduce Weblate conflicts in l10n updates
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-22 14:24:51 +05:00
Boria138 9782de831b Translated using Weblate (Russian)
Currently translated at 100.0% (609 of 609 strings)

Translation: PortProtonQt/PortProtonQt
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/ru/
2026-03-22 09:08:17 +00:00
Boria138 4d367abcc5 chore(localization): drop mo for avoid weblate conflict
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-22 14:02:44 +05:00
Boria138 ced8e6a2b9 chore(localization): fix dev script
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-22 13:51:12 +05:00
Boria138 72821f1ac6 chore(localization): update pot
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-22 09:56:33 +05:00
Boria138 a46959f7db Revert "chore(localization): add initial es AI translate for test Codeberg sync"
This reverts commit 813275a049.
2026-03-22 09:55:19 +05:00
Boria138 31f28eba1e fix: route autoinstall process output to stdout
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-21 20:47:25 +05:00
Boria138 33f26f9559 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-21 19:23:35 +05:00
Boria138 28884e56c1 feat: add xdg autostart and start-in-tray settings 2026-03-21 19:18:17 +05:00
Boria138 9bdbbb6b30 fix: handle clicked bool in run-after exe selector 2026-03-21 12:58:20 +05:00
Boria138 24eb968371 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-21 12:19:14 +05:00
Boria138 89090409a4 feat: add PW_RUN_AFTER_EXE picker in exe settings 2026-03-21 12:17:04 +05:00
Boria138 813275a049 chore(localization): add initial es AI translate for test Codeberg sync
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-20 22:16:42 +05:00
Boria138 674bcec476 build: add Codeberg Translate url to metainfo
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-20 14:08:39 +05:00
Boria138 4210f43130 docs: add Codeberg Translate widget and update localization guide
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-20 14:04:53 +05:00
Boria138 7518e948e7 chore(localization): fix weblate checks
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-20 13:49:45 +05:00
Boria138 1543b3b42b chore(localization): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-20 13:39:34 +05:00
Boria138 5a9bd455e1 chore(tranlations): drop unneded tranlate
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-20 13:38:44 +05:00
Boria138 239ace42c9 Translated using Weblate (Russian)
Currently translated at 100.0% (605 of 605 strings)

Translation: PotrtProtonQt/PortProtonQt
Translate-URL: https://translate.codeberg.org/projects/potrtprotonqt/portprotonqt/ru/
2026-03-20 08:30:57 +00:00
Boria138 6c43289c85 Translated using Weblate (Spanish)
Currently translated at 0.3% (2 of 605 strings)

Translation: PortProtonQt/PortProtonQt
Translate-URL: https://translate.codeberg.org/projects/portprotonqt/portprotonqt/es/
2026-03-20 07:27:08 +00:00
Simple16 ca32ce4e25 Boria138 small fib about translations. Updating the translation 2026-03-19 17:42:48 +00:00
Boria138 3fbabc0267 docs: add fish shell instruction to README
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-19 22:37:41 +05:00
Boria138 ef5a302ff5 fix: use custom_data cover for CLI launched games
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-19 20:12:34 +05:00
Boria138 d05665be15 fix: improve dialog and detail page controller navigation
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-19 20:10:06 +05:00
Boria138 b51174c172 fix: use saved Exec line for edited shortcut actions
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-19 19:56:43 +05:00
Boria138 169ff005ce feat(detail_page): added add game and edit shortcut
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-19 19:53:42 +05:00
Boria138 6792abdac6 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-19 18:51:36 +05:00
Boria138 f2f11b608e feat: add compact badge mode with hover accordion text 2026-03-19 18:47:31 +05:00
Boria138 2fd91b9556 fix: skip cover copy when source and destination match
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-19 18:23:52 +05:00
Boria138 40b50de937 chore: use horizontal layout for checkbox in add game dialog
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-19 15:58:35 +05:00
Boria138 f39267e979 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-19 15:38:55 +05:00
Boria138 710c876374 feat: add shortcut toggles to add game dialog with state sync 2026-03-19 15:36:34 +05:00
Boria138 d00d789246 perf: reduce git requests and stream autoinstall asset updates
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-19 14:49:14 +05:00
Boria138 edcdb7cef4 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-18 23:45:08 +05:00
Boria138 03cf25492f fix: disable accidental wheel scrolling on comboboxes
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-18 23:43:32 +05:00
Boria138 9f84d2e9c3 fix: unify desktop entry generation and enforce 0755 perms
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-18 23:34:24 +05:00
Boria138 38c162f38a fix: run downloader callbacks in Qt thread to avoid cross-thread UI
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-18 23:25:06 +05:00
Boria138 41046f3439 chore(downloader): added user-agent
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-18 22:27:20 +05:00
Boria138 5428cd311b chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-18 22:01:31 +05:00
Boria138 21580d76ba feat: use Yandex as primary server for internet connectivity check
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-18 21:59:50 +05:00
Boria138 174e439509 fix: skip SGDB and SteamCDN covers when custom_data exists
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-18 16:58:26 +05:00
Boria138 b7f8e1edf2 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-18 16:50:22 +05:00
Boria138 b52785791a fix: constrain theme tab gamepad focus and add visible focus styles 2026-03-18 16:49:09 +05:00
Boria138 b280dc1f54 fix: reduce SGDB timeout to avoid startup delays 2026-03-17 14:42:24 +05:00
Boria138 1775911416 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-16 14:19:04 +05:00
Boria138 9f47dafb24 feat: normalize wine tool prefix to uppercase before cli launch 2026-03-15 21:36:53 +05:00
Boria138 0996b90ba3 fix: normalize PW_PREFIX_NAME and prefix directory names
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-15 18:13:40 +05:00
Renovate Bot 07e3850bce chore(deps): update archlinux:base-devel docker digest to b3c1ff7 2026-03-15 11:43:14 +00:00
Simple16 4536ce09bd Updating the translation of the Gamescope settings 2026-03-15 07:58:12 +05:00
Simple16 4d61cb3316 merge upstream 2026-03-14 19:02:01 +00:00
Boria138 c40caeae5c feat(gamescope): rework layout
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-14 17:48:27 +05:00
Boria138 74085a2d0b feat: clean user.conf CLI
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-14 17:32:26 +05:00
Simple16 3d55994962 Updating the translation of the MangoHud and Gamescope settings 2026-03-14 10:09:48 +00:00
Simple16 769c84edbd Updating the translation of the main Gamescope settings 2026-03-14 10:09:48 +00:00
Simple16 4ec1174bcd Updating the translation of the MangoHud setting №2 2026-03-14 10:09:48 +00:00
Simple16 6fe2fe08ba Updating the translation of the MangoHud settings №1 2026-03-14 10:09:48 +00:00
Simple16 cda1340293 Updating the translation of the MangoHud and Gamescope settings 2026-03-14 14:55:41 +05:00
Simple16 773569773e Updating the translation of the main Gamescope settings 2026-03-14 13:13:33 +05:00
Simple16 f9cd038aa1 Updating the translation of the MangoHud setting №2 2026-03-14 12:11:49 +05:00
Boria138 c0bae645e4 feat: hide unsupported gamescope options and handle aliases
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-14 11:02:35 +05:00
Boria138 6c63815ec3 feat: force PW_GAMESCOPE and PW_MANGOHUD on tab save
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-14 10:46:03 +05:00
Simple16 5c006a5b7e Updating the translation of the MangoHud settings №1 2026-03-14 09:21:26 +05:00
Boria138 c6a9031ee2 Reapply "fix: use short gamescope args for PortProton compatibility"
This reverts commit 3f6a4f538d.
2026-03-13 15:43:15 +05:00
Boria138 91a3cb4c26 refactor: switch user.conf helpers to PortProton CLI
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-13 14:14:52 +05:00
Boria138 c93f10c2a2 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-13 14:02:20 +05:00
Boria138 ab055f3708 fix: wrap control hints in small window sizes
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-13 14:00:48 +05:00
Boria138 823fff912e chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-13 13:57:16 +05:00
Boria138 100556e1d0 fix: use two-column layout for prefix backup action buttons
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-13 13:53:50 +05:00
Dervart d639283db5 fix scroll for exe settings 2026-03-12 09:59:24 +00:00
Dervart 7f4d06f825 fix end of file 2026-03-12 09:59:24 +00:00
Dervart b4baf8e230 Unified styles for comboboxes, checkboxes, input fields, scrollbars, and titlebars. 2026-03-12 09:59:24 +00:00
Boria138 3f6a4f538d Revert "fix: use short gamescope args for PortProton compatibility"
This reverts commit 0ac7959031.
2026-03-12 10:40:45 +05:00
Boria138 0ac7959031 fix: use short gamescope args for PortProton compatibility
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-12 10:06:08 +05:00
Boria138 3397e633c6 chore(completion): drop .bash ext
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-12 09:53:04 +05:00
Boria138 9abeddfb51 chore(compltion): added fish and zsh
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-12 00:22:20 +05:00
Boria138 754fc039f9 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-11 23:36:13 +05:00
Boria138 0b9b2f6e48 feat(gamescope): added gamepad navigation
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-11 23:35:11 +05:00
Boria138 b8fd7aff1b refactor: unify toggle grid layout for mangohud and gamescope
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-11 23:22:14 +05:00
Boria138 92f84d9c9c chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-11 23:19:33 +05:00
Boria138 228db2bbf1 refactor: centralize settings context menu and tooltip handling
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-11 23:17:36 +05:00
Boria138 5277f88b80 revert: remove gamescope screen-size validation on parse
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-11 23:04:52 +05:00
Boria138 f0de078dcd ui: move gamescope presets and toggles above resolution
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-11 23:02:55 +05:00
Boria138 ff20458ffb fix: drop invalid gamescope short resolution args
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-11 22:58:43 +05:00
Dervart 22956d7140 add styles for editable QComboBox 2026-03-11 15:33:39 +00:00
Dervart f31c8409cc remove background in checkbox container 2026-03-11 15:33:39 +00:00
Boria138 dc2eaa71ba feat(gamescope): added initial
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-11 20:33:17 +05:00
Boria138 e66dffeef0 feat: added create pfx
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-11 17:42:20 +05:00
Boria138 eac9583252 refactor: extract MangoHud settings into separate dialog module
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-11 10:10:18 +05:00
Boria138 39df4d7946 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-11 09:54:16 +05:00
Boria138 9ffb563280 fix: keep focused input visible when virtual keyboard opens 2026-03-11 09:46:08 +05:00
Boria138 c0c4eea813 fix(mangohud): fix gamepad navigation
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-11 09:40:58 +05:00
Boria138 27ea663f7d chore(mangohud): added Default value placeholder
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-11 09:17:21 +05:00
Boria138 ca851735e6 docs: clarify and align AGENTS.md policy rules
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-10 23:59:01 +05:00
Boria138 ac1270a7fd refactor: move hardcoded styles to theme files
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-10 23:33:22 +05:00
Boria138 8e76ee8789 chore(mangohud): drop translate from MANGOHUD_TOGGLE_SPECS
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-10 23:05:02 +05:00
Boria138 f11f7d594b chore: rework custom tooltip
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-10 23:02:33 +05:00
Boria138 2014a89c27 feat(mangohud): added gpu_list
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-10 22:38:46 +05:00
Boria138 4ae38a1f55 chore(mangohud): use gamepad tooltip insted system tooltip
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-10 20:58:57 +05:00
Boria138 a3853ef1a6 feat(mangohud): added short description to button
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-10 20:21:29 +05:00
Boria138 f3ac329e54 fix(mangohud): fix gamepad navigation
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-10 20:06:27 +05:00
Boria138 94f2c6df2e chore(mangohud): fix preset Layout
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-10 11:42:52 +05:00
Dervart 7fccaa4b0d Styles for mangohud settings 2026-03-09 20:56:28 +07:00
Boria138 9c1a80add5 feat(mangohud): added background_alpha and round_corners
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-09 13:47:39 +05:00
Boria138 6b859f6bdf fix MANGOHUD_VALUE_SPECS
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-09 13:19:03 +05:00
Boria138 aacabd81d9 chore(mangohud): rework layout
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-09 13:15:30 +05:00
Simple16 b1dc9d87dd Updating the translation of the main MangoHud settings. FIX 2026-03-09 09:38:49 +05:00
Simple16 63b8d26b1c Updating the translation of the main MangoHud settings 2026-03-09 09:21:53 +05:00
Boria138 858314a21c feat(mangohud): added network
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-08 23:45:16 +05:00
Boria138 622baaa31c feat(mangohud): added device_battery
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-08 23:09:33 +05:00
Boria138 2e93af677c feat(mangohud): added gamepad navigation
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-08 22:47:18 +05:00
Boria138 f55701b963 chore(mangohud): replace QPlainTextEdit to QLineEdit
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-08 22:21:47 +05:00
Boria138 188f2925ba chor(mangohud): hide font size
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-08 22:18:30 +05:00
Boria138 ce334fb232 chore(mangohud): added custom preset system
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-08 22:04:01 +05:00
Boria138 f4eca46112 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-08 21:45:54 +05:00
Boria138 811083748c chore: update screenshots
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-08 21:44:06 +05:00
Dervart 6bd8593300 Increased the width of setting titles 2026-03-08 23:13:38 +07:00
Dervart aa629e79a2 Separated checkbox and combobox classes for settings titles 2026-03-08 23:12:37 +07:00
Dervart 3508248e53 Added font styles for tab titles in get_wine & winetricks 2026-03-08 15:49:14 +00:00
Dervart abe8ee0575 Removed underline in block title. 2026-03-08 15:49:14 +00:00
Dervart d0e9d721d1 Increased the width of the combobox in the game settings as requested by @Simple16 2026-03-08 15:49:14 +00:00
Dervart 343ed115a1 styles for PortProton settings tab 2026-03-08 15:49:14 +00:00
Boria138 9f78196c8d feat: added initial mangohud settings
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-08 19:49:38 +05:00
Renovate Bot bc4748ca56 chore(deps): update archlinux:base-devel docker digest to a4e49d3 2026-03-08 10:12:10 +00:00
Renovate Bot 5718584809 chore(deps): update https://gitea.com/actions/setup-node digest to 53b8394 2026-03-08 00:01:20 +00:00
Simple16 1fb4ced62f Update of Russian localization 2026-03-07 20:49:14 +05:00
Boria138 98cfa3e50e chore(localization): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-07 20:21:02 +05:00
Boria138 006b6a6dd1 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-07 20:16:30 +05:00
Boria138 8ab3b796f3 fix: translate QMessageBox Yes/No buttons
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-07 20:16:29 +05:00
Boria138 3730fa1183 refactor: Unify cache management with CacheManager
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-07 16:43:42 +05:00
Boria138 d6d415d184 feat: Add --resolution CLI argument for custom window size
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-07 16:07:05 +05:00
Boria138 af90c5fdff chore(todo): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-07 16:06:21 +05:00
Boria138 e8e3fefbf0 fix: Correct locale links in localization guide
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-07 15:39:35 +05:00
Simple16 9c29a66314 Update of English and Russian strings. Update of Russian localization 2026-03-06 22:27:18 +05:00
Simple16 c26dd358e5 Update of English and Russian strings. Update of Russian localization 2026-03-06 21:34:21 +05:00
Simple16 ad469c6755 Update locale 2026-03-06 21:06:17 +05:00
Boria138 fad86df55f fix: add setuptools package discovery config for uv build
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-06 20:22:56 +05:00
Boria138 20ebb51f9a fix: restore project.scripts entry point for uv installation 2026-03-06 19:45:40 +05:00
Boria138 85b7f6a70c chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-06 12:29:06 +05:00
Boria138 7542be7bfd chore: simplify pyproject.toml for uv-only usage
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-06 12:25:39 +05:00
Boria138 9dce0bc2ef revert broken hook
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-05 13:44:34 +05:00
Boria138 d813be7e29 fix: added exclude for pre-commit hooks
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-05 13:32:25 +05:00
Boria138 b460fd507e chore(localization): sync russian and english strings
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-05 13:20:22 +05:00
Boria138 b377759db4 chore localization update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-05 12:44:06 +05:00
Boria138 ba3233dabf chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-05 11:49:39 +05:00
Boria138 aeaef9b6d7 feat: add cancel button to ProtonManager dialog
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-05 11:47:41 +05:00
Boria138 08808cf975 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-04 23:42:30 +05:00
Boria138 b23a83c96d feat: lazy load autoinstall
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-04 23:31:57 +05:00
Boria138 69e38452bf feat: batch download for autoinstall assets with rate limiting 2026-03-04 22:34:37 +05:00
Boria138 dd66585c52 fix: reduce CPU load and memory leak on card resize
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-04 20:38:38 +05:00
Boria138 b8e0359367 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-04 13:31:40 +05:00
Boria138 8d264ac743 fix: avoid library hang and reduce asset requests 2026-03-04 13:07:11 +05:00
Boria138 732f5e5f60 style: update PortProton Settings tab layout 2026-03-03 18:18:32 +05:00
Boria138 2b735aadbd perf: incremental library render 2026-03-03 13:41:02 +05:00
Boria138 0cef434c2e chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-03 12:44:12 +05:00
Boria138 757bd34885 fix: Steam CEF API detection and restart-free add/remove 2026-03-03 12:07:51 +05:00
Boria138 da79f07780 fix: fix get anticheat status for Steam Games
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-02 14:32:42 +05:00
Boria138 55d5b097d9 debug: add SGDB cache logging and reduce URL log verbosity 2026-03-02 13:39:38 +05:00
Boria138 650844c704 fix: check local cache before SteamCDN request to prevent redundant network calls
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-02 13:12:18 +05:00
Boria138 c4e3e30bf7 fix: remove blocking SGDB and URL check calls to prevent UI freeze 2026-03-02 00:56:48 +05:00
Boria138 97d6d54c93 fix: detect VDF format by first byte to avoid load errors 2026-03-02 00:56:42 +05:00
Boria138 be09e152e4 refactor: split steam_api.py into package with separate modules
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-03-02 00:56:36 +05:00
Renovate Bot 54df09f94a chore(deps): update archlinux:base-devel docker digest to f7227ef 2026-03-01 05:40:01 +00:00
Gitea Actions eb39264578 chore: update steam apps list 2026-03-01T00:01:59Z 2026-03-01 00:01:59 +00:00
Simple16 f9ea5e992b Update the Russian translation in the settings menu 2026-02-28 15:30:53 +00:00
Boria138 81637c3729 feat: auto-add MANGOHUD_CONFIG from var when enabling PW_MANGOHUD
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-28 20:29:15 +05:00
Boria138 80a79ed45b feat: add settings button for Steam games using PortProtonQt 2026-02-28 13:25:40 +05:00
Boria138 c6b997366f feat: launch games directly in Steam compatibility mode 2026-02-28 09:53:24 +05:00
Boria138 2bdcf107f2 feat: skip desktop file creation for steamapps/common games 2026-02-27 21:35:14 +05:00
Boria138 25f3e526ae feat: prioritize var.log for environment variables 2026-02-27 16:23:09 +05:00
Boria138 d081ae68db refactor: extract common process.log parsing function
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-27 16:13:56 +05:00
Boria138 d1b8f0fa93 feat: add PW_USE_INHIBIT_SLEEP_INFO setting 2026-02-27 16:10:39 +05:00
Boria138 23e19a14d0 feat: add Wine download progress monitoring
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-27 16:05:15 +05:00
Boria138 f9ef6751dd fix: tray use correct exec line 2026-02-27 15:23:18 +05:00
Boria138 6363c08781 refactor: extract dialogs to separate package and fix UI updates
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-26 23:26:11 +05:00
Boria138 7eb2934b44 fix: Run initial PortProton command in QThread to avoid UI blocking 2026-02-26 22:14:37 +05:00
Boria138 2519ccd6d0 fix: create UInput mouse in QThread to avoid blocking UI 2026-02-26 22:08:11 +05:00
Boria138 da204786c1 refactor: remove redundant branch input from nightly build workflow 2026-02-26 21:41:43 +05:00
Boria138 f6e871feaf fix: PKGBUILD steam-compat directory delete 2026-02-26 20:29:38 +05:00
Boria138 a9e0304437 fix: resolve file conflict between main and steam-compat packages 2026-02-26 19:50:56 +05:00
Boria138 994769d3cf feat: Add Steam compatibility tool as separate package 2026-02-26 17:58:54 +05:00
Boria138 6fd2e9b34a feat: Add CLI option to install PortProtonQt as Steam compatibility tool 2026-02-26 17:42:53 +05:00
Boria138 387133b87f feat: add direct exe launch via CLI 2026-02-26 17:22:49 +05:00
Boria138 8bd6e30e0b refactor: split config_utils into config package with validation
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-24 20:30:40 +05:00
Boria138 b168e32fc8 refactor: split detail_pages into package 2026-02-24 13:02:22 +05:00
Boria138 1812b8de5f refactor: split debug_utils into submodules
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-22 16:40:43 +05:00
Boria138 cfc4532edd fix: CSS comment syntax validation and winetricks.py typos 2026-02-22 16:03:52 +05:00
Boria138 50d6d952dd fix: invalid CSS comments in combobox styles
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-22 15:53:15 +05:00
Boria138 18f277e707 fix: adaptive width for PortProton settings tab
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-22 13:20:30 +05:00
Boria138 a769263aa1 refactor: split get_graphics_info_detailed into small functions
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-22 12:57:44 +05:00
Boria138 159cd49a16 chore(agents): update again
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-22 12:57:38 +05:00
Renovate Bot 68c8ca07b9 chore(deps): update archlinux:base-devel docker digest to 839e930 2026-02-22 00:01:07 +00:00
Boria138 ee22a5d8fb docs(agents): add dev-scripts exemption policy 2026-02-20 13:55:43 +05:00
Boria138 48f156e433 refactor: replace print() with logger and add exception logging 2026-02-20 13:50:00 +05:00
Boria138 85b199d5ea chore: translate comments to English and clean up TODOs
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-20 11:26:24 +05:00
Boria138 8d0bab134e feat(agents): finalize AI Governance Policy and consolidate LLM restrictions
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-20 11:08:57 +05:00
Boria138 5525a6988a docs(agents): remove redundant manual lint commands 2026-02-20 10:28:40 +05:00
Boria138 d6dc7db5e4 chore(agents): rework agents rules
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-19 23:49:07 +05:00
Boria138andQwen-Coder 09313e30cf fix(pre-commit): fix pyright exclude pattern for theme files
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-19 17:41:46 +05:00
Boria138 8d539469a3 fix(agents): rewrite pre-commit manual start
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-19 17:39:40 +05:00
Boria138 45f9b2950f fix(build): Fix vk_gpu_info Fedora BR
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-19 15:17:22 +05:00
Boria138 0d6df9ed6c chore: added AI Instruction (CLAUDE, GEMINI, QWEN, CURSOR, CODEX, OPENCODE)
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-19 15:09:32 +05:00
Boria138 b92eb1fe9d chore(portproton_settings): drop favorites adaptive
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-19 11:14:29 +05:00
Boria138 b200d73879 feat(portproton_settings): make it adaptive
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-19 11:12:44 +05:00
Boria138 335f3223db feat(detail_page): make it adaptive
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-19 10:32:14 +05:00
445 changed files with 72218 additions and 18445 deletions

No files matched your search

+4 -9
View File
@@ -2,14 +2,9 @@ name: Nightly Build - AppImage, Arch, Fedora
on:
workflow_dispatch:
inputs:
branch:
description: 'Branch to build'
required: false
default: 'main'
env:
BUILD_BRANCH: ${{ inputs.branch || 'main' }}
BUILD_BRANCH: ${{ github.ref_name }}
PKGDEST: "/tmp/portprotonqt"
PACKAGE: "portprotonqt"
@@ -18,7 +13,7 @@ jobs:
name: Build AppImage
runs-on: ubuntu-22.04
container:
image: archlinux:base-devel@sha256:7c81df532d6307c5bccb3d2561c90bfc981e6c4384d2a61c9e49b7f2d8aa27c0
image: archlinux:base-devel@sha256:b3c1ff749031ca2e06df1cd83fda74df13206a047b7b0f96b818825d9dc60785
options: --privileged --device /dev/fuse
steps:
- name: Prepare container
@@ -65,7 +60,7 @@ jobs:
run: |
dnf install -y git rpmdevtools meson ninja-build python3-devel \
systemd-rpm-macros vulkan-loader-devel redhat-rpm-config nodejs npm \
gcc
gcc gettext
- name: Setup rpmbuild environment
run: |
@@ -99,7 +94,7 @@ jobs:
name: Build Arch Package
runs-on: ubuntu-22.04
container:
image: archlinux:base-devel@sha256:7c81df532d6307c5bccb3d2561c90bfc981e6c4384d2a61c9e49b7f2d8aa27c0
image: archlinux:base-devel@sha256:b3c1ff749031ca2e06df1cd83fda74df13206a047b7b0f96b818825d9dc60785
steps:
- name: Prepare container
+2 -2
View File
@@ -8,7 +8,7 @@ on:
env:
# Common version, will be used for tagging the release
VERSION: 0.1.11
VERSION: 0.1.12
PKGDEST: "/tmp/portprotonqt"
PACKAGE: "portprotonqt"
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
@@ -111,7 +111,7 @@ jobs:
run: |
dnf install -y git rpmdevtools meson ninja-build python3-devel \
systemd-rpm-macros vulkan-loader-devel redhat-rpm-config nodejs npm \
gcc
gcc gettext
- name: Setup rpmbuild environment
run: |
+2 -2
View File
@@ -65,7 +65,7 @@ jobs:
needs: changes
if: needs.changes.outputs.appimage == 'true' || github.event_name == 'workflow_dispatch'
container:
image: archlinux:base-devel@sha256:7c81df532d6307c5bccb3d2561c90bfc981e6c4384d2a61c9e49b7f2d8aa27c0
image: archlinux:base-devel@sha256:b3c1ff749031ca2e06df1cd83fda74df13206a047b7b0f96b818825d9dc60785
options: --privileged --device /dev/fuse
steps:
- name: Prepare container
@@ -146,7 +146,7 @@ jobs:
needs: changes
if: needs.changes.outputs.arch == 'true' || github.event_name == 'workflow_dispatch'
container:
image: archlinux:base-devel@sha256:7c81df532d6307c5bccb3d2561c90bfc981e6c4384d2a61c9e49b7f2d8aa27c0
image: archlinux:base-devel@sha256:b3c1ff749031ca2e06df1cd83fda74df13206a047b7b0f96b818825d9dc60785
steps:
- name: Prepare container
+1 -1
View File
@@ -23,7 +23,7 @@ jobs:
- uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Set up Node.js
uses: https://gitea.com/actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
uses: https://gitea.com/actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
with:
node-version: 20
-38
View File
@@ -1,38 +0,0 @@
name: renovate
on:
workflow_dispatch:
schedule:
- cron: '0 0 * * 0'
jobs:
renovate:
runs-on: ubuntu-latest
container: ghcr.io/renovatebot/renovate:latest@sha256:eec497df1ca6ebe8bccf577c5dab8825ab5f3673a42a58f066e31dbf070664e6
steps:
- uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Set up Node.js
uses: https://gitea.com/actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
with:
node-version: 20
- name: Install uv manually
run: |
curl -LsSf https://astral.sh/uv/install.sh | sh
. $HOME/.local/bin/env
uv --version
- name: Download external renovate config
run: |
mkdir -p /tmp/renovate-config
curl -fsSL "https://git.linux-gaming.ru/Linux-Gaming/renovate-config/raw/branch/main/config.js" \
-o /tmp/renovate-config/config.js
- name: Run Renovate
run: renovate
env:
RENOVATE_CONFIG_FILE: "/tmp/renovate-config/config.js"
LOG_LEVEL: "debug"
RENOVATE_TOKEN: ${{ secrets.RENOVATE_TOKEN }}
RENOVATE_GITHUB_COM_TOKEN: ${{ secrets.RENOVATE_GITHUB_COM_TOKEN }}
+11
View File
@@ -39,3 +39,14 @@ Thumbs.db
# get_wine debug folder
proton_downloads
# Need for refactoring
REFRACTORING_PLAN.md
AUDIT_CHECKLIST.md
# Compiled gettext catalogs
portprotonqt/locales/*/LC_MESSAGES/*.mo
# AI
.codex
+10 -1
View File
@@ -28,7 +28,16 @@ repos:
language: system
types_or: [python, pyi]
require_serial: true
exclude: '^portprotonqt/themes/[^/]+/styles\.py$'
exclude: 'themes/.*/styles\.py$'
- repo: local
hooks:
- id: bash-n
name: bash -n
entry: bash -c 'for file in "$@"; do bash -n "$file" || exit 1; done' --
language: system
files: ^build-aux/share/portproton/scripts/
types: [shell]
- repo: local
hooks:
+817
View File
@@ -0,0 +1,817 @@
# PortProtonQt — AI Agent Guidelines
**Project:** PortProtonQt — GUI for PortProton, Steam, Epic Games Store
**Language:** Python 3.10+
**Platform:** Linux (POSIX)
**License:** GPL-3.0
**Build:** Meson + uv
---
**Summary:** AI agents MUST behave as conservative patching assistants, prioritizing minimal changes and existing patterns over architectural refactoring or code cleanup. AI MUST NOT perform architectural improvements unless explicitly requested.
**Scope:** These guidelines apply exclusively to AI-generated code. Documentation updates and human maintainers are exempt from line limits and these constraints.
## License and Attribution
- All code MUST be compatible with GPL-3.0.
- Use appropriate SPDX license identifiers where applicable.
- AI agents MUST NOT add `Signed-off-by` tags.
When AI contributes to the project, add an `Assisted-by` tag:
`Assisted-by: AGENT_NAME:MODEL_VERSION`
Where:
- `AGENT_NAME` is the AI agent or framework name.
- `MODEL_VERSION` is the specific model version.
Example:
`Assisted-by: Claude:claude-3-opus`
---
## Core Principles
| Principle | Required | Forbidden |
|-----------|----------|-----------|
| KISS | New/rewritten functions ≤50 lines | Deep nesting |
| YAGNI | Concrete code | Future abstractions |
| DRY | Extract methods (if directly related to task) | Copy-paste |
| SRP | 1 task per method | God functions |
| Linux | POSIX paths, shebangs | Windows-specific code |
| Minimal changes | Modify relevant section only | Rewrite entire files |
**Priority order (highest to lowest):**
1. Minimal changes (overrides DRY, SRP)
2. Security (no shell=True, no hardcoded credentials)
3. Linux compatibility
4. KISS / YAGNI
5. DRY / SRP
**When principles conflict:**
- Prefer minimal diff over extracting methods
- Prefer existing patterns over "correct" refactoring
- Prefer small targeted fix over comprehensive cleanup
- Never break security for code quality
- Remove duplicates only if directly related to current task
- Do not split untouched legacy functions only to satisfy line limits
- Do not rewrite untouched legacy files or blocks only to satisfy metrics
---
## Code Metrics
| Check | Limit |
|-------|-------|
| Functions | ≤50 lines, ≤4 params (required for new/fully rewritten functions) |
| Files | ≤800 lines (required for new/fully rewritten files) |
| Nesting | ≤4 levels (required in new/modified code) |
| Comments | English, 1-2 lines max |
| Indentation | 4 spaces (no tabs) |
| Whitespace | No trailing spaces |
| Blank lines | No excessive blank lines |
| EOF | Exactly one newline |
| Commits | English, ≤72 chars |
---
## Forbidden Patterns
```python
# NEVER: 6+ parameters
def process_game(user, ctx, log, val, map, cache): ...
# NEVER: Deep nesting
if c1:
if c2:
if c3:
if c4: ...
# NEVER: print statements
print(f"Game {name} started")
# NEVER: shell=True
subprocess.run(cmd, shell=True)
# NEVER: Hardcoded credentials
API_KEY = "sk-abc123"
# NEVER: Path traversal
file_path = f"/data/{user_filename}"
# NEVER: Hardcoded styles or constants (colors, sizes, etc.)
shadow.setBlurRadius(20)
shadow.setColor(QColor(0, 0, 0, 150))
label.setStyleSheet("color: #bbbbbb;")
QColor(128, 128, 128)
```
```python
# ALWAYS: ≤4 parameters
def process_game(game_id: str, config: dict) -> Game:
"""Process game data."""
...
# ALWAYS: Early returns
if not condition1:
return
if not condition2:
return
# ALWAYS: Logging
from portprotonqt.logger import get_logger
logger = get_logger(__name__)
logger.info("Game %s started", name)
# ALWAYS: Explicit subprocess arguments
subprocess.run(["cmd", "arg1", "arg2"])
# ALWAYS: Environment variables
API_KEY = os.getenv("API_KEY")
# ALWAYS: Sanitize paths
file_path = os.path.join(BASE_DIR, os.path.basename(user_filename))
# ALWAYS: Use theme constants for styles
shadow.setBlurRadius(self.theme.shadow_blur_radius)
shadow.setColor(QColor(self.theme.color_shadow_card))
label.setStyleSheet(self.theme.CONTENT_STYLE)
QColor(self.theme.color_disabled_text)
# ALWAYS: Add new constants to theme files
# New colors → portprotonqt/themes/standart/styles/constants.py
# New QSS styles → portprotonqt/themes/standart/styles/base.py or submodule
# Never add style constants to application code
```
---
## Code Modification Rules
- NEVER rewrite entire file unless explicitly requested
- Modify only the relevant section
- Preserve existing architecture and naming
- Do not auto-format unrelated code
- Do not reorder imports unless necessary
- Do not introduce abstractions without request
- Do not change logging system
- Do not change public APIs without reason
- Do not add dependencies unless required
- Do not refactor unrelated code
- Do not add comments for obvious code
- **NEVER leave outdated comments after refactoring** (e.g., "without numpy" after numpy removal, "legacy" after rewrite)
- **ALWAYS update or remove comments that reference removed dependencies, patterns, or context**
- **NEVER leave stub/no-op functions** (e.g., `def func(): pass` with comment "removed")
- **When removing a feature, delete the function entirely, not stub it**
- Never invent modules
- Do not move files unless requested
- Do not create new files for organization (unless task requires a new module)
- No circular imports
- Prefer dedicated functions for subprocess calls when practical within task scope
- No shared mutable global state (except logger and explicit cache/session infrastructure)
**ALWAYS:**
- Minimal diff
- Targeted changes only
- Preserve existing patterns
- Keep surrounding code unchanged
---
## LLM Prohibitions
**Specific prohibitions for AI-generated code:**
- Add type hints to existing code unless requested (new code MUST include type hints)
- Replace existing patterns with "better" alternatives
- Consolidate similar code blocks
- Extract methods or functions without request
- Add validation or error handling outside the modified block unless it fixes a security issue or directly supports the current change
- Generate boilerplate or scaffolding
- Add configuration options
- Create new files for "organization" (unless explicitly requested for a new module)
- Split or merge existing modules
- Change function signatures
- Modify docstrings unnecessarily
- Add or remove blank lines for "style"
- Normalize or standardize code patterns
- Invent CLI arguments, config files, API endpoints, environment variables, theme structures, or localization keys
---
## AI Permissions
AI agents MAY:
- Fix obvious bugs within the modified block
- Improve variable naming inside the modified block
- Add missing logging if required by policy
- Add missing validation or error handling in new/modified code when required by this policy
- Add missing type hints in new functions
---
## Performance Rules
- No blocking I/O in UI thread
- No synchronous HTTP in UI thread
- Cache API responses in `~/.cache/PortProtonQt`
- Avoid repeated disk reads in loops
- Avoid O(n²) in game lists
- Lazy load images
- Limit threads to CPU cores
### Clarification: "No Shared Mutable Global State" Does NOT Mean Removing Caches
Rule intent: avoid shared mutable globals that hold application state or cause hidden side effects.
This does not prohibit:
- Module-level cache constants (e.g., cache TTL values)
- Dedicated cache managers or classes with explicit lifecycle
- Disk caches under `~/.cache/PortProtonQt`
- `requests.Session()` objects if they are encapsulated and not mutated unpredictably
Do not delete or disable caching or downloaders to satisfy this rule. Caching is required by the Performance Rules ("Cache API responses in `~/.cache/PortProtonQt`" and "Avoid repeated disk reads in loops").
---
## PySide6 Rules
- No business logic in widgets
- Use signals/slots (no direct coupling)
- No heavy operations in paintEvent
- Use methods instead of lambda for complex logic
- Use QThread for long tasks
---
## Refactoring Constraints
- Max 1 business module per task (unless explicitly requested)
- Related technical files are allowed in the same task (`meson.build`, tests, theme constants)
- Preserve git blame
- Avoid renaming unless necessary
---
## When Uncertain
Ask before proceeding if unsure about:
- Architecture
- Naming
- Design decisions
Do not assume conventions. Never invent behavior.
---
## Development Workflow
```bash
# Setup
uv python install 3.10
uv sync
source .venv/bin/activate
pre-commit install --install-hooks
# Run
portprotonqt
# Manual checks
pre-commit run --all-files
# Build
meson setup builddir && meson compile -C builddir
# Localization
python dev-scripts/l10n.py --update-all
python dev-scripts/l10n.py
# Commit
git commit -m "feat: description in English ≤72 chars"
```
### Pre-commit Hooks
| Hook | Checks |
|------|--------|
| uv-lock | uv.lock up to date |
| ruff-check | Linting (E, W, F, B, C4, UP) |
| pyright | Type checking |
| bash-n | Bash syntax check for `build-aux/share/portproton/scripts/` |
| check-meson | meson.build syntax + files |
| check-qss-properties | Theme QSS validation |
| trailing-whitespace | Whitespace cleanup |
| end-of-file-fixer | EOF newline |
### Linting and Type-Checking
AI agents MUST NOT run linting or type-checking tools directly.
#### Forbidden
- Running `ruff`
- Running `pyright`
- Running `uv run ruff`
- Running `uv run pyright`
- Running any linter/type checker binary directly
- Installing dev tools automatically
These tools are executed ONLY via pre-commit hooks.
#### Allowed
- `pre-commit run --all-files`
- `pre-commit run ruff-check`
- `pre-commit run pyright`
#### Rationale
`ruff` and `pyright` are managed by pre-commit.
Direct execution bypasses project configuration and is forbidden.
Do not attempt to execute binaries manually.
---
## AI Agent Checklist
### Writing Code
- [ ] New/rewritten functions ≤50 lines, ≤4 params
- [ ] New/modified code nesting ≤4 levels
- [ ] LF line endings, 4-space indent
- [ ] No excessive blank lines, no trailing whitespace
- [ ] Type hints (required for new code)
- [ ] Logging via `portprotonqt.logger`
- [ ] New/modified code handles expected/recoverable failures
- [ ] New installable Python files added to `portprotonqt/meson.build`
- [ ] Comments in English, concise
- [ ] No circular imports introduced by the change
- [ ] Prefer dedicated functions for subprocess calls when practical within task scope
- [ ] No shared mutable global state (except logger and explicit cache/session infrastructure)
- [ ] No blocking calls introduced in the UI thread
- [ ] **No hardcoded styles or constants (use theme constants)**
- [ ] **New constants added to theme files only**
### Refactoring
- [ ] No code duplicates (only if directly related to current task)
- [ ] No unused imports
- [ ] No commented-out code
- [ ] No TODO without tickets
- [ ] Clear variable names
### Dependencies
- [ ] Prefer standard library
- [ ] No heavy frameworks
- [ ] No async frameworks (use QThread instead)
- [ ] No additional logging libraries
- [ ] License GPL-3.0 compatible
- [ ] If dependencies are added: added to `pyproject.toml`
- [ ] If dependencies change: `uv lock` run
---
## Error Handling Policy
### When to Rethrow
| Condition | Action | Example |
|-----------|--------|---------|
| Cannot handle locally | Rethrow | API errors in business logic |
| Need to add context | Wrap & rethrow | `raise ValueError(f"Invalid game ID: {game_id}") from e` |
| Public API boundary | Rethrow | Let caller decide |
| Expected & recoverable | Handle with fallback (log when useful) | Cache miss → fetch from source |
```python
# Bad: Silent swallow
try:
data = load_config()
except Exception:
pass
# Good: Rethrow with context
try:
data = load_config()
except FileNotFoundError as e:
raise ConfigError(f"Config not found: {path}") from e
```
### When to Log and Continue
| Condition | Action | Example |
|-----------|--------|---------|
| Non-critical failure | Log, continue | Thumbnail download failed |
| Fallback available | Log, use fallback | Cache miss → network request |
| Best-effort operation | Log, skip | Optional metadata |
| User notification only | Log, notify UI | Network timeout |
```python
# Log and continue for non-critical
try:
cover = download_cover(url)
except requests.RequestException as e:
logger.warning("Cover download failed: %s", e)
cover = QPixmap() # Use placeholder
```
### When to Fail Fast
| Condition | Action | Example |
|-----------|--------|---------|
| Critical dependency | Raise immediately | Database connection lost |
| Data corruption | Raise immediately | Invalid config format |
| Security violation | Raise immediately | Path traversal attempt |
| Unrecoverable state | Raise immediately | Missing required file |
```python
# Fail fast for critical
if not config_path.exists():
raise ConfigError(f"Required config missing: {config_path}")
```
### Exception Hierarchy
```python
# Base exception for application errors
class PortProtonError(Exception):
"""Base exception for PortProtonQt."""
# Domain-specific exceptions
class ConfigError(PortProtonError):
"""Configuration-related errors."""
class APIError(PortProtonError):
"""External API errors."""
class ValidationError(PortProtonError):
"""Input validation errors."""
class ParseError(PortProtonError):
"""Parsing-related errors."""
```
### Error Handling Patterns
```python
# Pattern 1: Guard clauses for validation
def process_game(game_id: str) -> Game:
if not game_id:
raise ValidationError("Game ID required")
...
# Pattern 2: Context manager for resources
with open(path) as f:
data = json.load(f)
# Pattern 3: Specific exception handling
try:
response = requests.get(url, timeout=5)
except requests.Timeout:
logger.warning("Request timeout for %s", url)
return None
except requests.ConnectionError:
logger.error("Connection failed for %s", url)
raise APIError("Network unavailable") from None
# Pattern 4: Exception chaining
try:
value = int(text)
except ValueError as e:
raise ParseError(f"Invalid integer: {text}") from e
```
### UI Thread Rules
| Context | Strategy |
|---------|----------|
| UI thread | Never block, use signals for errors |
| Worker thread | Catch, emit error signal |
| Async operations | Return error in result tuple |
```python
# Worker thread pattern
def run_in_thread():
try:
result = long_operation()
success_signal.emit(result)
except Exception as e:
logger.error("Operation failed: %s", e)
error_signal.emit(str(e))
```
### Logging Guidelines
| Level | When to Use |
|-------|-------------|
| DEBUG | Detailed diagnostic info |
| INFO | Normal operation events |
| WARNING | Recoverable issues |
| ERROR | Failures requiring attention |
| CRITICAL | System-wide failures |
```python
# Log with context
logger.error("Failed to load game %s: %s", game_id, e)
# Include stack trace for unexpected errors
try:
...
except Exception as e:
logger.exception("Unexpected error processing %s", game_id)
```
### Forbidden Patterns
```python
# NEVER: Bare except
try:
...
except:
pass
# NEVER: Catch Exception without logging
try:
...
except Exception:
pass
# NEVER: Silent failures in critical paths
if not critical_file.exists():
return None # Should raise
# NEVER: Multiple exceptions in one handler (unless re-throwing as a unified domain exception)
try:
...
except (FileNotFoundError, ValueError, TypeError, KeyError):
pass # Each needs separate handling
```
---
## Code Style
### Imports
```python
# Standard library
import os
from pathlib import Path
# Third-party
from PySide6.QtWidgets import QApplication
import requests
# Local
from portprotonqt.steam_api import SteamAPI
from portprotonqt.logger import get_logger
```
### Type Hints
```python
def get_game(game_id: str, cache: dict | None = None) -> Game | None:
...
class Game:
name: str
playtime: int
cover_url: str | None
```
### Theme Constants
All style-related constants MUST be defined in theme files, not in application code.
**File structure for theme constants:**
- `portprotonqt/themes/standart/styles/constants.py` — Color constants, sizes, shadow values
- `portprotonqt/themes/standart/styles/base.py` — Global widget styles (MAIN_WINDOW_STYLE, etc.)
- `portprotonqt/themes/standart/styles/game_card.py` — Game card specific styles
- `portprotonqt/themes/standart/styles/detail_page.py` — Detail page styles
- `portprotonqt/themes/standart/styles/settings.py` — Settings dialog styles
- `portprotonqt/themes/standart/styles/get_wine.py` — Wine manager styles
- `portprotonqt/themes/standart/styles/winetricks.py` — Winetricks styles
- `portprotonqt/themes/standart/styles/theme_utils.py` — Utility styles (context menus, etc.)
**Adding new constants:**
```python
# In constants.py — add color constant
color_new_feature = "#FF5733"
# In constants.py — add size constant
new_widget_size = 42
# In base.py or submodule — add QSS style
NEW_WIDGET_STYLE = f"""
QWidget {{
background: {color_new_feature};
border-radius: {border_radius_a};
}}
"""
```
**Usage in application code:**
```python
# Bad: Hardcoded in application code
shadow.setBlurRadius(20)
label.setStyleSheet("color: #bbbbbb;")
# Good: Use theme constants
shadow.setBlurRadius(self.theme.shadow_blur_radius)
label.setStyleSheet(self.theme.CONTENT_STYLE)
```
### Comments
```python
# NEVER: Russian or verbose
# Проверить существование файла
# ALWAYS: Concise English
# Check if file exists
if os.path.exists(path):
...
# ALWAYS: Docstrings for public APIs
def check_file_exists(path: str) -> bool:
"""Check if file exists at given path."""
...
```
---
## Code Review Guidelines
Review scope: prioritize new/modified code. Existing unrelated legacy issues should not block unless they are CRITICAL security issues. Development scripts under `dev-scripts/` follow their exemption rules unless explicitly requested.
### Security (CRITICAL)
- Hardcoded credentials
- SQL injection risks
- Missing input validation on external boundaries (user input, files, network, subprocess args)
- Insecure dependencies
- Path traversal risks
- `shell=True` in subprocess
### Code Quality (HIGH)
- New/rewritten functions >50 lines
- New/rewritten functions >4 params
- New/rewritten files >800 lines
- New/modified code nesting >4 levels
- Missing error handling for expected/recoverable failures in new/modified code
- Circular imports introduced by the change
- Shared mutable global state introduced in new/modified code (except logger and explicit cache/session infrastructure)
- Blocking calls introduced in the UI thread
### Performance (MEDIUM)
- O(n²) when O(n log n) possible
- Missing caching
- N+1 queries
### Best Practices (MEDIUM)
- Emoji usage
- TODO without tickets
- Poor variable naming (x, tmp, data)
- Magic numbers
- Non-English comments
- **Hardcoded styles or constants (colors, sizes, shadow values, etc.)**
### Review Output
```
[CRITICAL] Hardcoded API key
File: portprotonqt/steam_api.py:42
Issue: API key exposed in source code
Fix: Use environment variable
API_KEY = "sk-abc123" # Bad
API_KEY = os.getenv("API_KEY") # Good
[MEDIUM] Hardcoded style value
File: portprotonqt/game_card.py:81
Issue: Shadow color hardcoded instead of using theme
Fix: Use theme constant
shadow.setColor(QColor(0, 0, 0, 150)) # Bad
shadow.setColor(QColor(self.theme.color_shadow_card)) # Good
```
### Approval
- **Approve:** No CRITICAL or HIGH issues
- **Warning:** MEDIUM issues only
- **Block:** CRITICAL or HIGH issues found
---
## Meson Build Guidelines
The `check-meson` hook validates `meson.build` on commit.
**Checks:**
- Syntax: brackets, quotes, commas, control structures
- All `.py` files in `install_data()`
- No duplicates or missing files
### Adding Files
```meson
# portprotonqt/meson.build
install_data(
['existing.py',
'new_module.py',
],
install_dir: pythondir / meson.project_name(),
)
```
### Common Errors
```meson
# Bad: Missing comma # Bad: Unclosed
install_data( install_data(
'file1.py' 'file1.py',
'file2.py' 'file2.py'
) # Missing )
# Good
install_data(
'file1.py',
'file2.py',
)
```
---
## Project Structure
```
PortProtonQt/
├── portprotonqt/ # Python package
│ ├── app.py # Entry point
│ ├── main_window.py # Main window
│ ├── game_card.py # Game card widget
│ ├── steam_api.py # Steam integration
│ ├── egs_api.py # Epic Games integration
│ ├── theme_manager.py # Theme management
│ ├── logger.py # Logging
│ └── themes/ # Theme files
├── build-aux/ # Build resources
├── dev-scripts/ # Development scripts
├── documentation/ # Documentation
├── meson.build # Meson config
├── pyproject.toml # Python config
└── .pre-commit-config.yaml
```
---
## Development Scripts
**`dev-scripts/`** contains development utilities that are not part of the application codebase.
**Policy:**
- Scripts in `dev-scripts/` are exempt from code quality guidelines
- No type hints, linting, or code style requirements apply
- These scripts are for developer convenience only
- Do not refactor or improve dev-scripts unless explicitly requested
---
## Dependencies
### Core
| Package | Purpose | License |
|---------|---------|---------|
| PySide6 | GUI | LGPL |
| Legendary | EGS integration | GPL-3.0 |
| Icoextract | Icon extraction | MIT |
| Requests | HTTP | Apache-2.0 |
| Pillow | Image handling | MIT |
**License compatibility:**
- MIT, Apache-2.0, BSD: Compatible
- LGPL: Requires dynamic linking
- Proprietary: Incompatible
---
## Resources
- [Theme documentation](documentation/theme_guide)
- [Localization guide](documentation/localization_guide)
- [Metadata override guide](documentation/metadata_override)
- [TODO list](TODO.md)
- [Changelog](CHANGELOG.md)
---
**Last updated:** 2026-03-10
**Version:** 1.2
**Status:** Release
+83
View File
@@ -3,6 +3,89 @@
Все заметные изменения в этом проекте фиксируются в этом файле.
Формат основан на [Keep a Changelog](https://keepachangelog.com/) и придерживается принципов [Semantic Versioning](https://semver.org/).
## [0.1.12] - 2026-04-17
### Added
- В настройки PortProton добавлена галочка добавления/удаления инструмента совместимости Steam
- В настройки библиотеки добавлен скрытый тип отображения бейджей
- Добавлена валидация конфига
- Аргумент командной строки `--add-steam-compat-tool` для использования PortProtonQt как инструмента совместимости Steam
- Аргумент командной строки `--reinstall-steam-compat-tool` для переустановки инструмента совместимости Steam в пользовательском каталоге
- Аргумент командной строки `--remove-steam-compat-tool` для удаления инструмента совместимости Steam из пользовательского каталога
- В репозиторий добавлен пакет `portprotonqt-steam-compat` для глобального добавления PortProtonQt как инструмента совместимости Steam
- Добавлена кнопка настроек для игр из Steam, если PortProtonQt используется как инструмент совместимости
- Добавлен прогресс-бар скачивания Wine на детальной странице игры
- Возможность прямого запуска `.exe` через CLI
- Ленивая загрузка данных автоустановок: обложки и метаданные не загружаются, если вкладка скрыта в настройках или пользователь на неё не заходит
- Добавлена кнопка Cancel в диалог управления Wine/Proton для закрытия в WM без рамок окна
- Аргумент командной строки `--resolution` для запуска приложения с определённым разрешением (например, 1920x1080)
- В настройки `.exe` добавлены параметры MangoHud
- В настройки `.exe` добавлены параметры Gamescope
- В настройки `.exe` добавлен выбор второго `.exe` через встроенный файловый менеджер
- В настройки библиотеки добавлен выбор типа бейджей: `Детальный` и `Компактный`
- Создания нового префикса
- Автодополнение fish и zsh для команды `portprotonqt`.
- В диалог добавления/редактирования игры добавлены галочки добавления в Steam, меню и на рабочий стол
- В настройки добавлены опции автозапуска и запуска приложения сразу в трей
- Добавлена поддержка запуска `.iso` (CLI, drag-and-drop и диалог добавления игры)
- На вкладке MangoHud добавлена кнопка записи системного `MangoHud.conf` из текущего env-конфига
- Добавлена вкладка `System` с разделами WIFI, VPN, Bluetooth, Storage, Audio и Power (включается через `--ppqtos`)
- Добавлен аргумент командной строки `--ppqtos` для открытия вкладки `System`
### Changed
- Проверка подключения к интернету теперь использует Yandex как основной сервер с Google в качестве fallback
- Переработан внешний вид вкладки «Настройки PortProton»
- Детальная страница игры адаптирована под маленькие экраны
- На детальной странице Steam-игр добавлена кнопка «Открыть папку с игрой»
- При добавлении и удалении игры из Steam теперь не пишется о необходимости перезапуска, если используется CEF, а не VDF
- Все комментарии в коде переведены на английский язык
- Все комментарии в коде теперь используют модуль logger
- При включении MangoHud в настройках exe также добавляется `MANGOHUD_CONFIG`, если его нет
- Начат рефакторинг скриптов
- Ускорен запуск программы на ~47%
- Снижение потребления памяти на ~17%
- pyproject теперь используется только как менеджер зависимостей для UV, сборка через него больше невозможна
- Скриншоты в metainfo теперь размера 1000x700 для соответствия стандартам Flathub
- Все подсказки при наведении теперь имеют общий вид
- Все константы теперь вынесены в файлы тем
- Все контекстные меню теперь имеют общий вид
- Все таблицы теперь имеют общий вид
- На вкладке «Темы» добавлена явная подсветка фокуса для списка тем, карусели скриншотов и кнопки применения
- Удалены подписи скриншотов тем
- Системный оверлей переработан и перенесён в отдельную вкладку `System`
### Fixed
- Исправлены высокая нагрузка на CPU и утечка памяти при изменении размера карточек
- Скачивание обложек со SteamGridDB теперь асинхронное и не вызывает зависание окна
- Уменьшен таймаут запроса к SteamGridDB с 10 до 3 секунд, чтобы не тормозить запуск при медленном 404
- Запуск игр из трея
- Исправлено обновление сетки библиотеки при удалении карточки игры
- Исправлено отображение пустых вложенных подменю в трее в Dank Material Shell и GNOME.
- Получение статуса античита для игр из Steam
- Кэш обложек со SteamCDN
- Исправлена эмуляция прокрутки через Bluetooth-геймпад в режиме эмуляции мыши
- Исправлен выбор статистики времени: теперь приоритет у совпадающего `sha256` `.exe`, затем у точного пути, а при удалении игры очищается её запись в `data/tmp/statistics`
- Исправлены некорректные комментарии в CSS для combobox
- Исправлена валидация синтаксиса комментариев CSS и опечатки в winetricks.py
- Перевод кнопок «Yes»/«No» в QMessageBox
- Виртуальная клавиатура теперь открывается сверху, если перекрывает поле ввода
- Кнопка «Загрузить резервную копию префикса» больше не выходит за границы окна
- Подсказки управления больше не накладываются друг на друга в маленьком окне
- Исправлено некорректное попадание фокуса на метаинформацию темы при навигации геймпадом
- Навигация геймпадом на вкладке «Темы» ограничена элементами: список тем, карусель скриншотов и кнопка «Применить тему»
- При наличии `custom_data` отключены сетевые запросы обложек к SGDB и SteamCDN для карточек игр
- Отключён автоскролл `QComboBox` колесом мыши, когда выпадающий список закрыт
- Исправлен поиск `.desktop` при несовпадении имени карточки и файла (в том числе после редактирования): добавлено сопоставление через `custom_data/*/metadata.txt` (`name`) с fallback по данным `.desktop`
- Виртуальная клавиатура теперь адаптирует ширину кнопок под размер окна
- Усилена общая безопасность механизма пользовательских тем, включая валидацию, проверки загрузки и устойчивость к некорректным/потенциально опасным темам
- Улучшено формирование ссылок WeAntiCheatYet
### Contributors
- @Simple16
- @Dervart
---
## [0.1.11] - 2026-02-18
### Added
Symlink
+1
View File
@@ -0,0 +1 @@
AGENTS.md
Symlink
+1
View File
@@ -0,0 +1 @@
AGENTS.md
Symlink
+1
View File
@@ -0,0 +1 @@
AGENTS.md
+6 -2
View File
@@ -9,7 +9,9 @@
```sh
uv python install 3.10
uv sync
source .venv/bin/activate
source .venv/bin/activate # For bash/zsh
# or
source .venv/bin/activate.fish # For fish
```
Запуск производится по команде portprotonqt
@@ -27,7 +29,9 @@ source .venv/bin/activate
```sh
uv python install 3.10
uv sync --all-extras --dev
source .venv/bin/activate
source .venv/bin/activate # For bash/zsh
# or
source .venv/bin/activate.fish # For fish
pre-commit install
```
+3 -4
View File
@@ -5,11 +5,10 @@
- [X] Добавить систему тем [Документация](documentation/theme_guide)
- [X] Вынести все константы, такие как уровень закругления карточек, в темы (частично выполнено)
- [X] Добавить метаданные для тем (скриншоты, описание, домашняя страница и автор)
- [ ] Продумать систему вкладок вместо текущей
- [X] [Добавить сессию Gamescope, аналогичную той, что используется в SteamOS](https://git.linux-gaming.ru/Boria138/gamescope-session-portprotonqt)
- [X] Разобраться почему теряется часть стилей в Gamescope
- [ ] Разработать адаптивный дизайн (за эталон берётся Steam Deck с разрешением 1280×800)
- [ ] Переделать скриншоты для соответствия [гайдлайнам Flathub](https://docs.flathub.org/docs/for-app-authors/metainfo-guidelines/quality-guidelines#screenshots)
- [x] Разработать адаптивный дизайн (за эталон берётся 1000x700 из гайдлайнов Flathub)
- [x] Переделать скриншоты для соответствия [гайдлайнам Flathub](https://docs.flathub.org/docs/for-app-authors/metainfo-guidelines/quality-guidelines#screenshots)
- [X] Получать описания и названия игр из базы данных Steam
- [X] Получать обложки для игр из CDN Steam
- [X] Оптимизировать работу со Steam API для ускорения времени запуска
@@ -22,7 +21,7 @@
- [X] Добавить сортировку карточек по различным критериям (доступны: по недавности, количеству наигранного времени, избранному или алфавиту)
- [X] Добавить индикацию запуска приложения
- [X] Достигнуть паритета функциональности с Ingame
- [ ] Достигнуть паритета функциональности с PortProton (остались настройки игр и обновление скриптов)
- [ ] Достигнуть паритета функциональности с PortProton (остались обновление скриптов)
- [X] Добавить возможность изменения названия, описания и обложки через файлы `.local/share/PortProtonQT/custom_data/exe_name/{desc,name,cover}`
- [X] Добавить встроенное переопределение названия, описания и обложки, например, по пути `portprotonqt/custom_data` [Документация](documentation/metadata_override/)
- [X] Добавить переводы в переопределения
+35 -6
View File
@@ -1,14 +1,14 @@
pkgname=portprotonqt
pkgver=0.1.11
pkgname=('portprotonqt' 'portprotonqt-steam-compat')
pkgver=0.1.12
pkgrel=1
pkgdesc="Modern GUI for managing and launching games from PortProton, Steam, and Epic Games Store"
arch=('any')
url="https://git.linux-gaming.ru/Boria138/PortProtonQt"
license=('GPL-3.0')
depends=('python-requests' 'python-babel' 'python-evdev' 'python-pyudev' 'python-orjson'
'python-psutil' 'python-tqdm' 'python-vdf' 'python-libarchive-c' 'pyside6' 'python-rapidfuzz' 'icoextract' 'python-pillow' 'perl-image-exiftool' 'python-beautifulsoup4' 'python-websocket-client' 'cabextract' 'unzip' 'curl' 'unrar' 'qt6-svg' 'pciutils' 'mesa-utils' 'vulkan-icd-loader')
'python-psutil' 'python-tqdm' 'python-vdf' 'python-libarchive-c' 'pyside6' 'python-rapidfuzz' 'icoextract' 'python-pillow' 'perl-image-exiftool' 'python-beautifulsoup4' 'python-websocket-client' 'cabextract' 'unzip' 'curl' 'unrar' 'qt6-svg' 'pciutils' 'mesa-utils' 'vulkan-icd-loader' '7zip')
depends_aarch64=('muvm')
makedepends=('meson' 'ninja' 'vulkan-headers')
makedepends=('meson' 'ninja' 'vulkan-headers' 'gettext')
source=("git+https://git.linux-gaming.ru/Boria138/PortProtonQt#tag=v$pkgver")
sha256sums=('SKIP')
@@ -17,6 +17,35 @@ build() {
meson compile -C build
}
package() {
meson install -C build --destdir "$pkgdir"
package_portprotonqt() {
pkgdesc="Modern GUI for managing and launching games from PortProton, Steam, and Epic Games Store"
optdepends=(
'networkmanager: System tab network management'
'bluez: System tab bluetooth management'
'upower: System tab bluetooth battery level'
'libpulse: System tab audio volume/output management'
'python-dbus-fast: System tab D-Bus integration'
'python-qrcode: Wi-Fi QR code generation'
)
DESTDIR="$pkgdir" meson install -C build --skip-subprojects
bash "$srcdir/PortProtonQt/dev-scripts/generate-completions.sh"
install -Dpm 0644 "$srcdir/PortProtonQt/completions/portprotonqt" -t "$pkgdir/usr/share/bash-completion/completions"
install -Dpm 0644 "$srcdir/PortProtonQt/completions/portprotonqt.fish" -t "$pkgdir/usr/share/fish/vendor_completions.d"
install -Dpm 0644 "$srcdir/PortProtonQt/completions/_portprotonqt" -t "$pkgdir/usr/share/zsh/site-functions"
# Remove steam-compat files from main package
rm -rf "$pkgdir/usr/share/steam"
}
package_portprotonqt-steam-compat() {
pkgdesc="Steam compatibility tool for PortProtonQt"
depends=('portprotonqt')
DESTDIR="$pkgdir" meson install -C build --skip-subprojects
# Keep only steam-compat files
find "$pkgdir/usr" -mindepth 1 -type f -not -path "${pkgdir}/usr/share/steam*" -print0 | xargs -0 rm -f
find "$pkgdir/usr" -mindepth 1 -type d -not -path "${pkgdir}/usr/share/steam*" -empty -delete
}
+35 -6
View File
@@ -1,14 +1,14 @@
pkgname=portprotonqt-git
pkgname=('portprotonqt-git' 'portprotonqt-git-steam-compat')
pkgver=.
pkgrel=1
pkgdesc="Modern GUI for managing and launching games from PortProton, Steam, and Epic Games Store.(developerment build)"
pkgdesc="Modern GUI for managing and launching games from PortProton, Steam, and Epic Games Store (development build)"
arch=('any')
url="https://git.linux-gaming.ru/Boria138/PortProtonQt"
license=('GPL-3.0')
depends=('python-requests' 'python-babel' 'python-evdev' 'python-pyudev' 'python-orjson'
'python-psutil' 'python-tqdm' 'python-vdf' 'python-libarchive-c' 'pyside6' 'python-rapidfuzz' 'icoextract' 'python-pillow' 'perl-image-exiftool' 'python-beautifulsoup4' 'python-websocket-client' 'cabextract' 'unzip' 'curl' 'unrar' 'qt6-svg' 'pciutils' 'mesa-utils' 'vulkan-icd-loader')
'python-psutil' 'python-tqdm' 'python-vdf' 'python-libarchive-c' 'pyside6' 'python-rapidfuzz' 'icoextract' 'python-pillow' 'perl-image-exiftool' 'python-beautifulsoup4' 'python-websocket-client' 'cabextract' 'unzip' 'curl' 'unrar' 'qt6-svg' 'pciutils' 'mesa-utils' 'vulkan-icd-loader' '7zip')
depends_aarch64=('muvm')
makedepends=('meson' 'ninja' 'vulkan-headers')
makedepends=('meson' 'ninja' 'vulkan-headers' 'gettext')
source=("git+https://git.linux-gaming.ru/Boria138/PortProtonQt.git")
sha256sums=('SKIP')
@@ -22,6 +22,35 @@ build() {
meson compile -C build
}
package() {
meson install -C build --destdir "$pkgdir"
package_portprotonqt-git() {
pkgdesc="Modern GUI for managing and launching games from PortProton, Steam, and Epic Games Store (development build)"
optdepends=(
'networkmanager: System tab network management'
'bluez: System tab bluetooth management'
'upower: System tab bluetooth battery level'
'libpulse: System tab audio volume/output management'
'python-dbus-fast: System tab D-Bus integration'
'python-qrcode: Wi-Fi QR code generation'
)
DESTDIR="$pkgdir" meson install -C build --skip-subprojects
bash "$srcdir/PortProtonQt/dev-scripts/generate-completions.sh"
install -Dpm 0644 "$srcdir/PortProtonQt/completions/portprotonqt" -t "$pkgdir/usr/share/bash-completion/completions"
install -Dpm 0644 "$srcdir/PortProtonQt/completions/portprotonqt.fish" -t "$pkgdir/usr/share/fish/vendor_completions.d"
install -Dpm 0644 "$srcdir/PortProtonQt/completions/_portprotonqt" -t "$pkgdir/usr/share/zsh/site-functions"
# Remove steam-compat files from main package
rm -rf "$pkgdir/usr/share/steam"
}
package_portprotonqt-git-steam-compat() {
pkgdesc="Steam compatibility tool for PortProtonQt (development build)"
depends=('portprotonqt-git')
DESTDIR="$pkgdir" meson install -C build --skip-subprojects
# Keep only steam-compat files
find "$pkgdir/usr" -mindepth 1 -type f -not -path "${pkgdir}/usr/share/steam*" -print0 | xargs -0 rm -f
find "$pkgdir/usr" -mindepth 1 -type d -not -path "${pkgdir}/usr/share/steam*" -empty -delete
}
+33 -5
View File
@@ -1,5 +1,5 @@
%global pypi_name portprotonqt
%global pypi_version 0.1.11
%global pypi_version 0.1.12
%global oname PortProtonQt
%global build_timestamp %(date +"%Y%m%d")
%global _python_no_extras_requires 1
@@ -19,7 +19,10 @@ BuildRequires: meson >= 0.61.2
BuildRequires: ninja-build
BuildRequires: python3-devel
BuildRequires: git
BuildRequires: gettext
BuildRequires: systemd-rpm-macros
BuildRequires: vulkan-loader-devel
BuildRequires: gcc
Obsoletes: python3-%{pypi_name}-git < %{version}-%{release}
Provides: python3-%{pypi_name}-git = %{version}-%{release}
@@ -50,6 +53,15 @@ Requires: unrar
Requires: glx-utils
Requires: pciutils
Requires: vulkan-loader
Requires: 7zip
# System Tab
Recommends: NetworkManager
Recommends: bluez
Recommends: upower
Recommends: pulseaudio-utils
Recommends: python3-dbus-fast
Recommends: python3-qrcode
%ifarch aarch64
Requires: muvm
@@ -58,10 +70,16 @@ Requires: muvm
%description
This application provides a sleek, intuitive graphical interface for managing and launching games from PortProton, Steam, and Epic Games Store. It consolidates your game libraries into a single, user-friendly hub for seamless navigation and organization. Its lightweight structure and cross-platform support deliver a cohesive gaming experience, eliminating the need for multiple launchers. Unique PortProton integration enhances Linux gaming, enabling effortless play of Windows-based titles with minimal setup.
%{?python_disable_dependency_generator}
%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}
BuildRequires: vulkan-loader-devel
BuildRequires: gcc
%description -n %{pypi_name}-git-steam-compat
Steam compatibility tool integration for PortProtonQt. This package installs
the necessary files to use PortProtonQt as a Proton compatibility tool in Steam.
%{?python_disable_dependency_generator}
%prep
git clone https://git.linux-gaming.ru/Boria138/PortProtonQt.git
@@ -76,16 +94,26 @@ cd %{oname}
%install
cd %{oname}
%meson_install
bash ./dev-scripts/generate-completions.sh
install -Dpm 0644 ./completions/portprotonqt -t %{buildroot}%{bash_completions_dir}
install -Dpm 0644 ./completions/portprotonqt.fish -t %{buildroot}%{fish_completions_dir}
install -Dpm 0644 ./completions/_portprotonqt -t %{buildroot}%{zsh_completions_dir}
%find_lang %{pypi_name}
%files -f %{oname}/%{pypi_name}.lang
%{_bindir}/%{pypi_name}
%{_bindir}/vk_gpu_info
%{python3_sitelib}/%{pypi_name}/
%{_datadir}/icons/hicolor/scalable/apps/ru.linux_gaming.PortProtonQt.svg
%{_metainfodir}/ru.linux_gaming.PortProtonQt.metainfo.xml
%{_udevrulesdir}/60-portprotonqt.rules
%{_datadir}/polkit-1/rules.d/ru.linux_gaming.PortProtonQt.rules
%{_datadir}/applications/ru.linux_gaming.PortProtonQt.desktop
%{bash_completions_dir}/portprotonqt
%{_bindir}/vk_gpu_info
%{fish_completions_dir}/portprotonqt.fish
%{zsh_completions_dir}/_portprotonqt
%files -n %{pypi_name}-git-steam-compat
%{_datadir}/steam/compatibilitytools.d/PortProtonQt/
%changelog
+33 -5
View File
@@ -1,5 +1,5 @@
%global pypi_name portprotonqt
%global pypi_version 0.1.11
%global pypi_version 0.1.12
%global oname PortProtonQt
%global _python_no_extras_requires 1
@@ -16,7 +16,10 @@ BuildRequires: meson >= 0.61.2
BuildRequires: ninja-build
BuildRequires: python3-devel
BuildRequires: git
BuildRequires: gettext
BuildRequires: systemd-rpm-macros
BuildRequires: vulkan-loader-devel
BuildRequires: gcc
Obsoletes: python3-%{pypi_name} < %{version}-%{release}
Provides: python3-%{pypi_name} = %{version}-%{release}
@@ -47,6 +50,15 @@ Requires: unrar
Requires: glx-utils
Requires: pciutils
Requires: vulkan-loader
Requires: 7zip
# System Tab
Recommends: NetworkManager
Recommends: bluez
Recommends: upower
Recommends: pulseaudio-utils
Recommends: python3-dbus-fast
Recommends: python3-qrcode
%ifarch aarch64
Requires: muvm
@@ -55,10 +67,16 @@ Requires: muvm
%description
This application provides a sleek, intuitive graphical interface for managing and launching games from PortProton, Steam, and Epic Games Store. It consolidates your game libraries into a single, user-friendly hub for seamless navigation and organization. Its lightweight structure and cross-platform support deliver a cohesive gaming experience, eliminating the need for multiple launchers. Unique PortProton integration enhances Linux gaming, enabling effortless play of Windows-based titles with minimal setup.
%{?python_disable_dependency_generator}
%package -n %{pypi_name}-steam-compat
Summary: Steam compatibility tool for PortProtonQt
License: GPL-3.0
Requires: %{pypi_name} = %{version}-%{release}
BuildRequires: vulkan-loader-devel
BuildRequires: gcc
%description -n %{pypi_name}-steam-compat
Steam compatibility tool integration for PortProtonQt. This package installs
the necessary files to use PortProtonQt as a Proton compatibility tool in Steam.
%{?python_disable_dependency_generator}
%prep
git clone https://git.linux-gaming.ru/Boria138/PortProtonQt
@@ -75,16 +93,26 @@ cd %{oname}
%install
cd %{oname}
%meson_install
bash ./dev-scripts/generate-completions.sh
install -Dpm 0644 ./completions/portprotonqt -t %{buildroot}%{bash_completions_dir}
install -Dpm 0644 ./completions/portprotonqt.fish -t %{buildroot}%{fish_completions_dir}
install -Dpm 0644 ./completions/_portprotonqt -t %{buildroot}%{zsh_completions_dir}
%find_lang %{pypi_name}
%files -f %{oname}/%{pypi_name}.lang
%{_bindir}/%{pypi_name}
%{_bindir}/vk_gpu_info
%{python3_sitelib}/%{pypi_name}/
%{_datadir}/icons/hicolor/scalable/apps/ru.linux_gaming.PortProtonQt.svg
%{_metainfodir}/ru.linux_gaming.PortProtonQt.metainfo.xml
%{_udevrulesdir}/60-portprotonqt.rules
%{_datadir}/polkit-1/rules.d/ru.linux_gaming.PortProtonQt.rules
%{_datadir}/applications/ru.linux_gaming.PortProtonQt.desktop
%{bash_completions_dir}/portprotonqt
%{_bindir}/vk_gpu_info
%{fish_completions_dir}/portprotonqt.fish
%{zsh_completions_dir}/_portprotonqt
%files -n %{pypi_name}-steam-compat
%{_datadir}/steam/compatibilitytools.d/PortProtonQt/
%changelog
+4
View File
@@ -0,0 +1,4 @@
int main(void)
{
return 0;
}
@@ -3,8 +3,12 @@ Name=PortProtonQt
Exec=portprotonqt %u
Type=Application
Comment=A modern GUI for PortProton project
Comment[ru]=Современный графический интерфейс для проекта PortProton
Comment[es]=Una interfaz gráfica moderna para el proyecto PortProton
Comment[pt]=Uma interface gráfica moderna para o projeto PortProton
Comment[de]=Eine moderne grafische Benutzeroberfläche für das PortProton-Projekt
Terminal=false
Icon=ru.linux_gaming.PortProtonQt
StartupWMClass=ru.linux_gaming.PortProtonQt
Categories=Game;Utility;
MimeType=x-scheme-handler/portproton;
MimeType=x-scheme-handler/portproton;application/x-ms-dos-exec;application/x-executable;application/x-dosexec;application/x-iso9660-image;application/x-cd-image;
@@ -1,38 +0,0 @@
_portprotonqt_completions() {
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
# Available options
opts="--fullscreen --debug-level --force-muvm --help -h"
# Debug level choices
debug_levels="ALL DEBUG INFO WARNING ERROR CRITICAL"
case "${prev}" in
--debug-level)
# Complete debug levels
COMPREPLY=( $(compgen -W "${debug_levels}" -- ${cur}) )
return 0
;;
*)
;;
esac
# Complete options
if [[ ${cur} == -* ]]; then
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
fi
# Complete positional arguments (URLs) if needed
if [[ ${cur} != -* ]]; then
# Allow URL completion for portproton:// URLs
if [[ ${cur} == portproton://* ]]; then
COMPREPLY=( $(compgen -W "${cur}" -- ${cur}) )
fi
fi
}
complete -F _portprotonqt_completions portprotonqt
@@ -33,6 +33,7 @@
</categories>
<url type="homepage">https://git.linux-gaming.ru/Boria138/PortProtonQt</url>
<url type="bugtracker">https://git.linux-gaming.ru/Boria138/PortProtonQt/issues</url>
<url type="translate">https://translate.codeberg.org/engage/portprotonqt</url>
<screenshots>
<screenshot type="default">
<image>https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/library.jpg</image>
@@ -54,6 +55,11 @@
<caption>Context Menu</caption>
<caption xml:lang="ru">Контекстное меню</caption>
</screenshot>
<screenshot>
<image>https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/exe_settings.jpg</image>
<caption>Exe Settings</caption>
<caption xml:lang="ru">Настройки exe</caption>
</screenshot>
<screenshot>
<image>https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/wine_settings.jpg</image>
<caption>Wine Settings</caption>
@@ -0,0 +1,21 @@
polkit.addRule(function(action, subject) {
var cmd_line = polkit.spawn(["ps", "-o", "args=", "-p", String(subject.pid)]);
var ppid = polkit.spawn(["ps", "-o", "ppid=", "-p", String(subject.pid)]).trim();
var parent_cmd_line = "";
if (ppid) {
parent_cmd_line = polkit.spawn(["ps", "-o", "args=", "-p", ppid]);
}
var is_ppqt_call =
cmd_line.includes("ppqtos") ||
parent_cmd_line.includes("ppqtos");
if ( (
action.id === "org.freedesktop.NetworkManager.settings.modify.system" ||
action.id == "org.freedesktop.udisks2.filesystem-mount-system" ||
action.id == "org.freedesktop.udisks2.filesystem-mount-other-seat" ||
action.id == "org.freedesktop.udisks2.filesystem-unmount-others" ) &&
is_ppqt_call)
{
return polkit.Result.YES;
}
});
Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

File diff suppressed because it is too large. Load diff
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Author: xuser
#AC4BFSP.exe
#Rating=1-5
#####################examples###########################
export PW_VULKAN_USE=1
export PW_USE_FSYNC=0
export PW_USE_ESYNC=0
@@ -0,0 +1,27 @@
#!/usr/bin/env bash
#Author: xuser
#ACIII.exe
#ACLiberation.exe
#Rating=1-5
#####################examples###########################
export PW_VULKAN_USE="2"
export PW_WINE_USE="WINE_LG_9-12-2"
export PW_USE_ESYNC="0"
export PW_USE_FSYNC="1"
export PW_WINE_FULLSCREEN_FSR="1"
export PW_HIDE_NVIDIA_GPU="0"
export PW_VIRTUAL_DESKTOP="0"
export PW_USE_TERMINAL="0"
export PW_USE_D3D_EXTRAS="1"
export PW_FIX_VIDEO_IN_GAME="0"
export PW_REDUCE_PULSE_LATENCY="0"
export PW_USE_US_LAYOUT="0"
export PW_USE_GSTREAMER="1"
export PW_USE_SHADER_CACHE="1"
export PW_USE_WINE_DXGI="0"
export PW_DINPUT_PROTOCOL="0"
export LAUNCH_PARAMETERS=""
export PW_WINDOWS_VER="10"
export PW_DLL_INSTALL=""
export PW_WINE_CPU_TOPOLOGY="disabled"
export PW_MESA_GL_VERSION_OVERRIDE="disabled"
@@ -0,0 +1,9 @@
#!/usr/bin/env bash
#Author: Alek V., Dervart
#ACOdyssey.exe
#Rating=4
#####################examples###########################
export PW_USE_ESYNC="1"
export PW_USE_GSTREAMER="0"
export PW_PREFIX_NAME="ACO"
export PW_WINE_USE="WINE_LG"
@@ -0,0 +1,11 @@
#!/usr/bin/env bash
#Author: Mels
#ACOrigins.exe
#Rating=1-5
export PW_VULKAN_USE="2"
export PW_WINE_USE="PROTON_LG"
export PORTPROTON_NAME="ACOrigins"
export PW_USE_ESYNC="1"
export PW_USE_FSYNC="1"
export PW_WINE_FULLSCREEN_FSR="1"
export PW_USE_GSTREAMER="0"
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Author: anonymous
#ACValhalla.exe
#Rating=1-5
#####################examples###########################
export PW_DLL_INSTALL="vcrun2019" # Install DLL in port prefix (used winetricks)
export PW_VULKAN_USE=1
export NOSTSTDIR="\"${PATH_TO_GAME}\""
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
#Author: xuser
#ALOTInstaller.exe
#Rating=1-5
#####################examples###########################
export PW_VULKAN_USE=0
@@ -0,0 +1,31 @@
#!/usr/bin/env bash
#Author: deck
#APlagueTaleInnocence_x64.exe
#Rating=1-5
export PW_VULKAN_USE="2"
export PW_WINE_USE="PROTON_LG"
export PW_PREFIX_NAME="PLAGUE"
export PORTPROTON_NAME="A Plague Tale: Innocence"
export PW_USE_ESYNC="1"
export PW_USE_FSYNC="0"
export PW_WINE_FULLSCREEN_FSR="1"
export PW_HIDE_NVIDIA_GPU="0"
export PW_VIRTUAL_DESKTOP="0"
export PW_USE_TERMINAL="0"
export PW_USE_D3D_EXTRAS="1"
export PW_FIX_VIDEO_IN_GAME="0"
export PW_REDUCE_PULSE_LATENCY="0"
export PW_USE_US_LAYOUT="0"
export PW_USE_GSTREAMER="1"
export PW_USE_SHADER_CACHE="1"
export PW_USE_WINE_DXGI="0"
export PW_DINPUT_PROTOCOL="0"
export PW_USE_NATIVE_WAYLAND="0"
export LAUNCH_PARAMETERS=""
export PW_WINDOWS_VER="10"
export PW_DLL_INSTALL="vcrun2017"
export WINEDLLOVERRIDES=""
export PW_WINE_CPU_TOPOLOGY="disabled"
export PW_MESA_GL_VERSION_OVERRIDE="disabled"
export PW_VKD3D_FEATURE_LEVEL="disabled"
export PW_LOCALE_SELECT="disabled"
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Author: deck
#APlagueTaleRequiem_x64.exe
#Rating=1-5
export PW_VULKAN_USE="2"
export PW_WINE_USE="WINE_LG"
export PW_PREFIX_NAME="PLAGUE"
export PORTPROTON_NAME="A Plague Tale: Requiem"
@@ -0,0 +1,9 @@
#!/usr/bin/env bash
#Author: Eljeyna
#ActOfWar.exe
#ActOfWar_HighTreason.exe
#Rating=1-5
export PW_WINE_USE="WINE-9.14-AMD64"
export PW_PREFIX_NAME="ACT_OF_WAR"
gui_proton_downloader silent "$PW_WINE_USE"
@@ -0,0 +1,10 @@
#!/usr/bin/env bash
#Author: vano
#AliceMadnessReturns.exe
#Rating=5
#####################examples###########################
export PW_WINDOWS_VER="10"
export PW_USE_FSYNC="0"
export PW_USE_ESYNC="0"
export PW_USE_GSTREAMER="1"
export PW_WINE_USE="PROTON_LG"
@@ -0,0 +1,33 @@
#!/usr/bin/env bash
#Author: ducksomecode
#AloneInTheDark-Win64-Shipping.exe
#Rating=1-5
#####################examples###########################
export PW_WINDOWS_VER="10"
export PW_DLL_INSTALL=""
export WINEDLLOVERRIDES=""
export LAUNCH_PARAMETERS=""
export PW_VULKAN_USE="2"
export PW_HIDE_NVIDIA_GPU="0"
export PW_VIRTUAL_DESKTOP="0"
export PW_USE_FSYNC="1"
export PW_USE_ESYNC="0"
export PW_USE_GSTREAMER="1"
export PW_REDUCE_PULSE_LATENCY="0"
export PW_USE_TERMINAL="0"
export PW_WINE_USE="WINE_LG"
export PW_PREFIX_NAME="ALONE_IN_THE_DARK"
export PW_WINE_FULLSCREEN_FSR="0"
export PW_USE_D3D_EXTRAS="1"
export PW_FIX_VIDEO_IN_GAME="0"
export PW_USE_SHADER_CACHE="1"
export PW_USE_WINE_DXGI="0"
export PW_USE_GALLIUM_ZINK="0"
export PW_USE_RUNTIME="1"
export PW_WINE_CPU_TOPOLOGY="disabled"
export PORTPROTON_NAME="Alone in the Dark"
export PW_DINPUT_PROTOCOL="1"
export PW_USE_NATIVE_WAYLAND="0"
export PW_MESA_GL_VERSION_OVERRIDE="disabled"
export PW_VKD3D_FEATURE_LEVEL="disabled"
export PW_LOCALE_SELECT="disabled"
@@ -0,0 +1,5 @@
#!/usr/bin/env bash
#Author: Eljeyna
#Animal Well.exe
#Rating=1-5
export PW_WINE_USE="WINE_LG"
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Author: fidel
#Ankama Launcher.exe
#Rating=1-5
export PW_WINE_USE="WINE_LG"
export PW_PREFIX_NAME="ANKAMA"
export PORTPROTON_NAME="Ankama "
export FILE_DESCRIPTION="Ankama Launcher"
@@ -0,0 +1,18 @@
#!/usr/bin/env bash
#Author: xuser
#Anno4.exe
#Rating=1-5
#####################examples###########################
if [[ "$LANGUAGE" == "ru" ]] ; then
export PW_COMMENT_DB="Если после первого запуска вы увидите черный экран, просто перезапустите игру."
else
export PW_COMMENT_DB="If after the first launch you see a black screen,\njust restart the game."
fi
export PW_VULKAN_USE=1
add_in_start_portwine () {
if [[ -d "${WINEPREFIX}/drive_c/users/steamuser/AppData/Roaming/Ubisoft/Anno1404/Config/" ]] ; then
sed -i 's/<DirectXVersion>0<\/DirectXVersion>/<DirectXVersion>9<\/DirectXVersion>/' "${WINEPREFIX}/drive_c/users/steamuser/AppData/Roaming/Ubisoft/Anno1404/Config/Engine.ini"
fi
}
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Author: stalker
#AnomalyLauncher.exe
#Rating=1-5
#####################examples###########################
export PW_DLL_INSTALL="d3dx10 d3dx11_42 d3dx11_43" # Install DLL in port prefix (used winetricks)
export PW_VULKAN_USE=1
export PW_USE_WINE_DXGI=1
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
#Author: chal55rus
#AnomalyZone.exe
#Rating=1-5
export PW_VULKAN_USE="2"
export PW_WINE_USE="WINE_LG"
export PW_PREFIX_NAME="DEFAULT"
@@ -0,0 +1,10 @@
#!/usr/bin/env bash
#Author: rosakodu
#GS456.exe
#Rating=1-5
export PW_VULKAN_USE="2"
export PW_WINE_USE="PROTON_LG_7-54"
export PW_PREFIX_NAME="APOLLO_JUSTICE"
export WINEDLLOVERRIDES="winmm.dll=n,b"
gui_proton_downloader silent "$PW_WINE_USE"
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
#Author: akai
#Arthur.exe
#Rating=1-5
#####################examples###########################
export PW_REDUCE_PULSE_LATENCY=1
export PW_VULKAN_USE=2
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
#Author: Сергей 33 (46)
#BF2.exe
#Rating=4
################################################
export PW_WINDOWS_VER="7"
@@ -0,0 +1,23 @@
#!/usr/bin/env bash
#Author: dez
#Battle.net Launcher.exe
#Battle.net-Setup.exe
#Battle.net.exe
#Rating=5
################################################
export PW_VULKAN_USE="2"
export LAUNCH_PARAMETERS=""
export WINEDLLOVERRIDES="locationapi="
export PW_DLL_INSTALL="vcrun2019 d3dx11_42 d3dx11_43"
export PW_WINDOWS_VER="10"
export PW_WINE_FULLSCREEN_FSR="0"
export PW_WINE_USE="PROTON_LG"
export WINE_SIMULATE_WRITECOPY="1"
add_in_start_portwine () {
rm -fr "${PORT_DATA_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/ProgramData/Agent/data"
rm -fr "${PORT_DATA_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/users/${USER}/Blizzard Entertainment/Battle.net/Cache"
rm -fr "${PORT_DATA_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/users/Public/Blizzard Entertainment/Battle.net/Cache"
try_remove_file "${PORT_DATA_PATH}/data/prefixes/${PW_PREFIX_NAME}/drive_c/windows/Fonts/sourcehansans.ttc"
# sed -i 's/"GrabFullscreen"="Y"/"GrabFullscreen"="N"/' "${PORT_DATA_PATH}/data/prefixes/${PW_PREFIX_NAME}/user.reg"
}
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Author: Mels
#BeyondTwoSouls.exe
#Rating=1-5
export PW_VULKAN_USE="2"
export PW_WINE_USE="WINE_LG"
export PORTPROTON_NAME="BeyondTwoSouls"
export PW_USE_SHADER_CACHE="0"
@@ -0,0 +1,20 @@
#!/usr/bin/env bash
#Author: Alek V., Eljeyna
#div.exe
#Rating=1-5
#####################examples###########################
export PW_WINE_USE="WINE_LG"
export PW_DGVOODOO2="1"
export PW_DGV2_DISABLE_D3D="1"
export PW_DGV2_VRAM="1024"
export PW_DGV2_RESOLUTION="1280x720"
export PW_DGV2_VIDEOCARD="dgVoodoo2 Virtual 3D"
add_in_start_portwine () {
if [[ -f "${PATH_TO_GAME}/fontlist.txt" ]] ; then
if grep -q "charset russian" "${PATH_TO_GAME}/fontlist.txt" ; then
sed -i 's/DEFINE $TTFONTNAME "BDFont"/DEFINE $TTFONTNAME "Arial"/g' "${PATH_TO_GAME}/fontlist.txt"
sed -i 's/DEFINE $TTFONTANAME "BDFont"/DEFINE $TTFONTANAME "Arial"/g' "${PATH_TO_GAME}/fontlist.txt"
fi
fi
}
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
#Author: kosta
#Biomutant.exe
#Rating=1-5
#####################examples###########################
export PW_VULKAN_USE=1
export PW_DLL_INSTALL="vcrun2019" # Install DLL in port prefix (used winetricks)
@@ -0,0 +1,17 @@
#!/usr/bin/env bash
#Author: deck
#Bioshock2HD.exe
#Rating=5
export PW_VULKAN_USE="2"
export PW_WINE_USE="WINE_LG"
export PW_PREFIX_NAME="DEFAULT"
export PW_VKBASALT="1"
export PW_USE_ESYNC="0"
export PW_USE_FSYNC="0"
export PW_USE_D3D_EXTRAS="1"
export PW_USE_GSTREAMER="1"
export PW_USE_SHADER_CACHE="1"
export PW_USE_WINE_DXGI="0"
export PW_USE_EAC_AND_BE="0"
export PW_VKBASALT_EFFECTS="FilmGrain2:Curves:cas"
export PW_VKBASALT_FFX_CAS="1"
@@ -0,0 +1,17 @@
#!/usr/bin/env bash
#Author: deck
#BioshockHD.exe
#Rating=5
export PW_VULKAN_USE="2"
export PW_WINE_USE="WINE_LG"
export PW_PREFIX_NAME="DEFAULT"
export PW_VKBASALT="1"
export PW_USE_ESYNC="0"
export PW_USE_FSYNC="0"
export PW_USE_D3D_EXTRAS="1"
export PW_USE_GSTREAMER="1"
export PW_USE_SHADER_CACHE="1"
export PW_USE_WINE_DXGI="0"
export PW_USE_EAC_AND_BE="0"
export PW_VKBASALT_EFFECTS="FilmGrain2:Curves:cas"
export PW_VKBASALT_FFX_CAS="1"
@@ -0,0 +1,12 @@
#!/usr/bin/env bash
#Author: fidel
#BlackDesertLauncher.exe
#Rating=1-5
#####################examples###########################
export PW_WINDOWS_VER="10"
export PW_WINE_USE="PROTON_LG"
export PW_PREFIX_NAME="DOTNET"
export PORTPROTON_NAME="BlackDesertLauncher"
export FILE_DESCRIPTION="BlackDesertLauncher"
export WINE_DISABLE_KERNEL_WRITEWATCH="1"
export DXVK_CONFIG="dxgi.syncInterval=0"
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
#Author:
#Botanicula.exe
#Rating=5
################################################
export PW_VULKAN_USE=0
export LAUNCH_PARAMETERS=""
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
#Author: Eljeyna
#BrightMemoryInfinite-Win64-Shipping.exe
#Rating=1-5
export PW_VULKAN_USE="2"
export PW_WINE_USE="WINE_LG"
export PW_USE_SHADER_CACHE="0"
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
#Author:PortWINE
#Brokgame.exe
#Rating=5
################################################
export PW_VULKAN_USE=0
export LAUNCH_PARAMETERS=""
@@ -0,0 +1,16 @@
#!/usr/bin/env bash
#Author: fidel
#BsgLauncher.exe
#EscapeFromTarkov.exe
#EscapeFromTarkov_BE.exe
#Rating=1-5
#####################examples###########################
export PW_USE_FSYNC="0"
export PW_USE_ESYNC="0"
export PW_PREFIX_NAME="DOTNET"
# add_in_start_portwine () {
# if [[ ! -f "${PATH_TO_GAME}/dxvk.conf" ]] ; then
# echo "d3d9.shaderModel = 1" > "${PATH_TO_GAME}/dxvk.conf"
# fi
# }
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Author: fidel
#CWClientLauncher.exe
#Rating=1-5
export PW_WINE_USE="WINE_LG"
export PW_PREFIX_NAME="CONTRACT_WARS"
export PORTPROTON_NAME="CWClient"
export FILE_DESCRIPTION="CWClientLauncher"
@@ -0,0 +1,10 @@
#!/usr/bin/env bash
#Author: fidel
#caliber_launcher_pp.exe
#Rating=1-5
#####################examples###########################
export PW_VULKAN_USE="2"
export PW_WINE_USE="PROTON_LG"
export PW_PREFIX_NAME="CALIBER"
# export DISABLE_CP_DEFPFX="1"
export WINEDLLOVERRIDES="xaudio2_7=n,b"
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
#Author:
#CoJBiBGame_x86.exe
#Rating=5
################################################
export LAUNCH_PARAMETERS=""
export PW_DLL_INSTALL="d3dx9" # Install DLL in port prefix (used winetricks)
@@ -0,0 +1,10 @@
#!/usr/bin/env bash
#Author: fidel
#CatsLauncher.exe
#Rating=5
#####################examples###########################
export PW_WINDOWS_VER="10"
export PW_VULKAN_USE="2"
export PW_WINE_USE="WINE_LG"
export PW_PREFIX_NAME="DOTNET"
# export WINEDLLOVERRIDES="libglesv2="
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
#Author: xuser
#Cinebench.exe
#Rating=1-5
#####################examples###########################
export PW_VULKAN_USE=1
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
#Author: user
#Control_DX12.exe
#Rating=1-5
#####################examples###########################
export PW_COMMENT_DB="Control (DX12)"
export WINEDLLOVERRIDES="d3d12,d3d_rmdwin10_f,renderer_rmdwin10_f,apw_rmdwin10_f,input_rmdwin10_f,renderer_rmdwin10_f,physics_rmdwin10_f,snd_rmdwin10_f,ui_rmdwin10_f=n"
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
#Author: xuser
#CyberShadow.exe
#Rating=1-5
################################################
export PW_VULKAN_USE=0
export LAUNCH_PARAMETERS=""
@@ -0,0 +1,9 @@
#!/usr/bin/env bash
#Author: xuser
#Cyberpunk2077.exe
#Rating=1-5
#####################examples###########################
export WINEDLLOVERRIDES="Crash*,REDEngineErrorReporter.exe="
export PW_REDUCE_PULSE_LATENCY=1
export LAUNCH_PARAMETERS="--launcher-skip"
export VKD3D_CONFIG=force_bindless_texel_buffer,multi_queue
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
#Author: xuser
#DAOriginsLauncher.exe
#Rating=1-5
#####################examples###########################
export PW_VULKAN_USE=1
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Author: linux-gaming.ru
#DOOMEternalx64vk.exe
#Rating=?
################################################
export PW_VULKAN_USE=1
export PW_REDUCE_PULSE_LATENCY=1
export LAUNCH_PARAMETERS="+in_terminal 1 +com_skipIntroVideo 1 +com_skipSignInManager 1"
@@ -0,0 +1,10 @@
#!/usr/bin/env bash
#Author: nix
#DOOMx64.exe
#DOOMx64vk.exe
#Rating=1-5
#####################examples###########################
export PW_COMMENT_DB="DOOM 2016"
export PW_DLL_INSTALL="xact xact_x64 vcrun2019"
export WINEDLLOVERRIDES="xaudio2_8=n"
export PW_VULKAN_USE=1
@@ -0,0 +1,12 @@
#!/usr/bin/env bash
#Author: xuser
#DXHRDC.exe
#DXHumanRevolutionDC.exe
#DXHumanRevolutionDC_s.exe
#Rating=5
#####################examples###########################
export WINEDLLOVERRIDES="WINMM=n,b"
export PW_VULKAN_USE=1
export PW_USE_FSYNC=1 # Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems with no FUTEX_WAIT_MULTIPLE support.
export PW_USE_ESYNC=1 # Do not use eventfd-based in-process synchronization primitives
export PW_USE_GSTREAMER=0 # 0 - disabled use winegstreamer
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Author: xuser
#DaysGone.exe
#Rating=1-5
#####################examples###########################
export PW_DLL_INSTALL="vcrun2019" # Install DLL in port prefix (used winetricks)
export PW_USE_FSYNC=1 # Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems with no FUTEX_WAIT_MULTIPLE support.
export PW_USE_ESYNC=1 # Do not use eventfd-based in-process synchronization primitives
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
#Author:
#Dead Space.exe
#Rating=1-5
################################################
export PW_VULKAN_USE=0
export LAUNCH_PARAMETERS=""
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Author:
#ds.exe
#Rating=5
################################################
export PW_VULKAN_USE=1
export LAUNCH_PARAMETERS=""
export WINEDLLOVERRIDES="d3dcompiler_47,dxcompiler=n,b"
@@ -0,0 +1,18 @@
#!/usr/bin/env bash
#Author: Eljeyna
#Deathloop.exe
#Rating=4
#####################examples###########################
if [[ "$LANGUAGE" == "ru" ]] ; then
export PW_COMMENT_DB="При использовании DualSense следует оставить параметры нетронутыми\nЕсли проявляются проблемы с определением геймпада, выключите DINPUT PROTOCOL"
else
export PW_COMMENT_DB="If you use DualSense do not recommended change settings\nBut if you have problems with gamepad controls, turn off DINPUT PROTOCOL parameter"
fi
export PW_VULKAN_USE="1"
export WINEDLLOVERRIDES="xaudio2_8,xaudio2_9="
export PW_DINPUT_PROTOCOL="1"
export PW_WINDOWS_VER="10"
export PW_USE_ESYNC="0"
export PW_USE_FSYNC="0"
export PW_PREFIX_NAME="DEATHLOOP"
export PW_WINE_USE="PROTON_LG"
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
#Author: xuser
#Deponia.exe
#Rating=1-5
#####################examples###########################
export PW_VULKAN_USE=0
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
#Author: spider
#Diablo II.exe
#Rating=1-5
#####################examples###########################
export PW_VULKAN_USE=0
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Author: deck
#Dishonored2.exe
#Rating=1-5
export PW_VULKAN_USE="2"
export PW_WINE_USE="WINE_LG"
export PW_PREFIX_NAME="DISHONORED"
export PORTPROTON_NAME="VoidEngine"
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Author: deck
#DyingLightGame.exe
#Rating=1-5
export PW_VULKAN_USE="2"
export PW_WINE_USE="WINE_LG"
export PW_PREFIX_NAME="DL"
export PORTPROTON_NAME="DyingLight"
@@ -0,0 +1,10 @@
#!/usr/bin/env bash
#Author: PortWINE
#EALauncher.exe
#EADesktop.exe
#Rating=5
#####################examples###########################
export PW_WINE_USE="PROTON_LG"
export PW_PREFIX_NAME="EAAPP"
export WINE_SIMULATE_WRITECOPY="1"
add_in_start_portwine () { export LC_CTYPE=C ;}
@@ -0,0 +1,15 @@
#!/usr/bin/env bash
#Author: PortWINE
#EpicGamesLauncher.exe
#Rating=5
##############################################
#export PW_COMMENT_DB="PortWINE database file for Epic Games Launcher"
export LAUNCH_PARAMETERS="-SkipBuildPatchPrereq"
export PW_DLL_INSTALL="vcrun2012 vcrun2013 vcrun2019"
export PW_WINE_USE="PROTON_LG"
export PW_USE_ESYNC="1"
export PW_USE_FSYNC="1"
export WINEDLLOVERRIDES="vulkan-1=n,b"
# add_in_start_portwine () {
# regdlloverrides "RDR2.exe:vulkan-1=n,b"
# }
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
#Author: fff555w
#Esprit Games.exe
#Rating=1-5
#####################examples###########################
export PW_WINDOWS_VER=7 # Set windows version 10, 7 or XP
@@ -0,0 +1,10 @@
#!/usr/bin/env bash
#Author: xuser
#FL.exe
#FL64.exe
#Rating=1-5
#####################examples###########################
export PW_VULKAN_USE=0
export WINEDLLOVERRIDES="FLEngine,FLEngine_x64=n"
export PW_USE_FSYNC=0 # Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems with no FUTEX_WAIT_MULTIPLE support.
export PW_USE_ESYNC=0 # Do not use eventfd-based in-process synchronization primitives
@@ -0,0 +1,9 @@
#!/usr/bin/env bash
#Author: linux-gaming.ru
#FarCry.exe
#Rating=5
#################################
export PW_VULKAN_USE=0
export WINEDLLOVERRIDES="cgD3D9,cgD3D9d=n"
export PW_USE_FSYNC=0 # Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems with no FUTEX_WAIT_MULTIPLE support.
export PW_USE_ESYNC=0 # Do not use eventfd-based in-process synchronization primitives
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Author: deck
#FarCry5.exe
#Rating=1-5
export PW_VULKAN_USE="2"
export PW_WINE_USE="WINE_LG"
export PW_PREFIX_NAME="FARCRY"
export PORTPROTON_NAME="Far Cry 5"
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
#Author: gamer
#FarCry6.exe
#Rating=1-5
#####################examples###########################
export VK_FORMAT_A8_UNORM=1
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
#Author: xuser
#FarLoneSails.exe
#Rating=1-5
#####################examples###########################
export PW_VULKAN_USE=0
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
#Author: nixon
#farcry3_d3d11.exe
#Rating=1-5
#####################examples###########################
export PW_DLL_INSTALL="d3dx11_42 d3dx11_43"
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
#Author: nixon
#farcry3.exe
#Rating=1-5
#####################examples###########################
export PW_VULKAN_USE=0
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
#Author: nixon
#FarCry4.exe
#Rating=1-5
#####################examples###########################
export PW_DLL_INSTALL="d3dcompiler_43 d3dcompiler_4 xact xact_x64"
export PW_PREFIX_NAME="FARCRY_4"
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
#Author: fidel
#Farlight84Launcher.exe
#Rating=1-5
export PW_WINE_USE="WINE_LG"
export PW_PREFIX_NAME="FARLIGHT_84"
export PW_NO_AUTO_CREATE_SHORTCUT="1"
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
#Author: garrett
#ForzaHorizon4.exe
#Rating=5
################################################
export PW_DLL_INSTALL="vcrun2019"
@@ -0,0 +1,10 @@
#!/usr/bin/env bash
#Author:
#Frozen Throne.exe
#Rating=4 - no video
################################################
export PW_VULKAN_USE=0
export LAUNCH_PARAMETERS=""
if [[ -d "${PATH_TO_GAME}"/Movies ]] ; then
mv "${PATH_TO_GAME}"/Movies "${PATH_TO_GAME}"/Movies_bak
fi
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Author: lemonchic with help from Dezert1r
#GTAIV.exe
#Rating=1-5
################################################
export LAUNCH_PARAMETERS="-nomemrestrict -norestrictions -percentvidmem 100 -availablevidmem 2048 -noprecache -novblank -heapsize 2097152" # Additional launch options
export PW_USE_ESYNC=1
export PW_USE_FSYNC=0
@@ -0,0 +1,19 @@
#!/usr/bin/env bash
#Author: Dezert1r, Fidel
#GalaxyClient.exe
#GOG_Galaxy_2.0.exe
#Rating=5
################################################
# export PW_VULKAN_USE="2"
export WINEDLLOVERRIDES="GalaxyCommunication.exe,GalaxyClientService.exe=n;libglesv2="
export LAUNCH_PARAMETERS="/runWithoutUpdating /deelevated"
export PW_PREFIX_NAME="GOG"
export DISABLE_CP_DEFPFX="1"
export PW_WINE_USE="PROTON_LG_9-12"
add_in_start_portwine ()
{
if [[ -e "${WINEPREFIX}/drive_c/users/${USER}/Local Settings/Application Data/GOG.com/Galaxy/Configuration/config.json" ]] ; then
sed -i 's/"featureOverlay" : true,/"featureOverlay" : false,/' "${WINEPREFIX}/drive_c/${USER}/Local Settings/Application Data/GOG.com/Galaxy/Configuration/config.json"
fi
}
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
#Author:
#Game-TS3.exe
#Rating=5
################################################
export PW_VULKAN_USE=0
export LAUNCH_PARAMETERS=""
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Author: deck
#Game_f_x64_EOS.exe
#Rating=1-5
export PW_VULKAN_USE="2"
export PW_WINE_USE="WINE_LG"
export PW_PREFIX_NAME="AW"
export PORTPROTON_NAME="Game_f_x64_EOS"
@@ -0,0 +1,12 @@
#!/usr/bin/env bash
#Author: fidel
#Genshin Impact.exe
#GenshinImpact.exe
#hoyoplay_launcher_pp.exe
#Rating=5
#####################examples###########################
export PW_WINDOWS_VER="10"
export PW_VULKAN_USE="2"
export PW_PREFIX_NAME="HO_YO_PLAY"
export PW_WINE_USE="WINE_HYP_10-10"
export LAUNCH_PARAMETERS="-platform_type CLOUD_THIRD_PARTY_PC"
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
#Author: deck
#GoWR.exe
#Rating=1-5
export PW_VULKAN_USE="2"
export PW_WINE_USE="WINE_LG"
export PORTPROTON_NAME="GoWR"
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
#Author: fidel
#Gw2.exe
#Rating=1-5
export PW_WINE_USE="WINE_LG"
export PW_PREFIX_NAME="GUILD_WARS_2"
export PORTPROTON_NAME="Guild Wars 2"
export FILE_DESCRIPTION="Guild Wars 2 Game Client"
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
#Author: fidel
#HB_GV_Rus.exe
#Rating=1-5
#####################examples###########################
export PW_PREFIX_NAME="DOTNET"
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
#Author: linux-gaming.ru
#Hades.exe
#Rating=1-5
################################################
export PW_DLL_INSTALL="vcrun2019 d3dcompiler_47 d3dx9_43"
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
#Author: xuser
#Half-Life2.exe
#Rating=1-5
#####################examples###########################
export PW_VULKAN_USE=1
Loaded 100 of 445 files, more files were not shown because too many files have changed in this diff. Show more