Diminuir resolução do monitor mantendo o tamanho especificado sem escalonamento (com bordas pretas)

Salve! :v:

Eu estava utilizando recentemente o Windows e uma das coisas que eu gostava era ir no painel da Intel Graphics e poder mudar a resolução do monitor de 1440x900 para 1366x768, porém não era para escalonar esses 1366x768 mas sim deixar com bordas pretas ao redor da tela mantendo a resolução.

Desenho ilustrativo

A imagem 1 é o padrão, e a 2 é como eu gostaria de deixar.

Queria saber se tem como fazer o mesmo no Mint XFCE.

1 curtida

:wave:t2:

Tenta criar um arquivo .xrand no home depois passa estes comandos no arquivo:

xrandr --output DVI-0 --set "underscan hborder" 128 --set "underscan vborder" 128

Talvez tenha de substituir o DVI-0 pelo monitor especifico.

Então salva e depois faça ele ficar executável com o comando:

chmod +x $HOME/.xrand

Então com os comandos abaixo podemos ativar e desativar esta função:

xrandr --output DVI-0 --set underscan on
xrandr --output DVI-0 --set underscan off

:vulcan_salute:t2:

1 curtida

Se você está usando HDMI, overscan/underscan pode não funcionar, nesse caso você pode tentar:

xrandr --output nomeDoSeuMonitor --mode 1440x900 --panning 1366x768 --set Border 66,37,66,37

Você pode verificar os nomes dos seus monitores e propriedades disponíveis com:

xrandr --prop
1 curtida

Tentei ambos os comandos, as saídas:

ramon@ramon-mint:~$ xrandr --output HDMI1 --set underscan on
X Error of failed request:  BadName (named color or font does not exist)
  Major opcode of failed request:  140 (RANDR)
  Minor opcode of failed request:  11 (RRQueryOutputProperty)
  Serial number of failed request:  35
  Current serial number in output stream:  35
ramon@ramon-mint:~$ xrandr --output HDMI1 --set underscan off
X Error of failed request:  BadName (named color or font does not exist)
  Major opcode of failed request:  140 (RANDR)
  Minor opcode of failed request:  11 (RRQueryOutputProperty)
  Serial number of failed request:  35
  Current serial number in output stream:  35
ramon@ramon-mint:~$ xrandr --output HDMI1 --mode 1440x900 --panning 1366x768 --set Border 66,37,66,37
X Error of failed request:  BadName (named color or font does not exist)
  Major opcode of failed request:  140 (RANDR)
  Minor opcode of failed request:  11 (RRQueryOutputProperty)
  Serial number of failed request:  35
  Current serial number in output stream:  35

Teria como você colocar a saida de xrandr para vermos o seu setup? A outra alternativa que eu imagino seria via matriz de transformação.

eDP1 é a tela do notebook que deixo desativada, e o HDM1 é o monitor que utilizo como primário.

ramon@ramon-mint:~$ xrandr
Screen 0: minimum 8 x 8, current 1440 x 900, maximum 32767 x 32767
eDP1 connected (normal left inverted right x axis y axis)
   1366x768      59.97 +  39.97  
   1360x768      59.96  
   1280x720      59.86    60.00    59.74  
   1024x768      60.00  
   1024x576      60.00    59.90    59.82  
   960x540       60.00    59.63    59.82  
   800x600       60.32    56.25  
   864x486       60.00    59.92    59.57  
   640x480       59.94  
   720x405       59.51    60.00    58.99  
   680x384       60.00  
   640x360       59.84    59.32    60.00  
HDMI1 connected primary 1440x900+0+0 (normal left inverted right x axis y axis) 370mm x 230mm
   1440x900      59.89 +  74.98* 
   1920x1080     60.00    59.94  
   1280x1024     75.02    60.02  
   1280x960      60.00  
   1152x864      75.00  
   1280x720      60.00    59.94  
   1024x768      75.03    70.07    60.00  
   832x624       74.55  
   800x600       72.19    75.00    60.32    56.25  
   720x480       60.00    59.94  
   640x480       75.00    72.81    66.67    60.00    59.94  
   720x400       70.08  
VIRTUAL1 disconnected (normal left inverted right x axis y axis)

só uma dúvida, qual é o seu real objetivo? Você está tentando corrigir algo? Ficar com o mesmo tamanho de elementos em ambos os monitores? Digo isso porque é possível manter ambos os monitores na resolução máxima, não perder espaço real e ainda assim não ter mudança de tamanho de elementos entre os monitores.

