3 Commits

Author SHA1 Message Date
d7ab7dc7ce chore(changelog): update
All checks were successful
Check Translations / check-translations (push) Successful in 15s
Code and build check / Check code (push) Successful in 1m44s
Code and build check / Build with uv (push) Successful in 53s
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-07-01 15:56:01 +05:00
82a93abb7d chore(localization): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-07-01 15:55:01 +05:00
25439889f7 feat(context_menu_manager): add quick game launch via context menu
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-07-01 15:52:39 +05:00
11 changed files with 79 additions and 27 deletions

View File

@@ -10,6 +10,7 @@
- Начальная поддержка EGS (Без EOS, скачивания игр и запуска игр из сторонних магазинов) - Начальная поддержка EGS (Без EOS, скачивания игр и запуска игр из сторонних магазинов)
- Автодополнение bash для комманды portprotonqt - Автодополнение bash для комманды portprotonqt
- Поддержка геймпадов в диалоге выбора игры - Поддержка геймпадов в диалоге выбора игры
- Быстрый запуск игры через контекстное меню
### Changed ### Changed
- Удалены сборки для Fedora 40 - Удалены сборки для Fedora 40

View File

@@ -20,9 +20,9 @@ Current translation status:
| Locale | Progress | Translated | | Locale | Progress | Translated |
| :----- | -------: | ---------: | | :----- | -------: | ---------: |
| [de_DE](./de_DE/LC_MESSAGES/messages.po) | 0% | 0 of 182 | | [de_DE](./de_DE/LC_MESSAGES/messages.po) | 0% | 0 of 183 |
| [es_ES](./es_ES/LC_MESSAGES/messages.po) | 0% | 0 of 182 | | [es_ES](./es_ES/LC_MESSAGES/messages.po) | 0% | 0 of 183 |
| [ru_RU](./ru_RU/LC_MESSAGES/messages.po) | 100% | 182 of 182 | | [ru_RU](./ru_RU/LC_MESSAGES/messages.po) | 100% | 183 of 183 |
--- ---

View File

@@ -20,9 +20,9 @@
| Локаль | Прогресс | Переведено | | Локаль | Прогресс | Переведено |
| :----- | -------: | ---------: | | :----- | -------: | ---------: |
| [de_DE](./de_DE/LC_MESSAGES/messages.po) | 0% | 0 из 182 | | [de_DE](./de_DE/LC_MESSAGES/messages.po) | 0% | 0 из 183 |
| [es_ES](./es_ES/LC_MESSAGES/messages.po) | 0% | 0 из 182 | | [es_ES](./es_ES/LC_MESSAGES/messages.po) | 0% | 0 из 183 |
| [ru_RU](./ru_RU/LC_MESSAGES/messages.po) | 100% | 182 из 182 | | [ru_RU](./ru_RU/LC_MESSAGES/messages.po) | 100% | 183 из 183 |
--- ---

View File

