Que ambiente de desktop o startx executa e como posso alterá-lo?

15

De muitos docs, eu li que startx está iniciando o LXDE no sistema operacional Raspbian. Estou um pouco confuso.

Será sempre startx executar o LXDE GUI?

Também vi exemplo com o uso do comando startlxde . Como esse comando é diferente e por que startx e startlxde estão executando a mesma GUI (LXDE)? Ou talvez seja executado porque é a GUI padrão?

Como posso escolher a GUI padrão se tiver vários?

Você poderia, por favor, explicar mais detalhes sobre a GUI em sistemas Linux?

    
por CuriousGuy 15.11.2015 / 21:56

2 respostas

24

startx runs xinit que inicia um servidor X e uma sessão do cliente. A sessão do cliente é ~/.xinitrc , se presente, e de outra forma /etc/X11/xinit/xinitrc (o local pode variar entre distribuições). O que esse script faz varia entre distribuições. No Debian (incluindo derivados como o Raspbian), /etc/X11/xinit/xinitrc runs /etc/X11/Xsession , que por sua vez executa scripts em /etc/X11/Xsession.d . Os scripts Debian procuram por uma sessão de usuário em outros arquivos ( ~/.xsession , ~/.xsessionrc , ~/.Xsession ) e, se nenhuma configuração de usuário for aplicável, executa x-session-manager (voltando a x-window-manager se não [gerenciador de sessão] está instalado, voltando a x-terminal-emulator no caso improvável de que nenhum gerenciador de janelas esteja instalado).

Se você quiser controlar o que é executado, crie um dos arquivos do usuário, ~/.xsession ou ~/.xinitrc . O arquivo ~/.xsession também é usado se você fizer login em um gerente de exibição (ou seja, se você digitar sua senha em uma janela da GUI). O arquivo ~/.xinitrc é específico de xinit e startx . Usar ~/.xsession passa por /etc/X11/Xsession , portanto, configura itens como métodos de entrada, recursos, agentes de senha etc. Se você usar .xinitrc , terá que fazer todos eles manualmente. Mais uma vez, estou descrevendo o Debian aqui, outras variantes do Unix podem configurar as coisas de forma diferente. O uso de ~/.xinitrc para especificar o que é executado quando você executa startx ou xinit é universal.

Se você usa ~/.xinitrc ou ~/.xsession , esse arquivo (normalmente um shell script, mas não precisa ser se você realmente quiser usar outra coisa) deve preparar o que precisa ser preparado (por exemplo, configurações do teclado , recursos, applets que não são iniciados pelo gerenciador de janelas, etc.) e, em seguida, no final, execute o programa que gerencia a sessão. Quando o script termina, a sessão é encerrada. Normalmente, você usaria exec no final do script para substituir o script pelo gerenciador de janelas ou pelo gerenciador de janelas.

Seu sistema presumivelmente tem /usr/bin/startlxde como o gerenciador de sessão padrão do sistema. No Debian e derivados, você pode verificar os gerenciadores de sessão disponíveis com

update-alternatives --list x-session-manager

ou obtenha uma descrição mais detalhada indicando qual deles é atual com

update-alternatives --display x-session-manager

Se o LXDE não fosse o padrão para todo o sistema e você quisesse torná-lo o padrão para sua conta, você poderia usar o seguinte arquivo ~/.xsession :

#!/bin/sh
exec startlxde

Em algumas variantes do Unix, isso seria executado apenas para logins gráficos, não para startx , então você também precisaria criar um ~/.xinitrc idêntico. (Ou não idêntico: em ~/.xsession , você pode querer fazer outras coisas, porque esse é o primeiro arquivo que é executado em uma sessão gráfica; por exemplo, você pode colocar . ~/.profile no topo, para definir algumas variáveis de ambiente). / p>

Se você quiser experimentar outros ambientes como um único, você pode especificar um programa diferente para ser executado na linha de comando do startx em si. O programa startx tem um capricho: você precisa usar o caminho completo para o programa.

startx /usr/bin/startkde

O comando startx também permite especificar argumentos para passar para o servidor. Por exemplo, se você quiser executar várias sessões GUI ao mesmo tempo, poderá passar um número de exibição diferente a cada vez. Passar argumentos do servidor após -- na linha de comando de startx .

startx /usr/bin/startkde -- :1
    
por 15.11.2015 / 23:05
9

Não: startx é configurável. De acordo com a página de manual :

To determine the client to run, startx first looks for a file called .xinitrc in the user's home directory. If that is not found, it uses the file xinitrc in the xinit library directory.

startx não é a única maneira de iniciar o X (como você vê em startlxde ). A página de manual startx ajuda novamente:

The startx script is a front end to xinit(1) that provides a somewhat nicer user interface for running a single session of the X Window System. It is often run with no arguments.

Por outro lado, se você quiser escolher uma GUI (LXDE, KDE, etc), então xdm e semelhantes, como kdm , gdm ou LightDM são usados para selecionar diferentes tipos de área de trabalho. No Debian eu geralmente uso kdm , porque isso permite diferentes tipos de desktop. Os empacotadores de gdm não permitem a maioria dos tipos de desktop, tornando-o inadequado para minhas necessidades.

xdm usa um conjunto de scripts diferente para iniciar, por exemplo, o script ~/.xsession junto com os scripts do sistema. Os semelhantes podem ignorar isso e usar seus próprios scripts. Mas é um ponto de partida.

    
por 15.11.2015 / 22:03