startxé executado, o xinitque inicia um servidor X e uma sessão do cliente. A sessão do cliente está ~/.xinitrcpresente, e caso contrário /etc/X11/xinit/xinitrc(o local pode variar entre as distribuições). O que esse script faz varia entre as distribuições. No Debian (incluindo derivativos como o Raspbian), as /etc/X11/xinit/xinitrcexecuções /etc/X11/Xsessionque por sua vez executam scripts /etc/X11/Xsession.d. Os scripts Debian olhar para uma sessão de usuário em outros arquivos ( ~/.xsession, ~/.xsessionrc, ~/.Xsession) e, se nenhuma configuração de usuário é aplicável, runs x-session-manager(caindo de volta para x-window-managerse nenhum [gerente de sessão] está instalado, caindo de volta para x-terminal-emulatorno caso improvável de que nenhum gerenciador de janelas é instalado).
Se você deseja controlar o que é executado, pode criar um dos arquivos do usuário, ~/.xsessionou ~/.xinitrc. O arquivo ~/.xsessiontambém é usado se você efetuar login em um gerenciador de exibição (ou seja, se você digitar sua senha em uma janela da GUI). O arquivo ~/.xinitrcé específico para xinite startx. O uso ~/.xsessioné feito /etc/X11/Xsessionpara configurar coisas como métodos de entrada, recursos, agentes de senha, etc. Se você usar .xinitrc, precisará fazer tudo isso manualmente. Mais uma vez, estou descrevendo o Debian aqui, outras variantes do Unix podem configurar as coisas de maneira diferente. O uso de ~/.xinitrcpara especificar o que é executado quando você executa startxou xinité universal.
Se você usa ~/.xinitrcou ~/.xsession, esse arquivo (geralmente um script de shell, mas não precisa ser, se você realmente quiser usar outra coisa) deve preparar o que precisar ser preparado (por exemplo, configurações do teclado, recursos, applets que não foram iniciados pelo gerenciador de janelas etc.) e, no final, execute o programa que gerencia a sessão. Quando o script termina, a sessão termina. Normalmente, você usaria execno final do script para substituir o script pelo gerenciador de sessões ou gerenciador de janelas.
Seu sistema presumivelmente tem /usr/bin/startlxdecomo o gerenciador de sessões padrão em todo o sistema. No Debian e derivativos, você pode verificar os gerenciadores de sessões disponíveis com
update-alternatives --list x-session-manager
ou obtenha uma descrição mais detalhada indicando qual é o atual com
update-alternatives --display x-session-manager
Se o LXDE não fosse o padrão em todo o sistema e você desejasse torná-lo o padrão para sua conta, você poderia usar o seguinte ~/.xsessionarquivo:
#!/bin/sh
exec startlxde
Em algumas variantes do Unix, isso funcionaria apenas para logins gráficos, não para startx, então você também precisaria criar um idêntico ~/.xinitrc. (Ou não idêntico: em ~/.xsession, você pode querer fazer outras coisas, porque esse é o primeiro arquivo executado em uma sessão gráfica; por exemplo, você pode colocar . ~/.profileno topo, para definir algumas variáveis de ambiente.)
Se você quiser experimentar outros ambientes como únicos, poderá especificar um programa diferente para executar na startxprópria linha de comando . O startxprograma tem uma peculiaridade: você precisa usar o caminho completo para o programa.
startx /usr/bin/startkde
O startxcomando também permite especificar argumentos para passar para o servidor. Por exemplo, se você deseja executar várias sessões da GUI ao mesmo tempo, pode passar um número de exibição diferente a cada vez. Passe argumentos do servidor depois --na linha de comando de startx.
startx /usr/bin/startkde -- :1
startxinicia a sessão padrão do Xfce4. No login de usuário da minha esposa em tty1 ou tty2. Seustartxcomando está definido para executar o Cinnamon (especificado em~/.xsession). Para o segundo servidor X, não preciso especificar o$DISPLAYindicado na última parte da sua resposta. Embora isso certamente funcione. Torna-o automaticamente o segundo$DISPLAYetc. A configuração é ótima. Não há logon e logoff de uma sessão gráfica, apenas um atalho de teclado para alternar perfis de usuário. Obrigado por esta resposta útil!