From dccada0e11f358f6d0335f57c9cb5dc2e02fa2e6 Mon Sep 17 00:00:00 2001 From: loathingKernel <142770+loathingKernel@users.noreply.github.com> Date: Fri, 31 May 2024 21:09:00 +0300 Subject: [PATCH 1/3] GameWidget: Rephrase steam shortcut action --- rare/components/tabs/games/game_widgets/game_widget.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rare/components/tabs/games/game_widgets/game_widget.py b/rare/components/tabs/games/game_widgets/game_widget.py index 5a646e30..aa2fa0c1 100644 --- a/rare/components/tabs/games/game_widgets/game_widget.py +++ b/rare/components/tabs/games/game_widgets/game_widget.py @@ -172,9 +172,9 @@ class GameWidget(LibraryWidget): if steam_shortcuts_supported() and self.rgame.is_installed: if steam_shortcut_exists(self.rgame.app_name): - self.steam_shortcut_action.setText(self.tr("Remove from Steam")) + self.steam_shortcut_action.setText(self.tr("Remove Steam shortcut")) else: - self.steam_shortcut_action.setText(self.tr("Add to Steam")) + self.steam_shortcut_action.setText(self.tr("Create Steam shortcut")) self.addAction(self.steam_shortcut_action) self.addAction(self.reload_action) From d2377e6558c61c07ea81cc29b77edc49592ad92b Mon Sep 17 00:00:00 2001 From: loathingKernel <142770+loathingKernel@users.noreply.github.com> Date: Tue, 4 Jun 2024 17:26:35 +0300 Subject: [PATCH 2/3] Project: update pyproject.toml dependencies --- pyproject.toml | 2 +- requirements-dev.txt | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 1887e232..39fb9b89 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,7 +33,7 @@ pywebview = [ ] legendary-gl = "^0.20.34" orjson = "^3.8.0" -typing-extensions = "^4.3.0" +vdf = "^4.3" [tool.poetry.scripts] start = "rare.main:main" diff --git a/requirements-dev.txt b/requirements-dev.txt index 1435147b..23473b85 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,5 +1,7 @@ build wheel +pylint +mypy black[d] toml cx-freeze From 89b765b64dcb92caf6bd59a7e797714f13a9004d Mon Sep 17 00:00:00 2001 From: loathingKernel <142770+loathingKernel@users.noreply.github.com> Date: Tue, 4 Jun 2024 17:28:15 +0300 Subject: [PATCH 3/3] SteamShortcuts: Fix a couple of crashes * The grid directory might not exist, so create it before copying the coverart * The shortcuts files might not exist, so don't try to open it. --- rare/utils/steam_shortcuts.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/rare/utils/steam_shortcuts.py b/rare/utils/steam_shortcuts.py index 548babbe..78528466 100644 --- a/rare/utils/steam_shortcuts.py +++ b/rare/utils/steam_shortcuts.py @@ -52,6 +52,8 @@ def find_steam_users(steam_path: str) -> List[SteamUser]: def _load_shortcuts(steam_path: str, user: SteamUser) -> Dict[str, SteamShortcut]: _shortcuts = {} vdf_path = os.path.join(steam_path, "userdata", str(user.short_id), "config", "shortcuts.vdf") + if not os.path.exists(vdf_path): + return _shortcuts with open(vdf_path, 'rb') as f: shortcuts = vdf.binary_load(f).get("shortcuts", {}) for idx, shortcut in shortcuts.items(): @@ -100,11 +102,13 @@ def load_steam_shortcuts(): def save_steam_shortcuts(): - if __steam_shortcuts: - _save_shortcuts(__steam_dir, __steam_user, __steam_shortcuts) - logger.info("Saved Steam shortcuts for user %s(%s)", __steam_user.account_name, __steam_user.persona_name) - else: - logger.error("Failed to save Steam shortcuts") + logger.info( + "%s Steam shortcuts for user %s(%s)", + "Saving" if __steam_shortcuts else "Removing", + __steam_user.account_name, + __steam_user.persona_name + ) + _save_shortcuts(__steam_dir, __steam_user, __steam_shortcuts) def steam_shortcut_exists(app_name: str) -> bool: @@ -152,6 +156,8 @@ def add_steam_shortcut(app_name: str, app_title: str) -> SteamShortcut: def add_steam_coverart(app_name: str, shortcut: SteamShortcut): steam_grid_dir = os.path.join(__steam_dir, "userdata", str(__steam_user.short_id), "config", "grid") + if not os.path.exists(steam_grid_dir): + os.mkdir(steam_grid_dir) shutil.copy(image_wide_path(app_name), os.path.join(steam_grid_dir, shortcut.game_hero)) shutil.copy(image_icon_path(app_name), os.path.join(steam_grid_dir, shortcut.game_logo)) shutil.copy(image_wide_path(app_name), os.path.join(steam_grid_dir, shortcut.grid_wide)) @@ -160,6 +166,9 @@ def add_steam_coverart(app_name: str, shortcut: SteamShortcut): def remove_steam_coverart(shortcut: SteamShortcut): steam_grid_dir = os.path.join(__steam_dir, "userdata", str(__steam_user.short_id), "config", "grid") + if not os.path.exists(steam_grid_dir): + logger.warning("Path does not exist %s", steam_grid_dir) + return Path(steam_grid_dir).joinpath(shortcut.game_hero).unlink(missing_ok=True) Path(steam_grid_dir).joinpath(shortcut.game_logo).unlink(missing_ok=True) Path(steam_grid_dir).joinpath(shortcut.grid_wide).unlink(missing_ok=True)