Tem outras questões envolvidas, mais desempenho é uma delas. Uns FPSzinhos há mais em jogo de FPS (mesmo com tela menor) eu vejo vantagem.

Entendo, dei uma olhada e outras soluções fazem provavelmente o que você não quer, aumentar a resolução e escalonar para caber na resolução nativa, tem como colocar também a saída do comando xrandr --prop?

Tente com HDMI-1, em vez de HDMI1 .

Infelizmente não deu certo @romulopb @swatquest , eu acabei voltando para o Windows (por outros motivos até) mas quando instalar alguma distro linux novamente irei pesquisar mais e voltarei a tentar resolver isso.

Eu posso te recomendar esse Snap chamado Custom Screen Resolution.

Usei ele e funciona muito bem, ele gera os comandos necessários para essa tarefa que você deseja. Use essas opções dele para isso:
ksnip_20211115-202551

Eu, por exemplo, não tenho nas opções de monitor a resolução 1280x720.
Então, eu defino a largura 1280 e altura 720, o tamanho da minha tela é 32’’ e portanto é esse que coloco, e por fim o Zoom Level eu deixo 1, por fim clique em Generate Xrandr.

Na tela seguinte você deve definir o “nome” da sua tela no campo Video port name.
ksnip_20211115-204423

Para saber o nome da sua tela basta rodar esse comando:

xrandr --listmonitors

O meu por exemplo é VGA-0.

Após isso clique em Apply Settings.

Nisso ele irá te gerar 3 comandos que você deve executar no terminal e assim irá mudar a resolução:
ksnip_20211115-202806

:warning:
Caso você execute o 3º e último comando e sua tela fique preta, quer dizer não é suportada, comigo por exemplo isso aconteceu ao tentar usar uma resolução acima da permitida que era *1920x1080.
Mas, fique tranquilo pois é temporário, ao reiniciar o computador irá voltar a resolução anterior da mudança, e você disse que já a sua no Windows então não dever dar errado.

Por fim, só mais uma dica, se você for usar essa resolução frequentemente e não ter que ficar executando esses comandos todas vez, crie um script! É bem prático.

Esse é o meu, aqui está um link do texto:

Se não souber como fazer, pode se guiar pelo meu. Basicamente é um arquivo de texto com a extensão .sh, depois vá nas propriedades do arquivo e dê permissão de execução como programa. Rode-o sempre que precisar.

1 curtida

Mesmo assim não sei se enquadraria na demanda dele, ele quer um efeito conhecido como underscan que é uma coisa da época dos CRTs.

Infelizmente nem tem ligação com o tipo de saída de vídeo como eu achava, mas sim com a GPU. Cada GPU implementa essa funcionalidade de forma diferente, a indicação do @RuKsu funciona com algumas Intel, a minha indicação é exclusiva para NVIDIA, não faço ideia de qual funciona com AMDs mas também pelo que vi algumas nem implementam essa funcionalidade.

1 curtida

Hmm… então, ele pode manter essa borda preta usando as opções do próprio monitor/TV externo que ele está usando.

Meu exemplo: eu uso uma TV LG de 32" como monitor, dentre as opções dela existe o Formato da tela, que é como ela escalona a imagem, eu deixo em 16:9 mas há a opção Original que seria essa de manter as bordas, isso fica evidente se eu troco para uma resolução de proporção 4:3.
Ou seja, não é da mesma maneira que ele faz no Windows mas é outra forma de executar a mesma tarefa. Creio que esse monitor dele deva ter alguma opção parecida.

Mas ai que está outro problema, ele não quer nenhum escalonamento (bordas em ambos os eixos). Esse ajuste do monitor ainda escalona, só não distorce.

Pra quem quiser fazer isso, é possível com os comandos:

xrandr --output HDMI-1 --fb 800x600 --panning 800x600 --mode 800x600 && xrandr --fb 800x600 --output HDMI-1 --mode 1366x768 --transform 1,0,-283,0,1,-84,0,0,1

output sendo a saída desejada
fb/panning sendo a resolução menor desejada
mode sendo a resolução nativa
o valor 283 deve ser substituído por a metade da diferença entre a resolução horizontal nativa e desejada, por exemplo (1366-800)/2
o valor 84 deve ser substituído por a metade da diferença entre a resolução vertical nativa e desejada, por exemplo (768-600)/2

Dá pra fazer um script pra facilitar isso e aplicar após cada boot.