Aplicar configurações de exibição a todas as contas de usuário?

14

Passei algum tempo ajustando minhas configurações para vários monitores, e isso está funcionando bem quando estou conectado, mas não está certo na tela de login ou em outros usuários.

Como faço para definir as configurações de exibição globalmente para todos os usuários e a tela de login?

mirams
fonte
Como você definiu isso? da GUI ou da linha de comando, e quais são exatamente as suas configurações?
Jacob Vlijm
Com a GUI "Screen Display", eu acho, as configurações estão aparecendo lá de qualquer maneira. Dois monitores, um girado.
Mirams
askubuntu.com/questions/360886/… define o login como o mesmo usuário, o que é útil. O askubuntu.com/questions/372729/… parece abordar as configurações antigas do xorg que não são mais usadas no 14.04 (eu acho?). Não consigo encontrar qualquer pergunta ou resposta para saber como fazer isso em 14,04 ...
Mirams
Eu tentei essa resposta, a tela girada para login corretamente, e depois não girado para usuários depois (mesmo após exclusão de monitors.xml local)
Mirams
Estou um pouco surpreso com a recompensa, se você configurar seus monitores, executar sudo cp ~/.config/monitors.xml /var/lib/lightdm/.config/como sugerido anteriormente, + a solução abaixo, você terá sua configuração para todos os usuários (incluindo novos usuários) exatamente como você descreve.
Jacob Vlijm

Respostas:

14

Dependendo da maneira como você configurou seu sistema, pode ser tão fácil quanto copiar o monitors.xmlarquivo do usuário configurado corretamente para todos os usuários:

Para testar isso para um usuário:

cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /home/TestUser/.config/

faça logoff do TestUser se já estiver conectado , faça logon novamente e verifique se está tudo 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 comando para todos os usuários futuros ¹:

sudo mdkdir -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

Fabby
fonte
1
Eu já sugeri isso nos comentários (e na minha resposta anterior, mas reverti), mas o OP mencionou que não era suficiente. Isso funciona apenas para a tela de logon :) Também não funciona para novos usuários, a menos que você os copie novamente para esses usuários.
Jacob Vlijm
@JacobVlijm: Leia de novo ... O meu é para a tela de login e para todos os usuários ... : P (deixando-o como um comentário abaixo deste pelo OP que não funciona, alertaria outros pôsteres de digitar tudo isso uma terceira vez) > :-)
Fabby
1
Eu não sugeri copiar o arquivo para todos os usuários, por causa disso: eu gostaria de uma solução que aplique configurações a todas as contas de usuário (e futuras) e também faça a tela de login parecer correta. adicionar a /etc/xdg parece ser o único truque que faz isso também para novos usuários.
Jacob Vlijm
@JacobVlijm: ah, perdi essa! (Solução adicional para que tão bem) ;-)
Fabby
2
Essa é a melhor resposta ainda - configura todos os monitores corretamente e funciona imediatamente também para o usuário convidado. Como bônus - existe também uma maneira de copiar a configuração "Posicionamento do iniciador" da GUI das configurações de vídeo? No meu usuário, é apenas em um monitor, mas em ambos para o usuário novo / convidado.
Mirams
3

Para definir a configuração da tela para todos os usuários que efetuam login (isso não altera a configuração na tela de login), você pode criar um .desktoparquivo em/etc/xdg/autostart

Como fazer isso

  1. descubra o nome da tela que você deseja girar executando xrandr. Ele produzirá várias linhas, dentre as quais algumas parecem:

    VGA-0 connected
    

    Isso fornece informações sobre os nomes das telas conectadas.

  2. Escolha o que você deseja girar, no meu exemplo abaixo VGA-0
  3. Crie um iniciador 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
    

    substituir na linha:

    Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left"
    

    A sequência: VGA-0pelo nome da 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 vezes, os xrandrcomandos são interrompidos se executados muito cedo, antes que a área de trabalho seja "concluída". Possivelmente, você precisa aumentar o intervalo ou tentar deixar de fora. No comando, como é, a tela gira após 10 segundos após o login de qualquer usuário.

  • O comando:

    xrandr --output VGA-0 --rotate left
    

    gira a tela para a esquerda, não há necessidade de dizer que se você gostaria de outro tipo de rotação, você pode escolher qualquer um left, right, normal, inverted(ver também aqui) .

