如何借助Steam Client API或文件编辑在Steam Deck自动添加非Steam游戏?
实现Steam Deck自动添加非Steam游戏的方案
一、通过Steam命令行实现(EmuDeck常用方式)
官方没有公开的Steam Client API用于直接添加非Steam游戏,但可以通过Steam客户端的命令行参数触发添加流程:
- 使用命令:
steam steam://addnonsteamgame/<完整文件路径>,注意路径中的空格需要转义为%20,或者用双引号包裹整个路径(比如steam "steam://addnonsteamgame/home/deck/Games/My Game.exe")。 - 这种方式会唤起Steam的添加非Steam游戏向导,适合单条添加;如果要批量操作,更推荐编辑配置文件。
二、直接编辑Steam快捷方式配置文件
Steam的非Steam游戏信息全部存在shortcuts.vdf文件中,这是EmuDeck批量添加的核心逻辑:
- 文件路径:
~/.steam/steam/userdata/<你的Steam用户ID>/config/shortcuts.vdf,其中<你的Steam用户ID>是一串数字,可通过查看userdata下的文件夹获取。 - VDF格式规则:文件采用Valve的VDF格式,每个非Steam游戏是一个以数字命名的子项,包含以下关键字段:
AppName:显示在Steam库中的游戏名称Exe:游戏/模拟器的执行文件绝对路径StartDir:启动目录(通常是执行文件所在文件夹)Icon:游戏图标路径(可留空,Steam会自动提取或使用默认图标)LaunchOptions:启动参数(比如模拟器加载ROM的命令)
- 批量添加技巧:可以用Python或Shell脚本批量生成符合格式的VDF条目,写入文件前必须关闭Steam,否则修改会被客户端覆盖。修改完成后重启Steam,新游戏就会出现在库中。
三、实操注意事项
- 编辑
shortcuts.vdf时,要严格遵循VDF的语法(键值对用"包裹,嵌套结构用{}),语法错误会导致Steam忽略该条目。 - 对于模拟器游戏,
Exe填模拟器路径,LaunchOptions填加载ROM的参数(比如/path/to/retroarch -L /path/to/core.so /path/to/rom.nes)。 - 可以通过
steam://store/<Steam游戏ID>的图标路径来复用Steam官方游戏图标,提升库的一致性。
内容的提问来源于stack exchange,提问作者The Oddler
相关产品推荐
相关产品推荐

