GDM (Português)

From ArchWiki
Status de tradução: Esse artigo é uma tradução de GDM. Data da última tradução: 2019-11-23. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

Do GDM - GNOME Display Manager: "O Gerenciador de Exibição do GNOME (GDM) é um programa que gerencia servidores gráficos de exibição e lida com logins de usuários gráficos."

Gerenciadores de exibição fornecem a usuários de X Window System e Wayland com um prompt de login gráfico.

Instalação

GDM pode ser instalado com o pacote gdm e é instalado como parte do grupo gnome.

Inicialização

Para iniciar o GDM na inicialização do sistema, habilite gdm.service.

Inicializando aplicativos automaticamente

Pode-se querer iniciar automaticamente certos comandos, como xrandr, por exemplo, quanto da auttenticaçaõ. Isso pode ser obtido adicionando um comando ou script a um local originado pelo gerenciador de exibição. Consulte Gerenciador de exibição#Iniciando automaticamente para uma lista de locais suportados.

Nota: O diretório /etc/gdm/Init não é mais uma localização válida, veja [1].

Configuração

Imagem de plano de fundo na tela de autenticação

Nota:
  • Desde o GNOME 3.16, temas do GNOME Shell estão sendo armazenados como arquivos binários (gresource).
  • Essa alteração será substituída em atualizações subsequentes do gnome-shell.

Em primeiro lugar, você precisa extrair o tema existente do GNOME Shell para uma pasta em seu diretório pessoal. Você pode fazer isso usando o seguinte script:

extractgst.sh
#!/bin/sh
gst=/usr/share/gnome-shell/gnome-shell-theme.gresource
workdir=${HOME}/shell-theme

