Como definir a resolução personalizada usando xrandr quando a resolução não está disponível em 'Configurações de vídeo'

39

Sou um novo usuário do Linux tentando alterar a resolução da tela, pois não há opção em exibição. Consegui adicionar novas resoluções pela fluke com sucesso, seguindo o guia on-line. Não tenho uma GPU, não sei se é esse o problema? Abaixo está a minha xrandr -qsaída.

root@kali:~# xrandr -q
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 1280 x 1024, current 1280 x 1024, maximum 1280 x 1024
default connected 1280x1024+0+0 0mm x 0mm
   1280x1024       0.0* 
  1920x1200_60.00 (0x145)  193.2MHz
        h: width  1920 start 2056 end 2256 total 2592 skew    0 clock   74.6KHz
        v: height 1200 start 1203 end 1209 total 1245           clock   59.9Hz
  1440x900_59.90 (0x156)  106.3MHz
        h: width  1440 start 1520 end 1672 total 1904 skew    0 clock   55.8KHz
        v: height  900 start  901 end  904 total  932           clock   59.9Hz
usuario
fonte
xrandr -q não está listado em seu manual.
neverMind9

Respostas:

48

Aqui estão as etapas necessárias para adicionar e aplicar uma nova resolução personalizada. As etapas a seguir são para adicionar uma resolução de 1920 x 1080, mas você pode usá-lo para qualquer outra resolução que desejar. Mas verifique se o monitor e os gráficos integrados suportam essa resolução.

# First we need to get the modeline string for xrandr
# Luckily, the tool "gtf" will help you calculate it.
# All you have to do is to pass the resolution & the-
# refresh-rate as the command parameters:
gtf 1920 1080 60

# In this case, the horizontal resolution is 1920px the
# vertical resolution is 1080px & refresh-rate is 60Hz.
# IMPORTANT: BE SURE THE MONITOR SUPPORTS THE RESOLUTION

# Typically, it outputs a line starting with "Modeline"
# e.g. "1920x1080_60.00"  172.80  1920 2040 2248 2576  1080 1081 1084 1118  -HSync +Vsync
# Copy this entire string (except for the starting "Modeline")

# Now, use "xrandr" to make the system recognize a new
# display mode. Pass the copied string as the parameter
# to the --newmode option:
xrandr --newmode "1920x1080_60.00"  172.80  1920 2040 2248 2576  1080 1081 1084 1118  -HSync +Vsync

# Well, the string within the quotes is the nick/alias
# of the display mode - you can as well pass something
# as "MyAwesomeHDResolution". But, careful! :-|

# Then all you have to do is to add the new mode to the
# display you want to apply, like this:
xrandr --addmode VGA1 "1920x1080_60.00"

# VGA1 is the display name, it might differ for you.
# Run "xrandr" without any parameters to be sure.
# The last parameter is the mode-alias/name which
# you've set in the previous command (--newmode)

# It should add the new mode to the display & apply it.
# Usually unlikely, but if it doesn't apply automatically
# then force it with this command:
xrandr --output VGA1 --mode "1920x1080_60.00"

Fonte original: https://gist.github.com/debloper/2793261

Também escrevi um script que executa todas essas etapas automaticamente. Você pode testá-lo se as etapas acima parecerem muito complicadas para você: https://gist.github.com/chirag64/7853413

Chirag Bhatia - chirag64
fonte
2
Falha o último passo ...
Vishal Kumar Sahu
Que erro você obteve? Experimente o script automatizado que eu vinculei no final da resposta.
Chirag Bhatia - chirag64
Quando executo seu arquivo, chmod +x Desktop/xrandr.shsinto que não há erros ou alterações.
Vishal Kumar Sahu
chmod +x Desktop/xrandr.shapenas lhe dá permissões para executar esse arquivo. Você precisa executá-lo executando Desktop/xrandr.sh.
precisa saber é o seguinte
: o Okay Quer dizer que eu perdi o disparo da arma.
Vishal Kumar Sahu 02/03
13

A opção --size/ -spode ser usada:

xrandr -s 1440x900

Deve funcionar com a RandRversão 1.1 ou mais recente.

jimmij
fonte
2
Quando faço isso, a resposta é: tamanho 1440x900 não encontrado nos modos disponíveis
nick
@ nick Da saída que você incluiu na pergunta que deduzi, ela deveria estar disponível. Qual é o resultado de xrandr --verbose?
jimmij 6/09/2015
xrandr: falha ao obter o tamanho da gama para o padrão de saída Tela 0: mínimo 1024 x 768, atual 1024 x 768, máximo 1024 x 768 padrão conectado 1024x768 + 0 + 0 (0x138) normal (normal) 0 mm x 0 mm Identificador: 0x137 5048 Subpixel: desconhecido Clones: CRTC: 0 CRTCs: 0 Transformação: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter:
nick
1024x768 (0x138) 0.0MHz * h atual: largura 1024 início 0 fim 0 total 1024 inclinação 0 relógio 0.0KHz v: altura 768 começo 0 fim 0 total 768 relógio 0.0Hz
nick
Parece que a única resolução disponível é 1024x768. Esta resolução é o que você deseja definir?
jimmij 6/09/2015
6

Eu tive o mesmo problema. Na configuração de exibição, a resolução máxima era 1280x720. Tão:

  1. Usando o comando xrandr, vi o nome desse monitor e a lista de resoluções.
  2. Eu executei o script: xrandr --output {nome do monitor} --mode {resolution}

Por exemplo:

xrandr --output DP-2-1 --mode 2560x1440
grep
fonte
3

