O problema também persiste quando é conectado a computadores diferentes, e também a uma máquina com Windows 7. É um defeito de hardware, eu comprei um novo display há algum tempo.
Eu tenho um laptop com um monitor DVI externo que é conectado à sua porta de exibição (via adaptador). Quando eu girar a tela interna usando xrandr
, ela esquece a exibição secundária. Chamar xrandr
várias vezes não tem nenhum efeito. Eu tenho que desligar o monitor externo, esperar um pouco, chamar xrandr
novamente e encontrar o display.
Eu uso o Kubuntu 13.10 com Awesome WM em vez do KWin Windows Manager normal. Portanto, já existem dois sistemas que fazem coisas com displays.
O laptop é um ThinkPad X220 Tablet, que possui uma Display Port no próprio dispositivo e outro na estação de encaixe UltraBase, que eu uso atualmente. O monitor é um Samsung SyncMaster 2443BW com um adaptador DVI para Display Port.
Então, eu uso meu próprio think-rotate para girar o interno ( LVDS1
) tela quando eu girar a exibição física (via gancho ACPI). Esse script usa xrandr
para girar a tela.
Quando eu chamo think-rotate
, ele irá apresentar a seguinte saída xrandr
:
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 32767 x 32767
LVDS1 connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 277mm x 156mm
1366x768 60.0*+
1360x768 59.8 60.0
1024x768 60.0
800x600 60.3 56.2
640x480 59.9
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
HDMI3 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
DP3 disconnected (normal left inverted right x axis y axis)
Você vê que o HDMI2
está completamente ausente. Depois de deixar toda a energia drenar do monitor externo, chamar xrandr
novamente me deu a tela de volta e a seguinte saída:
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 32767 x 32767
LVDS1 connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 277mm x 156mm
1366x768 60.0*+
1360x768 59.8 60.0
1024x768 60.0
800x600 60.3 56.2
640x480 59.9
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
HDMI2 connected (normal left inverted right x axis y axis)
1920x1200 60.0 +
1600x1200 60.0
1280x1024 60.0
1280x960 60.0
1024x768 60.0
800x600 60.3 56.2
640x480 60.0
HDMI3 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
DP3 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
Eu olhei para o /var/log/syslog
e encontrei o seguinte na saída de depuração do script think-rotate
:
Jan 6 20:20:26 Martin-X220 colord: device removed: xrandr-Samsung Electric Company-SyncMaster-H9XS113172
Jan 6 20:20:26 Martin-X220 colord: Device added: xrandr-Samsung Electric Company-SyncMaster-H9XS113172
Como posso fazer a triagem deste problema? Eu tenho outros visores DVI e VGA, eu tenho outra Display Port no próprio ThinkPad.
Eu assumo que o problema é a interação entre algo no KDE, Awesome WM (que recarrega sua configuração em cada mudança de exibição) e minhas xrandr
chamadas.
Acabei de iniciar o KDE sem o Awesome WM. Ele não apenas esqueceu a exibição externa quando eu girava, mas também causou falhas graves na composição. Eu achei que think-rotate
é chamado duas vezes pelo gancho ACPI, então estou atualmente implementando uma proteção contra isso. Executá-lo duas vezes simultaneamente pode ser a causa das falhas. O esquecimento da exibição é causado quando eu chamo think-rotate
manualmente, então isso não é causado pela execução duas vezes.
Agora estou apenas com o Awesome WM, nenhum KDE foi iniciado. Não há problema. Eu vi aqui que é chamado duas vezes e trabalho naquele guarda. É chamado duas vezes, mas executa apenas um agora. Aparentemente, a questão não persiste aqui. Embora eu não goste de admitir, mas com as informações que tenho atualmente, o KDE parece causar o problema.
Bem, parece que a rotação funciona sem problemas com o Awesome WM simples. Quando eu o coloco na estação de acoplamento, ele não vê a tela externa imediatamente. Tenho que desligá-lo e ligar manualmente para xrandr
para que ele funcione.
Eu tentei outro monitor DVI e não tive problemas com ele. Quando volto para o meu Samsung SyncMaster, recebo o problema novamente. Awesome WM sozinho causou problemas, o KDE com o Awesome WM também causa problemas. Ainda está quebrado!
O problema persiste. Eu usei um cabo VGA para testá-lo, e isso não parece ter o problema. Minha solução atual é desativar o visor, chamar xrandr
e, em seguida, ligá-lo novamente. Talvez o Ubuntu 14.04 conserte o problema.