@@ -129,6 +129,11 @@ class ContextMenuManager:
menu = QMenu(self.parent) menu = QMenu(self.parent)
menu.setStyleSheet(self.theme.CONTEXT_MENU_STYLE) menu.setStyleSheet(self.theme.CONTEXT_MENU_STYLE)
launch_action = menu.addAction(_("Launch Game"))
launch_action.triggered.connect(
lambda: self._launch_game(game_card)
)
favorites = read_favorites() favorites = read_favorites()
is_favorite = game_card.name in favorites is_favorite = game_card.name in favorites
favorite_action = menu.addAction( favorite_action = menu.addAction(
@@ -219,6 +224,40 @@ class ContextMenuManager:
menu.exec(game_card.mapToGlobal(pos)) menu.exec(game_card.mapToGlobal(pos))
def _launch_game(self, game_card):
"""
Launch a game using a validated exec_line, handling EGS games specifically.
Args:
game_card: The GameCard instance containing game data.
"""
if not self._check_portproton():
return
if game_card.game_source == "epic":
if not os.path.exists(self.legendary_path):
self.signals.show_warning_dialog.emit(
_("Error"),
_("Legendary executable not found at {path}").format(path=self.legendary_path)
)
return
# Construct EGS launch command
wrapper = "flatpak run ru.linux_gaming.PortProton"
start_sh_path = os.path.join(self.portproton_location, "data", "scripts", "start.sh")
if self.portproton_location and ".var" not in self.portproton_location:
wrapper = start_sh_path
if not os.path.exists(start_sh_path):
self.signals.show_warning_dialog.emit(
_("Error"),
_("start.sh not found at {path}").format(path=start_sh_path)
)
return
exec_line = f'"{self.legendary_path}" launch {game_card.appid} --no-wine --wrapper "env START_FROM_STEAM=1 {wrapper}"'
else:
exec_line = self._get_exec_line(game_card.name, game_card.exec_line)
if not exec_line:
return
self.parent.toggleGame(exec_line)
def add_egs_to_steam(self, game_name: str, app_name: str): def add_egs_to_steam(self, game_name: str, app_name: str):
""" """
Adds an EGS game to Steam using the egs_api. Adds an EGS game to Steam using the egs_api.

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-07-01 00:15+0500\n" "POT-Creation-Date: 2025-07-01 15:54+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: de_DE\n" "Language: de_DE\n"
@@ -26,6 +26,9 @@ msgstr ""
msgid "PortProton is not found" msgid "PortProton is not found"
msgstr "" msgstr ""
msgid "Launch Game"
msgstr ""
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "" msgstr ""
@@ -66,6 +69,10 @@ msgstr ""
msgid "Legendary executable not found at {path}" msgid "Legendary executable not found at {path}"
msgstr "" msgstr ""
#, python-brace-format
msgid "start.sh not found at {path}"
msgstr ""
msgid "Success" msgid "Success"
msgstr "" msgstr ""
@@ -110,10 +117,6 @@ msgstr ""
msgid "Removed '{game_name}' from favorites" msgid "Removed '{game_name}' from favorites"
msgstr "" msgstr ""
#, python-brace-format
msgid "start.sh not found at {path}"
msgstr ""
#, python-brace-format #, python-brace-format
msgid "Launch game \"{name}\" with PortProton" msgid "Launch game \"{name}\" with PortProton"
msgstr "" msgstr ""

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-07-01 00:15+0500\n" "POT-Creation-Date: 2025-07-01 15:54+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: es_ES\n" "Language: es_ES\n"
@@ -26,6 +26,9 @@ msgstr ""
msgid "PortProton is not found" msgid "PortProton is not found"
msgstr "" msgstr ""
msgid "Launch Game"
msgstr ""
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "" msgstr ""
@@ -66,6 +69,10 @@ msgstr ""
msgid "Legendary executable not found at {path}" msgid "Legendary executable not found at {path}"
msgstr "" msgstr ""
#, python-brace-format
msgid "start.sh not found at {path}"
msgstr ""
msgid "Success" msgid "Success"
msgstr "" msgstr ""
@@ -110,10 +117,6 @@ msgstr ""
msgid "Removed '{game_name}' from favorites" msgid "Removed '{game_name}' from favorites"
msgstr "" msgstr ""
#, python-brace-format
msgid "start.sh not found at {path}"
msgstr ""
#, python-brace-format #, python-brace-format
msgid "Launch game \"{name}\" with PortProton" msgid "Launch game \"{name}\" with PortProton"
msgstr "" msgstr ""

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PortProtonQt 0.1.1\n" "Project-Id-Version: PortProtonQt 0.1.1\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-07-01 00:15+0500\n" "POT-Creation-Date: 2025-07-01 15:54+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -24,6 +24,9 @@ msgstr ""
msgid "PortProton is not found" msgid "PortProton is not found"
msgstr "" msgstr ""
msgid "Launch Game"
msgstr ""
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "" msgstr ""
@@ -64,6 +67,10 @@ msgstr ""
msgid "Legendary executable not found at {path}" msgid "Legendary executable not found at {path}"
msgstr "" msgstr ""
#, python-brace-format
msgid "start.sh not found at {path}"
msgstr ""
msgid "Success" msgid "Success"
msgstr "" msgstr ""
@@ -108,10 +115,6 @@ msgstr ""
msgid "Removed '{game_name}' from favorites" msgid "Removed '{game_name}' from favorites"
msgstr "" msgstr ""
#, python-brace-format
msgid "start.sh not found at {path}"
msgstr ""
#, python-brace-format #, python-brace-format
msgid "Launch game \"{name}\" with PortProton" msgid "Launch game \"{name}\" with PortProton"
msgstr "" msgstr ""

View File

@@ -9,8 +9,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-07-01 00:15+0500\n" "POT-Creation-Date: 2025-07-01 15:54+0500\n"
"PO-Revision-Date: 2025-07-01 00:15+0500\n" "PO-Revision-Date: 2025-07-01 15:54+0500\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language: ru_RU\n" "Language: ru_RU\n"
"Language-Team: ru_RU <LL@li.org>\n" "Language-Team: ru_RU <LL@li.org>\n"
@@ -27,6 +27,9 @@ msgstr "Ошибка"
msgid "PortProton is not found" msgid "PortProton is not found"
msgstr "PortProton не найден" msgstr "PortProton не найден"
msgid "Launch Game"
msgstr "Запустить игру"
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Удалить из Избранного" msgstr "Удалить из Избранного"
@@ -67,6 +70,10 @@ msgstr "Удалить из PortProton"
msgid "Legendary executable not found at {path}" msgid "Legendary executable not found at {path}"
msgstr "Legendary не найден по пути {path}" msgstr "Legendary не найден по пути {path}"
#, python-brace-format
msgid "start.sh not found at {path}"
msgstr "start.sh не найден по адресу {path}"
msgid "Success" msgid "Success"
msgstr "Успешно" msgstr "Успешно"
@@ -113,10 +120,6 @@ msgstr "'{game_name}' был(а) добавлен(а) в избранное"
msgid "Removed '{game_name}' from favorites" msgid "Removed '{game_name}' from favorites"
msgstr "'{game_name}' был(а) удалён(а) из избранного" msgstr "'{game_name}' был(а) удалён(а) из избранного"
#, python-brace-format
msgid "start.sh not found at {path}"
msgstr "start.sh не найден по адресу {path}"
#, python-brace-format #, python-brace-format
msgid "Launch game \"{name}\" with PortProton" msgid "Launch game \"{name}\" with PortProton"
msgstr "Запустить игру \"{name}\" с помощью PortProton" msgstr "Запустить игру \"{name}\" с помощью PortProton"