for r in `gresource list $gst`; do
	r=${r#\/org\/gnome\/shell/}
	if [ ! -d $workdir/${r%/*} ]; then
	  mkdir -p $workdir/${r%/*}
	fi
done

for r in `gresource list $gst`; do
        gresource extract $gst $r >$workdir/${r#\/org\/gnome\/shell/}
done

Navegue até o diretório criado. Você deve descobrir que os arquivos de tema foram extraídos para ele. Agora copie sua imagem de fundo preferida para este diretório.

Em seguida, você precisa criar um arquivo no diretório com o seguinte conteúdo:

gnome-shell-theme.gresource.xml
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
  <gresource prefix="/org/gnome/shell/theme">
    <file>calendar-today.svg</file>
    <file>checkbox-focused.svg</file>
    <file>checkbox-off-focused.svg</file>
    <file>checkbox-off.svg</file>
    <file>checkbox.svg</file>
    <file>dash-placeholder.svg</file>
    <file>gnome-shell.css</file>
    <file>gnome-shell-high-contrast.css</file>
    <file>icons/message-indicator-symbolic.svg</file>
    <file>icons/pointer-double-click-symbolic.svg</file>
    <file>icons/pointer-drag-symbolic.svg</file>
    <file>icons/pointer-primary-click-symbolic.svg</file>
    <file>icons/pointer-secondary-click-symbolic.svg</file>
    <file>key-enter.svg</file>
    <file>key-hide.svg</file>
    <file>key-layout.svg</file>
    <file>key-shift-latched-uppercase.svg</file>
    <file>key-shift.svg</file>
    <file>key-shift-uppercase.svg</file>
    <file>no-events.svg</file>
    <file>noise-texture.png</file>
    <file>nome-do-arquivo</file>
    <file>no-notifications.svg</file>
    <file>pad-osd.css</file>
    <file>process-working.svg</file>
    <file>toggle-off-dark.svg</file>
    <file>toggle-off-hc.svg</file>
    <file>toggle-off.svg</file>
    <file>toggle-on-dark.svg</file>
    <file>toggle-on-hc.svg</file>
    <file>toggle-on.svg</file>
  </gresource>
</gresources>

Substitua nome-do-arquivo com o nome do arquivo de sua imagem de plano de fundo.

Agora, abra o arquivo gnome-shell.css no diretório e alterar a definição #lockDialogGroup da seguinte forma:

#lockDialogGroup {
  background: #2e3436 url(nome-do-arquivo);
  background-size: [ALTURA]px [LARGURA]px;
  background-repeat: no-repeat;
}

Defina background-size para a resolução que o GDM usa, que pode não necessariamente ser a resolução da imagem. Para uma lista de resoluções de tela, veja Display resolution. Novamente, defina nome-de-arquivo para ser o nome da imagem de fundo.

Finalmente, compile o tema usando o seguinte comando:

$ glib-compile-resources gnome-shell-theme.gresource.xml

Então, copie o arquivo resultante gnome-shell-theme.gresource para o diretório /usr/share/gnome-shell.

Então, reinicie gdm.service (note que só encerrar a sessão não é suficiente) e você deve descobrir que ele está usando sua imagem de plano de fundo.

Para mais informações, veja o seguinte tópico no forum.

Configuração no DConf

Algumas configurações do GDM são armazenadas em um banco de dados DConf. Eles podem ser configurados adicionando arquivo-chaves ao diretório /etc/dconf/db/gdm.d e, em seguida, recompilando o banco de dados do GDM executando dconf update como root ou fazendo login no usuário do GDM no sistema e alterando a configuração diretamente usando a ferramenta de linha de comando gsettings. Observe que, para a abordagem anterior, é necessário um arquivo de perfil do GDM - isso deve ser criado manualmente, pois não é mais enviado pelo desenvolvedor, veja abaixo:

/etc/dconf/profile/gdm
user-db:user
system-db:gdm
file-db:/usr/share/gdm/greeter-dconf-defaults

Para a última abordagem, você pode efetuar login no usuário do GDM com o comando abaixo:

# machinectl shell gdm@

Logo da tela de autenticação

Crie o seguinte arquivo-chave

/etc/dconf/db/gdm.d/02-logo
[org/gnome/login-screen]
logo='/caminho/para/logo.png'

e recompile o banco de dados do GDM ou, alternativamente, autentique-se ao usuário GDM e execute o seguinte:

$ gsettings set org.gnome.login-screen logo '/caminho/para/logo.png'

Alterando o tema do cursor

O GDM desconsidera as configurações do tema do cursor GNOME e também ignora o conjunto de temas do cursor de acordo com a especificação XDG. Para alterar o tema do cursor usado no GDM, crie o seguinte arquivo-chave

/etc/dconf/db/gdm.d/10-cursor-settings
[org/gnome/desktop/interface]
cursor-theme='nome-tema'

e recompile o banco de dados do GDM ou, alternativamente, autentique-se como o usuário GDM e execute o seguinte:

$ gsettings set org.gnome.desktop.interface cursor-theme 'nome-tema'

Fonte maior para a tela de autenticação

Clique no ícone de acessibilidade no canto superior direito da tela (um círculo branco com a silhueta de uma pessoa no centro) e marque a opção Texto grande.

Para definir um fator de escala específico, você pode criar o seguinte arquivo-chave:

/etc/dconf/db/gdm.d/03-scaling
[org/gnome/desktop/interface]
text-scaling-factor='1.25'

e, em seguida, recompile o banco de dados do GDM ou, alternativamente, efetue login no usuário do GDM e execute o seguinte:

$ gsettings set org.gnome.desktop.interface text-scaling-factor '1.25'

Desligando o som

Este ajuste desativa o feedback audível ouvido quando o volume do sistema é ajustado (via teclado) na tela de login.

Crie o seguinte arquivo-chave:

/etc/dconf/db/gdm.d/04-sound
[org/gnome/desktop/sound]
event-sounds='false'

e recompile o banco de dados do GDM ou, alternativamente, efetue login no usuário do GDM e execute o seguinte:

$ gsettings set org.gnome.desktop.sound event-sounds 'false'

Configurando o comportamento do botão de energia

Nota:
  • As configurações do logind para o botão de energia são substituídas pelo daemon de configurações do GNOME. [2]
  • A partir do GDM 3.18, o botão de energia não pode ser ajustado para interativo. [3]
  • Em alguns casos, essa configuração será ignorada e os padrões codificados serão usados. [4]
Atenção: Observe que o daemon acpid também lida com os eventos "botão liga/desliga" e "botão de hibernação". Executar os dois sistemas ao mesmo tempo pode levar a um comportamento inesperado.

Crie o seguinte arquivo-chave:

/etc/dconf/db/gdm.d/05-power
[org/gnome/settings-daemon/plugins/power]
power-button-action='ação'

e recompile o banco de dados do GDM ou, alternativamente, efetue login no usuário do GDM e execute o seguinte:

$ gsettings set org.gnome.settings-daemon.plugins.power power-button-action 'ação'

sendo ação uma entre nothing, suspend ou hibernate.

Habilitando tap-to-click

Tap-to-click (em português, "tocar para clicar") está desabilitado no GDM (e no GNOME) por padrão, mas você pode facilmente habilitá-lo com uma configuração no dconf.

Nota: Se você quiser fazer isso no X, você precisa primeiro configurar as permissões corretas de acesso ao servidor X - veja #Configurar permissão de acesso do servidor X.

Para habilitar tap-to-click diretamente, use:

# sudo -u gdm gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true

Se você preferir fazer isso com uma GUI, use:

# sudo -u gdm dconf-editor

Para verificar se ela está definida corretamente, use:

$ sudo -u gdm gsettings get org.gnome.desktop.peripherals.touchpad tap-to-click

Se você receber um erro dconf-WARNING **: failed to commit changes to dconf: Error spawning command line, certifique-se que dbus está em excecução:

$ sudo -u gdm dbus-launch gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true

Desabilitar/Habilitar o menu de acessibilidade

Para desabilitar ou habilitar o Menu de Acessibilidade, defina a seguinte chave no editor dconf:

# machinectl shell gdm@
# gsettings set org.gnome.desktop.interface toolkit-accessibility false
# exit

O menu é desabilitado quando a chave estiver em falso, habilitado quando estiver em verdadeiro.

Layout do teclado

O layout do teclado do sistema será aplicado ao GDM. Veja Keyboard configuration in Xorg#Using X configuration files.

Dica: Veja Wikipedia:ISO 3166-1 para uma lista de keymaps.

Se um sistema tiver vários usuários, é possível especificar um layout de teclado para o GDM usar, o que é diferente do layout do teclado do sistema. Em primeiro lugar, certifique-se de que o pacote gnome-control-center esteja instalado. Então inicie o gnome-control-center e navegue até Região & Idioma -> Fontes de entrada. Na barra de cabeçalho, pressione o botão de alternância Tela de início de sessão e escolha um layout de teclado na lista. Observe que o botão Tela de início de sessão não estará visível na barra de cabeçalho, a menos que vários usuários estejam presentes no sistema [5].

Usuários do GDM 2.x (GDM legado) pode precisar editar ~/.dmrc como mostrado abaixo:

~/.dmrc
[Desktop]
Language=de_DE.UTF-8   # altera seu idioma padrão
Layout=de   nodeadkeys # altera seu layout padrão

Alterar o idioma

O idioma do sistema será aplicado ao GDM. Se um sistema tiver vários usuários, é possível definir um idioma para o GDM diferente do idioma do sistema. Neste caso, primeiro certifique-se de que gnome-control-center esteja instalado. Então, inicie o 'gnome-control-center' e escolha Região & Idioma. Na barra de cabeçalho, marque o botão de alternância Tela de início de sessão. Por fim, clique em Idioma e escolha seu idioma na lista. Você será solicitado a fornecer sua senha de root. Observe que o botão Tela de início de sessão não estará visível na barra de cabeçalho, a menos que vários usuários estejam presentes no sistema [6].

Dica: Ao adicionar dois idiomas de entrada diferentes, efetuando logout e selecionando seu idioma padrão, o GDM se lembrará de sua escolha assim que a segunda opção for removida.

Usuários e autenticação

Autenticação automática

Para habilitar a autenticação automática com o GDM, adicione o seguinte a /etc/gdm/custom.conf (substitua nome_de_usuário por seu próprio):

/etc/gdm/custom.conf
# Habilita autenticação automática para o usuário
[daemon]
AutomaticLogin=nome_de_usuário
AutomaticLoginEnable=True
Dica: Se o GDM falhar após adicionar essas linhas, comente-as de um TTY.

ou para uma autenticação automática com um atraso:

/etc/gdm/custom.conf
[daemon]

TimedLoginEnable=true
TimedLogin=nome_de_usuário
TimedLoginDelay=1

Você pode definir a sessão usada para autenticação automática (substitua gnome-xorg pela sessão desejada):

/var/lib/AccountsService/users/nome_de_usuário
XSession=gnome-xorg

Autenticação sem senha

Se você quiser ignorar o prompt de senha no GDM, basta adicionar a seguinte linha na primeira linha de /etc/pam.d/gdm-password:

auth sufficient pam_succeed_if.so user ingroup nopasswdlogin

Em seguida, adicione o grupo nopasswdlogin ao seu sistema. Veja Usuários e grupos#Gerenciamento de grupo para descrições de grupos e comandos de gerenciamento de grupos.

Agora, adicione seu usuário ao grupo nopasswdlogin e você só terá que clicar no seu nome de usuário para se autenticar.

Atenção:
  • Não faça isso para a conta root.
  • Você não poderá mais alterar seu tipo de sessão na autenticação com o GDM. Se você quiser alterar o tipo de sessão padrão, primeiro precisará remover o usuário do grupo nopasswdlogin.

Desligamento sem senha para várias sessões

O GDM usa o polkit e o logind para obter permissões para o encerramento. Você pode desligar o sistema quando vários usuários estão autenticados, definindo:

/etc/polkit-1/localauthority.conf.d/org.freedesktop.logind.policy
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
 "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd">


<policyconfig>

  <action id="org.freedesktop.login1.power-off-multiple-sessions">
    <description>Shutdown the system when multiple users are logged in</description>
    <message>System policy prevents shutting down the system when other users are logged in</message>
    <defaults>
      <allow_inactive>yes</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
  </action>

</policyconfig>

Você pode encontrar todas as opções de logind disponíveis (por exemplo, reboot-multiple-sessions) here.

Habilitar autenticação como root no GDM

Não é aconselhável fazer login como root, mas, se necessário, você pode editar /etc/pam.d/gdm-password e adicionar a seguinte linha antes da linha auth required pam_deny.so:

/etc/pam.d/gdm-password

auth            sufficient      pam_succeed_if.so uid eq 0 quiet

O arquivo deve ser algo como isto:

/etc/pam.d/gdm-password

...
auth            sufficient      pam_succeed_if.so uid eq 0 quiet
auth            sufficient      pam_succeed_if.so uid >= 1000 quiet
auth            required        pam_deny.so
...

Você deve poder autenticar como root após reiniciar o GDM.

Ocultar usuário da lista de login

Os usuários da lista de usuários do gdm são reunidos por AccountsService. Ele irá ocultar automaticamente os usuários do sistema (UID <1000). Para ocultar usuários comuns da lista de login, crie ou edite um arquivo com o nome do usuário para ocultar em /var/lib/AccountsService/users/ para conter pelo menos:

/var/lib/AccountsService/users/nome_de_usuário
[User]
SystemAccount=true

Definir as configurações de monitor padrão

Alguns ambientes de desktop armazenam configurações de exibição em ~/.config/monitors.xml. Os comandos xrandr são então gerados na base do conteúdo do arquivo. O GDM tem um arquivo semelhante armazenado em /var/lib/gdm/.config/monitors.xml.

Se você tiver a configuração de seus monitores como quiser (orientação, escala, primário e assim por diante) em ~/.config/monitors.xml e quiser que o GDM honre essas configurações:

$ sudo cp ~/.config/monitors.xml /var/lib/gdm/.config/
$ sudo chown gdm:gdm /var/lib/gdm/.config/monitors.xml

As partes relevantes de monitors.xml para rotação e escala de tela são:

<monitors version="2">
  <configuration>
    <logicalmonitor>
      ...
      <scale>2</scale>
      ...
      <transform>
        <rotation>right</rotation>
        <flipped>no</flipped>
      </transform>
      ...
    </logicalmonitor>
  </configuration>
</monitors>

As alterações entrarão em vigor no encerramento da sessão. Isso é necessário porque o GDM não respeita xorg.conf.

Nota: Se você usa GDM sob o Wayland, você também deve usar um monitors.xml que foi criado sob Wayland. Veja bug 224 do GDM para mais informações. Alternativamente, você pode forçar o GDM a #Usar backend do Xorg e usar um monitors.xml que foi criado sob Xorg.

Configurar permissão de acesso do servidor X

Você pode usar o comando xhost para configurar permissões de acesso ao servidor X.

Por exemplo, para conceder ao GDM o direito de acessar o servidor X, use o seguinte comando:

# xhost +SI:localuser:gdm

Solução de problemas

Wayland e o driver proprietário da NVIDIA

O GDM não funciona bem no modo Wayland com o driver proprietário NVIDIA. Ao usar esse driver, o GDM usará o Xorg em vez disso. [7]

Para forçar ativação do Wayland, desative a regra udev responsável para desativar o Wayland no GDM:

# ln -s /dev/null /etc/udev/rules.d/61-gdm.rules

Falha no encerramento da sessão

Se o GDM iniciar corretamente na inicialização, mas falhar após tentativas repetidas de encerramento de sessão, tente adicionar essa linha à seção do daemon do /etc/gdm/custom.conf:

GdmXserverTimeout=60

Xorg sem senha

Veja Xorg (Português)#Xorg sem root.

Usar backend do Xorg

O backend Wayland é usado por padrão e o backend Xorg é usado somente se o backend de Wayland não puder ser iniciado. Você pode querer usar o backend Xorg se, por exemplo:

Para usar o backend do Xorg por padrão, descomente a seguinte linha no /etc/gdm/custom.conf:

#WaylandEnable=false

GDM congela com o systemd

Se o GDM travar com systemctl enable gdm, e systemctl start gdm funciona conforme esperado, aplique a configuração com systemctl edit gdm conforme abaixo:

 [Service]
 Type=Idle

GDM não inicia até a entrada ser fornecida

Se, após a inicialização, a tela permanecer preta e o GDM não iniciar até que o mouse seja movido ou algo digitado no teclado, isso pode ocorrer devido à falta de entropia necessária para a geração aleatória de números. Para confirmar, verifique se a seguinte linha aparece dentro do log de systemd-random-seed (que pode ser lido usando journalctl --unit systemd-random-seed):

Kernel entropy pool is not initialized yet, waiting until it is.

Para corrigir isso, você pode passar o parâmetro do kernel random.trust_cpu=on se sua CPU possuir suporte à instrução RDRAND ou usar haveged, que também fornece entropia, embora seja de qualidade supostamente baixa. Veja artigo do Debian sobre o tópico para outras soluções.

Remoção incompleta do gdm

Após remover gdm, o systemd pode relatar o seguinte:

user 'gdm': directory '/var/lib/gdm' does not exist

Para remover esse aviso, autentique-se como root e exclua o usuário primário "gdm" e exclua o grupo "gdm":

# userdel gdm
# groupdel gdm

Verifique se gdm foi removido com sucesso via pwck e grpck. Para completar, você pode querer se certificar que não há arquivos arquivos sem dono por restos do gdm.

Suspensão automática do GDM (GNOME 3.28)

O GDM usa um banco de dados separado do dconf para controlar o gerenciamento de energia. Você pode fazer o GDM se comportar da mesma maneira que as sessões do usuário copiando as configurações do usuário para o banco de dados dconf do GDM.

$ IFS=$'\n'; for x in $(sudo -u nome_de_usuário gsettings list-recursively org.gnome.settings-daemon.plugins.power); do eval "sudo -u gdm dbus-launch gsettings set $x"; done; unset IFS

sendo nome_de_usuário o nome do seu usuário.

Ou simplesmente desabilitar a suspensão automática (também execute o comando com ac substituído por battery para também desativá-lo durante a execução com bateria):

$ sudo -u gdm dbus-launch gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing'

GDM ignora Wayland e usa X.Org por padrão

Wayland requer Kernel Mode Setting (KMS) em execução para funcionar, e em algumas máquinas o processo GDM inicia mais cedo que KMS, resultando em GDM ser incapaz de ver Wayland e trabalhando apenas com X.Org. Isso pode resultar em mensagens como o seguinte, mostrando seu log:

 gnome-shell[569]: Failed to open gpu '/dev/dri/card0': GDBus.Error:org.freedesktop.DBus.Error.AccessDenied: Operation not permitted
 gnome-shell[569]: Failed to create backend: No GPUs found
 systemd[505]: gnome-shell-wayland.service: Failed with result 'protocol'.
 systemd[505]: Failed to start GNOME Shell on Wayland.

Você pode resolver este problema iniciando o KMS mais cedo.

Veja também