Isso foi o que eu precisei fazer #IntelMaker #Joulepara que funcionasse na resolução nativa com um MONITOR DE CORES TFT SUNFOUNDER 7 POLEGADAS, listado como tendo resolução 1024 * 600, mas que foi escolhido como 1280x720.

Primeiro, o Intel Joule com Linux 4.4.15-yocto-padrão x86_64 não parece ter gtf(1), então tive que usar uma máquina diferente para calcular os números apropriados:

$ gtf 1024 600 60

  # 1024x600 @ 60.00 Hz (GTF) hsync: 37.32 kHz; pclk: 48.96 MHz
  Modeline "1024x600_60.00"  48.96  1024 1064 1168 1312  600 601 604 622  -HSync +Vsync

$ 

Em seguida, crie um arquivo com os comandos apropriados:

# cat > 1024x600.sh
xrandr --newmode "1024x600_60.00"  48.96  1024 1064 1168 1312  600 601 604 622  -HSync +Vsync
xrandr --addmode HDMI1 "1024x600_60.00"
xrandr --output HDMI1 --mode "1024x600_60.00"
^D
# chmod +x 1024x600.sh

Então, startxou startxfce4, e execute ./1024x600.sh, após o qual, o seguinte será relatado por xrandr(1).

# xrandr
Screen 0: minimum 8 x 8, current 1024 x 600, maximum 32767 x 32767
DP1 disconnected (normal left inverted right x axis y axis)
HDMI1 connected 1024x600+0+0 (normal left inverted right x axis y axis) 697mm x 392mm
   1280x720      60.00 +  50.00    59.94  
   1920x1080     60.00    50.00    59.94  
   1920x1080i    60.00    50.00    59.94  
   1280x1024     75.02  
   1440x900      74.98    59.90  
   1024x768      75.08    70.07    60.00  
   1024x600      60.00  
   800x600       72.19    75.00    60.32    56.25  
   720x576       50.00  
   720x576i      50.00  
   720x480       60.00    59.94  
   720x480i      60.00    59.94  
   640x480       75.00    72.81    60.00    59.94  
   720x400       70.08  
   1024x600_60.00  60.00* 
HDMI2 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
# 
cnst
fonte
A resposta inclui nomes irrelevantes de usuários e hosts pessoais e não separa claramente os comandos de sua saída - tudo isso pode ser confuso para os leitores. Um método padrão de transmitir que algo é um comando seria prefixá-lo simplesmente $. O WM padrão do Kali também é GNOME, não XFCE, talvez deva ficar claro que o comando startxfce4 é apenas para usuários que executam o XFCE versão 4. A probabilidade de muitos outros usuários estarem executando exatamente Linux 4.4.15-yocto-standard x86_64não me parece alta, então eu em vez disso, escreva que gtf(ou cvt) talvez precise ser instalado primeiro.
precisa saber é
1

Irã:

xrandr --verbose

que me deu uma lista de tags de tamanho e valores de pixel correspondentes

então eu usei

xrandr -s 6

para selecionar a resolução 1920x1080

Gavin Guan
fonte
1

Salve o script e inicie-o (bash script.sh 1024 720 60). Você pode definir a resolução personalizada com esse script, mas é uma solução temporária sempre que sair e efetuar login novamente. É necessário executar o script novamente. Você pode adicionar 2 linhas de no seu perfil bash.bashrc.para executar o script diretamente do terminal.

#!/bin/bash
# xrandr.sh
#If no argument is specified, ask for it and exit
if [[ -z "$@" ]];
then
echo "An argument is needed to run this script";
exit
else
arg="$@"
#Basic check to make sure argument number is valid. If not, display error and exit
if [[ $(($(echo $arg | grep -o "\s" | wc --chars) / 2 )) -ne 2 ]];
then
echo "Invalid Parameters. You need to specify parameters in the format "width height refreshRate""
echo "For example setResolution "2560 1440 60""
exit
fi

#Save stuff in variables and then use xrandr with those variables
modename=$(echo $arg | sed 's/\s/_/g')
display=$(xrandr | grep -Po '.+(?=\sconnected)')
if [[ "$(xrandr|grep $modename)" = "" ]];
then
xrandr --newmode $modename $(gtf $(echo $arg) | grep -oP '(?<="\s\s).+') &&
xrandr --addmode $display $modename
fi
xrandr --output $display --mode $modename

#If no error occurred, display success message
if [[ $? -eq 0 ]];
then
echo "Display changed successfully to $arg"
fi
fi
Novato
fonte
0

Meu problema é que a resolução do notebook tem isso:

Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 32767 x 32767
eDP1 connected 1920x1080+0+0 ...
   1366x768      60.00*+  47.98  <=== MaxResolution (Default/Primary)
   1360x768      59.80    59.96  
   1280x720      60.00 ...

Minha tela principal / padrão é 1366x768.

Mas eu gostaria de testar uma resolução 1920x1080 (DesireResolution) no meu notebook.

Eu tentei de tudo.

Não consegui encontrar uma solução porque meu notebook não aceita comandos addmode ou newmode do xrandr para aumentar a resolução, como esta solicitação de pergunta stackexchange.

Então eu fiz algumas contas!

1920/1366 = 1.4055636896
1080/768 = 1.40625

basicamente DesireResolution / MaxResolution

e execute este comando

xrandr --output eDP1 --mode 1366x768 --panning 1920x1080 --scale 1.40556369x1.40625

Se você precisar restaurar a resolução original

xrandr --output eDP1 --mode 1366x768 --panning 1366x768 --scale 1x1

Você pode se adaptar a qualquer resolução que desejar.

macm
fonte