Passei algum tempo corrigindo minhas configurações para vários monitores, e isso funciona bem quando estou logado, mas não funciona na tela de login ou para outros usuários.
Como defino as configurações de exibição globalmente para todos os usuários e a tela de login?
Responder1
Dependendo da forma como você configurou seu sistema, pode ser tão fácil quanto copiar o monitors.xml
arquivodo usuário configurado corretamentepara todos os usuários:
Para testar isso para um usuário:
cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /home/TestUser/.config/
então faça logoff do TestUserse já estiver logado, faça login novamente e veja se tudo está correto.
O comando para todos os usuários:
cp /home/CorrectUser/.config/monitors.xml /tmp/
for szUser in /home/* ; do sudo cp --preserve=timestamps /tmp/monitors.xml $szUser/.config/ ; done
O comando para a tela de login:
sudo cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /var/lib/lightdm/.config/
O comandopara todos os futuros usuários¹:
sudo mkdir -p /etc/skel/.config
sudo cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /etc/skel/.config/
Nota¹:Todos os usuários que você criará no futuro
Responder2
Para definir a configuração da telapara cada usuário no login(isso não alterará a configuração na tela de login), você pode criar um .desktop
arquivo em/etc/xdg/autostart
Como fazer isso
descubra o nome da tela que você deseja girar executando
xrandr
. Ele produzirá uma série de linhas, entre elas algumas linhas parecidas com:VGA-0 connected
Isso fornece informações sobre os nomes das telas conectadas.
- Escolha aquele que você deseja girar, no meu exemplo abaixo
VGA-0
Crie um lançador com (por exemplo)
gedit
:sudo -i gedit /etc/xdg/autostart/set_screens.desktop
Cole o texto abaixo no arquivo:
[Desktop Entry] Name=set_screens Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left" Type=Application
substitua na linha:
Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left"
A string:
VGA-0
pelo nome da sua tela (girada).
Anotações importantes
Na linha
Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left"
Eu incluí um
sleep 10
. Isso ocorre porque às vezesxrandr
os comandos são interrompidos se forem executados muito cedo, antes que o carregamento da área de trabalho seja "terminado". Possivelmente você precise aumentar o intervalo ou tentar deixá-lo de fora. No comando, como está, a tela gira após 10 segundos após o login doqualquerdo utilizador.O comando:
xrandr --output VGA-0 --rotate left
gira a tela para a esquerda, não há necessidade de dizer que se você quiser outro tipo de rotação, você pode escolher
left
,right
,normal
,inverted
(veja tambémaqui).
Explicação
Você pode executar comandos na inicialização (realmente fazer login) colocando um .desktop
arquivo (iniciador) no formato ~/.config/autostart
. Isso executará o inicializador apenas para um único usuário. Se você fizer o mesmo, mas colocar o inicializador em /etc/xdg/autostart
, o comando será executado sempre quequalquero usuário faz login, a menos que um usuário específico desative o inicializador para ele ou ela em Dash > Aplicativos de inicialização
Adicionalmente~/.config/monitors.xml
, você pode simplesmente copiar seu arquivo local para /var/lib/lightdm/monitors.xml
também fazer as configurações funcionarem na tela de login.
Imo, a combinação disso e a solução acima (um iniciador em /etc/xdg
) é a solução mais fácil para conseguir exatamente o que você deseja tanto para a tela de login quanto para (qualquer) usuário. Além disso, a solução de um launcher /etc/xdg
é (muito) facilmente revertida ou alterada caso você precise fazer outra configuração, sem editar muitos arquivos em (cada) nível de usuário, já que tanto as configurações do usuário quanto a tela de login são gerenciadas para todos os usuários de uma vez em dois arquivos simples.
Responder3
Só queria adicionar um comentário para qualquer pessoa que esteja enfrentando um problema semelhante. Fiquei preso na resolução do meu monitor antigo (1280x1024) toda vez que faço login, mas a tela de login e o login do usuário convidado usam o padrão correto de 1680x1050.
Eu li muitas postagens nos últimos quatro meses procurando uma resposta, lendo sobrexorg.conf, monitores.xml, lightdmexrandre outras sugestões - mas algumas alterações de configuração são complicadas e correm o risco de quebrar totalmente a exibição, então acabei usando a interface gráfica para alterar manualmente a configuração do monitor a cada login.
Hoje fiz um grep para a resolução antiga na minha pasta .config.
grep -HrnIF '1280' .config | less
O primeiro resultado foi o arquivo ~/.config/autostart/xrandr.desktop contendo isto,
Exec=xrandr -s 1280x1024 -r 75
então acabei de tirar o arquivo de lá. E bingo, eu faço login e obtenho a resolução padrão de 1680x1050.
Levei algumas horas pesquisando e não consegui encontrar uma resposta próxima o suficiente, então poste aqui caso seja útil para alguém.
Responder4
Você pode querer acrescentar algo ao arquivo /etc/lightdm/lightdm.conf
. Aqui criamos um script que usa um xrandr
comando para configurar seu(s) display(s). Você pode usar alguma ferramenta gráfica RandR para criar um comando para você, como arandr
. No meu caso, o script ficaria assim:
#!/bin/sh
xrandr --output DVI-I-1 --mode 1600x1200 --pos 0x0 --rotate left --output DVI-I-0 --off --output DP-3 --off --output DP-2 --off --output DP-1 --mode 1600x900 --pos 1200x700 --rotate normal --output DP-0 --off
Você pode colocar esse script /usr/share
ou onde quiser. Seu script pode parecer muito menos complexo, pois se trata de uma configuração complexa de monitor duplo. Em seguida, anexe algo como:
session-setup-script=/usr/share/mycustomxrandr.sh
e:
display-setup-script=/usr/share/mycustomxrandr.sh
Certifique-se de que o arquivo seja executável, então:
chmod a+x mycustomxrandr.sh
O session-setup-script
irá definir a exibição paradepoisvocê faz login através do LightDM e display-setup-script
mudará a exibição da tela de login.