web-dev-qa-db-ja.com

Xセッションの開始時に環境変数をエクスポートできません

私のセットアップは:

  • Debianテスト(ストレッチ)、最新
  • 自動ログインが有効なLightDM
  • 素晴らしいウィンドウマネージャー
  • box、ROXTermまたはXTerm

独自の環境変数を設定して、Xセッションの起動時に取得することができないようです。これが私が試したものです:

  • ~/.bash_profileの使用は以前のOSで機能しましたが、- この答え から学びました。これは、DebianのXスタートアップから派生したものではなく、その派生
  • 提案どおりmv .bash_profile .profileを実行しましたが、 here から後で学習したように、ディスプレイマネージャーがXセッションを起動するときに~/.profileが取得されないため、機能しませんでした。
  • 上記の質問からの回答は、~/.xsessionrcの使用を示唆しています。 here から学んだように、これは/etc/X11/Xsessionからのみ供給され、LightDMが実行しないため、これも機能しませんでした
  • Arch Linux wiki クレーム LightDMは~/.xprofileファイルをソースとしていますが、それも機能しませんでした。

その最後のサイトからのアドバイスを試して、私は~/.xinitrcを次のようにしました:

export QT_STYLE_OVERRIDE=GTK+
[ -f ~/.xprofile ] && source ~/.xprofile
~/.screenlayout/default.sh
awesome

そして、私の~/.xprofileは次のようになります:

[[ -f ~/.bashrc ]] && . ~/.bashrc
source /etc/bash_completion.d/virtualenvwrapper

export GDK_NATIVE_WINDOWS=1
export WORKON_HOME=$HOME/env/

悲しいことに、ログインしてXセッションを開始した後、これらの変数がどれも設定されていないことがわかります。

red@localhost:~$ echo $QT_STYLE_OVERRIDE

red@localhost:~$ echo $GDK_NATIVE_WINDOWS

red@localhost:~$ echo $WORKON_HOME

それらを適切に設定するにはどうすればよいですか?

6
Red

_~/.xinitrc_は、テキストモードでログインした後、startx(またはxinitを呼び出す)でGUIセッションを開始したときにのみ読み取られます。だからそれはあなたを助けません。

ディスプレイマネージャーを使用してログインするときに_~/.bash_profile_、_~/.profile_、_~/.xprofile_および_~/.xsessionrc_を読み取るかどうかは、ディスプレイマネージャーの構成方法と、ログイン時に選択するセッションタイプによって異なります。私が知る限り、少なくともDebian jessieについては(それ以降、これが変更されているかどうかは調べていません):

  • _/usr/share/lightdm/lightdm.conf.d/01_debian.conf_は、Lightdmに_/etc/X11/Xsession_をセッション起動スクリプトとして使用するように指示します。
  • _/etc/X11/Xsession_(_/etc/X11/Xsession.d/40x11-common_xsessionrc_を介して)は_$USERXSESSIONRC_をロードします。これは_~/.xsessionrc_です。

したがって、少なくともDebian jessieでは、_~/.xsessionrc_は機能するはずです。

Debianでは、_~/.pam_environment_が機能して、任意のログインメソッドの環境変数を設定できます。

または、環境変数を設定し、 _~/.config/awesome/rc.lua_ を介してAwesomeからプログラムを実行できます(環境変数を設定するには、posix.setenv("QT_STYLE_OVERRIDE", "GTK+")を呼び出します)。