私の目標は、ある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 がすでに実行中であるため、迷惑をかけます。
私の質問は次のとおりです
これがデスクトップとXBMC構成を実装する賢明な方法ですか?これは私とエンドユーザー(特にLinuxの専門家ではない)に考えることができる最も簡単なものです。
tty1で実行されているXFCEセッションが正しく実行されていることを確認している場合は、そのセッションに切り替えるか、そうでない場合は新しいセッションを実行する方法はありますか?
それとも、コンソールに切り替えるたびに呼び出されないようにログイン時に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