Cómo configurar una resolución personalizada usando xrandr cuando la resolución no está disponible en 'Configuración de pantalla'

39

Soy un nuevo usuario de Linux que intenta cambiar la resolución de la pantalla ya que no hay ninguna opción en pantalla. Me las arreglé para agregar nuevas resoluciones de fluke siguiendo la guía en línea. No tengo una GPU, no sé si este es el problema. A continuación se muestra mi xrandr -qsalida.

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
mella
fuente
xrandr -q no figura en su manual.
neverMind9

Respuestas:

48

Estos son los pasos que necesita para agregar una nueva resolución personalizada y aplicarla. Los siguientes pasos son para agregar una resolución de 1920x1080, pero puede usarla para cualquier otra resolución que desee. Pero asegúrese de que su monitor y gráficos integrados admitan esa resolución.

# 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"

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

También escribí un script que hace todos estos pasos automáticamente. Puede probarlo si los pasos anteriores le parecen demasiado complicados: https://gist.github.com/chirag64/7853413

Chirag Bhatia - chirag64
fuente
2
Falló el último paso ...
Vishal Kumar Sahu
¿Qué error obtuvo? Pruebe el script automatizado que vinculé al final de la respuesta.
Chirag Bhatia - chirag64
Cuando ejecuto su archivo chmod +x Desktop/xrandr.shNo siento ningún error o cambio.
Vishal Kumar Sahu
chmod +x Desktop/xrandr.shsolo le da permisos para ejecutar ese archivo. Necesitas ejecutarlo corriendo Desktop/xrandr.sh.
Chirag Bhatia - chirag64
: o Ok, significa que fallé en disparar el arma.
Vishal Kumar Sahu
14

La opción --size/ -sse puede usar:

xrandr -s 1440x900

Debería funcionar con la RandRversión 1.1 o posterior.

jimmij
fuente
2
Cuando hago esto, la respuesta es: tamaño 1440x900 no se encuentra en los modos disponibles
nick
@nick De la salida que incluiste en la pregunta que deduje que debería estar disponible. ¿Cuál es el resultado de xrandr --verbose?
jimmij
xrandr: Error al obtener el tamaño de gamma para la salida predeterminada Pantalla 0: mínimo 1024 x 768, actual 1024 x 768, máximo 1024 x 768 conectado por defecto 1024x768 + 0 + 0 (0x138) normal (normal) 0 mm x 0 mm Identificador: 0x137 Marca de tiempo: 5048 Subpíxel: desconocido Clones: CRTC: 0 CRTC: 0 Transformación: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filtro:
nick
1024x768 (0x138) 0.0MHz * actual h: ancho 1024 inicio 0 final 0 total 1024 sesgo 0 reloj 0.0KHz v: altura 768 inicio 0 final 0 total 768 reloj 0.0Hz
nick
Parece que la única resolución disponible es 1024x768. ¿Es esta resolución lo que quieres establecer?
jimmij
6

Yo tuve el mismo problema. En la configuración de Pantalla, la resolución máxima fue de 1280x720. Asi que:

  1. usando el comando xrandr he visto el nombre de este monitor y la lista de resoluciones.
  2. He ejecutado el script: xrandr --output {nombre del monitor} --mode {resolución}

Por ejemplo:

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

Esto es lo que tenía que hacer en un #IntelMaker #Joule para que funcione en la resolución nativa con un MONITOR DE COLOR TFT SUNFOUNDER DE 7 PULGADAS, que aparece con una resolución de 1024 * 600, pero en cambio se seleccionó como 1280x720.

Primero, Intel Joule con Linux 4.4.15-yocto-standard x86_64 no parece tener gtf(1), así que tuve que usar una máquina diferente para calcular los números apropiados:

$ 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

$ 

Luego, cree un archivo con los comandos apropiados:

# 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

Luego, startxo startxfce4, y ejecutar ./1024x600.sh, después de lo cual, lo siguiente será informado 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
fuente
La respuesta incluye nombres de host y usuarios personales irrelevantes, y no separa claramente los comandos de su salida, todo lo cual puede ser confuso para los lectores. Un método estándar para transmitir que algo es un comando sería prefijarlo simplemente con $. El WM predeterminado de Kali también es GNOME, no XFCE, tal vez debería quedar claro que el comando startxfce4 es solo para usuarios que ejecutan XFCE versión 4. La probabilidad de que muchos otros usuarios se ejecuten exactamente Linux 4.4.15-yocto-standard x86_64no me parece alta, así que en su lugar, escriba que gtf(o cvt) podría tener que instalarse primero.
miyalys
1

Corrí:

xrandr --verbose

que me dio una lista de etiquetas de tamaño y valores de píxeles correspondientes

entonces solía

xrandr -s 6

para seleccionar la resolución 1920x1080

Gavin Guan
fuente
1

Guarde el script y ejecútelo (bash script.sh 1024 720 60), puede establecer la resolución personalizada con ese script, pero es una solución temporal cada vez que cierre sesión y vuelva a iniciar sesión, debe ejecutar el script nuevamente. Puede agregar 2 líneas de código en su bash.bashrc profile.para ejecutar el script directamente desde la 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
fuente
0

Mi problema es que la resolución del cuaderno tiene esto:

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 ...

Mi pantalla principal / predeterminada es 1366x768.

Pero me gustaría probar una resolución 1920x1080 (DesireResolution) en mi cuaderno.

Lo intenté todo.

No pude encontrar una solución porque mi computadora portátil no acepta los comandos addmode o newmode de xrandr para aumentar la resolución, como esta solicitud de pregunta de intercambio de pila.

¡Entonces hice algunas matemáticas!

1920/1366 = 1.4055636896
1080/768 = 1.40625

básicamente DesireResolution / MaxResolution

y ejecuta este comando

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

Si necesita restaurar la resolución original

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

Puede adaptarse a cualquier resolución que desee.

macm
fuente