banner
可达鸭

可达鸭DE博客

「この世界は完璧ではないが、私にはちょうどいい」
bluesky

あなたのLinuxでSteamを起動すると、いつもこうなりますか?

問題 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 ではなくします
デスクトップファイルをローカルにコピーします:

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

実際に効果を確認しました~

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。