xrandr comando para configurar monitores só funciona uma vez logado

0

Eu tenho um comando xrandr que configura meus monitores exatamente como necessário (diferentes escalas para lidar com o suporte HDPI extremamente limitado do Ubuntu atualmente):

xrandr --fb 7040x2160 --output DP1 --mode 1920x1080 --pos 0x0 --scale 2x2 --output eDP1 --mode 3200x1800 --pos 3840x180 --scale 1x1

Se eu executar isso em um terminal após o login, ele funcionará perfeitamente. Ele também funciona através de Startup Applications como pode ser visto nas respostas: 1 , 2 , e 3 (funciona sem o sono). Eu recebo uma configuração assim:

Screen 0: minimum 8 x 8, current 7040 x 2160, maximum 32767 x 32767
eDP1 connected primary 3200x1800+3840+180 (normal left inverted right x axis y axis) 294mm x 165mm
   3200x1800     59.98*+  47.99  
   2880x1620     60.00  
   2560x1440     60.00  
   2048x1536     60.00  
   1920x1440     60.00  
   1856x1392     60.01  
   1792x1344     60.01  
   2048x1152     60.00  
   1920x1200     59.95  
   1920x1080     60.00    59.93  
   1600x1200     60.00  
   1680x1050     59.95    59.88  
   1600x1024     60.17  
   1400x1050     59.98  
   1600x900      60.00  
   1280x1024     60.02  
   1440x900      59.89  
   1280x960      60.00  
   1368x768      60.00  
   1360x768      59.80    59.96  
   1152x864      60.00  
   1280x720      60.00  
   1024x768      60.00  
   1024x576      60.00  
   960x540       60.00  
   800x600       60.32    56.25  
   864x486       60.00  
   640x480       59.94  
   720x405       60.00  
   640x360       60.00  
DP1 connected 3840x2160+0+0 (normal left inverted right x axis y axis) 531mm x 299mm
   1920x1080     60.00*+  50.00    59.94  
   1920x1080i    60.00    50.00    59.94  
   1600x1200     60.00  
   1680x1050     59.88  
   1280x1024     75.02    60.02  
   1440x900      74.98    59.90  
   1280x960      60.00  
   1280x800      59.91  
   1152x864      75.00  
   1280x720      60.00    50.00    59.94  
   1024x768      75.03    70.07    60.00  
   832x624       74.55  
   800x600       72.19    75.00    60.32    56.25  
   720x576       50.00  
   720x480       60.00    59.94  
   640x480       75.00    72.81    66.67    60.00    59.94  
   720x400       70.08  
DP2 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)

Se eu executar exatamente o mesmo comando em qualquer lugar no processo de inicialização, ou recebo uma configuração ilegível na qual o tamanho do framebuffer está incorreto (com telas sobrepostas) ou nenhum efeito. Os locais que experimentei são .xprofile , lightdm configuration (chamado com display-setup-script , greeter-setup-script e session-setup-script ).

Eu registrei a saída detalhada do comando, e todo o tempo ela diz que está configurando os valores corretos, mas a saída em minhas telas e a consulta xrandr depois obviamente diz o contrário. Como posso configurar minhas telas mais acima na cadeia (pelo menos para que a saudação seja exibida corretamente)? Dado que o servidor X é inicializado bem antes disso, existe uma maneira de colocar os comandos de configuração xrandr ?

Editar nota: a questão agora se concentra na raiz do problema "configurar monitores antes de uma vez logado "

    
por B T 05.11.2016 / 04:28

1 resposta

2

Meu palpite é que, durante o processo de login, o Unity tenta configurar a tela sozinho, o que pode ser uma das coisas que quebra. Se a sua tela de login não exigir configuração e for necessária apenas para a sessão Unity, você consideraria adicionar esse comando aos aplicativos de inicialização para que ele seja executado automaticamente após o login. Dessa forma, a unidade aplica suas mudanças, mas depois você as substitui com seu próprio comando.

O que eu também recomendaria é usar uma versão modificada do seu comando:

bash -c 'sleep 3 && xrandr --fb 7040x2160 --output DP1 --mode 1920x1080 --pos 0x0 --scale 2x2 --output eDP1 --mode 3200x1800 --pos 3840x180 --scale 1x1'

Dessa forma, há um atraso suficiente para o Unity aplicar suas alterações e, em seguida, você executa o seu próprio

    
por Sergiy Kolodyazhnyy 05.11.2016 / 06:32