Skip to content

Commit 8b7acbf

Browse files
committed
steam: better success/failure handling for add_shortcut
1 parent 045e8b5 commit 8b7acbf

File tree

1 file changed

+41
-32
lines changed

1 file changed

+41
-32
lines changed

Diff for: bottles/backend/managers/steam.py

+41-32
Original file line numberDiff line numberDiff line change
@@ -524,36 +524,7 @@ def launch_app(prefix: str):
524524
SignalManager.send(Signals.GShowUri, Result(data=uri))
525525

526526
def add_shortcut(self, program_name: str, program_path: str):
527-
logging.info(f"Adding shortcut for {program_name}")
528-
cmd = "xdg-open"
529-
args = f"bottles:run/'{self.config.Name}'/'{program_name}'"
530-
appid = crc32(str.encode(self.config.Name + program_name)) | 0x80000000
531-
532-
if self.userdata_path is None:
533-
logging.warning("Userdata path is not set")
534-
return Result(False)
535-
536-
confs = glob(os.path.join(self.userdata_path, "*/config/"))
537-
shortcut = {
538-
"appid": appid - 0x100000000,
539-
"AppName": program_name,
540-
"Exe": cmd,
541-
"StartDir": ManagerUtils.get_bottle_path(self.config),
542-
"icon": ManagerUtils.extract_icon(self.config, program_name, program_path),
543-
"ShortcutPath": "",
544-
"LaunchOptions": args,
545-
"IsHidden": 0,
546-
"AllowDesktopConfig": 1,
547-
"AllowOverlay": 1,
548-
"OpenVR": 0,
549-
"Devkit": 0,
550-
"DevkitGameID": "",
551-
"DevkitOverrideAppID": "",
552-
"LastPlayTime": 0,
553-
"tags": {"0": "Bottles"},
554-
}
555-
556-
for conf in confs:
527+
def __add_to_user_conf(conf: str) -> bool:
557528
logging.info(f"Searching SteamGridDB for {program_name} assets…")
558529
asset_suffixes = {
559530
"grids": "p",
@@ -594,6 +565,44 @@ def add_shortcut(self, program_name: str, program_path: str):
594565

595566
except (OSError, IOError) as e:
596567
logging.error(e)
568+
return False
569+
570+
return True
571+
572+
logging.info(f"Adding shortcut for {program_name}")
573+
cmd = "xdg-open"
574+
args = f"bottles:run/'{self.config.Name}'/'{program_name}'"
575+
appid = crc32(str.encode(self.config.Name + program_name)) | 0x80000000
576+
577+
if self.userdata_path is None:
578+
logging.warning("Userdata path is not set")
579+
return Result(False)
580+
581+
confs = glob(os.path.join(self.userdata_path, "*/config/"))
582+
shortcut = {
583+
"appid": appid - 0x100000000,
584+
"AppName": program_name,
585+
"Exe": cmd,
586+
"StartDir": ManagerUtils.get_bottle_path(self.config),
587+
"icon": ManagerUtils.extract_icon(self.config, program_name, program_path),
588+
"ShortcutPath": "",
589+
"LaunchOptions": args,
590+
"IsHidden": 0,
591+
"AllowDesktopConfig": 1,
592+
"AllowOverlay": 1,
593+
"OpenVR": 0,
594+
"Devkit": 0,
595+
"DevkitGameID": "",
596+
"DevkitOverrideAppID": "",
597+
"LastPlayTime": 0,
598+
"tags": {"0": "Bottles"},
599+
}
600+
601+
ok = False
602+
for conf in confs:
603+
ok |= __add_to_user_conf(conf)
604+
605+
if ok:
606+
logging.info(f"Added shortcut for {program_name}")
597607

598-
logging.info(f"Added shortcut for {program_name}")
599-
return Result(True)
608+
return Result(ok)

0 commit comments

Comments
 (0)