Ao espelhar dois monitores o sistema somente aceita 4:3

Olá a todos.

Sou novo no site e no linux, mas tentarei ser claro.

Possuo um monitor cuja resolução máxima é 1366x768, e uma televisão cuja resolução máxima é 1920x1080.
Apesar de ambos suportarem uma resolução 16:9, ao espelhar os dois monitores, só consigo usar 1024:768 (4:3) ou 800x600 (4:3).

Eu tentei instalar o Zorin e o Bazzite, e obtive o mesmo problema em ambos.
Tentei também o ubuntu, mas esse desalinhou o monitor além do que o ajuste poderia resolver.
No momento estou utilizando o Bazzite.

Desde já agradeço a quem puder me ajudar.

Boa noite @JoshBass ! Vou tentar te ajudar com esse problema.

O problema provavelmente ocorre devido ao EDID (Extended Display Identification Data). O monitor e a TV enviam uma lista de resoluções suportadas para a placa de vídeo.

  • O seu monitor diz: “Eu funciono em 1366x768”.
  • A sua TV diz: “Eu funciono em 1920x1080 ou 1280x720 (HD)”.

Ao espelhar, o Linux procura uma resolução que conste nas duas listas ao mesmo tempo. Como 1366x768 não é uma resolução padrão de TVs, e 1080p não é suportado pelo monitor, o sistema escolhe o 1024x768 4:3 por ser o padrão universal (VGA) que ambos aceitam, mesmo que distorça a imagem.

Para resolver o problema você pode, ao invés de usar o modo espelhar, use o modo estender.

Se você realmente precisa espelhar o monitor, você vai ter que forçar os aparelhos a rodarem em uma resolução 16:9 que as duas telas suportem. Acredito que a resolução melhor pra essa configuração seja 1280x720 (720p)

Tente pelas configurações do monitor da sua distribuição, se não existir a resolução 1280x720 (720p) crie usando o xrandr no terminal (se estiver usando x11, pra Wayland eu não sei kkkk):

  1. Isso vai mostrar o nome das suas saídas, ex: nome-monitor e nome-tv (substitua nos comandos com os nomes das saídas dos seus aparelhos):
xrandr
  1. Crie o modo 720p:
xrandr --addmode nome-monitor 1280x720 && xrandr --addmode nome-tv 1280x720
  1. Força o espelhamento:
xrandr --output nome-monitor --mode 1280x720 --output nome-tv --mode 1280x720 --same-as nome-monitor

Olá @mozertdev .

Obrigado. Eu creio ter entendido o problema agora. E realmente, 720p me serviria muito bem.

Eu digitei a primeira linha de comando, e tudo pareceu correr bem.

Mas ao digitar a segunda linha de comando, o terminal me retornou esse erro:

X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 140 (RANDR)
Minor opcode of failed request: 7 (RRSetScreenSize)
Serial number of failed request: 28
Current serial number in output stream: 29

Eu digitei a segunda linha conforme segue abaixo.

xrandr --output DP-2 --mode 1280x720 --output HDMI-1 --mode 1280x720 --same-as DP-2

* Eu também tentei inverter o nome da TV e do monitor nessa linha de comando. Mas o mesmo erro apareceu.

OBS: Ao ler a sua mensagem, me surgiu uma dúvida. Você mencionou que o sistema escolhe uma resolução comum entre ambas mesmo que isso distorça a imagem (e acertou, realmente está distorcendo). Mas quando eu ainda utilizava o windows ele mantinha as duas telas em 16:9.

Você acredita que o sistema estava usando recursos de processamento a mais para forçar a mesma resolução em ambas?

Opa, @JoshBass , tudo tranquilo?

Então, vou te trazer em exemplo, mas só funciona usando no x11, não funciona no Wayland (O Linux Mint tá rodando x11 preferencialmente, por enquanto, pode ser uma opção de sistema pra você se não conseguir resolver o problema em outros):

Ao usar o comando xrandr você deve obter um resultado parecido com isso aqui:

Screen 0: minimum 320 x 200, current 5120 x 1440, maximum 16384 x 16384
DisplayPort-0 connected 2560x1440+2560+0 (normal left inverted right x axis y axis) 597mm x 336mm
   2560x1440     59.95*+ 155.00   120.05    96.02    72.01    60.01    50.00    48.01   143.91   120.00  
   1920x1200     59.95  
   1920x1080    120.00   119.88    60.00    60.00    50.00    59.94  
   1600x1200     59.95  
   1280x1440     59.91  
   1680x1050     59.95  
   1280x1024     75.02    60.02  
   1440x900      59.95  
   1280x800      59.95  
DisplayPort-1 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis) 597mm x 336mm
   2560x1440     59.95*+ 155.00   120.05    96.02    72.01    60.01    50.00    48.01   143.91   120.00  
   1920x1200     59.95  
   1920x1080    120.00   119.88    60.00    60.00    50.00    59.94  
   1600x1200     59.95  
   1280x1440     59.91  
   1680x1050     59.95  
   1280x1024     75.02    60.02  
   1440x900      59.95  
   1280x800      59.95  

Como você pode ver não existe o modo 1280x720 nativamente, vamos criar esse modo:
Primeiro digite:

cvt 1280 720 60

Isso vai retornar uma linha começando com Modeline. Copie tudo após o termo “Modeline” e copie após xrandr --newmode.

# 1280x720 59.86 Hz (CVT 0.92M9) hsync: 44.77 kHz; pclk: 74.50 MHz
Modeline "1280x720_60.00"   74.50  1280 1344 1472 1664  720 723 728 748 -hsync +vsync

