xrandr (Português)
O xrandr é um utilitário de configuração oficial para o RandR (Redimensionar e girar) a extensãoX Window System. Pode ser usado para definir o tamanho, orientação ou reflexo das saídas para uma tela. Para configurar vários monitores, consulte a página Multihead.
Instalação
Instale o pacote xorg-xrandr.
Front-ends gráficos
- ARandR — Fornece um front-end visual simples para XRandR. As posições relativas do monitor são mostradas graficamente e podem ser alteradas arrastando e soltando.
- LXRandR — Resolução de tela e ferramenta de gerenciamento de monitores externos para LXDE.
- https://wiki.lxde.org/en/LXRandR || GTK 2: lxrandr, GTK 3: lxrandr-gtk3
Front-ends CLI
- xlayoutdisplay — Detecta e organiza exibições. Alças: estado da tampa do laptop, taxas de atualização mais altas disponíveis, cálculo e aplicação do DPI real. Melhor usado em .xinitrc, então pode ser chamado ao conectar/desconectar monitores ou fechar a tampa do laptop.
Configuração de teste
Quando executado sem qualquer opção, o xrandr mostra os nomes de diferentes saídas disponíveis no sistema (VGA-1
, HDMI-1
, etc.) e as resoluções disponíveis em cada um, com um * após a atual e um + após a preferida:
xrandr
Screen 0: minimum 320 x 200, current 3200 x 1080, maximum 8192 x 8192 VGA-1 disconnected (normal left inverted right x axis y axis) HDMI-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 531mm x 299mm 1920x1080 59.93 + 60.00* 50.00 59.94 1920x1080i 60.00 50.00 59.94 1680x1050 59.88 …
Você pode usar xrandr para definir uma resolução diferente (deve estar presente na lista acima) em alguma saída:
$ xrandr --output HDMI-1 --mode 1920x1080
Quando várias taxas de atualização estão presentes na lista, ela pode ser alterada pela a opção --rate
, ao mesmo tempo ou de forma independente. Por exemplo:
$ xrandr --output HDMI-1 --mode 1920x1080 --rate 60
A opção --auto
irá ligar a saída especificada se estiver desligada e definir a resolução preferida (máxima):
$ xrandr --output HDMI-1 --auto
É possível especificar várias saídas em um comando, por exemplo, desligar HDMI-1
e ligar HDMI-2
com resolução preferida:
$ xrandr --output HDMI-1 --off --output HDMI-2 --auto
- Alterações que você faz usando xrandr durará apenas na sessão atual.
- xrandr tem muito mais recursos - veja xrandr(1) para detalhes.
Configuração
O xrandr é apenas uma interface simples para a extensão RandR e não possui arquivo de configuração. No entanto, existem várias maneiras de obter configuração persistente:
- A extensão RandR pode ser configurada via configuração do X, veja Multihead#RandR para detalhes. Este método fornece apenas configuração estática.
- Se você precisa de configuração dinâmica, você precisa executar o comando xrandr cada vez que o servidor X é iniciado. Veja na inicialização do Xorg para detalhes. Este método tem a desvantagem de ocorrer bastante tarde no processo de inicialização, portanto, não irá alterar a resolução do gerenciador de exibição se você usar um.
- Scripts personalizados chamando o xrandr pode ser vinculado a eventos (por exemplo, quando o monitor externo está conectado), veja udev ou acpid para detalhes. O #Scripts A seção fornece alguns scripts de exemplo que podem ser úteis para essa finalidade.
/etc/gdm/
, enquanto para KDM isso é feito em /usr/share/config/kdm/Xsetup
e para SDDM em /usr/share/sddm/scripts/Xsetup
. Este método requer acesso root e mexer nos arquivos de configuração do sistema, mas terá efeito mais cedo no processo de inicialização do que usar o xprofile.Scripts
Alternar monitor externo
Este script alterna entre um monitor externo (especificado por $extern
) e um monitor padrão (especificado por $intern
), para que apenas um monitor esteja ativo por vez.
O monitor padrão deve estar conectado ao executar o script, o que sempre é verdade para um laptop.
#!/bin/bash intern=LVDS1 extern=VGA1 if xrandr | grep "$extern disconnected"; then xrandr --output "$extern" --off --output "$intern" --auto else xrandr --output "$intern" --off --output "$extern" --auto fi
xrandr --output "$intern" --primary --auto --output "$extern" --right-of "$intern" --auto
.Alternar configurações automaticamente com autorandr
O pacote autorandr permite que você configure facilmente o xrandr "profiles" que será ativado automaticamente quando você conectar / desconectar monitores. O Autorandr é executado automaticamente sempre que um monitor é conectado ou desconectado graças a um hook do udev. Veja a homepage para exemplos de uso.
Gerenciar 2 monitores
O monsAUR é um script de shell compatível com POSIX para gerenciar rapidamente a exibição de 2 monitores.
Ele fornece modos bem conhecidos como computador, duplicar, estender e modo de projetor, bem como selecionar e posicionar um ou dois monitores entre aqueles conectados (para mais detalhes, veja mons).
Exemplo 3
Este script itera por meio de monitores conectados, seleciona o monitor ativo no momento, liga o próximo e desliga os outros:
# obter informações do xrandr connectedOutputs=$(xrandr | grep " connected" | sed -e "s/\([A-Z0-9]\+\) connected.*/\1/") activeOutput=$(xrandr | grep -E " connected (primary )?[1-9]+" | sed -e "s/\([A-Z0-9]\+\) connected.*/\1/") # inicializar variáveis execute="xrandr " default="xrandr " i=1 switch=0 for display in $connectedOutputs do # construir configuração padrão if [ $i -eq 1 ] then default=$default"--output $display --auto " else default=$default"--output $display --off " fi # construir configuração de "switching" if [ $switch -eq 1 ] then execute=$execute"--output $display --auto " switch=0 else execute=$execute"--output $display --off " fi # verifique se a próxima saída deve ser ligada if [ $display = $activeOutput ] then switch=1 fi i=$(( $i + 1 )) done # verifique se a configuração padrão precisa ser executada e execute-a echo "Configuração resultante:" if [ -z "$(echo $execute | grep "auto")" ] then echo "Comando: $default" `$default` else echo "Comando: $execute" `$execute` fi echo -e "\n$(xrandr)"
Evite o travamento do X com xrasengan
Use esta solução alternativa para ligar as saídas conectadas que podem estar no modo suspenso e, portanto, mostradas como desconectadas, como costuma ser o caso de monitores DisplayPort:
declare -i count=2 declare -i seconds=1 while ((count)); do xrandr >/dev/null sleep $seconds ((count--)) done
O xrasenganAUR é um wrapper xrandr com esta solução alternativa embutida.
$ xrasengan --force -on DisplayPort-0 -off HDMI-0
Com a opção --force
, xrasengan irá atualizar o status de todas as saídas antes que HDMI-0 seja desligado, evitando uma falha do X se fossem as únicas saídas conectadas/ativas.
Para forçar o recarregamento das configurações atuais, o xrasengan fornece uma opção --try-reload-active-layout
, que usa --force
e unxrandr do pacote arandr para montar a linha de comando:
$ xrasengan --try-reload-active-layout
Isso pode ser usado na unidade do systemd ou em um teclado para evitar tela em branco ao retomar os monitores DisplayPort da suspensão.
Configuração usando arandr
arandr can graphically arrange your monitors, change resolutions, and save a script to duplicate your setup. By default, if you "Save As" it will be saved in ~/.screenlayout/
. These files can then be added to your ~/.profile
. Sometimes problems arise from running the arandr script too soon after login.
Edit ~/.profile
$ sleep 3 $ /home/<user>/.screenlayout/myLayout.sh
Solução de problemas
Adicionando resoluções não detectadas
Devido a erros de hardware ou drivers, as resoluções corretas do seu monitor nem sempre podem ser detectadas pelo xrandr. Por exemplo, o bloco de dados EDID consultado no monitor pode estar incorreto. No entanto, podemos adicionar as resoluções desejadas ao xrandr. Além disso, este mesmo procedimento pode ser usado para adicionar taxas de atualização que você sabe que são suportadas, mas não habilitadas pelo seu driver.
Primeiro execute gtf
ou cvt
para obter o Modeline para a resolução que queremos:
$ cvt 1280 1024
# 1280x1024 59.89 Hz (CVT 1.31M4) hsync: 63.67 kHz; pclk: 109.00 MHz Modeline "1280x1024_60.00" 109.00 1280 1368 1496 1712 1024 1027 1034 1063 -hsync +vsync
cvt -r
(= com ponto cego reduzido) deve ser usado.cvt 2560 1440 45
/var/log/Xorg.0.log
— use isso primeiro se for diferente da saída de gtf
ou cvt
. Por exemplo, o log e seu uso com o xrandr:
[ 45.063] (II) intel(0): clock: 241.5 MHz Image Size: 597 x 336 mm [ 45.063] (II) intel(0): h_active: 2560 h_sync: 2600 h_sync_end 2632 h_blank_end 2720 h_border: 0 [ 45.063] (II) intel(0): v_active: 1440 v_sync: 1443 v_sync_end 1448 v_blanking: 1481 v_border: 0
xrandr --newmode "2560x1440" 241.50 2560 2600 2632 2720 1440 1443 1448 1481 -hsync +vsync
Você também pode encontrar linhas semelhantes para o driver de configuração de modo.
Em seguida, criamos um novo modo xrandr. Observe que a palavra-chave Modeline precisa ser omitida.
$ xrandr --newmode "1280x1024_60.00" 109.00 1280 1368 1496 1712 1024 1027 1034 1063 -hsync +vsync
*/
Depois de criá-lo, precisamos de uma etapa extra para adicionar este novo modo à nossa saída atual (VGA1). Usamos apenas o nome do modo, uma vez que os parâmetros foram configurados anteriormente.
$ xrandr --addmode VGA1 1280x1024_60.00
Agora mudamos a resolução da tela para a que acabamos de adicionar:
$ xrandr --output VGA1 --mode 1280x1024_60.00
Observe que essas configurações só têm efeito durante esta sessão.
Se você não tiver certeza sobre a resolução que irá testar, você pode adicionar um sleep 5
e uma linha de comando de resolução segura a seguir, como esta:
$ xrandr --output VGA1 --mode 1280x1024_60.00 && sleep 5 && xrandr --newmode "1024x768-safe" 65.00 1024 1048 1184 1344 768 771 777 806 -HSync -VSync && xrandr --addmode VGA1 1024x768-safe && xrandr --output VGA1 --mode 1024x768-safe
Além disso, mude VGA1
para corrigir o nome da saída.
A soma de verificação EDID é inválida
Se o método anterior resultar em um *ERROR* EDID checksum is invalid
erro durante a inicialização, veja KMS#Forcing modes and EDID e [2].
Ou xrandr --addmode
pode dar-lhe o erro X Error of failed request: BadMatch
. Os usuários da NVIDIA devem ler NVIDIA/Troubleshooting#xrandr BadMatch. BadMatch
pode indicar uma soma de verificação EDID inválida. Para verificar se este é o caso, execute o X no modo detalhado (por exemplo startx -- -logverbose 6
) e verifique seu log do Xorg para mensagens sobre um EDID incorreto.
A resolução da tela volta após um piscar
Se você usa GNOME e seu monitor não tem um EDID, acima #Adicionando resoluções não detectadas pode não funcionar, com a tela piscando apenas uma vez, após xrandr --output
.
Edite o arquivo ~/.config/monitors.xml
, ou exclua-o completamente e reinicie.
It is better explained in this article.
Adicionando resoluções não detectadas permanentemente
Assim que uma resolução adequada for encontrada usando o xrandr
, o modo pode ser adicionado permanentemente criando uma entrada em /etc/X11/xorg.conf.d/
:
/etc/X11/xorg.conf.d/10-monitor.conf
Section "Monitor" Identifier "VGA1" Modeline "1280x1024_60.00" 109.00 1280 1368 1496 1712 1024 1027 1034 1063 -hsync +vsync Option "PreferredMode" "1280x1024_60.00" EndSection Section "Screen" Identifier "Screen0" Monitor "VGA1" DefaultDepth 24 SubSection "Display" Modes "1280x1024_60.00" EndSubSection EndSection Section "Device" Identifier "Device0" Driver "intel" EndSection
Substituir intel
com o driver certo, por exemplo: nvidia
. Quando o servidor X for reiniciado, você poderá definir a nova resolução.
Se isso não funcionar para você, tente remover as seções Tela e Dispositivo e apenas sair da seção monitor. [3]
Resolução menor do que o esperado
{{Dica|Tente [[#Adicionando resoluções não detectadas] primeiro, se não funcionar, você pode tentar este método.}}
Se sua placa de vídeo for reconhecida, mas a resolução for menor do que o esperado, você pode tentar fazer isso.
Histórico: Placa de vídeo ATI X1550 e dois monitores LCD DELL 2408 (até 1920x1200) e Samsung 206BW (até 1680x1050). No primeiro login após a instalação, o padrão de resolução é 1152x864. xrandr não lista nenhuma resolução superior a 1152x864. Você pode querer tentar editar /etc/X11/xorg.conf, adicionar uma seção sobre tela virtual, logout, login e ver se isso ajuda. Se não, então continue a ler.
Alterar xorg.conf
/etc/X11/xorg.conf
Section "Screen" ... SubSection "Display" Virtual 3600 1200 EndSubSection EndSection
Sobre os números: DELL à esquerda e Samsung à direita. Portanto, a largura virtual é a soma de ambas as larguras do LCD 3600 = 1920 + 1680; A altura então é calculada como o máximo deles, que é máximo (1200,1050) = 1200. Se você colocar um LCD acima do outro, use este cálculo: (max (largura1, largura2), altura1 + altura2).
Correção de resoluções de tv overscan através da propriedade underscan
Com uma TV de tela plana, w:overscan parece que a foto é "ampliada" então as bordas são cortadas.
Verifique na sua TV se há um parâmetro a ser alterado. Caso contrário, verifique se a saída tem suporte para a propriedade underscan (xrandr --prop), em caso afirmativo, aplique um underscan
e alterar os valores das bordas. O necessário underscan vborder
e underscan hborder
os valores podem ser diferentes para você, basta verificar e alterar para mais ou menos.
$ xrandr --output HDMI-0 --set underscan on --set "underscan vborder" 25 --set "underscan hborder" 40
Correção de resoluções de tv overscan via --transform
Se o underscan não estiver disponível, outra solução está usando xrandr --transform a,b,c,d,e,f,g,h,i
, que aplica uma matriz de transformação na saída. Veja a página de manual xrandr(1) § RandR_version_1.3_options para a explicação da transformação.
Por exemplo, a transformação escalando coordenadas horizontais por 0.8
, coordenadas verticais por 1.04
e mover a tela 35 pixels para a direita e 19 pixels para baixo é:
$ xrandr --output HDMI1 --transform 0.80,0,-35,0,1.04,-19,0,0,1
RGB total em HDMI
Pode ocorrer que o driver Intel não configurará corretamente a saída do monitor HDMI. Ele definirá uma faixa de cores limitada (16-235) usando o Broadcast RGB property, e o preto não parecerá preto, será cinza.
Veja Intel graphics#Weathered colors (color range problems).
Desativando monitor fantasma
Em alguns casos, um monitor inexistente pode ser detectado pelo sistema. Para desativá-lo, encontre o nome da saída fantasma, por exemplo: VGA1, e desligue-o com
$ xrandr --output VGA1 --off
Para tornar isso permanente, adicione o seguinte a uma entrada em /etc/X11/xorg.conf.d/
:
/etc/X11/xorg.conf.d/10-monitor.conf
Section "Monitor" Identifier "VGA1" Option "Ignore" "true" EndSection