ウィンドウマネージャの環境変数はXクライアントに伝播されません。

ウィンドウマネージャの環境変数はXクライアントに伝播されません。

BSPWMセッションを開始するたびにどのように開始するか(LightDMとStartxでテストしました)、そのセッション中に環境変数が期待どおりにXクライアントに伝播されないことがわかりました。

内容を確認する/proc/$( pgrep bspwm )/environと、BSPWMプロセス自体がする予想される環境変数があります。ただし、Xセッションが開始されると、Xクライアント(端末エミュレータなど)は次のことを行います。いいえ予想される環境変数が設定されました。

これは非常に奇妙な問題であり、デバッグ方法がわかりません。私が見落としている明白な構成の問題はありますか?

私の非常に基本的な~/.xinitrcスクリプトは次のとおりです。

#!/bin/sh

# Set a bunch of environment variables
. ~/.config/envrc

# Copy some useful elements from my distro's xinit script
. /etc/X11/xinit/xinitrc.d/50-systemd-user.sh
. /etc/X11/xinit/xinitrc.d/xdg-user-dirs.sh
if test -r $HOME/.nvidia-settings-rc && type -p nvidia-settings > /dev/null
then
    nvidia-settings --load-config-only > /dev/null 2>&1 &
fi

# Load Xresources for various programs
xrdb -I $HOME -merge ~/.Xresources

# Run my window manager
exec /usr/bin/bspwm "$@"

関連している場合は、現在Opensuse Tumbleweedを使用しており、いかなる方法でもデフォルトのPAM設定を調整していません。そして私が知っている限り、私はHerbstluftwmの下のDebianでもこの問題に直面しました。したがって、私はこれがBSPWM固有またはSuse固有の問題であるとは思わない。

答え1

問題は、Sxhkd(BSPWMで使用されるホットキーデーモン)とUrxvtdをSystemdユーザーサービスとして実行していることがわかりました。

systemctl --user start \
    bspwm-panel.service \
    bspwm-sxhkd.service \
    redshift.service \
    urxvtd.service

スクリプトを次のように変更しました。

systemctl --user import-environment
systemctl --user start \
    bspwm-panel.service \
    bspwm-sxhkd.service \
    redshift.service \
    urxvtd.service

今はうまくいきます。

インポートする特定の環境変数(たとえば)をホワイトリストに追加するには、PATHを作成できますsystemctl --user import-environment PATH DISPLAY FOO BAR ...

この問題を解決してくれた@dirktに感謝します!

関連情報