xChar
·a month ago

问题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

亲测有效~

Loading comments...