跳转至内容

Steam

来自 ArchWiki

Steam 是 Valve 公司一款流行的游戏分发平台。

注意:Linux 版 Steam 仅支持最新的 Ubuntu 或 Ubuntu LTS 版本。[1][2] 因此,请勿就 Arch Linux 上 Steam 的问题向 Valve 寻求支持。

安装

启用 multilib 仓库并 安装 steam 软件包(推荐)。

或者,安装 steam-native-runtimeAUR 软件包以使用原生系统库运行 Steam;参见 /Troubleshooting#Steam runtime

注意 如果是首次安装,可能会提示安装 32 位 Vulkan 驱动程序包。默认情况下,pacman 会按字母顺序选择 lib32-nvidia-utils,但如果您为不同 GPU 厂商意外安装了该驱动,可能会导致完全无法使用 Vulkan 等问题。

要运行 Steam

SteamCMD

安装 steamcmdAUR 以获取 Steam 的命令行版本

目录结构

Steam 的默认安装位置是 ~/.local/share/Steam。如果 Steam 找不到它,它会提示您重新安装或选择新位置。本文档使用 ~/.steam/root 符号链接来指代安装位置。

库文件夹

每个 Steam 游戏都有一个唯一的 AppID,您可以通过查看其 Steam 商店页面路径或访问 SteamDB 来找到它。

Steam 将游戏安装在 LIBRARY/steamapps/common/ 目录下的一个文件夹中。 LIBRARY 通常是 ~/.steam/root,但您也可以拥有多个库文件夹(Steam > 设置 > 存储 > (+) 添加驱动器)。

为了让 Steam 识别游戏,它需要在 LIBRARY/steamapps/ 目录下有一个 appmanifest_AppId.acf 文件。appmanifest 文件使用 KeyValues 格式,其 installdir 属性决定了游戏目录的名称。

注意 要向通过 Flathub 安装的 Steam 添加额外驱动器,用户必须首先通过 flatseal 等工具手动授权 Steam 客户端访问额外驱动器的挂载点。

用法

