marimbondo
(usa Outra)
Enviado em 23/12/2019 - 08:47h
Esse tipo de coisa é muito específico, então não tem como te passar algo pronto.
Eu também não uso gerenciador de tela (DM), acho desnecessário.. Porém para configurar a inicialização do X manualmente, você precisa entender várias coisas..
A mais importante é entender como o Xinit funciona (do pacote xorg-xinit no Arch, na sua distro pode ser um nome um pouco diferente). O arquivo .xinitrc é meramente um pequeno script dentro da sua pasta de usuário que configura o que o comando 'startx' irá fazer. Geralmente, você só precisa colocar alguns programas que você deseja abrir na sua sessão, ( no meu exemplo abaixo, eu peço para ele executar o 'xbindkeys', que é um daemon que gerencia atalhos de teclado pro sistema, e logo em seguida, tem que vir um comando com 'exec' e que vai abrir um ambiente de trabalho, no meu caso, o comando 'exec startxfce4', ou pode ser um gerenciador de janelas, tipo o i3..
# ~/.xinitrc
#!/bin/sh
userresources="$HOME/.Xresources/"
usermodmap="$HOME/.Xmodmap"
sysresources="/etc/X11/xinit/.Xresources"
sysmodmap="/etc/X11/xinit/.Xmodmap"
# merge in defaults and keymaps
if [ -f $sysresources ]; then
xrdb -merge $sysresources
fi
if [ -f $sysmodmap ]; then
xmodmap $sysmodmap
fi
if [ -f "$userresources" ]; then
xrdb -merge "$userresources"
fi
if [ -f "$usermodmap" ]; then
xmodf() { sleep 20; xmodmap "$usermodmap"; exit; }
xmodf &
fi
# start some nice programs
if [ -d /etc/X11/xinit/xinitrc.d ] ; then
for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
[ -x "$f" ] && . "$f"
done
unset f
fi
# Start some nice programmes
## Load custom binding of keys for shortcuts
xbindkeys
# Start XFCE4 Environment
exec startxfce4
Bom, feita a configuração do .xinitrc, você ainda precisa criar/adicionar a seguinte linha no arquivo ~/.xserverrc, que é um arquivo de configurações extras para o 'startx':
#~/.xserverrc,
#!/bin/sh
exec /usr/bin/Xorg -nolisten tcp "$@" vt$XDG_VTNR
Isso é necessário para não dar algun sprobleminhas depois... É o tipo de coisa que os DM fazem automaticamente..
A variável $XDG_VTNR é configurada pelo módulo do PAM pam_systemd nas máquinas que usam o systemd..
Feitas essas confs, basta você digitar 'startx' depois que fizer o log-in em uma TTY!
Agora, se você quiser logar automaticamente, deverá editar seu arquivo .bash_profile (ou .profile, depende do seu esquema) e pode adicionar um comando 'startx' ao final do .bash_profile. Como o .bash_profile só é lido em uma sessão do Bash de log-in, esse arquivo só será lido uma vez quando você logar em um TTY. Depois, quando estiver no X, ele não deve ser lido novamente, e sim, somente o .bashrc.. Enfim, esse tipo de coisa você precisa saber mais ou menos, pelo menos, para configurar o início de sessão manualmente..
O Xinit funciona mais facilmente, sem grande configurações, se você estiver logado no TTY1. Se quiser abrir várias sessões gráficas do TTY2, TTY3... etc, é um pouquinho mais complicado.. Mas acho que não precisamos entrar tão a fundo por enquanto.
Uma outra alternativa que eu estava utilizando até há pouquíssimo tempo atrás, é um gerenciador de tela simples que eu criei com base em um vídeo de um cara do BSD, há um ano atrás. Você pode colocar no final do seu .bash_profile:
~/.bash_profile
# Start X? -- My simple display manager
mystartxf() {
# If not ROOT
if [[ ${EUID} -ne 0 ]]; then
## Start X Server?
printf "Start X Server?\n"
read -p "y/N? " yn
case $yn in
[Yy]* ) printf "Yes!\n"; startx;;
[Nn]* ) printf "Answer is No. Exiting...\n";;
* ) printf "No!\n";;
esac
fi
}
mystartxf
Perceba que se o usuário não for raiz, e você apertar 'y', ele vai rodar o comando 'startx' e se apertar qq outra tecla, ele volta para o TTY normalmente.. Usuários raiz não deveriam usar o X, enfim...
Agora, eu estou usando o CDM, que é um display manager totalmente escrito em Bash, e o legal é que ele tem uma pequena interface em curses e temas coloridos... Porém, você precisa entender bem o Xinit para poder configurar o CDM..
https://wiki.archlinux.org/index.php/CDM