Não 16.04 específico
O problema que você está enfrentando não é exclusivo do 16.04, acontece em muitas versões do Ubuntu.
Como resolver
Lendo sua saída de xrandr
, e supondo que eu não tenha cometido nenhum erro de digitação, o seguinte comando deve organizar suas telas da maneira que você configurou:
xrandr --output DP2-2 --auto --pos 0x0 --output DP2-1 --auto --pos 2560x0 --output eDP1 --auto --pos 4240x0
A solução mais rápida e fácil é adicioná-lo a uma tecla de atalho: Configurações > Teclado > Atalhos de aplicativos. Em seguida, pressione o atalho depois que as telas estiverem conectadas.
Explicação
A partir da saída de xrandr
, podemos ver as informações nas três telas conectadas:
eDP1 connected 2560x1440+4240+0
DP2-1 connected 1680x1050+2560+0
DP2-2 connected primary 2560x1440+0+0
Nas últimas seções: 2560x1440+4240+0
, na parte: +4240+0
, podemos ver a posição da tela em toda a imagem das telas combinadas (x, y). Da esquerda para a direita, as telas estão obviamente organizadas como:
DP2-2 +0+0 | DP2-1 +2560+0 | eDP1 +4240+0
Seestearranjonãoélembradoautomaticamente,podemosconfigurá-locomocomandoqueeuadicioneinoiníciodestaresposta.
Aopção--auto
Ifoiadicionada,jáquevocêmencionouterqueativarastelas.
EDITAR
Conformesolicitado,umpequenoscriptbashparaserexecutadoemsegundoplanoparafazeraconfiguração,seastelasestiveremconectadas:
#!/bin/bash
let "target = 3"
swon=false
function nscreens {
curr=$(xrandr | grep " connected" | wc -l)
}
function setup_scr {
xrandr --output DP2-1 --auto --pos 0x0 \
--output DP2-2 --auto --pos 2560x0 \
--output eDP1 --auto --pos 4240x0
}
while true
do
sleep 4
nscreens
if [ "$curr" -eq "$target" ] && [ "$swon" == false ]
then
setup_scr
swon=true
elif [ "$curr" -ne "$target" ] && [ "$swon" == true ]
then
swon=false
fi
done
- Copie o script em um arquivo vazio, salve-o como
setup_scr.sh
, torne-o executável -
Teste - execute-o em um terminal com o comando:
/path/to/setup_scr.sh
conecte / desconecte as telas
-
se funcionar bem, adicione-o aos aplicativos de inicialização: Dash > Aplicativos de inicialização > Adicionar. Adicione o comando:
/bin/bash -c "sleep 15 && /path/to/setup_scr.sh"
Explicação
-
Uma vez por 4 segundos, o script conta o número de telas conectadas. Se for igual a 3, ele executa a configuração uma única vez, lembrando que ele configurou as telas trocando o valor de "swon" (ligado) para
true
.Em seguida, se o número de telas não for mais igual a 3, "swon" será definido como
false
novamente e assim por diante.
Nota
Eu testei o script na minha configuração de duas telas, e funcionou bem, no entanto, há sempre a possibilidade de eu ter feito um erro de digitação em algum lugar, e obviamente não pude testá-lo no seu sistema. Em caso de erro, por favor mencione.