Por que minhas edições lightdm.conf não afetam a resolução da tela da minha área de trabalho?

13

Eu queria alterar a resolução da tela da minha área de trabalho para 1366x768 . Mas meu VESA drivers(AMD REDWOOD) não detectou essa resolução. Então eu criei um script de shell da seguinte forma: -

xrandr --newmode "1368x768_60.00"   85.25  1368 1440 1576 1784  768 771 781 798 -hsync +vsync  
xrandr --addmode DVI-0 1368x768_60.00  
xrandr --output DisplayPort-0 --off --output DVI-0 --mode 1368x768_60.00 --pos 0x0 --rotate normal --output HDMI-0 --off

Eu o salvei como lightdmxrandr.sh em /usr/bin e o tornei executável. Então eu adicionei as seguintes linhas para /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf (que é o equivalente do bem conhecido /etc/lightdm/lightdm.conf . Eu estou usando o acima do arquivo como estou em 14.04, onde não há /etc/lightdm/lightdm.conf .): -

greeter-session=unity-greeter  
display-setup-script=/usr/bin/lightdmxrandr.sh  
session-setup-script=/usr/bin/lightdmxrandr.sh

e salvou. Em teoria, isso deve ter alterado a resolução da tela de login e a resolução da tela da área de trabalho para 1366x768 . Mas, surpreendentemente, isso mudou apenas a resolução da tela de login. A resolução da área de trabalho não foi alterada. Mais tarde, adicionei o script a aplicativos Startup e isso mudou minha resolução de desktop.

Por isso, quero saber por que as edições que fiz no arquivo lightdm.conf (ou melhor, no arquivo 50-ubuntu.conf ) não afetaram a resolução da minha área de trabalho. Isso é algum tipo de bug que deve ser relatado no launchpad ou é errado dizer que as edições no lightdm afetarão a tela da área de trabalho?

PS: - Na minha opinião, isso não é apenas específico para o Ubuntu 14.04.

    
por VenkiPhy6 10.04.2014 / 14:49

1 resposta

11

Eu tentei uma coisa parecida e, depois de alguma depuração, acho que descobri o que está acontecendo. Seu script provavelmente é executado e provavelmente define a resolução corretamente. No entanto, como ele é executado pelo gerenciador de login, ele é executado antes que o Unity conclua a configuração do seu ambiente de área de trabalho, e o Unity lê suas próprias configurações e redefine a resolução para o que você tinha. Então, acho que o que acontece é:

  1. lightdm executa corretamente seu script
  2. Isso define a resolução desejada
  3. O Unity é iniciado, lê suas configurações e é revertido para a resolução padrão que você tem lá
  4. Sua resolução volta ao que era antes

Agora, isso acontece porque o driver VESA não detecta a resolução desejada automaticamente. Isso significa que quando você altera a resolução da seção Exibições das configurações da Unity, você está fornecendo uma resolução que não está disponível, a menos que você execute os comandos xrandr . Portanto, isso é ignorado na próxima vez que você reiniciar e o Unity for revertido para a resolução padrão.

Então, o que você precisa fazer é disponibilizar a resolução para o Unity, configurá-la como padrão e deixar que ela seja resolvida. Para fazer isso, você deve primeiro adicionar essa linha a /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf :

session-setup-script=/usr/bin/lightdmxrandr.sh

Em seguida, verifique se /usr/bin/lightdmxrandr.sh está assim:

xrandr --newmode "1368x768_60.00"   85.25  1368 1440 1576 1784  768 771 781 798 -hsync +vsync  
xrandr --addmode DVI-0 1368x768_60.00  

Note que eu não estou realmente configurando a resolução, apenas disponibilizando-a. Depois de ter feito esta reinicialização, faça o login. A nova resolução deve agora estar disponível em Configurações = > Exibe. Em caso afirmativo, escolha-o lá, efetue logout e login novamente e a resolução deve ser definida corretamente. Agora, ele deve persistir durante as reinicializações.

Abordagens alternativas:

  1. Crie um arquivo /etc/X11/xorg.conf que relacione sua resolução desejada. Algo parecido com isto:

    Section "Monitor"
        Identifier    "Monitor0"
        Modeline "1368x768_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync
    EndSection
    
    Section "Screen"
        Identifier     "Screen0"
        Device         "Card0"
        Monitor        "Monitor0"
        SubSection "Display"
            Modes       "1368x768_60.00"
        EndSubSection
    EndSection
    
    Section "Device"
        Identifier    "Card0"
        Driver        "vesa"
    EndSection
    
  2. Adicione o script que executa os comandos xrandr aos aplicativos de inicialização da sua sessão.

por terdon 10.04.2014 / 17:52