#proton #steam #wine #directory #cross-platform #save-file #steamapps

proton-finder

跨平台库,用于查找和遍历 proton 前缀

2 个版本 (1 个稳定版)

1.0.0 2024年5月10日
0.1.0 2024年5月10日

#599文件系统

MIT 许可证

32KB
597 代码行

Proton-Finder

Rust 库,用于查找和处理 Steam 的 proton 前缀,以及访问其中的常见路径。
此外,提供通用的包装器,允许一个代码库同时支持 Windows 和 Linux。

用途

主要用途是用于开发跨平台模组工具/存档文件编辑器。
许多游戏在 Windows 的 AppData 或 Documents 文件夹中保存存档文件/加载模组(这些在 Windows 上通过库如 dirs 很容易访问)。
当在 Linux + Proton(或 Wine)下运行时,这些文件夹存储在前缀中,因此难以访问。

因此,此库提供了允许将这些前缀抽象化的函数,这样您就可以通过通用函数访问 Windows 和 Linux 上的相同文件夹。

当目标操作系统为 Linux 时,可使用额外的 linux 模块,这允许更原始的访问,
包括打开 wine 前缀和从前缀中读取 .reg 注册表文件。

示例

let res = proton-finder::get_game_drive(2420510).map_or_else(|e| {
    println!("Steam Dir provided is not correctly formated, ignored...");
    e
}, |k| k);

if let Some(game_drive) = res {
    if let Some(mut path) = game_drive.config_local_dir() {
        path.push("HoloCure");
        path.push("settings.json");

        if let Ok(text) = std::fs::read_to_string(path) {
            println!("{}", text);
        }
    }
} else {
    println!("Unable to find game drive. Did you install the game?");
}

此代码读取 HoloCure 游戏的 settings.json 设置

Steam 根目录优先级

默认情况下,如果 env 值 $STEAM_DIR(与 Protontricks 相同)存在,它将使用此作为第一个要搜索的 steam 根目录。
您可以使用 no_tricks 功能禁用自动读取 env。

然后检查以下内容:
~/.steam/steam
~/.local/share/Steam
~/.var/app/com.valvesoftware.Steam/data/Steam/(Flatpak)

测试

需要已安装 Steam 和 HoloCure(免费游戏)(并且至少运行过一次游戏)。

依赖项

~0–10MB
~47K SLoC