steam [ -options ] [ steam:// URL ]

有关可用的命令行选项,请参见 Valve Developer Wiki 上的 命令行选项文章

Steam 还接受可选的 Steam URL,请参见 Steam 浏览器协议

启动选项

当您启动 Steam 游戏时,Steam 会使用 /bin/sh 执行其启动命令。为了让您修改启动命令,Steam 提供了启动选项,您可以通过在库中右键单击游戏,选择“属性”并点击设置启动选项来为游戏设置。

默认情况下,Steam 只是将您的选项字符串附加到启动命令中。要设置环境变量或将启动命令作为参数传递给另一个命令,您可以使用 %command% 替换。

示例

  • 仅参数: -foo
  • 环境变量: FOO=bar BAZ=bar %command% -baz
  • 完全不同的命令: othercommand # %command%

技巧与提示

最小化启动

可以使 Steam 最小化到系统托盘启动,而不是获得焦点。将 -silent 添加到命令行参数列表中;有关如何默认执行此操作,请参阅 桌面条目#修改桌面文件

小模式

Steam 支持一个替代的、极简的 UI,只显示您的游戏列表——商店、社区和封面收藏视图都会隐藏。您可以通过查看 > 小型模式切换到它。要返回标准 UI,请选择查看 > 大型模式

您还可以使用此参数启动 Steam:+open steam://open/minigameslist

Proton Steam Play

Valve 开发了一个基于 Wine 和其他组件的 Steam Play 兼容性工具,名为 Proton。它允许您运行许多 Windows 游戏(请参见 兼容性列表)。

它是开源的,可在 GitHub 上找到。当启用 Steam Play 时,Steam 会安装其自身的 Proton 版本。

“Proton Experimental”默认在 Steam 客户端中启用:Steam > 设置 > 兼容性。您可以在该对话框中为 Valve 已批准和未批准的游戏启用 Steam Play。

如果开发者开启了支持,Proton 支持 Easy AntiCheat 集成,但 EAC 可能需要特定 修补过的 glibc 版本:如果某游戏在报道中可以正常运行,但在您的机器上不行,请尝试使用 Steam Flatpak,因为它自带了修补过的 glibc。此外,将 procfs 挂载选项“hidepid”设置为强化值 可能会导致 Easy Anti-Cheat 失败并提示“Launch Error: 261”。

强制使用 Proton

如果需要,要强制为某个游戏启用 Proton 或特定版本的 Proton,请右键单击游戏,选择属性 > 兼容性 > 强制使用特定的 Steam Play 兼容工具,然后选择所需的版本。这样做也可以用于强制使用 Linux 端口的游戏使用 Windows 版本。

在 Steam 外使用 Proton

要在 Steam 之外使用 Proton,最好的方法是通过 umu-launcher

查看 上游仓库 以获取更多信息,包括其 文档

提示:一些游戏启动器已集成了对 umu-launcher 的支持。查看 Gaming#Getting games 获取启动器列表。截至 2026 年 4 月,Heroic Games Launcher[3] 和 Lutris[4] 是两个支持它的启动器。
注意:umu-launcher 是在 Steam 之外使用 Proton 的后端。它并非面向普通用户,没有友好的用户界面,并且需要使用终端。如果需要,它仍然可以直接通过终端使用,并将获得与通过图形用户界面使用时相同的结果。

Proton 以外的兼容层

除了 Proton/Wine 之外,还有其他兼容工具。

  • Luxtorpeda — 使用原生 Linux 引擎运行游戏。
https://luxtorpeda-dev.github.io/ || luxtorpeda-gitAUR
  • Boxtron — 使用原生 Linux DosBox 运行 DOS 游戏
https://github.com/dreamer/boxtron || boxtronAUR

您还可以使用 protonup-qtAUR 来管理它们

  1. 关闭 Steam
  2. 安装 protonup-qtAUR
  3. 打开 protonup-qt 并安装所需的工具
  4. 启动 Steam
  5. 游戏属性窗口中,选择强制使用特定的 Steam Play 兼容工具并选择所需的工具。

Steam 输入

当控制器插入 Steam 运行时,Steam 的默认行为是将其置之不理,让游戏按原样使用它。内核会暴露游戏手柄的 evdev 和 joystick 设备,游戏可以使用像 SDL2 这样的 API 来使用它们,就好像 Steam 不存在一样。

Steam 输入子系统提供了一个抽象层,允许更高级的功能,例如重新映射按钮和轴,拥有游戏特定的配置文件,以及基于游戏内操作的高级按钮映射。Steam 输入配置器(SIC)是实现此功能的系统部分。要为控制器启用 Steam 输入,请前往Steam > 设置 > 控制器 > 外部游戏手柄设置。在此处您会找到对应于您的控制器的启用 Steam 输入的开关。

Steam 输入配置器

本文档或部分内容可能被移至 Steam 输入配置器

说明:如果内容可以独立成文,就没有理由将其保留在此篇幅巨大的文章中(在 Talk:Steam 中讨论)

有关配置器使用说明,请参见 Steam 输入配置器

当为控制器启用 SIC 时,有几种不同的控制器设备

  • 虚拟 Steam 控制器,供使用 Steam 输入 API 的游戏使用。所有重新映射和 Steam 特有功能均可正常工作。
  • 一个代表模拟 Xbox 360 手柄的 evdev 设备,供不支持 Steam Input 的游戏使用。基本按键映射生效。[5]
  • 原始控制器 evdev 设备,其输入通过 SIC 传递。重新映射不生效,但游戏应默认使用 360 控制器。
  • 上述两个设备的 joystick 模拟。

SIC 的行为取决于上下文

  • 启动支持 Steam 输入 API 的游戏时,它以原生模式使用 SIC。游戏接收“操作”(actions)而不是原始输入进行处理。
    • 这适用于在 Proton 中运行的游戏,这些游戏在 Windows 上会使用 Steam 输入。
    • 即使理论上不需要,模拟的 360 控制器仍然存在。
    • 游戏可以选择同时支持 Steam 输入和其他传统输入 API 库,后者通过 evdev 和 joystick 在后台进行处理。当游戏在 Steam 中启动且控制器启用了 SIC 时,Steam 输入具有更高的优先级。
    • 游戏也可以选择支持 Steam 输入。例如,在《Among Us》中,如果您没有运行 SIC,游戏手柄将无法工作。
  • 启动不支持 Steam 输入的游戏时,它(不知不觉地)以旧模式使用 SIC。游戏从看似 360 控制器的设备接收预期的低级原始输入,但这些输入实际上是由 SIC 伪造的,以模拟原生模式所需的行为。
    • 这适用于使用 evdev 或 joystick 的原生游戏,以及通过 Proton 运行的、使用 DirectInput 或 XInput 的 Windows 游戏。
  • 启动不支持 Steam 输入或其他游戏手柄 API 的游戏时,SIC 可以激活一个配置文件来模拟如下所述的游戏手柄支持。
  • 当大屏幕模式具有焦点时,当前的大屏幕模式配置文件生效。此设置不可配置。
  • 当其他任何内容具有焦点时,当前桌面配置文件生效,可通过Steam > 设置 > 控制器 > 桌面布局进行配置。
  • 当任何内容具有焦点时,可通过Steam > 设置 > 控制器 > Guide 按钮组合布局配置其他全局绑定。Steam Deck 上不提供此功能。

游戏根据其对游戏手柄的全面支持程度进行评级。这取决于控制器型号。

  • 支持您的控制器,表示游戏具有完整的控制器支持。即使游戏不使用 Steam 输入 API,也可以实现这一点;重点在于可访问性,无论使用何种 API。
  • 基本可与您的控制器游玩,表示游戏具有部分游戏手柄支持。即使游戏正在使用 Steam 输入 API,也存在像《Team Fortress 2》那样某些部分仍然无法访问的情况,因此需要此评级。
  • 不支持控制器,表示游戏没有原生游戏手柄支持。
  • 未知控制器支持,表示 Valve 尚未验证游戏的控制器支持。

在游戏没有完整游戏手柄支持的情况下,SIC 会尝试填补空白。例如,在《Bloons Tower Defense 5》中,一个需要您指向和点击的游戏,Steam 会自动激活键盘(WASD)和鼠标配置文件,允许您使用游戏手柄进行移动和点击。

总结一下这对使用意味着什么

  • 启用“配置支持”推荐用于增强游戏手柄支持,例如自定义按键绑定,或自动修复,如 Nintendo 风格的按键重映射或键盘/鼠标。
  • 对于某些游戏,如果它们不支持传统游戏手柄 API,启用此项是绝对必需的。
  • 默认情况下,如果您启用了此项,那么控制器将无法与非 Steam 游戏一起使用,因为 360 控制器优先于原始控制器设备,但默认的桌面配置文件中的按钮是禁用的。要解决此问题,您可以
    • 让配置更改动作集。一些官方的桌面配置会在按下开始按钮时切换到游戏手柄模式。如果您的控制器配置没有这个功能,您可以添加一个动作集到配置中,将该集合设置为包含游戏手柄按钮,为开始按钮添加一个额外命令,将额外命令设置为更改动作集,然后将其设置为长按激活。
    • 将您的桌面配置文件设置为游戏手柄模板。这将把输入传递给 360 控制器,使默认设备可供其他程序使用。
    • 让其他游戏使用原始设备(如果它支持)。请注意,游戏将不会受益于任何 Steam 输入重新绑定。
    • 为控制器禁用整个功能,这样 Steam 就不会创建 360 控制器。请注意,Steam 游戏将不会受益于增强的游戏手柄支持。
    • 使用其他游戏时关闭 Steam。

禁用 Steam 输入

如果您希望完全禁用 Steam Input,请使用 -nojoy 参数启动 Steam,并单独为每个游戏禁用 Steam Input,因为没有全局选项可以实现这一点。

HiDPI

参见 HiDPI#Steam

从显示管理器启动大屏幕模式

要从显示管理器使用 Gamescope 作为其 合成器 来启动 Steam 大屏幕模式

/usr/share/wayland-sessions/steam-big-picture.desktop
[Desktop Entry]
Name=Steam Big Picture Mode
Comment=Start Steam in Big Picture Mode
Exec=/usr/bin/gamescope -e -- /usr/bin/steam -tenfoot
Type=Application
注意 -tenfoot 标志告诉 Steam 以大屏幕模式启动。

然后指示您的显示管理器启动 gamescope。

注意:如果音频设置中没有显示任何音频设备,请 安装 pipewire-pulse
警告:必须安装 polkit 才能使用电源菜单中的“挂起系统”、“关闭系统”和“重启系统”选项。
警告:“切换到桌面”菜单项会锁定会话。要退出到显示管理器,您需要运行 steam -shutdown。若要在 Steam 中执行此操作,您可以
  • -steamos3 添加到 Steam 命令行参数中,这会使菜单项在选中时执行 steamos-session-select。您可以在 PATH 中添加一个同名脚本来自定义行为;参见 此指南 获取示例(注意 ~/.local/bin 不在 Arch 默认的 PATH 中)。
    • 请注意,-steamos3 可能会产生其他意外的影响。
  • 创建一个带有此命令的脚本并将其添加为非 Steam 游戏。这将创建一个返回显示管理器的“快捷方式”。

Steam 远程畅玩

注意 Steam In-Home Streaming 已成为 Steam 远程畅玩

Steam 内置支持 远程畅玩

参见 此 Steam 社区指南,了解如何在 Linux 上设置无头流媒体服务器。

使用 Proton 时与 Windows 共享游戏

如果您使用 Proton(Steam Play)来运行您的游戏,但出于某些原因仍保留 Windows 安装(例如,某些游戏存在反作弊问题,或者您想与 Windows 进行比较测试),您可能希望将游戏存储在公共分区中,而不是为每个操作系统保留两份游戏副本。

要添加另一个库文件夹,请点击Steam > 设置 > 下载 > STEAM 库文件夹,然后点击⊕ (加号) 按钮。

有四种文件系统可以被 Windows 和 Linux 读写。

NTFS

警告:Valve 不建议使用 NTFS 存储 Steam 库,因为它可能导致意外错误,尤其是在多个操作系统共享库的情况下。您“将会”遇到游戏无法启动的问题。您“将会”遇到游戏意外崩溃的问题。

有关如何配置 NTFS 的更多信息,请参见 使用 Linux 和 Windows 的 NTFS 磁盘。要从 NTFS 驱动器启动游戏,请按照 Steam/故障排除#NTFS 分区中的 Steam 库中的步骤操作。

使用 NTFS 有缺点。着色器缓存文件夹经常会损坏。会收到消息 ntfs3: sdb6 ino=1921f, steamapprun_pipeline_cache 看起来你的目录已损坏。 您无法从 Linux 修复此问题。您需要启动到 Windows 并使用 chkdsk 进行修复。

exFAT

此文件系统有一个缺点,它不区分大小写。您会收到类似的消息:SteamLibrary 同时包含 'SteamApps' 和 'steamapps' 目录。这将导致问题。请手动修复并仅保留 'steamapps' 参见 issue #7665

此外,在 exfat 上创建符号链接很麻烦,因此您无法使用 NTFS 方法中的符号链接 compatdata 的方法。

Btrfs

Btrfs 有一个相当成熟的 Windows 驱动程序

NTFS 也可以转换为 Btrfs,参见 Btrfs#NTFS 到 Btrfs 转换

此文件系统消除了大多数 NTFS/exFAT 兼容性问题,但在 Windows 和 Linux 之间共享 Steam 库存在局限性

Valve 官方不鼓励在操作系统之间共享 Steam 库。即使正确配置了 WinBtrfs 的 UID/GID 映射,Windows 进程也会创建属于 nobody:100 的锁定文件和暂存文件夹,导致 Linux 出现“磁盘写入失败”或“内容文件被锁定”的错误。

使用 Windows 后,您必须运行

# chown -R $USER:$USER /path/to/steam_library/steamapps
$ find /path/to/steam_library/steamapps -name "*.lock" -delete
$ rm -rf /path/to/steam_library/steamapps/{downloading,temp}/*

在此之后才能在 Linux 上启动 Steam。为了可靠运行,请为每个操作系统保持单独的库。

UDF

此文件系统可以无问题地使用,但要确保兼容性,必须将其格式化为正确的 UDF 版本。Linux 缺乏对版本 2.50 及更高版本的写入支持。因此,需要版本 2.01 才能正常工作。

UDF 块大小必须与分区的逻辑扇区大小匹配。可以使用 blockdev(8) 获取此值。

# blockdev --getss /dev/the_partition_to_be_formatted

然后使用 mkfs.udf(8)(由 udftools 提供)将分区格式化为 UDF。对于 HDD 和 SSD,适当的媒体类型是 hd

# mkfs.udf --utf8 --label=label --blocksize=block-size --media-type=hd --udfrev=0x0201 /dev/the_partition_to_be_formatted

其中:

  • 要格式化的分区 是目标分区的名称(例如 sdb4nvme2n5p3 等)。
  • 标签 是所需的卷标。
  • 块大小blockdev 命令的输出。

或者,可以使用 gparted 等图形工具来处理格式化。它们能正确管理 UDF 版本选择,以确保兼容性。

更快的着色器预编译

在某些情况下,着色器预编译可能只使用一个核心,但用户可以覆盖此设置,例如使用 8 个核心

~/.steam/steam/steam_dev.cfg
unShaderBackgroundProcessingThreads 8

禁用 HTTP2 以加快下载速度

某些系统和配置似乎在 HTTP2 方面存在问题。禁用 HTTP2 可能会在这些配置中提供更快的下载速度。您可以使用控制台命令 @nClientDownloadEnableHTTP2PlatformLinux 0,或者在 steam_dev.cfg 中进行设置,如下所示

~/.steam/steam/steam_dev.cfg
@nClientDownloadEnableHTTP2PlatformLinux 0


注意:导致此问题的 错误 应该已在当前的 Steam 客户端中修复。这应该不会再带来速度上的提升。

运行游戏使用独立显卡

混合显卡笔记本电脑上,Steam 默认使用集成显卡运行游戏。请参见 PRIME#PRIME GPU offloading 来为特定游戏切换到更强大的独立显卡。

Flatpak

本文或本章节建议与 Flatpak/Application-specific troubleshooting 合并。

警告:Flatpak 版本的 Steam 未经 Valve 公司验证或审核。Arch Linux 开发者对其也没有发言权,也不提供技术支持。请自行承担使用风险。在 Arch 上使用 Steam,推荐的方法是通过 steam 软件包。
注意 从 Flathub/Flatpak 安装 Steam 可以解决客户端遇到的许多问题,但从长远来看,它将需要另类的、文档较少的故障排除方法。

Steam 也可以通过 Flatpakcom.valvesoftware.Steam 的形式从 Flathub 安装。为当前用户安装它的最简单方法是使用 Flathub 仓库

$ flatpak --user remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
$ flatpak --user install flathub com.valvesoftware.Steam
$ flatpak run com.valvesoftware.Steam

Flatpak 应用程序目前不支持主题。此外,您目前无法通过 optirun/primusrun 运行游戏,有关更多详细信息,请参见 Issue#869

通过 Flatpak 安装的 Steam 无法访问您的主目录,覆盖此限制将导致 Steam 无法运行,因为它不安全。但是,您可以自由添加主目录之外的目录。如果您想添加一个外部库,请运行以下命令进行添加

$ flatpak override --user com.valvesoftware.Steam --filesystem=/path/to/directory

使用 Flatpak 启动 Steam 可能会警告您安装 steam-devices 包。此包目前不存在,但可以安装 game-devices-udevAUR 来代替,参见 游戏手柄#设备权限

未配置 DISPLAY 变量

本文或本节需要在语言、wiki 语法或风格方面进行改进。请参阅 Help:Style 获取参考。

原因:此内容未引用来源且未正确添加交叉链接(在 Talk:Steam 讨论)

当 $DISPLAY 变量配置不当时,可能会出现以下错误:

The unofficial Steam Flatpak app requires a correctly-configured desktop session, which must provide the DISPLAY environment variable to the D-Bus session bus activation environment.

On systems that use systemd --user, the DISPLAY environment variable must also be present in the systemd --user activation environment.

This is usually achieved by running:

dbus-update-activation-environment DISPLAY

during desktop environment startup.

For more details, please see: https://github.com/ValveSoftware/steam-for-linux/issues/10554

通常此问题是由“回退到 X11 窗口系统”选项引起的。Flatpak 的全局默认环境变量也可能影响 Steam 并导致 steamwebhelper 崩溃。请通过 Flatseal 或命令行禁用它们。

对于仅使用组合器(compositor)的极简设置,xwayland-satellite 可能有帮助。

Flatpak 的亚洲字体问题

如果您在游戏中无法正确显示亚洲字体,是因为 org.freedesktop.Platform 不包含它们。首先尝试挂载您的本地字体 

$ flatpak run --filesystem=~/.local/share/fonts --filesystem=~/.config/fontconfig com.valvesoftware.Steam

如果那不起作用,可以考虑这个变通方法:通过直接将字体文件复制到 org.freedesktop.Platform 的目录中来使字体可用,例如

/var/lib/flatpak/runtime/org.freedesktop.Platform/x86_64/version/hash/files/etc/fonts/conf.avail
/var/lib/flatpak/runtime/org.freedesktop.Platform/x86_64/version/hash/files/etc/fonts/conf.d 
/var/lib/flatpak/runtime/org.freedesktop.Platform/x86_64/version/hash/files/share/fonts

Steam Flatpak 启动(运行)问题

启动后,Steam 会尝试下载文件,您会看到一个进度条。如果它崩溃了,您可以尝试为 flatpak 包授予额外的权限

$ flatpak permission-set background background com.valvesoftware.Steam yes
$ flatpak run com.valvesoftware.Steam

要获得控制权限的替代方法,请安装 flatseal

Flatpak 中的 SteamCMD

SteamCMD 也可以在 Flatpak 中使用。

$ flatpak run --command=steamcmd com.valvesoftware.Steam

减少显卡内存占用的 Steam 设置

这对于显存较小的显卡很有用。

制作 Steam 快捷方式的副本

$ cp /usr/share/applications/steam.desktop ~/.local/share/applications/steam_minimal.desktop

并在快捷方式副本中修改 Exec=Name= 部分

~/.local/share/applications/steam_minimal.desktop
Name=Steam Minimal (Runtime)
Exec=/usr/bin/steam -cef-disable-gpu-compositing -cef-disable-gpu steam://open/minigameslist %U

因此,当启动 Steam Minimal (Runtime) 快捷方式时,您将获得一个极简界面,该界面仍然足以安装和运行游戏;而当启动标准的 Steam (Runtime) 快捷方式时,您将获得一个功能齐全的客户端。

限制创建任意键盘输入的权限至特定用户组

默认情况下,Steam 软件包会放置一条 udev 规则,基本上允许任何登录用户创建任意(全局可用)输入设备,其中包括虚拟键盘。这 可能允许沙箱逃逸等操作

以下 pacman 钩子可用于修改全局 uinput 权限,使其仅授予特定用户组。

注意:这仅在您使用专门用于游戏的专用用户账户时才有意义。登录该用户后,拥有用户可访问的 uinput 带来的所有潜在安全问题仍然适用!
/etc/pacman.d/hooks/20-steam-input.hook
[Trigger]
Operation = Install
Operation = Upgrade
Type = Package
Target = steam

[Action]
Description = Patching out uaccess for uinput in 60-steam-input.rules
When = PostTransaction
Exec = /usr/bin/sed -i '/^KERNEL=="uinput"/s/TAG+="uaccess"/GROUP="steam"/g' /usr/lib/udev/rules.d/60-steam-input.rules

创建组时,请确保创建的是系统组。

# groupadd --system steam

然后将您希望能够使用“Steam Input”的用户添加到此组中。

故障排除

请参阅 Steam/Troubleshooting

参见

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.