Configuração para detectar o xsession já em execução ou somente o login automático

1

Meu objetivo é um HTPC baseado em Arch que, em um tty, executa o XBMC e, em outro, um desktop minimalista (principalmente para navegação na Web).

Ainda não iniciei a fatia XBMC, mas no momento ela faz login automaticamente na conta do usuário da área de trabalho via

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

depois, por meio de ~ / .bash_profile, ele faz um startx , que faz um startxfce4 . Isto está bem até que você mude para outro tty, então volte para tty1. Ao voltar, parece voltar a executar o ~ / .bash_profile, que então tem um acesso de raiva porque um xsession já está sendo executado.

Minhas perguntas são:

  1. Esta é uma maneira sensata de implementar um desktop & Configuração XBMC? Foi a coisa mais fácil que consegui pensar (não sendo particularmente profissional no Linux) para mim e para o usuário final.

  2. Existe uma maneira que eu possa verificar uma sessão do XFCE operando corretamente em tty1 e mudar para ela se houver, e executar uma nova se não?

  3. Ou existe uma maneira melhor de executar uma inicialização automática do XFCE no login que não seria chamada toda vez que você alternasse para o console?

(As melhores formas de implementar isso, que não respondem diretamente a essas perguntas, também seriam úteis; estou objetivando o peso leve e simples).

    
por Styne666 26.09.2012 / 09:17

1 resposta

2

Não sei se entendi o que você está tentando fazer.

Se você deseja iniciar um ambiente gráfico conectado automaticamente, não inicie uma sessão de texto, faça o login diretamente no modo gráfico, com um X gerenciador de exibição . Por exemplo, você pode usar o LightDM , para o qual o wiki do Arch tem todas as informações que você precisa:

  • Verifique se há uma linha como esta em /etc/inittab :

    x:2345:respawn:/usr/sbin/lightdm >& /dev/null
    
  • Ativar autologin em /etc/lightdm/lightdm.conf :

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

Se você quiser iniciar uma GUI somente se já não houver uma, aqui está uma maneira de detectar se você está efetuando login em um console de texto e ainda não há um servidor X em execução. Não é perfeito (sempre haverá casos de canto em que isso não faz o que você deseja, porque "não há nenhum servidor X em execução, mas faria sentido iniciar um" não é um requisito preciso), mas deve ser bom o suficiente. Coloque isso no seu .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
    
por 27.09.2012 / 01:52