Explicação

Você pode executar comandos na inicialização (na verdade, faça login) colocando um .desktoparquivo (iniciador) ~/.config/autostart. Isso executará apenas o iniciador para um único usuário. Se você fizer o mesmo, mas colocar o iniciador /etc/xdg/autostart, o comando será executado sempre que um usuário efetuar login, a menos que um usuário específico desative o iniciador em Dash> Startup Applications

Além disso , você pode simplesmente copiar seu ~/.config/monitors.xmlarquivo local /var/lib/lightdm/monitors.xmlpara também fazer com que as configurações funcionem na tela de login.

Imo a combinação disso e a solução acima (um iniciador /etc/xdg) é a solução mais fácil para obter exatamente o que você deseja para a tela de login e (qualquer) usuário. Além disso, a solução de um iniciador /etc/xdgé (muito) facilmente revertida ou alterada, caso você precise fazer outra configuração, sem editar muitos arquivos no (cada) nível do usuário, pois as configurações do usuário e a tela de login são gerenciadas para todos os usuários de uma vez em dois arquivos simples.

Jacob Vlijm
fonte
Isso pode funcionar - alterar as configurações 10s após o login, mas eu prefiro saber onde elas estão definidas para iniciá-las e alterá-las para todos (e a tela de login, que atualmente está de lado).
Mirams
Por que alguém rebaixou isso?
Fabby
2

Só queria adicionar um comentário para qualquer um que tenha problemas com um problema semelhante. Eu estava com a resolução do meu monitor antigo (1280x1024) toda vez que fazia login, mas a tela de login e o login do usuário convidado usam o padrão correto 1680x1050.

Li várias postagens nos últimos quatro meses procurando uma resposta, lendo xorg.conf, monitors.xml, lightdm e xrandr e outras sugestões - mas algumas alterações de configuração são complicadas e correm o risco de interromper a exibição completamente, então acabei usando a GUI para alterar a configuração do monitor manualmente a cada login.

Hoje eu 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 que contém isso,

Exec=xrandr -s 1280x1024 -r 75

então acabei de mudar o arquivo de lá. E bingo, eu entro e obtenho a resolução padrão de 1680x1050.

Demorei algumas horas para pesquisar e não consegui encontrar uma resposta suficientemente próxima, então publique aqui caso seja útil para alguém.

MattB
fonte
Bem-vindo ao Ask Ubuntu. Obrigado por compartilhar seus quatro meses (tempo decorrido) de pesquisa.
WinEunuuchs2Unix
Lendo isso de novo, acho que possivelmente criei o arquivo xrandr.desktop há dois anos para contornar o Ubuntu sempre padronizando as configurações básicas do monitor 'Goldstar', e isso provavelmente foi um problema de compatibilidade com a minha placa de vídeo.
MattB
0

Você pode acrescentar algo a /etc/lightdm/lightdm.conf. Aqui, criamos um script que usa um xrandrcomando para configurar seus monitores. 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/shareou onde quiser. Seu script pode parecer muito menos complexo, pois é para uma configuração complexa de monitor duplo. Em seguida, acrescente algo como:

session-setup-script=/usr/share/mycustomxrandr.sh

e:

display-setup-script=/usr/share/mycustomxrandr.sh

Verifique se o arquivo é executável, portanto:

chmod a+x mycustomxrandr.sh

O session-setup-scriptirá definir a exibição para depois fazer o login através LightDM, e display-setup-scriptvai mudar a exibição para tela de login.

nixpower
fonte
Seria ótimo se você pudesse tentar isso, estou interessado em ver se isso funcionará para você.
Nixpower
0

No meu sistema (Ubuntu 16.04), a tela de login simplesmente cpcomo root (usando sudo) não funcionava. Você também pode precisar se certificar de que o proprietário / grupo de monitors.xml é lightdm:lightdm.

sudo chown lightdm:lightdm /var/lib/lightdm/.config/monitors.xml
Zinsser
fonte