Конфигурация для обнаружения уже запущенного xsession или только автозапуска в один раз

Моя цель – это HTPC на базе Arch, который на одном tty запускает XBMC, а на другой работает минималистический рабочий стол (в основном для просмотра в Интернете).

Я еще не начал на кусочке XBMC пирога, но в настоящий момент он автоматически регистрируется на учетной записи пользователя на рабочем столе через

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

то через ~ / .bash_profile он startxfce4 startx который startxfce4 . Это нормально, пока вы не переключитесь на другой tty, а затем вернитесь к tty1. При повторном возврате, похоже, повторно выполняется файл ~ / .bash_profile, который затем истекает, потому что xsession уже запущен.

Мои вопросы:

  1. Является ли это разумным способом реализации конфигурации настольных компьютеров и XBMC? Это была самая легкая вещь, о которой я мог подумать (не будучи особенно про linux) для меня и конечного пользователя.

  2. Есть ли способ проверить корректный рабочий сеанс XFCE на tty1 и переключиться на него, если он есть, и запустить новый, если нет?

  3. Или есть лучший способ выполнить автозапуск XFCE при входе в систему, который не будет вызываться каждый раз при переключении на консоль?

(Более эффективные способы реализации этого, которые непосредственно не отвечают на эти вопросы, тоже будут полезны, я стремлюсь к легкому и простому).

Я не уверен, что понимаю, что вы пытаетесь сделать.

Если вы хотите автоматически запускать подключенную графическую среду, не запускайте текстовый сеанс, войдите в графический режим непосредственно с графическим менеджером X. Например, вы можете использовать LightDM , для которого у вики Arch есть вся необходимая информация:

  • Убедитесь, что в вашем /etc/inittab есть такая строка:

     x:2345:respawn:/usr/sbin/lightdm >& /dev/null 
  • Включить /etc/lightdm/lightdm.conf в /etc/lightdm/lightdm.conf :

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

Если вы хотите запустить графический интерфейс только в том случае, если он еще не существует, вы можете обнаружить, что вы входите в текстовую консоль, и пока нет сервера 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