Compare commits

..
622 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
Boria138 bcc6f1c2ce fix typo on arch PKGBUILD
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-18 13:15:00 +05:00
Boria138 b88ed89136 bump to 0.1.11
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-18 13:03:41 +05:00
Boria138 78d4c820e4 docs(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-18 13:01:43 +05:00
Boria138 47c84ceb67 fix: hide settings and log buttons for Steam/EGS games in detail page
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-18 12:56:37 +05:00
Boria138 e882a94395 chore: fix typos in CHANGELOG
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-17 23:22:33 +05:00
Boria138 4c372ad083 chore(localization): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-17 20:10:38 +05:00
Boria138 0a1f0dfdf1 chore: use Qt on open_ppdb_file
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-17 20:06:02 +05:00
Boria138 228e3262c8 fix: fix advanced settings translate
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-17 20:00:58 +05:00
Boria138 017c56227a chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-15 14:10:20 +05:00
Boria138 0f28c0dbeb chore(localization): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-15 14:08:36 +05:00
Boria138 80c51198b9 feat: added system_wine to dist options
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-15 13:56:33 +05:00
Boria138 c5a46780df feat: Remove PW prefix from settings display and add Open PPDB button 2026-02-15 13:37:00 +05:00
Boria138 f729e10e20 chore(screenshots): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-14 21:27:18 +05:00
Boria138 1affd68159 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-14 21:16:34 +05:00
Boria138 c597c37610 chore(localization): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-14 20:53:38 +05:00
Boria138 ffc040c8af fix(get_wine_module): clear selected assets after download completion
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-14 20:35:21 +05:00
Boria138 f676ab6abe chore: drop amd vulkan driver from settings
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-14 20:13:16 +05:00
Boria138 8ac7cf235a feat: added hint for mouse emulation
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-13 16:44:03 +05:00
Boria138 0a231e6664 feat(input_manager): make mouse emulation work regardless of window focus state
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-13 16:35:04 +05:00
Boria138 461df5006d feat(debug_utils): added device type to log
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-13 14:18:04 +05:00
Boria138 3cb04d0d42 fix(build): fix ternary operator usage in udev rules installation 2026-02-11 23:03:24 +05:00
Boria138 e6b94ef907 chore(build): added udev_rulesdir for rpm based
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-11 22:48:47 +05:00
Boria138 d6a58ecd60 chore: drop xdg-utils from deps
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-11 22:37:15 +05:00
Boria138 bdfc18203b chore(build): added sitelib for rpm based
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-11 18:24:04 +05:00
Boria138 0814326624 chore(build): fixes
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-11 18:03:53 +05:00
Boria138 bcfb69bd08 chore(renovate): fix rate-limit
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-11 16:23:20 +05:00
Renovate Bot 5ad70b1d5a chore(deps): update archlinux:base-devel docker digest to 7c81df5 2026-02-11 10:44:18 +00:00
Renovate Bot f10de90210 chore(deps): update https://gitea.com/actions/checkout digest to de0fac2 2026-02-11 10:38:37 +00:00
Boria138 4b33637846 chore: drop xrandr dependency
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-11 15:13:57 +05:00
Boria138 e309bb4f10 feat(debug_utils): use own vk_gpu_info
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-11 12:02:53 +05:00
Boria138 52572b85c7 chore: added simply vulkan-info file
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-11 11:47:18 +05:00
Boria138 1c952c009a chore: clean code and deps
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-10 22:13:09 +05:00
Boria138 0a0fbf47b1 Revert "feat(debug_utils): drop vulkaninfo from deps"
This reverts commit 7b703f5bf1.
2026-02-10 22:09:03 +05:00
Boria138 d29e144d4e feat(debug_utils): drop xdpyinfo from deps
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-10 22:02:31 +05:00
Boria138 7b703f5bf1 feat(debug_utils): drop vulkaninfo from deps
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-10 21:53:35 +05:00
Boria138 1a44bc00af feat: added PW_GPU_USE to PortProton Settings
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-09 17:53:08 +05:00
Boria138 1cdde3ada8 feat(detail_pages): added log auto-save conditions 2026-02-09 13:13:01 +05:00
Boria138 e7cbff82fd chore(build): added muvm to Fedora
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-09 12:51:33 +05:00
Boria138 dcf1748976 chore(build): added log dependency
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-09 12:49:07 +05:00
Boria138 cc9a585c74 fix(debug_utils): replace FLATPAK is used to FLATPAK in used
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-09 00:38:04 +05:00
Boria138 11835e0337 feat(debug_utils): remove caching and improve PW_VULKAN_USE detection
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-09 00:08:26 +05:00
Boria138 97e41be7b7 feat(debug_utils): filter PW_USE_RUNTIME when Flatpak is used and read from default if PPDB missing 2026-02-08 19:57:12 +05:00
Boria138 73d99a6aec chore(localization): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-08 15:22:54 +05:00
Boria138 2ebecc96bc chore(portproton_api): clean
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-08 15:19:49 +05:00
Boria138 63f8201098 feat(completions): add --force-muvm and URL arg to bash completion 2026-02-08 14:55:13 +05:00
Boria138 48a066eee8 feat(cli): add --force-muvm flag to run under muvm regardless of platform 2026-02-08 14:51:59 +05:00
Boria138 da52f7e821 fix: preserve muvm when restarting after theme change 2026-02-08 14:45:53 +05:00
Boria138 8fe1f35433 fix(ui): prevent hidden auto-install tab from breaking navigation and indexes 2026-02-08 14:37:39 +05:00
Boria138 9daabff516 chore(docs): update localization guide to mention only Poedit and GTranslator 2026-02-08 14:14:32 +05:00
Boria138 d3c21fef3f chore(localization): change locale directory lookup order to prioritize local directory first 2026-02-08 14:09:15 +05:00
Boria138 c123514ce5 chore(localization): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-08 14:02:46 +05:00
Simple16 3c1c9dffe8 Updating the Russian localization 2026-02-08 12:23:15 +05:00
Boria138 aed6492c25 fix: theme loading for custom themes with relative imports 2026-02-08 01:19:32 +05:00
Boria138 66583f52f4 feat: restructure icon themes with organized subdirectories 2026-02-08 00:30:22 +05:00
Boria138 b64670d8b3 feat: added ppdb.linux-gaming.ru handler
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-07 19:25:17 +05:00
Boria138 9d16105c8a fix(docs): correct grammar mistakes in CHANGELOG.md 2026-02-07 17:45:28 +05:00
Boria138 ee23957f43 fix(appimage): fix locale
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-06 11:16:12 +05:00
Boria138 b414147bbd chore(meson): clean
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-05 16:03:36 +05:00
Boria138 a2b42ac0ed chore(workflow): make release job continue on error 2026-02-05 13:00:01 +05:00
Boria138 92caf0dbb1 feat(ui): add setting to hide auto-install tab 2026-02-04 23:10:56 +05:00
Boria138 fc36dd7983 feat(debug_utils): add Flatpak detection to get_runtime_status 2026-02-04 11:24:24 +05:00
Boria138 643f914f6d fix(config_utils): prioritize Flatpak version in get_portproton_start_command 2026-02-04 11:05:24 +05:00
Boria138 8c3fc1307c fix(get_graphics_info_detailed): I forget about AMD and Intel
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-03 20:37:17 +05:00
Boria138 e0195856a8 feat(build): add muvm as aarch64 depend for Asahi Linux support 2026-02-03 16:15:55 +05:00
Boria138 04583c2586 feat: add Asahi Linux support via muvm re-execution 2026-02-03 16:09:11 +05:00
Boria138 bd8d280561 chore(log): make log async
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-03 16:00:36 +05:00
Boria138 48bfb308dd chore(log): rename PPQT to PortProtonQt
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-01 20:50:49 +05:00
Boria138 dcfa307fcd chore(log): enhance vulkaninfo output with API and driver versions
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-01 20:49:22 +05:00
Boria138 3509701b1a chore(log): remove vkcube subprocess call 2026-02-01 20:49:17 +05:00
Boria138 04c723e4cc chore(log): add anonymization for /run/media/barry and /media/barry paths
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-02-01 20:48:54 +05:00
Gitea Actions 63de266289 chore: update steam apps list 2026-02-01T00:02:12Z 2026-02-01 00:02:13 +00:00
Boria138 4d20626f80 chore(log): delete PortProton.log before PW_LOG and PPQT.log save
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-31 22:44:08 +05:00
Boria138 3a59f1af76 fix: prevert log coruption
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-31 22:33:25 +05:00
Boria138 abc3b0b716 chore(log): fixed musl libc detect
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-31 19:05:23 +05:00
Boria138 9159b63000 chore(log): added musl libc detect support
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-31 15:37:52 +05:00
Boria138 296476afa3 chore(log): copy portproton format
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-31 13:31:22 +05:00
Boria138 17f938ded4 chore: update log
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-30 18:12:34 +05:00
Boria138 5ccd47d461 feat: add meson.build linter with comprehensive syntax checks
Add pre-commit hook to validate meson.build files:
   - Check for unbalanced brackets: (), [], {}
   - Detect unclosed quotes: ', "
   - Find missing/double commas between list items
   - Validate control structures (if/endif, foreach/endforeach)
   - Check for invalid operators (===, !==, :=, ;)
   - Detect common typos in meson functions
   - Verify all Python files are included in install_data

Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-29 22:56:21 +05:00
Boria138 35e449f730 feat: initial add log
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-29 22:27:48 +05:00
Boria138 b6062f1ee0 fix(gamecard): correct argument order when creating GameCard
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-26 23:28:06 +05:00
Boria138 651040de70 feat: replace linux-gaming topics to ppdb.linux-gaming.ru api calls
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-26 23:09:02 +05:00
Renovate Bot 3f0b3d65ad chore(deps): update archlinux:base-devel docker digest to d2bd09b 2026-01-26 12:17:08 +00:00
Renovate Bot ec449f12d1 chore(deps): update https://gitea.com/actions/setup-python digest to a309ff8 2026-01-26 12:16:50 +00:00
Boria138 2d5932f144 fix: prevent QMessageBox from closing immediately on gamepad 2026-01-26 17:16:05 +05:00
Boria138 0a9381b1d2 fix: open virtual keyboard on all QLineEdit
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-26 17:12:02 +05:00
Boria138 20fb7174c1 fix: update virtual keyboard icons on change gamepad type
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-26 17:07:22 +05:00
Boria138 8f9e6ea958 chore(build): switch from pyproject to meson build system
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-19 06:19:04 +00:00
Renovate Bot 19aecd75c4 chore(deps): update archlinux:base-devel docker digest to 84c36fa 2026-01-18 05:56:49 +00:00
Renovate Bot 905ebe1d61 chore(deps): update https://gitea.com/actions/setup-node digest to 6044e13 2026-01-18 00:01:59 +00:00
Boria138 ae0b3a0f1a chore(build): added qt6-svg
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-14 18:08:32 +05:00
Boria138 678f28ed30 bump ver to 0.1.10
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-14 17:37:42 +05:00
Boria138 e7d2860c0e chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-14 17:36:58 +05:00
Boria138 55a7f77a33 fix(detail_pages): handle RuntimeError on detail page exit animation
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-13 14:29:37 +05:00
Boria138 8e6c0aafd1 fix(image_utils): remove corrupted cached images on load failure
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-13 14:21:11 +05:00
Boria138 dd65021976 fix(time_utils): make playtime parsing robust to malformed data
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-13 14:13:59 +05:00
Boria138 5f3a451c50 chore(locale): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-12 21:03:51 +05:00
Boria138 c33813dae5 feat(get_wine): added total size to update_selection_display
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-12 20:56:41 +05:00
Boria138 88a436c29f fix(locales): clean fuzzy in poedit
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-12 20:40:08 +05:00
Simple16 9ca4b38a14 Обновление русской локализации в окне "Управление версиями WINE" 2026-01-12 19:58:42 +05:00
Dervart 7fdd260868 window width for get_wine module 2026-01-12 20:07:49 +07:00
Boria138 091780bf9f feat(get_wine): make it async
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-12 11:19:21 +05:00
Boria138 1729f553bc feat(get_wine): unify tabble code
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-12 11:07:51 +05:00
Dervart b79d6e0331 styles fix for get_wine module 2026-01-11 22:58:29 +07:00
Boria138 96766643b7 feat(get_wine): added Installed tab for wine remove
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-11 20:02:50 +05:00
Boria138 f08becdbde fix(input_manager): handle common UI elements like QMessageBox, QMenu, etc. first
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-11 12:04:55 +05:00
Renovate Bot c2ab0c5d6c chore(deps): update archlinux:base-devel docker digest to ebcaeca 2026-01-11 00:01:02 +00:00
Boria138 df62b76bf1 chore: remove DPAD left/right navigation for tabs
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-09 16:03:43 +05:00
Boria138 eaaf726f15 chore(input_manager): drop unneded code
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-08 22:16:58 +05:00
Boria138 4b50cd4da1 fix(input_manager): fixed card increase_size on BT and added BTN_TRIGGER_HAPPY to switch tab
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-08 22:13:35 +05:00
Boria138 f07fbeee9e chore: drop delete_wine_module
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-08 19:47:41 +05:00
Boria138 59aecbc6e8 chore(input_manager): clean code
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-08 17:26:11 +05:00
Dervart bbfc51f908 styles for get_wine module 2026-01-07 15:31:35 +07:00
Boria138 7e44ec67d8 fix: fix dist sorting on Wine Settings tab
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-06 12:02:44 +05:00
Boria138 224f88aebd feat: rework proton sort
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-06 11:51:53 +05:00
Boria138 9bb7e45b27 feat: use alphabeth and number sort on prefixes and dist
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-05 21:54:31 +05:00
Boria138 59093f743c chore(appimage): use debloated packages later
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-05 21:14:09 +05:00
Boria138 a7c8977dab feat: use QFileSystemWatcher to dist and prefixes update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-05 11:42:15 +05:00
Boria138 ff744fc581 chore(flow_layout): drop very heavy numpy
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-05 00:02:17 +05:00
Simple16 05de549d07 Updating the Russian translation 2026-01-04 21:24:18 +05:00
Boria138 3e74cbdcf5 chore(locales): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-03 20:34:42 +05:00
Boria138 a9b97e3a4b feat(get_wine): make unpack progress real
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-03 16:13:19 +05:00
Boria138 b9fe0250ed chore: unify get and delete wine
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-03 16:13:14 +05:00
Simple16 4dcfca919f Updating the Russian translation 2026-01-03 01:31:28 +05:00
Boria138 66c23db29c fix(animations): resolve memory leaks in GameCardAnimations and DetailPageAnimations
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-02 21:11:41 +05:00
Boria138 e7a7300665 chore(get_wine): simplify archive extraction using libarchive native API
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-02 14:21:22 +05:00
Boria138 2521f7d2f4 fix(get_wine): handle symlinks too
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-02 12:14:08 +05:00
Simple16 5df0b8783f Updating the translation for the WINE download window 2026-01-02 00:10:09 +05:00
Boria138 044ea7d151 feat(get_wine): added CPU filtering
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-01 19:03:46 +05:00
Boria138 cd93f9ebfe chore(tabbles): disable edititng
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-01 16:19:38 +05:00
Boria138 1b9595ca95 chore(build): added python-libarchive-c to dependency
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2026-01-01 15:50:58 +05:00
Gitea Actions 4dff545c0f chore: update steam apps list 2026-01-01T00:00:54Z 2026-01-01 00:00:54 +00:00
Boria138 69d8e53c7b feat: reworked wine download
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-31 13:50:52 +05:00
Renovate Bot 40769bfdf6 fix(deps): lock file maintenance python dependencies 2025-12-30 15:58:37 +00:00
Renovate Bot b3adef68d3 chore(deps): update archlinux:base-devel docker digest to f6b259c 2025-12-30 15:56:27 +00:00
Renovate Bot df707a84bc chore(deps): update ghcr.io/renovatebot/renovate:latest docker digest to eec497d 2025-12-30 15:52:48 +00:00
Renovate Bot 4c340c13ab chore(deps): pin archlinux docker tag to f6b259c 2025-12-30 15:48:13 +00:00
Boria138 a81cef4457 feat(appimage): use AnyLinux Appimage to support musl-libc systems
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-30 15:44:59 +00:00
Boria138 4c537248f1 Revert "fix(animations): prevent memory leaks by properly clearing animation references"
This reverts commit 55dcda738b.
2025-12-30 11:06:15 +05:00
Boria138 55dcda738b fix(animations): prevent memory leaks by properly clearing animation references
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-29 11:17:09 +05:00
Boria138 aa0c0a5675 fix: fix slider size on autoinstall
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-27 00:13:13 +05:00
Boria138 613b28a751 chore(localization): added translate support to theme name, description and screenshots
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-26 13:02:45 +05:00
Boria138 a9e9f4e4e3 get_other_wine: added initial
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-26 00:23:07 +05:00
Boria138 61c59814a5 feat(security): strengthen theme security against multiple attack vectors
- Detect dangerous modules, functions, attributes, and system/network operations
- Prevent code execution via dynamic imports, reflection, and importlib
- Block f-string injection and dangerous expressions
- Detect obfuscated code patterns, including string concatenation (im+port, ev+al),
  Base64-encoded payloads, and character code arrays
- Validate image files using extension checks, magic bytes, and size limits
- Implement AST-based analysis for deep code inspection

Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-25 16:02:34 +05:00
Boria138 80d3b69311 chore(themes): reorgonize it to submodules
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-25 12:30:27 +05:00
Boria138 ac09ac1e36 fix: handle None steam data in egs_api callbacks
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-23 00:27:18 +05:00
Boria138 7cdc7264cd chore(steam_api): returned partially search oops
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-23 00:22:27 +05:00
Boria138 94f61b1124 perf: optimize Steam and anti-cheat metadata caching
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-23 00:15:45 +05:00
Boria138 58bbff8e69 chore: clean all vulture 80% confidence dead code
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-21 19:34:32 +05:00
Renovate Bot 6457084d56 chore(deps): update ghcr.io/renovatebot/renovate:latest docker digest to e09f710 2025-12-21 10:19:52 +00:00
Renovate Bot 3c83a90721 fix(deps): lock file maintenance python dependencies 2025-12-21 04:54:36 +00:00
Renovate Bot c76b80586a chore(deps): update archlinux:base-devel docker digest to 9414f5b 2025-12-21 00:00:43 +00:00
Boria138 b30ade6e1e fix(tests): fix ruff and pyright
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-20 15:42:18 +05:00
Boria138 7a5b467490 feat(autoinstalls): added detail page
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-19 16:28:50 +05:00
Boria138 6f82068864 chore: bump to 0.1.9
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-08 11:47:25 +05:00
Boria138 d4672ecb0e chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-08 11:47:19 +05:00
Renovate Bot 087ac8eda2 chore(deps): update https://gitea.com/actions/setup-node digest to 395ad32 2025-12-07 10:48:27 +00:00
Renovate Bot 0a9acaf5da chore(deps): update https://gitea.com/actions/checkout digest to 8e8c483 2025-12-07 10:48:16 +00:00
Boria138 d0fad6a3c9 fix: added correct parent to GameCard
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-07 15:46:27 +05:00
Boria138 468887110c fix(qt): prevent RuntimeError from accessing deleted Qt C++ objects
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-07 12:45:37 +05:00
Boria138 32e4950a00 Revert "chore: bump ver to 0.1.9"
This reverts commit 29d25cec01.
2025-12-06 14:26:04 +05:00
Boria138 b16074fa5c fix: Add protection against accessing deleted Qt objects in async callbacks
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-06 14:22:41 +05:00
Boria138 1bd7c23419 fix(settings): Remove surrounding quotes from the value if present
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-04 11:53:54 +05:00
Boria138 f4275dd465 fix(get_portproton_start_command): Check if flatpak command exists before trying to run it
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-02 18:44:47 +05:00
Boria138 c8b91c4687 fix(settings): update keyboard navigation
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-02 18:40:27 +05:00
Boria138 4aaeb2e809 fix: dont start game by Enter
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-02 18:23:49 +05:00
Boria138 b6ea9350fa fix: fix gamecard refrefresh regression after 0889aa8
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-02 17:52:19 +05:00
Boria138 29d25cec01 chore: bump ver to 0.1.9
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-01 20:29:45 +05:00
Boria138 a634de5462 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-01 20:27:12 +05:00
Boria138 1ba1781994 feat(settings): added preloader because flatpak is too slow
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-01 17:06:20 +05:00
Boria138 0aae292f61 fix(settings): fix work on Flatpak
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-01 16:59:43 +05:00
Boria138 3ef433af0c fix: Only handle menu button if our main window is currently active
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-12-01 12:08:55 +05:00
Gitea Actions 9fe33e02d8 chore: update steam apps list 2025-12-01T00:01:44Z 2025-12-01 00:01:44 +00:00
Boria138 2ac91a759d chore(localization): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-30 13:20:33 +05:00
Boria138 2c82bff204 fix(main_window): remove redundant loading status and improve loading flow
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-30 13:14:38 +05:00
Boria138 0889aa883e fix: refresh button refresh custom data too now
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-30 12:59:32 +05:00
Boria138 7780dcfc4d chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-29 23:12:31 +05:00
Boria138 9ef39ae2b6 fix: save cover images from URL to custom_data folder
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-29 23:08:54 +05:00
Boria138 86fb2b2d7c chore: added refresh hint
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-29 11:33:07 +05:00
Dervart 9d469f0a12 add horizontal scroll styles for exe settings 2025-11-28 13:54:25 +00:00
Boria138 665a4df322 perf(search): implement full async + indexed search system with major performance gains
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-28 13:48:17 +05:00
Boria138 3abaccb1e0 fix(startup): prevent main thread hangs and optimize resource loading
- run start_sh initialization via QTimer.singleShot with timeout
- add timeout protection to load_theme_fonts()
- load Steam/EGS/PortProton games in parallel instead of sequential
- delay game loading until UI is fully initialized
- fix callback chaining to avoid blocking operations
- add proper timeout + error handling for all Steam/EGS network requests
- add timeouts for flatpak subprocess calls
- improve file I/O error handling to avoid UI freeze
- optimize theme font loading:
  - delay font loading via QTimer.singleShot
  - load fonts in batches of 10
  - reduce font load timeout to 3s
  - remove fonts only when switching themes

Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-28 12:00:00 +05:00
Boria138 77b025f580 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-27 16:03:43 +05:00
Renovate Bot 42e2025e54 fix(deps): lock file maintenance python dependencies 2025-11-27 10:58:16 +00:00
Renovate Bot 8f84bbce31 chore(deps): update https://gitea.com/actions/setup-python digest to 83679a8 2025-11-27 10:55:42 +00:00
Boria138 3026e7da4e fix: fix code work with pyside 6.10
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-27 15:54:08 +05:00
Boria138 3522764c3e fix(detail-page): prevent crash on exit by adding robust widget/animation safety checks
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-26 21:43:18 +05:00
Boria138 fd456e5330 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-26 18:02:48 +05:00
Boria138 99a963d60c chore: drop all pyright ignore
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-26 17:34:24 +05:00
Boria138 0b36e73bce chore(build): fix build on arch
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-26 16:59:04 +05:00
Boria138 4baa2e8684 chore(themes): delete unused fonts
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-26 16:57:56 +05:00
Boria138 4344bbca70 feat: added combination for Update Grid
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-26 14:54:15 +05:00
Boria138 0a8a290d2d chore: ignore pyright
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-25 20:49:58 +05:00
Boria138 92652e8faa fix(mouse_emulations): ignore triggers
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-25 20:32:44 +05:00
Boria138 4f2afaed24 fix: use kernel for detect_gamepad_axes
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-25 14:39:52 +05:00
Boria138 1751e01e47 feat: added setfocus to gamedetail page
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-25 10:22:27 +05:00
Boria138 0f74a47aed chore(localization): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-24 23:49:29 +05:00
Boria138 666ec654a0 fix(ui): prevent text truncation in show_gamepad_tooltip
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-24 23:34:57 +05:00
Boria138 0c25cc9fd2 chore(settings): rework tabble
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-24 23:23:56 +05:00
Boria138 5de83dbf49 fix(settings): drop .ppdb from show-ppdb
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-24 23:03:31 +05:00
Dervart 1821faadf6 styles for virtual keyboard 2025-11-24 16:47:41 +00:00
Boria138 17f0a6b0ea fix(ui): prevent segfault by validating widget existence in async callbacks
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-24 16:27:02 +05:00
Boria138 e9c75b998f chore(localization): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-23 15:43:59 +05:00
Boria138 bbfbc00c11 fix(settings): fix virtual keyboard
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-23 15:28:30 +05:00
Boria138 b7804fdd01 fix(ui): unify handling of QMessageBox and QMenu in controller
- Added _handle_common_ui_elements() for QMessageBox, QMenu, etc.
- Fixed A/B behavior for single- and multi-button QMessageBox dialogs
- Improved D-pad navigation and focused-button selection
- Removed duplicated logic in specialized handlers

Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-23 15:13:21 +05:00
Renovate Bot 043da2cf5d chore(deps): update https://gitea.com/actions/checkout action to v6 2025-11-23 00:01:25 +00:00
Boria138 2fa10e7db3 feat(settings): added tooltip to desc
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-22 23:34:11 +05:00
Boria138 b1b9706272 chore(input_manager): clean dialogs code
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-22 22:36:37 +05:00
Boria138 9c11d33c0a chore(setting): add human readeble value to PW_VULKAN_USE
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-22 19:52:36 +05:00
Boria138 173e1cb88e fix(settings): fix PW_WINE_USE_LIST
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-22 11:53:24 +05:00
Boria138 30606c7ec1 Revert "fix: eliminate blocking calls causing startup freezes and UI hangs"
This reverts commit b2a1046f9d.
2025-11-22 11:21:25 +05:00
Boria138 873e8b050e chore(settings): added disable style to comboboxes
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-22 00:28:15 +05:00
Boria138 59dad21945 chore(settings): adjust virtual keyboard button width (40 → 50)
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-22 00:16:14 +05:00
Boria138 b0c4e943ae feat(settings): added blocked style to advanced tab
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-22 00:05:46 +05:00
Boria138 19e01bba17 Fix: normalize disabled value for PW_AMD_VULKAN_USE
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-21 23:43:36 +05:00
Boria138 836e6cdd36 feat(settings): added initial gamepad navigation
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-21 00:08:02 +05:00
Boria138 b2a1046f9d fix: eliminate blocking calls causing startup freezes and UI hangs
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-20 10:55:35 +05:00
Boria138 80a2c06b5a feat: added refresh button
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-16 17:07:58 +05:00
Boria138 f0a4ace735 perf: add config and icon caching to reduce I/O and improve UI responsiveness
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-16 16:57:40 +05:00
Boria138 7dfaee6831 feat(settings): added proton, 3d_api and prefixes settings
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-16 13:35:35 +05:00
Boria138 5481cd80d7 chore: added null pixmaps check
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-16 12:25:01 +05:00
Boria138 a016cfa810 chore: convert list to set for optimize
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-16 12:13:42 +05:00
Boria138 8fc097ccaf chore: remove broken styles
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-16 12:03:18 +05:00
Boria138 ad3eeb6e06 chore(localization): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-15 21:39:05 +05:00
Boria138 92631cd2c6 chore: separate settings list to new module
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-15 21:39:03 +05:00
Boria138 4477679f2d chore: replace emulataion buttons to xbox + start
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-15 21:38:07 +05:00
Renovate Bot b6644eeee5 fix(deps): update dependency pillow to v12 2025-11-15 21:38:07 +05:00
Renovate Bot 2e921226c4 chore(deps): update https://gitea.com/actions/setup-python action to v6 2025-11-15 21:38:06 +05:00
Renovate Bot 4fc1ea73d3 chore(deps): update https://gitea.com/actions/setup-node action to v6 2025-11-15 21:38:06 +05:00
Renovate Bot 3c15cbe495 chore(deps): update archlinux:base-devel docker digest to 943bdad 2025-11-15 21:38:06 +05:00
Boria138 fed6aafed5 feat: trigger emulation by Xbox + B
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-15 21:38:06 +05:00
Dervart 2e8be13437 WINETRICKS_TABBLE_STYLE more fixes 2025-11-15 16:22:59 +07:00
Dervart ea272c29b6 WINETRICKS_TABBLE_STYLE reworked 2025-11-13 15:43:13 +07:00
Dervart 17262f6c9f Play Button & Settings Button in row 2025-11-07 12:17:36 +07:00
Boria138 e07f3f06bc chore(build): return QtSvg to appimage
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-04 12:28:09 +05:00
Boria138 16a3f4e09a chore(build): added udev rule to allow create virtual devices
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-04 11:14:17 +05:00
Boria138 a448ba29b0 feat(input_manager): added mouse emulation
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-03 12:34:27 +05:00
Boria138 06e55db54d feat(settings): update styles
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-02 16:05:22 +05:00
Boria138 5fce23f261 chore: disable pre-commit auto update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-11-02 15:31:01 +05:00
Renovate Bot 96ad40d625 chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.14.3 2025-11-02 00:01:26 +00:00
Gitea Actions a30f6f2e74 chore: update steam apps list 2025-11-01T00:01:57Z 2025-11-01 00:01:58 +00:00
Boria138 0231073b19 feat(settings): added advanced
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-30 16:27:45 +05:00
Boria138 dec24429f5 chore: separate start.sh to new function
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-28 15:34:01 +05:00
Boria138 4a758f3b3c chore: use flatpak run for flatpak not start.sh
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-27 23:13:48 +05:00
Boria138 0853dd1579 chore: use CLI for clear pfx
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-27 22:36:14 +05:00
Boria138 bbb87c0455 feat(settings): added icon to button thanks to @Dervart
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-27 12:17:00 +05:00
Boria138 b32a71a125 feat(settings): block settings
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-27 12:16:54 +05:00
Renovate Bot bddf9f850a chore(deps): update pre-commit hook astral-sh/uv-pre-commit to v0.9.5 2025-10-26 00:01:29 +00:00
Renovate Bot a9c3cfa167 chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.14.2 2025-10-26 00:01:19 +00:00
Boria138 7675bc4cdc feat: added initial exe settings
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-26 00:12:00 +05:00
Boria138 ffa203f019 feat: restore instance from tray
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-22 15:46:57 +05:00
Boria138 3eed25ecee feat: update grid on update_favorite_icon
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-21 20:41:21 +05:00
Boria138 3736bb279e feat: use SGDB for cover too
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-20 13:07:09 +05:00
Renovate Bot b59ee5ae8e chore(deps): update archlinux:base-devel docker digest to 87a967f 2025-10-19 12:07:20 +00:00
Boria138 33176590fd feat: Make autoinstall games loading asynchronous with caching
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-19 17:03:26 +05:00
Boria138 8046065929 refactor(gamepad): replace busy-wait with threading.Event for monitor readiness
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-19 11:00:22 +05:00
Renovate Bot fbad5add6c chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.14.1 2025-10-19 00:01:23 +00:00
Boria138 438e9737ea chore(release): drop sha256 sums
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-18 21:07:37 +05:00
Boria138 2d39a4c740 fix: fix CloseEvent on native package
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-18 21:06:23 +05:00
Boria138 567203b0b0 chore: bump to 0.1.8
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-18 18:22:32 +05:00
Boria138 502cbc5030 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-18 18:20:50 +05:00
Boria138 9b61215152 chore(theme): update screenshots
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-18 18:17:47 +05:00
Boria138 10d3fe8ab4 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-18 13:40:56 +05:00
Boria138 a568ad9ef8 fix(add_game_dialog): prevent overwriting manually entered game name
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-18 13:09:58 +05:00
Boria138 f074843fc8 fix: prevent udev monitor hang by using non-blocking poll with timeout
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-18 12:53:47 +05:00
Boria138 4ab078b93e fix: sync card_width between GameLibraryManager and MainWindow to prevent config overwrite
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-18 12:17:17 +05:00
Boria138 7df6ad3b80 feat(autoinstalls): added slider
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-17 13:55:17 +05:00
Boria138 464ad0fe9c chore: optimize and clean code
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-17 13:09:02 +05:00
Boria138 cde92885d4 feat(virtual_keybord): added gamepad hint
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-17 00:04:47 +05:00
Boria138 120c7b319c fix: improve gamepad detection using udev ID_INPUT_JOYSTICK property 2025-10-16 23:20:48 +05:00
Boria138 596aed0077 chore(localization): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-16 14:54:30 +05:00
Boria138 6fc6cb1e02 feat: added minimize to tray
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-16 14:53:08 +05:00
Boria138 186e28a19b fix(gamepad): resolve MonitorObserver blocking issue causing application hang
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-16 14:43:49 +05:00
Boria138 28e4d1e77c Revert "chore: broke autorelease for tasting purpose"
This reverts commit fff1f888c4.
2025-10-16 14:11:36 +05:00
Boria138 fff1f888c4 chore: broke autorelease for tasting purpose
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-16 12:48:21 +05:00
Boria138 fdd5a0a3d5 chore(localization): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-16 10:44:30 +05:00
Boria138 792e52d981 feat(dialogs): added controller hints
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-16 10:39:24 +05:00
Boria138 84d5e46a74 chore(changelog): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-15 22:53:08 +05:00
Boria138 4bc764d568 partially revert b1047ba18e
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-15 22:31:35 +05:00
Boria138 9a18aa037e feat(autoinstall): no restart on autoinstall finished
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-15 21:58:40 +05:00
Boria138 ed62d2d1c4 fix: resolve lambda variable capture issue in switchTab method
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-15 21:47:14 +05:00
Boria138 accc9b18b6 chore(localization): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-15 15:31:56 +05:00
Boria138 82249d7eab feat(settings): Added Gamepad type settings
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-15 15:30:31 +05:00
Boria138 476c896940 chore(TODO): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-15 12:44:01 +05:00
Boria138 b1047ba18e fix: fix card overlap on display_filter change
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-13 12:14:54 +05:00
Boria138 987199d8e6 chore(release): enable node experimental-fetch
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-10-13 11:52:43 +05:00
Renovate Bot ef1acd4581 chore(deps): update archlinux:base-devel docker digest to 06ab929 2025-10-12 17:46:27 +00:00
542 changed files with 133403 additions and 19748 deletions

No files matched your search

+35 -36
View File
@@ -4,6 +4,7 @@ on:
workflow_dispatch:
env:
BUILD_BRANCH: ${{ github.ref_name }}
PKGDEST: "/tmp/portprotonqt"
PACKAGE: "portprotonqt"
@@ -11,40 +12,36 @@ jobs:
build-appimage:
name: Build AppImage
runs-on: ubuntu-22.04
container:
image: archlinux:base-devel@sha256:b3c1ff749031ca2e06df1cd83fda74df13206a047b7b0f96b818825d9dc60785
options: --privileged --device /dev/fuse
steps:
- uses: https://gitea.com/actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
- name: Install required dependencies
- name: Prepare container
run: |
sudo apt update
sudo apt install -y binutils coreutils desktop-file-utils gtk-update-icon-cache fakeroot fuse libgdk-pixbuf2.0-dev patchelf python3-pip python3-dev python3-setuptools python3-build python3-venv squashfs-tools strace util-linux zsync git zstd adwaita-icon-theme
pacman-key --init
pacman -Sy --noconfirm archlinux-keyring
pacman -Syu --noconfirm --disable-download-timeout --needed git wget gnupg nodejs npm xorg-server-xvfb zsync
- name: Upgrade pip toolchain
run: |
python3 -m pip install --upgrade \
pip setuptools setuptools-scm wheel packaging build
- uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
ref: ${{ env.BUILD_BRANCH }}
- name: Install appimage-builder
- name: Install appimage dependencies
run: |
git clone https://github.com/Boria138/appimage-builder
cd appimage-builder
pip install .
- name: Install uv
run: |
pip install uv
cd build-aux/AppImage
chmod +x get-dependencies.sh portprotonqt-appimage.sh
./get-dependencies.sh --local --branch "${{ env.BUILD_BRANCH }}"
- name: Build AppImage
run: |
cd build-aux
sed -i '/app_info:/,/- exec:/ s/^\(\s*version:\s*\).*/\1"0"/' AppImageBuilder.yml
appimage-builder
cd build-aux/AppImage
./portprotonqt-appimage.sh
- name: Upload AppImage
uses: https://gitea.com/actions/gitea-upload-artifact@v4
with:
name: PortProtonQt-AppImage
path: build-aux/PortProtonQt*.AppImage
path: build-aux/AppImage/dist/*.AppImage
build-fedora:
name: Build Fedora RPM
@@ -61,9 +58,9 @@ jobs:
steps:
- name: Install build dependencies
run: |
dnf install -y git rpmdevtools python3-devel python3-wheel python3-pip \
python3-build pyproject-rpm-macros python3-setuptools \
redhat-rpm-config nodejs npm
dnf install -y git rpmdevtools meson ninja-build python3-devel \
systemd-rpm-macros vulkan-loader-devel redhat-rpm-config nodejs npm \
gcc gettext
- name: Setup rpmbuild environment
run: |
@@ -73,11 +70,14 @@ jobs:
echo '%_topdir /home/rpmbuild' > /home/rpmbuild/.rpmmacros
- name: Checkout repo
uses: https://gitea.com/actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
ref: ${{ env.BUILD_BRANCH }}
- name: Copy fedora.spec
run: |
cp build-aux/fedora-git.spec /home/rpmbuild/SPECS/${{ env.PACKAGE }}.spec
sed "s|git clone https://git.linux-gaming.ru/Boria138/PortProtonQt.git|git clone -b ${{ env.BUILD_BRANCH }} https://git.linux-gaming.ru/Boria138/PortProtonQt.git|" \
build-aux/fedora-git.spec > /home/rpmbuild/SPECS/${{ env.PACKAGE }}.spec
chown -R rpmbuild:users /home/rpmbuild
- name: Build RPM
@@ -94,16 +94,12 @@ jobs:
name: Build Arch Package
runs-on: ubuntu-22.04
container:
image: archlinux:base-devel@sha256:b3809917ab5a7840d42237f5f92d92660cd036bd75ae343e7825e6a24401f166
volumes:
- /usr:/usr-host
- /opt:/opt-host
options: --privileged
image: archlinux:base-devel@sha256:b3c1ff749031ca2e06df1cd83fda74df13206a047b7b0f96b818825d9dc60785
steps:
- name: Prepare container
run: |
pacman -Sy --noconfirm --disable-download-timeout --needed git wget gnupg nodejs npm
pacman -Syuu --noconfirm --disable-download-timeout --needed git wget gnupg nodejs npm
sed -i 's/#MAKEFLAGS="-j2"/MAKEFLAGS="-j$(nproc) -l$(nproc)"/g' /etc/makepkg.conf
sed -i 's/OPTIONS=(.*)/OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge lto)/g' /etc/makepkg.conf
yes | pacman -Scc
@@ -125,17 +121,20 @@ jobs:
chown user -R /tmp
chown user -R ..
- name: Checkout
uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
ref: ${{ env.BUILD_BRANCH }}
- name: Build
run: |
cd /__w/portproton-repo
git clone https://git.linux-gaming.ru/Boria138/PortProtonQt.git
cp -r "$GITHUB_WORKSPACE" PortProtonQt
cd /__w/portproton-repo/PortProtonQt/build-aux
sed -i "s|source=(\"git+https://git.linux-gaming.ru/Boria138/PortProtonQt.git\")|source=(\"git+https://git.linux-gaming.ru/Boria138/PortProtonQt.git#branch=${{ env.BUILD_BRANCH }}\")|" PKGBUILD-git
chown user -R ..
su user -c "yes '' | makepkg --noconfirm -s -p PKGBUILD-git"
- name: Checkout
uses: https://gitea.com/actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
- name: Upload Arch package
uses: https://gitea.com/actions/gitea-upload-artifact@v4
with:
@@ -0,0 +1,56 @@
name: Build vk_gpu_info on Debian 11
on:
workflow_dispatch:
push:
branches:
- main
paths:
- 'build-aux/vk_gpu_info.c'
- '.gitea/workflows/build-vk-gpu-info-debian.yml'
jobs:
build-debian11:
name: Build vk_gpu_info on Debian 11
runs-on: ubuntu-latest
container:
image: debian:11
options: --privileged
steps:
- name: Install dependencies
run: |
apt-get update
apt-get install -y build-essential pkg-config libvulkan-dev git curl wget nodejs npm
- name: Set up Node.js
uses: https://gitea.com/actions/setup-node@v2
with:
node-version: 20
- name: Checkout code
uses: https://gitea.com/actions/checkout@v3
- name: Compile vk_gpu_info
run: |
cd build-aux
gcc -o vk_gpu_info vk_gpu_info.c -lvulkan
- name: Test vk_gpu_info execution
run: |
cd build-aux
# Check if the executable was created
if [ -f "./vk_gpu_info" ]; then
echo "vk_gpu_info executable created successfully"
# Try to run it (may fail if no Vulkan devices present, but that's OK for build test)
timeout 10s ./vk_gpu_info || echo "vk_gpu_info ran but may have failed due to lack of Vulkan hardware (expected in CI)"
else
echo "ERROR: vk_gpu_info executable was not created"
exit 1
fi
- name: Upload vk_gpu_info binary
uses: https://gitea.com/actions/gitea-upload-artifact@v4
with:
name: vk_gpu_info-debian11-binary
path: build-aux/vk_gpu_info
+29 -36
View File
@@ -8,7 +8,7 @@ on:
env:
# Common version, will be used for tagging the release
VERSION: 0.1.7
VERSION: 0.1.12
PKGDEST: "/tmp/portprotonqt"
PACKAGE: "portprotonqt"
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
@@ -17,54 +17,45 @@ jobs:
build-appimage:
name: Build AppImage
runs-on: ubuntu-22.04
container:
image: archlinux:base-devel
options: --privileged --device /dev/fuse
steps:
- name: Prepare container
run: |
pacman-key --init
pacman -Sy --noconfirm archlinux-keyring
pacman -Syu --noconfirm --disable-download-timeout --needed git wget gnupg nodejs npm xorg-server-xvfb zsync
- uses: https://gitea.com/actions/checkout@v4
- name: Install required dependencies
- name: Install appimage dependencies
run: |
sudo apt update
sudo apt install -y binutils coreutils desktop-file-utils gtk-update-icon-cache fakeroot fuse libgdk-pixbuf2.0-dev patchelf python3-pip python3-dev python3-setuptools python3-build python3-venv squashfs-tools strace util-linux zsync git zstd adwaita-icon-theme
- name: Upgrade pip toolchain
run: |
python3 -m pip install --upgrade \
pip setuptools setuptools-scm wheel packaging build
- name: Install appimage-builder
run: |
git clone https://github.com/Boria138/appimage-builder
cd appimage-builder
pip install .
- name: Install uv
run: |
pip install uv
cd build-aux/AppImage
chmod +x get-dependencies.sh portprotonqt-appimage.sh
./get-dependencies.sh
- name: Build AppImage
run: |
cd build-aux
appimage-builder
cd build-aux/AppImage
./portprotonqt-appimage.sh
- name: Upload AppImage
uses: https://gitea.com/actions/gitea-upload-artifact@v4
with:
name: PortProtonQt-AppImage
path: build-aux/PortProtonQt*.AppImage*
path: build-aux/AppImage/dist/*.AppImage
build-arch:
name: Build Arch Package
runs-on: ubuntu-22.04
container:
image: archlinux:base-devel
volumes:
- /usr:/usr-host
- /opt:/opt-host
options: --privileged
steps:
- name: Prepare container
run: |
pacman -Sy --noconfirm --disable-download-timeout --needed git wget gnupg nodejs npm
pacman -Syuu --noconfirm --disable-download-timeout --needed git wget gnupg nodejs npm
sed -i 's/#MAKEFLAGS="-j2"/MAKEFLAGS="-j$(nproc) -l$(nproc)"/g' /etc/makepkg.conf
sed -i 's/OPTIONS=(.*)/OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge lto)/g' /etc/makepkg.conf
yes | pacman -Scc
@@ -86,17 +77,17 @@ jobs:
chown user -R /tmp
chown user -R ..
- name: Checkout
uses: https://gitea.com/actions/checkout@v4
- name: Build
run: |
cd /__w/portproton-repo
git clone https://git.linux-gaming.ru/Boria138/PortProtonQt.git
cp -r "$GITHUB_WORKSPACE" PortProtonQt
cd /__w/portproton-repo/PortProtonQt/build-aux
chown user -R ..
su user -c "yes '' | makepkg --noconfirm -s"
- name: Checkout
uses: https://gitea.com/actions/checkout@v4
- name: Upload Arch package
uses: https://gitea.com/actions/gitea-upload-artifact@v4
with:
@@ -118,9 +109,9 @@ jobs:
steps:
- name: Install build dependencies
run: |
dnf install -y git rpmdevtools python3-devel python3-wheel python3-pip \
python3-build pyproject-rpm-macros python3-setuptools \
redhat-rpm-config nodejs npm
dnf install -y git rpmdevtools meson ninja-build python3-devel \
systemd-rpm-macros vulkan-loader-devel redhat-rpm-config nodejs npm \
gcc gettext
- name: Setup rpmbuild environment
run: |
@@ -149,7 +140,6 @@ jobs:
release:
name: Create and Publish Release
needs: [build-appimage, build-arch, build-fedora]
runs-on: ubuntu-latest
steps:
- uses: https://gitea.com/actions/checkout@v4
@@ -161,6 +151,7 @@ jobs:
- name: Download all artifacts
uses: https://gitea.com/actions/download-artifact@v3
continue-on-error: true
with:
path: release/
@@ -180,10 +171,12 @@ jobs:
- name: Release
uses: https://gitea.com/actions/gitea-release-action@v1
env:
NODE_OPTIONS: '--experimental-fetch' # if nodejs < 18
with:
body_path: changelog.txt
token: ${{ env.GITEA_TOKEN }}
tag_name: v${{ env.VERSION }}
prerelease: true
files: release/**/*
sha256sum: true
sha256sum: false
+3 -4
View File
@@ -1,4 +1,4 @@
name: Check Translations (disabled until yaspeller is fixed)
name: Check Translations
run-name: Check spelling in translation files
on:
push:
@@ -12,14 +12,13 @@ on:
jobs:
check-translations:
if: false
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: https://gitea.com/actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Set up Python
uses: https://gitea.com/actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
uses: https://gitea.com/actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
with:
python-version-file: "pyproject.toml"
+32 -27
View File
@@ -9,6 +9,8 @@ on:
env:
PKGDEST: "/tmp/portprotonqt"
PACKAGE: "portprotonqt"
PR_REPO_URL: ${{ github.event.pull_request.head.repo.clone_url }}
PR_BRANCH: ${{ github.head_ref }}
jobs:
changes:
@@ -18,7 +20,7 @@ jobs:
fedora: ${{ steps.check.outputs.fedora }}
arch: ${{ steps.check.outputs.arch }}
steps:
- uses: https://gitea.com/actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
- uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
fetch-depth: 0
@@ -37,7 +39,7 @@ jobs:
cat changed_files.txt
# Check AppImage files
if grep -q "build-aux/AppImageBuilder.yml" changed_files.txt; then
if grep -q "build-aux/AppImage/" changed_files.txt; then
echo "appimage=true" >> $GITHUB_OUTPUT
else
echo "appimage=false" >> $GITHUB_OUTPUT
@@ -62,29 +64,34 @@ jobs:
runs-on: ubuntu-22.04
needs: changes
if: needs.changes.outputs.appimage == 'true' || github.event_name == 'workflow_dispatch'
container:
image: archlinux:base-devel@sha256:b3c1ff749031ca2e06df1cd83fda74df13206a047b7b0f96b818825d9dc60785
options: --privileged --device /dev/fuse
steps:
- uses: https://gitea.com/actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
- name: Install required dependencies
- name: Prepare container
run: |
sudo apt update
sudo apt install -y binutils coreutils desktop-file-utils gtk-update-icon-cache fakeroot fuse libgdk-pixbuf2.0-dev patchelf python3-pip python3-dev python3-setuptools squashfs-tools strace util-linux zsync zstd git
pacman-key --init
pacman -Sy --noconfirm --disable-download-timeout --needed archlinux-keyring
pacman -Syu --noconfirm --disable-download-timeout --needed git wget gnupg nodejs npm xorg-server-xvfb zsync
- name: Install tools
- uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Install appimage dependencies
run: |
pip3 install git+https://github.com/Boria138/appimage-builder.git
pip3 install uv
cd build-aux/AppImage
chmod +x get-dependencies.sh portprotonqt-appimage.sh
./get-dependencies.sh --local --branch "${{ env.PR_BRANCH }}" --repo "${{ env.PR_REPO_URL }}"
- name: Build AppImage
run: |
cd build-aux
appimage-builder
cd build-aux/AppImage
./portprotonqt-appimage.sh
- name: Upload AppImage
uses: https://gitea.com/actions/gitea-upload-artifact@v4
with:
name: PortProtonQt-AppImage
path: build-aux/PortProtonQt*.AppImage
path: build-aux/AppImage/dist/*.AppImage
build-fedora:
name: Build Fedora RPM
@@ -103,9 +110,9 @@ jobs:
steps:
- name: Install build dependencies
run: |
dnf install -y git rpmdevtools python3-devel python3-wheel python3-pip \
python3-build pyproject-rpm-macros python3-setuptools \
redhat-rpm-config nodejs npm
dnf install -y git rpmdevtools meson ninja-build python3-devel \
systemd-rpm-macros redhat-rpm-config nodejs npm \
gcc vulkan-loader-devel
- name: Setup rpmbuild environment
run: |
@@ -115,11 +122,12 @@ jobs:
echo '%_topdir /home/rpmbuild' > /home/rpmbuild/.rpmmacros
- name: Checkout repo
uses: https://gitea.com/actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Copy fedora-git.spec
run: |
cp build-aux/fedora-git.spec /home/rpmbuild/SPECS/${{ env.PACKAGE }}.spec
sed "s|git clone https://git.linux-gaming.ru/Boria138/PortProtonQt.git|git clone -b ${{ env.PR_BRANCH }} ${{ env.PR_REPO_URL }}|" \
build-aux/fedora-git.spec > /home/rpmbuild/SPECS/${{ env.PACKAGE }}.spec
chown -R rpmbuild:users /home/rpmbuild
- name: Build RPM
@@ -138,11 +146,7 @@ jobs:
needs: changes
if: needs.changes.outputs.arch == 'true' || github.event_name == 'workflow_dispatch'
container:
image: archlinux:base-devel@sha256:b3809917ab5a7840d42237f5f92d92660cd036bd75ae343e7825e6a24401f166
volumes:
- /usr:/usr-host
- /opt:/opt-host
options: --privileged
image: archlinux:base-devel@sha256:b3c1ff749031ca2e06df1cd83fda74df13206a047b7b0f96b818825d9dc60785
steps:
- name: Prepare container
@@ -169,17 +173,18 @@ jobs:
chown user -R /tmp
chown user -R ..
- name: Checkout
uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Build
run: |
cd /__w/portproton-repo
git clone https://git.linux-gaming.ru/Boria138/PortProtonQt.git
git clone -b ${{ env.PR_BRANCH }} ${{ env.PR_REPO_URL }} PortProtonQt
cd /__w/portproton-repo/PortProtonQt/build-aux
sed -i "s|source=(\"git+https://git.linux-gaming.ru/Boria138/PortProtonQt.git\")|source=(\"git+${{ env.PR_REPO_URL }}#branch=${{ env.PR_BRANCH }}\")|" PKGBUILD-git
chown user -R ..
su user -c "yes '' | makepkg --noconfirm -s -p PKGBUILD-git"
- name: Checkout
uses: https://gitea.com/actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
- name: Upload Arch package
uses: https://gitea.com/actions/gitea-upload-artifact@v4
with:
+2 -2
View File
@@ -20,10 +20,10 @@ jobs:
name: Check code
runs-on: ubuntu-latest
steps:
- uses: https://gitea.com/actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
- uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Set up Node.js
uses: https://gitea.com/actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5
uses: https://gitea.com/actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
with:
node-version: 20
+2 -2
View File
@@ -11,10 +11,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: https://gitea.com/actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
uses: https://gitea.com/actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Set up Python
uses: https://gitea.com/actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
uses: https://gitea.com/actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
with:
python-version-file: "pyproject.toml"
-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:17c8966ef38fc361e108a550ffe2dcedf73e846f9975a974aea3d48c66b107a6
steps:
- uses: https://gitea.com/actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
- name: Set up Node.js
uses: https://gitea.com/actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5
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 }}
+17
View File
@@ -6,6 +6,9 @@ dist/
wheels/
*.egg-info
# Meson
builddir/
# Virtual environments
.venv
venv
@@ -33,3 +36,17 @@ Thumbs.db
.vscode
.ropeproject
.zed
# get_wine debug folder
proton_downloads
# Need for refactoring
REFRACTORING_PLAN.md
AUDIT_CHECKLIST.md
# Compiled gettext catalogs
portprotonqt/locales/*/LC_MESSAGES/*.mo
# AI
.codex
+21 -3
View File
@@ -11,12 +11,12 @@ repos:
- id: check-yaml
- repo: https://github.com/astral-sh/uv-pre-commit
rev: 0.8.22
rev: 0.9.5
hooks:
- id: uv-lock
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.14.0
rev: v0.14.3
hooks:
- id: ruff-check
@@ -28,7 +28,16 @@ repos:
language: system
types_or: [python, pyi]
require_serial: true
exclude: '^portprotonqt/themes/[^/]+/styles\.py$'
exclude: 'themes/.*/styles\.py$'
- repo: local
hooks:
- id: bash-n
name: bash -n
entry: bash -c 'for file in "$@"; do bash -n "$file" || exit 1; done' --
language: system
files: ^build-aux/share/portproton/scripts/
types: [shell]
- repo: local
hooks:
@@ -39,3 +48,12 @@ repos:
types: [file]
files: ^portprotonqt/themes/[^/]+/styles\.py$
pass_filenames: false
- repo: local
hooks:
- id: check-meson
name: Check meson.build syntax and file inclusion
entry: ./dev-scripts/check_meson_files.py
language: system
files: (^portprotonqt/.*\.py$|meson\.build$)
pass_filenames: false
+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
+209 -3
View File
@@ -3,6 +3,212 @@
Все заметные изменения в этом проекте фиксируются в этом файле.
Формат основан на [Keep a Changelog](https://keepachangelog.com/) и придерживается принципов [Semantic Versioning](https://semver.org/).
## [0.1.12] - 2026-04-17
### Added
- В настройки PortProton добавлена галочка добавления/удаления инструмента совместимости Steam
- В настройки библиотеки добавлен скрытый тип отображения бейджей
- Добавлена валидация конфига
- Аргумент командной строки `--add-steam-compat-tool` для использования PortProtonQt как инструмента совместимости Steam
- Аргумент командной строки `--reinstall-steam-compat-tool` для переустановки инструмента совместимости Steam в пользовательском каталоге
- Аргумент командной строки `--remove-steam-compat-tool` для удаления инструмента совместимости Steam из пользовательского каталога
- В репозиторий добавлен пакет `portprotonqt-steam-compat` для глобального добавления PortProtonQt как инструмента совместимости Steam
- Добавлена кнопка настроек для игр из Steam, если PortProtonQt используется как инструмент совместимости
- Добавлен прогресс-бар скачивания Wine на детальной странице игры
- Возможность прямого запуска `.exe` через CLI
- Ленивая загрузка данных автоустановок: обложки и метаданные не загружаются, если вкладка скрыта в настройках или пользователь на неё не заходит
- Добавлена кнопка Cancel в диалог управления Wine/Proton для закрытия в WM без рамок окна
- Аргумент командной строки `--resolution` для запуска приложения с определённым разрешением (например, 1920x1080)
- В настройки `.exe` добавлены параметры MangoHud
- В настройки `.exe` добавлены параметры Gamescope
- В настройки `.exe` добавлен выбор второго `.exe` через встроенный файловый менеджер
- В настройки библиотеки добавлен выбор типа бейджей: `Детальный` и `Компактный`
- Создания нового префикса
- Автодополнение fish и zsh для команды `portprotonqt`.
- В диалог добавления/редактирования игры добавлены галочки добавления в Steam, меню и на рабочий стол
- В настройки добавлены опции автозапуска и запуска приложения сразу в трей
- Добавлена поддержка запуска `.iso` (CLI, drag-and-drop и диалог добавления игры)
- На вкладке MangoHud добавлена кнопка записи системного `MangoHud.conf` из текущего env-конфига
- Добавлена вкладка `System` с разделами WIFI, VPN, Bluetooth, Storage, Audio и Power (включается через `--ppqtos`)
- Добавлен аргумент командной строки `--ppqtos` для открытия вкладки `System`
### Changed
- Проверка подключения к интернету теперь использует Yandex как основной сервер с Google в качестве fallback
- Переработан внешний вид вкладки «Настройки PortProton»
- Детальная страница игры адаптирована под маленькие экраны
- На детальной странице Steam-игр добавлена кнопка «Открыть папку с игрой»
- При добавлении и удалении игры из Steam теперь не пишется о необходимости перезапуска, если используется CEF, а не VDF
- Все комментарии в коде переведены на английский язык
- Все комментарии в коде теперь используют модуль logger
- При включении MangoHud в настройках exe также добавляется `MANGOHUD_CONFIG`, если его нет
- Начат рефакторинг скриптов
- Ускорен запуск программы на ~47%
- Снижение потребления памяти на ~17%
- pyproject теперь используется только как менеджер зависимостей для UV, сборка через него больше невозможна
- Скриншоты в metainfo теперь размера 1000x700 для соответствия стандартам Flathub
- Все подсказки при наведении теперь имеют общий вид
- Все константы теперь вынесены в файлы тем
- Все контекстные меню теперь имеют общий вид
- Все таблицы теперь имеют общий вид
- На вкладке «Темы» добавлена явная подсветка фокуса для списка тем, карусели скриншотов и кнопки применения
- Удалены подписи скриншотов тем
- Системный оверлей переработан и перенесён в отдельную вкладку `System`
### Fixed
- Исправлены высокая нагрузка на CPU и утечка памяти при изменении размера карточек
- Скачивание обложек со SteamGridDB теперь асинхронное и не вызывает зависание окна
- Уменьшен таймаут запроса к SteamGridDB с 10 до 3 секунд, чтобы не тормозить запуск при медленном 404
- Запуск игр из трея
- Исправлено обновление сетки библиотеки при удалении карточки игры
- Исправлено отображение пустых вложенных подменю в трее в Dank Material Shell и GNOME.
- Получение статуса античита для игр из Steam
- Кэш обложек со SteamCDN
- Исправлена эмуляция прокрутки через Bluetooth-геймпад в режиме эмуляции мыши
- Исправлен выбор статистики времени: теперь приоритет у совпадающего `sha256` `.exe`, затем у точного пути, а при удалении игры очищается её запись в `data/tmp/statistics`
- Исправлены некорректные комментарии в CSS для combobox
- Исправлена валидация синтаксиса комментариев CSS и опечатки в winetricks.py
- Перевод кнопок «Yes»/«No» в QMessageBox
- Виртуальная клавиатура теперь открывается сверху, если перекрывает поле ввода
- Кнопка «Загрузить резервную копию префикса» больше не выходит за границы окна
- Подсказки управления больше не накладываются друг на друга в маленьком окне
- Исправлено некорректное попадание фокуса на метаинформацию темы при навигации геймпадом
- Навигация геймпадом на вкладке «Темы» ограничена элементами: список тем, карусель скриншотов и кнопка «Применить тему»
- При наличии `custom_data` отключены сетевые запросы обложек к SGDB и SteamCDN для карточек игр
- Отключён автоскролл `QComboBox` колесом мыши, когда выпадающий список закрыт
- Исправлен поиск `.desktop` при несовпадении имени карточки и файла (в том числе после редактирования): добавлено сопоставление через `custom_data/*/metadata.txt` (`name`) с fallback по данным `.desktop`
- Виртуальная клавиатура теперь адаптирует ширину кнопок под размер окна
- Усилена общая безопасность механизма пользовательских тем, включая валидацию, проверки загрузки и устойчивость к некорректным/потенциально опасным темам
- Улучшено формирование ссылок WeAntiCheatYet
### Contributors
- @Simple16
- @Dervart
---
## [0.1.11] - 2026-02-18
### Added
- Настройка для скрытия вкладки автоустановок
- Запуск в режиме лога
- Экспериментальная поддержка ARM через запуск в muvm
- Аргумент командной строки --force-muvm (автоматический запуск в muvm происходит только при наличии Apple Silicon)
- Утилита vk_gpu_info для использования в логе
- Выбор GPU для запуска игр в настройках
- Выбор системного WINE в настройках игры
- Кнопка открыть PPDB в настройках игры
### Changed
- qt6-svg теперь обязательная зависимость
- Проект теперь собирается с использованием meson
- Виртуальная клавиатура теперь открывается при нажатии на любое поле для ввода
- Удалена настройка для выбора поставщика Vulkan AMD
- Бейдж PortProton теперь открывает ppdb.linux-gaming.ru, а не linux-gaming.ru
- Изменена структура тем для поддержки вложенных папок
- После скачивания Wine список выбранных Wine теперь очищается
- Эмуляция мыши через геймпад теперь не зависит от окна в фокусе и работает всегда
- У настроек убран префикс PW и _ заменены на пробелы
- Кнопки создания лога и настроек теперь не отображаются на карточках Steam игр
### Fixed
- Подсказки на виртуальной клавиатуре изменяются сразу при смене gamepad_type в настройках без необходимости перезапуска
- Исправлено определение Flatpak версии PortProton
- Исправлена работа модульных локальных тем
- Исправлена упаковка локалей
### Contributors
- @Simple16
---
## [0.1.10] - 2026-01-14
### Added
- Детальная страница для автоустановок с описанием игры и возможности переустановки
- Менеджер версий Wine для скачивания и удаления различных версий Wine и Proton
- Возможность перевода описаний, названий тем на другие языки
- Возможность перевода подписи к скриншотам тем на другие языки
### Changed
- Проведена чистка мёртвого кода
- Улучшена проверка сторонних тем
- В документации по созданию тем добавлены примеры dropin тем
- Проведена редактура перевода
- Переработана сортировка вайнов и префиксов во всех комбобоксах
- Список Wine и префиксов теперь обновляется на лету, а не при запуске приложения
- AppImage теперь работает на дистрибутивах, использующих альтернативный libc, а также на тех, что не следуют стандарту FHS
### Fixed
- Изменение размера карточек автоустановок через геймпад
- Проведена работа по исправлению утечек памяти
- Время игры теперь парсится даже если файл статистики повреждён
- При наличии битых обложек они теперь перекачиваются, а не провоцируют ошибки libpng
- Управление QMessageBox через стрелки клавиатуры
### Contributors
- @Vector_null
- @Dervart
- @Simple16
---
## [0.1.9] - 2025-12-08
### Added
- Добавлены основные и расширенные настройки для `.exe`-файлов
- Добавлена кнопка обновления сетки без необходимости перезапуска PortProtonQt (F5 на клавиатуре, GUIDE + Select на геймпаде)
- Добавлена эмуляция мыши по GUIDE (Xbox или PS) + Start для установки приложений или взаимодействия с инструментами Wine, не адаптированными под геймпад (работает только если PortProtonQt вне фокуса)
- При сворачивании приложения в трей оно теперь корректно восстанавливается, вместо запуска нового экземпляра
- Добавлена поддержка SteamGridDB в качестве дополнительного источника обложек
- При добавлении карточки в избранное она автоматически становится первой без необходимости перезапуска
### Changed
- Изменено оформление виртуальной клавиатуры для лучшего соответствия общей теме
- Ускорено чтение конфигов за счёт уменьшения количества обращений к файловой системе.
- Из стандартной темы удалены неиспользуемые шрифты
- Улучшена совместимость с Qt 6.10
- Ускорен запуск программы
- В диалог редактирования ярлыка добавлен placeholder с уточнением того, что в качестве обложки можно использовать и ссылку, а не только файл
- Ссылку на обложку в диалоге редактирования ярлыка теперь можно указывать без протокола вроде http или https
### Fixed
- Добавлено больше проверок на None для избежания вылетов
- Улучшена работа с потоками для избежания вылетов
- Исправлен запуск PortProton из Flatpak: теперь используется `flatpak run`, а не `start.sh`
- Исправлено применение обложки по ссылке например со steamgriddb.com/
- Исправлено множественное открытие окон в X11
### Contributors
- @Vector_null
- @Dervart
---
## [0.1.8] - 2025-10-18
### Added
- В настройки добавлен пункт для выбора типа геймпада для подсказок по управлению
- В настройки добавлен пункт для выбора сворачивать ли приложение в трей или нет
- К диалогу добавления игры, Winetricks, диалогу выбора файлов и виртуальной клавиатуре добавлены подсказки по управлению с геймпада
- Во вкладку автоустановок добавлен слайдер изменения размера карточек (они со слайдером в библиотеке независимы)
### Changed
- При завершении автоустановки приложение больше не перезапускается
- Выбор exe в диалоге добавления игры больше не перезаписывает введенное в поле название
- Обновлены и дополнены скриншоты темы
### Fixed
- Исправлено наложение карточек при смене фильтра игр
- Исправлена невозможность запуска приложения без подключённого геймпада
- Исправлена невозможность установки компонентов Winetricks через геймпад
- Ресиверы и виртуальные устройства больше не считаются за геймпад
### Contributors
- @Vector_null
---
## [0.1.7] - 2025-10-12
### Added
@@ -45,7 +251,7 @@
- Аргумент cli --debug-level для указания уровня дебага
### Changed
- Управления с геймпада теперь перехватывается только если окно в фокусе
- Управление с геймпада теперь перехватывается, только если окно в фокусе
### Fixed
- Исправлена проблема с устаревшими кэш-файлами, вызывающими несоответствия при обновлении JSON
@@ -83,7 +289,7 @@
- Добавление и удаление игр из Steam больше не требует перезапуска клиента.
- Обновлены все зависимости (затрагивает только AppImage).
- Приложение теперь не закрывается полностью, а сворачивается в трей.
- Карточки теперь все находятся друг под другом, а не в разнабой
- Карточки теперь все находятся друг под другом, а не вразброс
- Изменено соотношение сторон карточек
### Fixed
@@ -233,7 +439,7 @@
---
## [0.1.1] – 2025-05-17
## [0.1.1] — 2025-05-17
### 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
```
+9 -11
View File
@@ -1,28 +1,27 @@
- [X] Адаптировать структуру проекта для поддержки инструментов сборки
- [X] Добавить возможность управления с геймпада
- [ ] Добавить возможность управления с тачскрина
- [X] Добавить возможность управления с тачскрина (Формально и так есть)
- [X] Добавить возможность управления с мыши и клавиатуры
- [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] Получать обложки для игр из SteamGridDB или CDN Steam
- [X] Получать обложки для игр из CDN Steam
- [X] Оптимизировать работу со Steam API для ускорения времени запуска
- [X] Улучшить функцию поиска в Steam API для исправления некорректного определения ID (например, Graven определялся как ENGRAVEN или GRAVENFALL, Spore — как SporeBound или Spore Valley)
- [ ] Убрать логи Steam API в релизной версии, так как они замедляют выполнение кода
- [X] Убрать логи Steam API в релизной версии, так как они замедляют выполнение кода
- [X] Решить проблему с ограничением Steam API в 50 тысяч игр за один запрос (иногда нужные игры не попадают в выборку и остаются без обложки)
- [X] Избавиться от вызовов yad
- [X] Реализовать собственный системный трей вместо использования трея PortProton
- [X] Добавить экранную клавиатуру в поиск (реализация собственной клавиатуры слишком затратна, поэтому используется встроенная в DE клавиатура: Maliit в KDE, gjs-osk в GNOME, Squeekboard в Phosh, клавиатура SteamOS и т.д.)
- [X] Добавить экранную клавиатуру в поиск
- [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] Добавить переводы в переопределения
@@ -49,7 +48,7 @@
- [X] Добавить недокументированные параметры конфигурации в GUI (time_detail_level, games_sort_method, games_display_filter)
- [X] Добавить систему избранного для карточек
- [X] Заменить все `print` на `logging`
- [ ] Привести все логи к единому языку
- [X] Привести все логи к единому языку
- [X] Уменьшить количество подстановок в переводах
- [X] Стилизовать все элементы без стилей (QMessageBox, QSlider, QDialog)
- [X] Убрать жёсткую привязку путей к стрелочкам QComboBox в `styles.py`
@@ -62,7 +61,6 @@
- [X] Исправить некорректную работу слайдера увеличения размера карточек([Последствия регрессии после этого коммита](https://github.com/Boria138/PortProtonQt/commit/aebdd60b5537280f06a922ff80469cd4ab27bc63)
- [X] Исправить баг с наложением карточек друг на друга при изменении фильтра отображения ([Последствия регрессии после этого коммита](https://github.com/Boria138/PortProtonQt/commit/aebdd60b5537280f06a922ff80469cd4ab27bc63))
- [X] Скопировать логику управления с D-pad на стрелки с клавиатуры
- [ ] Доделать светлую тему
- [ ] Добавить подсказки к управлению с геймпада
- [X] Добавить подсказки к управлению с геймпада
- [X] Добавить миниатюры к выбору файлов в диалоге добавления игры
- [X] Добавить быстрый доступ к смонтированным дискам к выбору файлов в диалоге добавления игры
+115
View File
@@ -0,0 +1,115 @@
#!/bin/sh
set -eu
# Initialize variables
LOCAL_MODE=false
BRANCH="main"
REPO_URL="https://git.linux-gaming.ru/Boria138/PortProtonQt.git"
# Parse arguments
while [ $# -gt 0 ]; do
case "$1" in
--local|-l)
LOCAL_MODE=true
;;
--branch)
if [ -n "${2:-}" ] && [ "${2#-}" = "$2" ]; then
BRANCH="$2"
shift
else
echo "Error: --branch requires an argument"
exit 1
fi
;;
--repo)
if [ -n "${2:-}" ] && [ "${2#-}" = "$2" ]; then
REPO_URL="$2"
shift
else
echo "Error: --repo requires an argument"
exit 1
fi
;;
*)
echo "Unknown option: $1"
exit 1
;;
esac
shift
done
ARCH="$(uname -m)"
EXTRA_PACKAGES="https://raw.githubusercontent.com/pkgforge-dev/Anylinux-AppImages/refs/heads/main/useful-tools/get-debloated-pkgs.sh"
if [ "$LOCAL_MODE" = true ]; then
echo "Using local PKGBUILD-git from repository..."
PPQT_PKGBUILD=""
else
echo "Using stable version of PortProtonQt from main branch..."
PPQT_PKGBUILD="https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/build-aux/PKGBUILD"
fi
echo "Tweak makepkg..."
echo "---------------------------------------------------------------"
# Disable creating debug packages
sed -i 's/OPTIONS=(.*)/OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge lto)/g' /etc/makepkg.conf
# Setup packager name
sed -i 's/#PACKAGER=".*"/PACKAGER="Linux Gaming Team"/g' /etc/makepkg.conf
# Use all threads for building
sed -i 's/#MAKEFLAGS="-j2"/MAKEFLAGS="-j$(nproc) -l$(nproc)"/g' /etc/makepkg.conf
# makepkg cannot not as root by default
sed -i -e 's|EUID == 0|EUID == 69|g' /usr/bin/makepkg
# always disable this nonsense that was recently added to makepkg
sed -i -e 's/(( ${#arch\[@\]} != $(printf "%s\\n" ${arch\[@\]} | sort -u | wc -l) ))/false/' /usr/share/makepkg/lint_pkgbuild/arch.sh 2>/dev/null || :
echo "Tweak pacman..."
echo "---------------------------------------------------------------"
pacman-key --init
pacman -S --noconfirm archlinux-keyring
# Chaotic-AUR keys
pacman-key --recv-key 3056513887B78AEB --keyserver keyserver.ubuntu.com
pacman-key --lsign-key 3056513887B78AEB
pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst'
pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst'
# Enable the multilib repository
cat << EOM >> /etc/pacman.conf
[multilib]
Include = /etc/pacman.d/mirrorlist
[chaotic-aur]
Include = /etc/pacman.d/chaotic-mirrorlist
SigLevel = Never
EOM
# Disable locale noextract
sed -i -E 's@[[:space:]]*usr/share/locale/\*@@g; s@[[:space:]]+@ @g; s@[[:space:]]+$@@' /etc/pacman.conf
pacman -Syy
echo "Building PortProtonQt from PKGBUILD..."
echo "---------------------------------------------------------------"
if [ "$LOCAL_MODE" = true ]; then
cp ../PKGBUILD-git ./PKGBUILD
else
wget --retry-connrefused --tries=30 "$PPQT_PKGBUILD" -O ./PKGBUILD
fi
sed -i "s|source=(\"git+https://git.linux-gaming.ru/Boria138/PortProtonQt.git\")|source=(\"git+${REPO_URL}#branch=$BRANCH\")|" PKGBUILD
makepkg -si --noconfirm
echo "Installing debloated packages..."
echo "---------------------------------------------------------------"
wget --retry-connrefused --tries=30 "$EXTRA_PACKAGES" -O ./get-debloated-pkgs.sh
chmod +x ./get-debloated-pkgs.sh
./get-debloated-pkgs.sh --add-common --prefer-nano
if [ "$LOCAL_MODE" = true ]; then
# For git version, we use portprotonqt-git
pacman -Q portprotonqt-git | awk '{print $2}' | cut -d- -f1 > ~/version
else
# For stable version, we use portprotonqt
pacman -Q portprotonqt | awk '{print $2}' | cut -d- -f1 > ~/version
fi
+38
View File
@@ -0,0 +1,38 @@
#!/bin/sh
set -eu
SHARUN="https://raw.githubusercontent.com/pkgforge-dev/Anylinux-AppImages/refs/heads/main/useful-tools/quick-sharun.sh"
ARCH="$(uname -m)"
VERSION="$(cat ~/version)"
export ARCH VERSION
export OUTPATH=./dist
export DESKTOP=/usr/share/applications/ru.linux_gaming.PortProtonQt.desktop
export ICON=/usr/share/icons/hicolor/scalable/apps/ru.linux_gaming.PortProtonQt.svg
export OUTNAME=PortProtonQt-"$VERSION"-anylinux-"$ARCH".AppImage
export DEPLOY_OPENGL=1
export DEPLOY_SYS_PYTHON=1
export OPTIMIZE_LAUNCH=1
# Adjust comp settings to bypass oom-killer
export DWARFS_COMP="zstd:level=15 -S22 -B5"
# DEPLOY ALL LIBS
wget --retry-connrefused --tries=30 "$SHARUN" -O ./quick-sharun
chmod +x ./quick-sharun
# Add udev rules
mkdir -p ./AppDir/etc/udev/rules.d
cp /usr/lib/udev/rules.d/60-portprotonqt.rules ./AppDir/etc/udev/rules.d
# Deploy dependencies
# Qt libs have to be passed manually due to the app being a python script
./quick-sharun \
/usr/bin/portprotonqt* \
/usr/lib/libQt6Core.so* \
/usr/lib/libQt6Gui.so* \
/usr/lib/libQt6Network.so* \
/usr/lib/libudev.so*
# Turn AppDir into AppImage
./quick-sharun --make-appimage
-79
View File
@@ -1,79 +0,0 @@
version: 1
script:
- rm -rf AppDir || true
- mkdir -p AppDir/usr/local/lib/python3.10/dist-packages
- uv venv
- uv pip install --no-cache-dir ../
- cp -r .venv/lib/python3.10/site-packages/* AppDir/usr/local/lib/python3.10/dist-packages
- cp -r share AppDir/usr
- rm -rf AppDir/usr/local/lib/python3.10/dist-packages/PySide6/Qt/qml/
- rm -f AppDir/usr/local/lib/python3.10/dist-packages/PySide6/{assistant,designer,linguist,lrelease,lupdate}
- rm -f AppDir/usr/local/lib/python3.10/dist-packages/PySide6/{Qt3DAnimation*,Qt3DCore*,Qt3DExtras*,Qt3DInput*,Qt3DLogic*,Qt3DRender*,QtBluetooth*,QtCharts*,QtConcurrent*,QtDataVisualization*,QtDesigner*,QtExampleIcons*,QtGraphs*,QtGraphsWidgets*,QtHelp*,QtHttpServer*,QtLocation*,QtMultimedia*,QtMultimediaWidgets*,QtNetwork*,QtNetworkAuth*,QtNfc*,QtOpenGL*,QtOpenGLWidgets*,QtPdf*,QtPdfWidgets*,QtPositioning*,QtPrintSupport*,QtQml*,QtQuick*,QtQuick3D*,QtQuickControls2*,QtQuickTest*,QtQuickWidgets*,QtRemoteObjects*,QtScxml*,QtSensors*,QtSerialBus*,QtSerialPort*,QtSpatialAudio*,QtSql*,QtStateMachine*,QtSvgWidgets*,QtTest*,QtTextToSpeech*,QtUiTools*,QtWebChannel*,QtWebEngineCore*,QtWebEngineQuick*,QtWebEngineWidgets*,QtWebSockets*,QtWebView*,QtXml*}
- shopt -s extglob
- rm -rf AppDir/usr/local/lib/python3.10/dist-packages/PySide6/Qt/lib/!(libQt6Core*|libQt6DBus*|libQt6Egl*|libQt6Gui*|libQt6Svg*|libQt6Wayland*|libQt6Widgets*|libQt6XcbQpa*|libicudata*|libicui18n*|libicuuc*)
AppDir:
path: ./AppDir
after_bundle:
- rm -rf $TARGET_APPDIR/usr/share/man || true
- rm -rf $TARGET_APPDIR/usr/share/doc || true
- rm -rf $TARGET_APPDIR/usr/share/doc-base || true
- rm -rf $TARGET_APPDIR/usr/share/info || true
- rm -rf $TARGET_APPDIR/usr/share/help || true
- rm -rf $TARGET_APPDIR/usr/share/gtk-doc || true
- rm -rf $TARGET_APPDIR/usr/share/devhelp || true
- rm -rf $TARGET_APPDIR/usr/share/examples || true
- rm -rf $TARGET_APPDIR/usr/share/pkgconfig || true
- rm -rf $TARGET_APPDIR/usr/share/bash-completion || true
- rm -rf $TARGET_APPDIR/usr/share/pixmaps || true
- rm -rf $TARGET_APPDIR/usr/share/mime || true
- rm -rf $TARGET_APPDIR/usr/share/metainfo || true
- rm -rf $TARGET_APPDIR/usr/include || true
- rm -rf $TARGET_APPDIR/usr/lib/pkgconfig || true
- find $TARGET_APPDIR -type f \( -name '*.a' -o -name '*.la' -o -name '*.h' -o -name '*.cmake' -o -name '*.pdb' \) -delete || true
- "find $TARGET_APPDIR -type f -executable -exec file {} \\; | grep ELF | grep -v '/dist-packages/' | grep -v '/site-packages/' | cut -d: -f1 | xargs strip --strip-unneeded || true"
- find $TARGET_APPDIR -type d -empty -delete || true
app_info:
id: ru.linux_gaming.PortProtonQt
name: PortProtonQt
icon: ru.linux_gaming.PortProtonQt
version: 0.1.7
exec: usr/bin/python3
exec_args: "-m portprotonqt.app $@"
apt:
arch: amd64
sources:
- sourceline: 'deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ jammy main restricted universe multiverse'
key_url: 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x871920d1991bc93c'
include:
- python3-minimal
- python3-pkg-resources
- libopengl0
- libk5crypto3
- libkrb5-3
- libgssapi-krb5-2
- libxcb-cursor0
- libimage-exiftool-perl
- xdg-utils
- cabextract
- curl
- 7zip
- unzip
- unrar
exclude:
- "*-doc"
- "*-man"
- manpages
- mandb
- "*-dev"
- "*-static"
- "*-dbg"
- "*-dbgsym"
runtime:
env:
PYTHONHOME: '${APPDIR}/usr'
PYTHONPATH: '${APPDIR}/usr/local/lib/python3.10/dist-packages'
PERLLIB: '${APPDIR}/usr/share/perl5:${APPDIR}/usr/lib/x86_64-linux-gnu/perl/5.34:${APPDIR}/usr/share/perl/5.34'
AppImage:
sign-key: None
arch: x86_64
comp: zstd
+39 -11
View File
@@ -1,23 +1,51 @@
pkgname=portprotonqt
pkgver=0.1.7
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-numpy' 'python-requests' 'python-babel' 'python-evdev' 'python-pyudev' 'python-orjson'
'python-psutil' 'python-tqdm' 'python-vdf' 'pyside6' 'icoextract' 'python-pillow' 'perl-image-exiftool' 'xdg-utils' 'python-beautifulsoup4' 'python-websocket-client' 'cabextract' 'unzip' 'curl' 'unrar')
makedepends=('python-'{'build','installer','setuptools','wheel'})
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' '7zip')
depends_aarch64=('muvm')
makedepends=('meson' 'ninja' 'vulkan-headers' 'gettext')
source=("git+https://git.linux-gaming.ru/Boria138/PortProtonQt#tag=v$pkgver")
sha256sums=('SKIP')
build() {
cd "$srcdir/PortProtonQt"
python -m build --wheel --no-isolation
arch-meson PortProtonQt build
meson compile -C build
}
package() {
cd "$srcdir/PortProtonQt"
python -m installer --destdir="$pkgdir" dist/*.whl
cp -r build-aux/share "$pkgdir/usr/"
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
}
+39 -11
View File
@@ -1,13 +1,14 @@
pkgname=portprotonqt-git
pkgname=('portprotonqt-git' 'portprotonqt-git-steam-compat')
pkgver=.
pkgrel=1
pkgdesc="Modern GUI for managing and launching games from PortProton, Steam, and Epic Games Store.(developerment build)"
pkgdesc="Modern GUI for managing and launching games from PortProton, Steam, and Epic Games Store (development build)"
arch=('any')
url="https://git.linux-gaming.ru/Boria138/PortProtonQt"
license=('GPL-3.0')
depends=('python-numpy' 'python-requests' 'python-babel' 'python-evdev' 'python-pyudev' 'python-orjson'
'python-psutil' 'python-tqdm' 'python-vdf' 'pyside6' 'icoextract' 'python-pillow' 'perl-image-exiftool' 'xdg-utils' 'python-beautifulsoup4' 'python-websocket-client' 'cabextract' 'unzip' 'curl' 'unrar')
makedepends=('python-'{'build','installer','setuptools','wheel'})
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' '7zip')
depends_aarch64=('muvm')
makedepends=('meson' 'ninja' 'vulkan-headers' 'gettext')
source=("git+https://git.linux-gaming.ru/Boria138/PortProtonQt.git")
sha256sums=('SKIP')
@@ -17,12 +18,39 @@ pkgver() {
}
build() {
cd "$srcdir/PortProtonQt"
python -m build --wheel --no-isolation
arch-meson PortProtonQt build
meson compile -C build
}
package() {
cd "$srcdir/PortProtonQt"
python -m installer --destdir="$pkgdir" dist/*.whl
cp -r build-aux/share "$pkgdir/usr/"
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
}
+61 -22
View File
@@ -1,38 +1,35 @@
%global pypi_name portprotonqt
%global pypi_version 0.1.1
%global pypi_version 0.1.12
%global oname PortProtonQt
%global build_timestamp %(date +"%Y%m%d")
%global _python_no_extras_requires 1
%global rel_build 1.git.%{build_timestamp}%{?dist}
Name: python-%{pypi_name}-git
Name: %{pypi_name}-git
Version: %{pypi_version}
Release: %{rel_build}
Summary: Modern GUI for managing and launching games from PortProton, Steam, and Epic Games Store (development build)
License: GPL-3.0
URL: https://git.linux-gaming.ru/Boria138/PortProtonQt
BuildArch: noarch
ExclusiveArch: x86_64 aarch64
BuildRequires: meson >= 0.61.2
BuildRequires: ninja-build
BuildRequires: python3-devel
BuildRequires: python3-wheel
BuildRequires: python3-pip
BuildRequires: python3-build
BuildRequires: pyproject-rpm-macros
BuildRequires: python3dist(setuptools)
BuildRequires: git
BuildRequires: gettext
BuildRequires: systemd-rpm-macros
BuildRequires: vulkan-loader-devel
BuildRequires: gcc
%description
%{summary}
Obsoletes: python3-%{pypi_name}-git < %{version}-%{release}
Provides: python3-%{pypi_name}-git = %{version}-%{release}
%package -n python3-%{pypi_name}-git
Summary: %{summary}
%{?python_provide:%python_provide python3-%{pypi_name}}
Requires: python3-babel
Requires: python3-evdev
Requires: python3-icoextract
Requires: python3-numpy
Requires: python3-websocket-client
Requires: python3-orjson
Requires: python3-psutil
@@ -43,18 +40,45 @@ Requires: python3-tqdm
Requires: python3-vdf
Requires: python3-pefile
Requires: python3-pillow
Requires: perl-Image-ExifTool
Requires: xdg-utils
Requires: python3-beautifulsoup4
Requires: python3-rapidfuzz
Requires: python3-libarchive-c
Requires: perl-Image-ExifTool
Requires: qt6-qtsvg
Requires: cabextract
Requires: gzip
Requires: unzip
Requires: curl
Requires: unrar
Requires: glx-utils
Requires: pciutils
Requires: vulkan-loader
Requires: 7zip
%description -n python3-%{pypi_name}-git
# System Tab
Recommends: NetworkManager
Recommends: bluez
Recommends: upower
Recommends: pulseaudio-utils
Recommends: python3-dbus-fast
Recommends: python3-qrcode
%ifarch aarch64
Requires: muvm
%endif
%description
This application provides a sleek, intuitive graphical interface for managing and launching games from PortProton, Steam, and Epic Games Store. It consolidates your game libraries into a single, user-friendly hub for seamless navigation and organization. Its lightweight structure and cross-platform support deliver a cohesive gaming experience, eliminating the need for multiple launchers. Unique PortProton integration enhances Linux gaming, enabling effortless play of Windows-based titles with minimal setup.
%package -n %{pypi_name}-git-steam-compat
Summary: Steam compatibility tool for PortProtonQt (development build)
License: GPL-3.0
Requires: %{pypi_name}-git = %{version}-%{release}
%description -n %{pypi_name}-git-steam-compat
Steam compatibility tool integration for PortProtonQt. This package installs
the necessary files to use PortProtonQt as a Proton compatibility tool in Steam.
%{?python_disable_dependency_generator}
%prep
@@ -62,19 +86,34 @@ git clone https://git.linux-gaming.ru/Boria138/PortProtonQt.git
%build
cd %{oname}
%pyproject_wheel
%meson \
-Dpython_purelibdir=%{python3_sitelib} \
-Dudev_rulesdir=%{_udevrulesdir}
%meson_build
%install
cd %{oname}
%pyproject_install
%pyproject_save_files %{pypi_name}
cp -r build-aux/share %{buildroot}/usr/
%meson_install
bash ./dev-scripts/generate-completions.sh
install -Dpm 0644 ./completions/portprotonqt -t %{buildroot}%{bash_completions_dir}
install -Dpm 0644 ./completions/portprotonqt.fish -t %{buildroot}%{fish_completions_dir}
install -Dpm 0644 ./completions/_portprotonqt -t %{buildroot}%{zsh_completions_dir}
%find_lang %{pypi_name}
%files -n python3-%{pypi_name}-git -f %{pyproject_files}
%files -f %{oname}/%{pypi_name}.lang
%{_bindir}/%{pypi_name}
%{_bindir}/vk_gpu_info
%{python3_sitelib}/%{pypi_name}/
%{_datadir}/icons/hicolor/scalable/apps/ru.linux_gaming.PortProtonQt.svg
%{_metainfodir}/ru.linux_gaming.PortProtonQt.metainfo.xml
%{_udevrulesdir}/60-portprotonqt.rules
%{_datadir}/polkit-1/rules.d/ru.linux_gaming.PortProtonQt.rules
%{_datadir}/applications/ru.linux_gaming.PortProtonQt.desktop
%{bash_completions_dir}/portprotonqt
%{fish_completions_dir}/portprotonqt.fish
%{zsh_completions_dir}/_portprotonqt
%files -n %{pypi_name}-git-steam-compat
%{_datadir}/steam/compatibilitytools.d/PortProtonQt/
%changelog
+61 -22
View File
@@ -1,35 +1,32 @@
%global pypi_name portprotonqt
%global pypi_version 0.1.7
%global pypi_version 0.1.12
%global oname PortProtonQt
%global _python_no_extras_requires 1
Name: python-%{pypi_name}
Name: %{pypi_name}
Version: %{pypi_version}
Release: 1%{?dist}
Summary: Modern GUI for managing and launching games from PortProton, Steam, and Epic Games Store
License: GPL-3.0
URL: https://git.linux-gaming.ru/Boria138/PortProtonQt
BuildArch: noarch
ExclusiveArch: x86_64 aarch64
BuildRequires: meson >= 0.61.2
BuildRequires: ninja-build
BuildRequires: python3-devel
BuildRequires: python3-wheel
BuildRequires: python3-pip
BuildRequires: python3-build
BuildRequires: pyproject-rpm-macros
BuildRequires: python3dist(setuptools)
BuildRequires: git
BuildRequires: gettext
BuildRequires: systemd-rpm-macros
BuildRequires: vulkan-loader-devel
BuildRequires: gcc
%description
%{summary}
Obsoletes: python3-%{pypi_name} < %{version}-%{release}
Provides: python3-%{pypi_name} = %{version}-%{release}
%package -n python3-%{pypi_name}
Summary: %{summary}
%{?python_provide:%python_provide python3-%{pypi_name}}
Requires: python3-babel
Requires: python3-evdev
Requires: python3-icoextract
Requires: python3-numpy
Requires: python3-websocket-client
Requires: python3-orjson
Requires: python3-psutil
@@ -40,18 +37,45 @@ Requires: python3-tqdm
Requires: python3-vdf
Requires: python3-pefile
Requires: python3-pillow
Requires: perl-Image-ExifTool
Requires: xdg-utils
Requires: python3-beautifulsoup4
Requires: python3-rapidfuzz
Requires: python3-libarchive-c
Requires: perl-Image-ExifTool
Requires: qt6-qtsvg
Requires: cabextract
Requires: gzip
Requires: unzip
Requires: curl
Requires: unrar
Requires: glx-utils
Requires: pciutils
Requires: vulkan-loader
Requires: 7zip
%description -n python3-%{pypi_name}
# System Tab
Recommends: NetworkManager
Recommends: bluez
Recommends: upower
Recommends: pulseaudio-utils
Recommends: python3-dbus-fast
Recommends: python3-qrcode
%ifarch aarch64
Requires: muvm
%endif
%description
This application provides a sleek, intuitive graphical interface for managing and launching games from PortProton, Steam, and Epic Games Store. It consolidates your game libraries into a single, user-friendly hub for seamless navigation and organization. Its lightweight structure and cross-platform support deliver a cohesive gaming experience, eliminating the need for multiple launchers. Unique PortProton integration enhances Linux gaming, enabling effortless play of Windows-based titles with minimal setup.
%package -n %{pypi_name}-steam-compat
Summary: Steam compatibility tool for PortProtonQt
License: GPL-3.0
Requires: %{pypi_name} = %{version}-%{release}
%description -n %{pypi_name}-steam-compat
Steam compatibility tool integration for PortProtonQt. This package installs
the necessary files to use PortProtonQt as a Proton compatibility tool in Steam.
%{?python_disable_dependency_generator}
%prep
@@ -61,19 +85,34 @@ git checkout v%{pypi_version}
%build
cd %{oname}
%pyproject_wheel
%meson \
-Dpython_purelibdir=%{python3_sitelib} \
-Dudev_rulesdir=%{_udevrulesdir}
%meson_build
%install
cd %{oname}
%pyproject_install
%pyproject_save_files %{pypi_name}
cp -r build-aux/share %{buildroot}/usr/
%meson_install
bash ./dev-scripts/generate-completions.sh
install -Dpm 0644 ./completions/portprotonqt -t %{buildroot}%{bash_completions_dir}
install -Dpm 0644 ./completions/portprotonqt.fish -t %{buildroot}%{fish_completions_dir}
install -Dpm 0644 ./completions/_portprotonqt -t %{buildroot}%{zsh_completions_dir}
%find_lang %{pypi_name}
%files -n python3-%{pypi_name} -f %{pyproject_files}
%files -f %{oname}/%{pypi_name}.lang
%{_bindir}/%{pypi_name}
%{_bindir}/vk_gpu_info
%{python3_sitelib}/%{pypi_name}/
%{_datadir}/icons/hicolor/scalable/apps/ru.linux_gaming.PortProtonQt.svg
%{_metainfodir}/ru.linux_gaming.PortProtonQt.metainfo.xml
%{_udevrulesdir}/60-portprotonqt.rules
%{_datadir}/polkit-1/rules.d/ru.linux_gaming.PortProtonQt.rules
%{_datadir}/applications/ru.linux_gaming.PortProtonQt.desktop
%{bash_completions_dir}/portprotonqt
%{fish_completions_dir}/portprotonqt.fish
%{zsh_completions_dir}/_portprotonqt
%files -n %{pypi_name}-steam-compat
%{_datadir}/steam/compatibilitytools.d/PortProtonQt/
%changelog
+4
View File
@@ -0,0 +1,4 @@
int main(void)
{
return 0;
}
@@ -0,0 +1 @@
KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", TAG+="uaccess"
+8
View File
@@ -0,0 +1,8 @@
#!/usr/bin/env python3
import sys
from portprotonqt.app import main
if __name__ == "__main__":
sys.exit(main())
@@ -1,9 +1,14 @@
[Desktop Entry]
Name=PortProtonQt
Exec=portprotonqt
Exec=portprotonqt %u
Type=Application
Comment=A modern GUI for PortProton project
Comment[ru]=Современный графический интерфейс для проекта PortProton
Comment[es]=Una interfaz gráfica moderna para el proyecto PortProton
Comment[pt]=Uma interface gráfica moderna para o projeto PortProton
Comment[de]=Eine moderne grafische Benutzeroberfläche für das PortProton-Projekt
Terminal=false
Icon=ru.linux_gaming.PortProtonQt
StartupWMClass=ru.linux_gaming.PortProtonQt
Categories=Game;Utility;
MimeType=x-scheme-handler/portproton;application/x-ms-dos-exec;application/x-executable;application/x-dosexec;application/x-iso9660-image;application/x-cd-image;
@@ -1,30 +0,0 @@
_portprotonqt_completions() {
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
# Available options
opts="--fullscreen --debug-level --help -h"
# Debug level choices
debug_levels="ALL DEBUG INFO WARNING ERROR CRITICAL"
case "${prev}" in
--debug-level)
# Complete debug levels
COMPREPLY=( $(compgen -W "${debug_levels}" -- ${cur}) )
return 0
;;
*)
;;
esac
# Complete options
if [[ ${cur} == -* ]]; then
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
fi
}
complete -F _portprotonqt_completions portprotonqt
@@ -33,31 +33,37 @@
</categories>
<url type="homepage">https://git.linux-gaming.ru/Boria138/PortProtonQt</url>
<url type="bugtracker">https://git.linux-gaming.ru/Boria138/PortProtonQt/issues</url>
<url type="translate">https://translate.codeberg.org/engage/portprotonqt</url>
<screenshots>
<screenshot type="default">
<image>https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/%D0%91%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0.png</image>
<image>https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/library.jpg</image>
<caption>Library</caption>
<caption xml:lang="ru">Библиотека</caption>
</screenshot>
<screenshot>
<image>https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/%D0%9A%D0%B0%D1%80%D1%82%D0%BE%D1%87%D0%BA%D0%B0.png</image>
<image>https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/game_card.jpg</image>
<caption>Card detail page</caption>
<caption xml:lang="ru">Детали игры</caption>
</screenshot>
<screenshot>
<image>https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8.png</image>
<image>https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/portproton_settings.jpg</image>
<caption>Settings</caption>
<caption xml:lang="ru">Настройки</caption>
</screenshot>
<screenshot>
<image>https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%BD%D0%BE%D0%B5%20%D0%BC%D0%B5%D0%BD%D1%8E.png</image>
<image>https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/context_menu.jpg</image>
<caption>Context Menu</caption>
<caption xml:lang="ru">Контекстное меню</caption>
</screenshot>
<screenshot>
<image>https://git.linux-gaming.ru/Boria138/PortProtonQt/src/branch/main/portprotonqt/themes/standart/images/screenshots/%D0%9E%D0%B2%D0%B5%D1%80%D0%BB%D0%B5%D0%B9.png</image>
<caption>Overlay</caption>
<caption xml:lang="ru">Оверлей</caption>
<image>https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/exe_settings.jpg</image>
<caption>Exe Settings</caption>
<caption xml:lang="ru">Настройки exe</caption>
</screenshot>
<screenshot>
<image>https://git.linux-gaming.ru/Boria138/PortProtonQt/raw/branch/main/portprotonqt/themes/standart/images/screenshots/wine_settings.jpg</image>
<caption>Wine Settings</caption>
<caption xml:lang="ru">Настройки Wine</caption>
</screenshot>
</screenshots>
<keywords>
@@ -0,0 +1,21 @@
polkit.addRule(function(action, subject) {
var cmd_line = polkit.spawn(["ps", "-o", "args=", "-p", String(subject.pid)]);
var ppid = polkit.spawn(["ps", "-o", "ppid=", "-p", String(subject.pid)]).trim();
var parent_cmd_line = "";
if (ppid) {
parent_cmd_line = polkit.spawn(["ps", "-o", "args=", "-p", ppid]);
}
var is_ppqt_call =
cmd_line.includes("ppqtos") ||
parent_cmd_line.includes("ppqtos");
if ( (
action.id === "org.freedesktop.NetworkManager.settings.modify.system" ||
action.id == "org.freedesktop.udisks2.filesystem-mount-system" ||
action.id == "org.freedesktop.udisks2.filesystem-mount-other-seat" ||
action.id == "org.freedesktop.udisks2.filesystem-unmount-others" ) &&
is_ppqt_call)
{
return polkit.Result.YES;
}
});
Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

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
}
Loaded 100 of 542 files, more files were not shown because too many files have changed in this diff. Show more