问题 1. 为什么我的 Steam 在终端能启动,在桌面就不行?#
于是我操作了一下,作为 Linux 菜鸟思考 —— 注销然后切换 x11。
其实根本原因不在 Wayland/X11,而在 “桌面启动器拿到的环境变量” ≠ “终端里的环境变量”。
终端里我能启动,是因为 bash 替你加载了~/.bashrc、/etc/profile.d/ 里的各种 export;
双击图标时,systemd-/plasma-/gnome-session 只给你 最小化环境,于是 Steam 找不到库、找不到显卡、甚至找不到 PATH,直接 abort。
问题 2. 那如何将这个桌面程序变成 Bash 启动呢?#
操作一下:就改.desktop。
照 AI 的把 “终端环境” 整体 dump 出来
先在你能启动的终端里执行:
# 把当前环境全部导出到文件
env | grep -E '^(PATH|LD_|GTK_|QT_|XDG_|GALLIUM|VK_|DRI|LIBGL)' > ~/.steam_env
# 再给Steam单独写一行
echo 'export GDK_BACKEND=x11' >> ~/.steam_env
建一个 “带环境” 的包装脚本
mkdir -p ~/.local/bin
nano ~/.local/bin/steam-wrapper
加入以下内容:
#!/bin/bash
# 先加载刚才dump下来的完整环境
set -a
source ~/.steam_env
set +a
# 再启动真正的steam
exec /usr/bin/steam "$@"
赋予权限
chmod +x ~/.local/bin/steam-wrapper
让桌面启动器调用这个脚本,而不是裸 steam
复制一份 desktop 文件到本地:
cp /usr/share/applications/steam.desktop ~/.local/share/applications/
sed -i 's|Exec=/usr/bin/steam|Exec=/home/'$USER'/.local/bin/steam-wrapper|' \
~/.local/share/applications/steam.desktop
亲测有效~