Merge pull request #411 from loathingKernel/develop
Fix a few issues with Steam shortcuts
This commit is contained in:
commit
3ccd3e7711
|
@ -33,7 +33,7 @@ pywebview = [
|
||||||
]
|
]
|
||||||
legendary-gl = "^0.20.34"
|
legendary-gl = "^0.20.34"
|
||||||
orjson = "^3.8.0"
|
orjson = "^3.8.0"
|
||||||
typing-extensions = "^4.3.0"
|
vdf = "^4.3"
|
||||||
|
|
||||||
[tool.poetry.scripts]
|
[tool.poetry.scripts]
|
||||||
start = "rare.main:main"
|
start = "rare.main:main"
|
||||||
|
|
|
@ -172,9 +172,9 @@ class GameWidget(LibraryWidget):
|
||||||
|
|
||||||
if steam_shortcuts_supported() and self.rgame.is_installed:
|
if steam_shortcuts_supported() and self.rgame.is_installed:
|
||||||
if steam_shortcut_exists(self.rgame.app_name):
|
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:
|
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.steam_shortcut_action)
|
||||||
|
|
||||||
self.addAction(self.reload_action)
|
self.addAction(self.reload_action)
|
||||||
|
|
|
@ -52,6 +52,8 @@ def find_steam_users(steam_path: str) -> List[SteamUser]:
|
||||||
def _load_shortcuts(steam_path: str, user: SteamUser) -> Dict[str, SteamShortcut]:
|
def _load_shortcuts(steam_path: str, user: SteamUser) -> Dict[str, SteamShortcut]:
|
||||||
_shortcuts = {}
|
_shortcuts = {}
|
||||||
vdf_path = os.path.join(steam_path, "userdata", str(user.short_id), "config", "shortcuts.vdf")
|
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:
|
with open(vdf_path, 'rb') as f:
|
||||||
shortcuts = vdf.binary_load(f).get("shortcuts", {})
|
shortcuts = vdf.binary_load(f).get("shortcuts", {})
|
||||||
for idx, shortcut in shortcuts.items():
|
for idx, shortcut in shortcuts.items():
|
||||||
|
@ -100,11 +102,13 @@ def load_steam_shortcuts():
|
||||||
|
|
||||||
|
|
||||||
def save_steam_shortcuts():
|
def save_steam_shortcuts():
|
||||||
if __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)
|
_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")
|
|
||||||
|
|
||||||
|
|
||||||
def steam_shortcut_exists(app_name: str) -> bool:
|
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):
|
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")
|
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_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_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))
|
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):
|
def remove_steam_coverart(shortcut: SteamShortcut):
|
||||||
steam_grid_dir = os.path.join(__steam_dir, "userdata", str(__steam_user.short_id), "config", "grid")
|
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_hero).unlink(missing_ok=True)
|
||||||
Path(steam_grid_dir).joinpath(shortcut.game_logo).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)
|
Path(steam_grid_dir).joinpath(shortcut.grid_wide).unlink(missing_ok=True)
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
build
|
build
|
||||||
wheel
|
wheel
|
||||||
|
pylint
|
||||||
|
mypy
|
||||||
black[d]
|
black[d]
|
||||||
toml
|
toml
|
||||||
cx-freeze
|
cx-freeze
|
||||||
|
|
Loading…
Reference in a new issue