O comando para criar o novo modo 720p, nesse caso, fica assim:

xrandr --newmode "1280x720_60.00"   74.50  1280 1344 1472 1664  720 723 728 748 -hsync +vsync

Agora vamos adicionar o modo criado as duas saídas:

xrandr --addmode DisplayPort-0 1280x720 && xrandr --addmode DisplayPort-1 1280x720

E por ultimo espelhar:

xrandr --output DisplayPort-0 --mode 1280x720 --output DisplayPort-1 --mode 1280x720 --same-as DisplayPort-0

Ai você tem que adequar o comando a sua realidade, substituindo os valores nos comandos.

Pode ser que o sistema que você esteja usando não esteja usando x11, nesse caso os comandos podem não dar certo.

Se você tiver feito com sucesso o que te expliquei acima e não quer ter que fazer isso toda vez que inicia o sistema, você vai precisar de um script.

Vou te mostrar um exemplo de script pra você não ter que fazer tudo isso toda hora que iniciar o sistema substitua os comandos com as informações da suas telas do jeito que te mostrei:

#!/usr/bin/env bash

# Cria o modo 720p
xrandr --newmode [tudo que está depois de modeline no resultado do comando cvt 1280 720 60]

# Adiciona às saídas
xrandr --addmode [nome-da-saida-do-monitor] 1280x720_60.00
xrandr --addmode [nome-da-saida-da-tv] 1280x720_60.00

# Aplica o espelhamento
xrandr --output [nome-da-saida-do-monitor] --mode 1280x720_60.00 --output [nome-da-saida-da-tv] --mode 1280x720_60.00 --same-as [nome-da-saida-do-monitor]

Faça as modificações no script, salve o script, dê permissão de execução chmod +x nome_do_seu_script.she adicione o script nos aplicativos de inicialização

Respondendo a sua pergunta:

O Windows provavelmente gerência de outra forma. Ele é muito agressivo ao usar o escalonador interno da placa de vídeo. Ele frequentemente renderiza a imagem em uma resolução (ex: 1280x720) e faz o “esticamento” ou “encolhimento” digital (Upscaling/Downscaling) para que o sinal caiba no monitor, mesmo que o monitor reclame que aquela não é sua resolução nativa.

No linux usando o x11 isso é diferente. O sistema é honesto com você e não joga a responsabilidade diretamente pra placa de video pra ser feito upscaling ele espera que você diga pra ele que quer essa opção (é isso o que você ta fazendo nesses comandos) “Eu sei que este monitor não diz que suporta 720p, mas crie essa opção para mim mesmo assim”.

O GPT trouxe isso aqui pro Wayland, pode ser que te ajude:

1. O modo “Interface Gráfica” (KDE Plasma)

Diferente do X11, o Wayland permite que você force escalas diferentes para cada monitor de forma nativa e muito mais fluida.

  1. Vá em Configurações do Sistema > Tela e Monitor.
  2. Desative o “Espelhamento” momentaneamente.
  3. Configure ambos para 1280x720.
  4. Ative o “Espelhamento” novamente.
  5. O KDE perguntará qual monitor deve ser a “referência”. Escolha o que tiver a melhor imagem.

2. Forçando via Kernel (O método definitivo)

Se a resolução 720p nem sequer aparecer na lista (mesmo no Wayland), não existe um “xrandr” para forçar em tempo de execução. A solução moderna é passar o parâmetro diretamente para o Kernel durante o boot. Isso funciona tanto para a tela de login quanto para o sistema inteiro.

Você precisará editar o arquivo do GRUB:

  1. No terminal: sudo nano /etc/default/grub
  2. Procure a linha que começa com GRUB_CMDLINE_LINUX_DEFAULT.
  3. Adicione o parâmetro de vídeo no final (dentro das aspas). Por exemplo: video=DP-2:1280x720@60 video=HDMI-1:1280x720@60
  4. Salve (Ctrl+O, Enter, Ctrl+X) e atualize o grub:
  • No Bazzite/Fedora: sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Eu agradeço.

Usar o xandr não funcionou. Mas você mencionou o Fedora.

Eu estou usando ele agora, e não só é muito melhor que as outras distribuições que eu testei. Ele tem um recurso de copiar a tela. Pelo que eu entendi, é diferente de espelhar (poderia colocar no monitor do computador o que estivesse sendo mostrado no televisor).

Eu configurei para que na televisão aparecesse o mesmo que o monitor. O único problema foram duas faixas pretas diminutas que estão nas laterais do meu monitor. Mas, honestamente isso não me incomoda.

Creio que apesar de ser uma solução inesperada, posso dizer que meu problema foi resolvido. E você tem minha gratidão por me fornecer sua paciência e boa vontade.

1 curtida

Bacana. O Fedora é uma das grandes distribuições do Linux. Você vai encontrar muita documentação sobre ela e muita gente com conhecimento pra te ajudar caso tenha algum problema.

A experiência de uso com o Linux melhora a cada vez que você adquire mais conhecimento e você só consegue isso tendo problemas como esse. Já descobriu um pouco mais sobre como as telas são gerenciadas, como xrandr funciona e para o que serve, diferença entre x11 e Wayland, testou várias distribuições e assim você vai aprendendo.

Boa sorte na sua jornada junto com o Linux, tenho certeza que você vai gostar! Sempre que tiver uma dúvida apareça no fórum e pergunte que todo mundo é muito solicito! Valeu, falou!