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に感謝します!