実行中のxsessionまたは自動ログインを一度だけ検出するように構成する

実行中のxsessionまたは自動ログインを一度だけ検出するように構成する

私の目標は、あるttyではXBMCを実行し、別のttyではミニマリストデスクトップ(主にWebブラウジング用)を実行するArchベースのHTPCです。

まだXBMCの使用を開始していませんが、現在、次のようにデスクトップユーザーアカウントに自動的にログインします。

c1:2345:respawn:/sbin/agetty -a USERNAME -8 -s 38400 tty1 linux

次に、〜/ .bash_profileを介してを実行startxしますstartxfce4。別のttyに切り替えてから再びtty1に切り替えるまでは問題ありません。再度切り替えた後、~/.bash_profile を再度実行してから、xsession がすでに実行中であるため、迷惑をかけます。

私の質問は次のとおりです

  1. これがデスクトップとXBMC構成を実装する賢明な方法ですか?これは私とエンドユーザー(特にLinuxの専門家ではない)に考えることができる最も簡単なものです。

  2. tty1で実行されているXFCEセッションが正しく実行されていることを確認している場合は、そのセッションに切り替えるか、そうでない場合は新しいセッションを実行する方法はありますか?

  3. それとも、コンソールに切り替えるたびに呼び出されないようにログイン時にXFCE自動起動を実行するより良い方法はありますか?

(これらの質問に直接答えないより良い実装も役に立ちます。私の目標は軽くて単純になることです。)

答え1

何をしたいのか分かりません。

ログインのためにグラフィカル環境を自動的に開始するには、テキストセッションを開始せずに直接グラフィカルにログインします。Xディスプレイマネージャ。たとえば、次のように使用できます。光DM、Arch Wikiには必要なすべての情報があります。

  • 次の行があることを確認してください/etc/inittab

    x:2345:respawn:/usr/sbin/lightdm >& /dev/null
    
  • 自動ログインを有効にする/etc/lightdm/lightdm.conf:

    [SeatDefaults]
    autologin-user=styne666
    autologin-user-timeout=0
    pam-service=lightdm-autologin
    

まだGUIなしでGUIを起動する場合は、次の方法を使用してテキストコンソールにログインしていて、Xサーバーがまだ実行されていないことを確認できます。完璧ではありません(「Xサーバーは実行されていませんが、Xサーバーを起動するのは合理的です」という正確な要件ではないため、必要な操作を実行できない場合があります)。十分です。これをあなたの.bash_profile

case $(tty) in
  /dev/tty[0-9]) # running on a text console
     if [ -z "$(ps -o pid= -C Xorg)" ]; then # if there no X running?
       x=yes
       trap 'x=; echo >&2 Will not start x.' INT
       echo >&2 'Starting X (press Ctrl+C *now* not to)...'
       sleep 2
       if [ -n "$x" ]; then # the user didn't press Ctrl+C
         exec startxfce4
       fi
     fi;;
esac

関連情報