我们都知道 Wine 是容器化运行 Windows 程序的。在我们通过 wine [程序.exe] 都会建立一个单独的容器,默认情况下会自动创建在 ~/ 创建一个 .wine 目录。
可以通过以下命令行管理该容器:
WINEPREFIX=/home/user/.wine/ winetricks
而如果直接执行 winetricks 也会默认从这个路径上找。只要不自己修改或添加新容器,一般情况下 wine 都会使用这同一个容器。
如果你在 Linux 上玩游戏,你一定对于 Steam 的 SteamPlay 技术有了解,它的核心技术 proton 是基于 wine 开发的(wine 的 fork 版本),因为预装了很多环境,开箱即用能更好的兼容游戏场景。如果你想使用它则需要从库中点击 "添加游戏"-> 选择 "添加非Steam游戏" 即可。
不过它会为每一个添加的应用/游戏新建一个单独新的容器。此时如果你遇到一个这样的场景,应用A需要应用B的数据,此时就比较头疼。
此时呢就可以通过 winetricks 来管理不同的容器数据。像这样子:
WINEPREFIX=/home/user/.steam/steam/steamapps/compatdata/BoxId/pfx winetricks
其中 BoxID 对应的是每个添加进库的应用/游戏产生的单独目录。而 compatdata 存放着所有的容器数据。
一般情况下,是直接使用 Steam 来启动,但除此之外,还有几种方式。
一种是安装了 protontricks
然后通过终端使用 protontricks-launch [**.exe]
来启动 (一般会附带) 或者通过 protontricks 打开 文件管理
软件,然后再点开 .exe
程序也是可以的。
另一种是不借助这些第三方软件,直接在终端使用命令行:
WINEPREFIX=[容器路径] [proton程序路径] [要执行的exe路径]
容器路径上面已经提到了,而 Steam 安装的 proton 主程序一般在 /home/user/.steam/steam/steamapps/common/
下面,也就是 Steam 游戏的安装路径。目录名字一般是 Proton - Experimental
,Proton 9
Proton 8
等... 指定到里边的 files/bin/wine
或者files/bin/wine64
就可以跑了。
如果觉得每次手动指定 WINEPREFIX
变量来启动比较麻烦,动手能力强的话你也可以写个快捷脚本。