Muito obrigado Hanynowsky! Encontrar sua resposta me poupou muito trabalho (recentemente atualizado 12.04). No entanto, no meu caso, não forneceu a solução completa, por isso gostaria de acrescentar o que aprendi. Minha configuração foi um Samsung S22A300B conectado à porta VGA de um Vaio VGN-CR120E com tela embutida 1280x800 e um controlador gráfico integrado GM965 / GL960 móvel.
Resumidamente, o que encontrei foi:
- A resolução máxima que eu pude definir no monitor externo da Samsung usando a configuração do sistema de monitores foi de 1024x768.
- Isso aparentemente foi causado porque meu controlador VGA não suporta o EDID. Por alguma razão, o Windows Vista e o Windows 7 (em um laptop diferente) podem lidar com essa situação e fornecer uma gama completa de resoluções.
Para contornar essa resolução máxima limitada, fiz o seguinte:
- Linhas adicionadas ao seu script para chamar xrandr com --newmode e --addmode
- Tentei cvt para gerar a modeline --newmode para 1920x1080, mas infelizmente não funcionou para minha configuração.
- Pedi emprestado um laptop com uma porta HDMI, inicializei com o Samsung conectado e peguei a modline para 1920 x 1080 56,2 kHz fora do /var/log/Xorg.0.log
- Conectei essa modline junto com a modificação do script da minha configuração (por exemplo, HDMI1- > VGA1, resolução correta do laptop, etc.)
Este QUASE funcionou, mas após o logon o monitor externo foi reiniciado de uma agradável 1920x1080 para 1024x768. Descobriu-se que essa era uma configuração de usuário persistente e que era facilmente corrigida com o uso dos Displays ... System Setting (do menu de roda dentada) para o agora disponível 1920x1080. Agora, quando eu inicializo com o monitor externo conectado, tudo funciona como esperado.
Uma falha adicional: Se este script for executado duas vezes (por exemplo, do terminal), a linha xrandr --newmode receberá um erro "BadName (cor ou fonte nomeada não existe)", mas link explicou isso e parece benigno. Também não deve ser um problema quando o script estiver ligado ao lightdm.conf de acordo com as instruções de Hanynowsky vs. executar manualmente.
Estou fornecendo as alterações adaptadas para o acima (VGA sem funcionalidade EDID) na esperança de que isso ajude alguém. Como mencionado nas respostas anteriores, você terá que adaptar isso para sua própria configuração. Eu não tenho nenhum bom conselho sobre como obter a modline correta, mas se outra pessoa fizer isso, por favor, participe.
#!/bin/bash
# Modified for Vaio with 1920x1080 external on VGA
XCOM0='xrandr -q | grep 'VGA1 connected''
XCOM1="xrandr --output VGA1 --primary --mode 1920x1080 --output LVDS1 --mode 1280x800 --left-of VGA1"
XCOM2="xrandr --output LVDS1 --mode 1280x800"
NEWMODE="xrandr --newmode "1920x1080" 148.50 1920 2448 2492 2640 1080 1084 1089 1125 +hsync +vsync"
ADDMODE="xrandr --addmode VGA1 1920x1080"
# Always add this mode in case we need it (better would be to test first)
eval $NEWMODE
eval $ADDMODE
if [ -n "$XCOM0" ] || [ ! "$XCOM0" = "" ];
then
# if the external monitor is connected, then we tell XRANDR to set up an extended desktop
eval $XCOM1
else
# if the external monitor is disconnected, then we tell XRANDR to output only to the laptop screen
eval $XCOM2
fi
exit 0;
NOTA: Não tenho certeza se o eval é necessário (vs. eco no original). Eu coloquei isso antes de descobrir que minhas configurações de Display ... estavam redefinindo o monitor externo para uma resolução mais baixa.