Come impostare la risoluzione personalizzata utilizzando xrandr quando la risoluzione non è disponibile in "Impostazioni schermo"


39

Sono un nuovo utente Linux che tenta di modificare la risoluzione dello schermo in quanto non è disponibile alcuna opzione. Sono riuscito con successo ad aggiungere nuove risoluzioni per fluke seguendo la guida online. Non ho una GPU, non so se questo è il problema? Di seguito è il mio xrandr -qoutput.

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

xrandr -q non è elencato nel loro manuale.
neverMind9

Risposte:


48

Ecco i passaggi necessari per aggiungere una nuova risoluzione personalizzata e applicarla. I seguenti passaggi sono per l'aggiunta di una risoluzione 1920x1080, ma è possibile utilizzarlo per qualsiasi altra risoluzione desiderata. Assicurati però che il monitor e la grafica integrata supportino tale risoluzione.

# 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 originale: https://gist.github.com/debloper/2793261

Ho anche scritto uno script che esegue automaticamente tutti questi passaggi. Puoi provarlo se i passaggi precedenti ti sembrano troppo complicati: https://gist.github.com/chirag64/7853413


2
Fallito l'ultimo passo ...
Vishal Kumar Sahu

Che errore hai ricevuto? Prova lo script automatico che ho collegato alla fine della risposta.
Chirag Bhatia - chirag64

Quando eseguo il tuo file chmod +x Desktop/xrandr.shNessun errore o nessuna modifica mi sento.
Vishal Kumar Sahu,

chmod +x Desktop/xrandr.shti dà solo le autorizzazioni per eseguire quel file. Devi eseguirlo eseguendo Desktop/xrandr.sh.
Chirag Bhatia - chirag64

: o Ok, significa che mi sono perso il fuoco dell'arma.
Vishal Kumar Sahu

14

L'opzione --size/ -spuò essere utilizzata:

xrandr -s 1440x900

Dovrebbe funzionare con la RandRversione 1.1 o successive.


2
Quando lo faccio, la risposta è: dimensioni 1440x900 non trovate nelle modalità disponibili
nick

@nick Dall'output che hai incluso nella domanda che ho dedotto dovrebbe essere disponibile. Qual è l'output di xrandr --verbose?
jimmij,

xrandr: impossibile ottenere la dimensione della gamma per l'impostazione predefinita dell'output Schermata 0: minimo 1024 x 768, corrente 1024 x 768, massimo 1024 x 768 impostazione predefinita collegata 1024x768 + 0 + 0 (0x138) normale (normale) 0mm x 0mm Identificatore: 0x137 Timestamp: 5048 Subpixel: sconosciuto Cloni: CRTC: 0 CRTC: 0 Trasformazione: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filtro:
nick

1024x768 (0x138) 0,0 MHz * corrente h: larghezza 1024 inizio 0 fine 0 totale 1024 inclinazione 0 orologio 0,0 KHz v: altezza 768 inizio 0 fine 0 totale 768 orologio 0,0 Hz
nick

Quindi sembra che l'unica risoluzione disponibile sia 1024x768. Questa risoluzione è quella che vuoi impostare?
jimmij,

6

Ho avuto lo stesso problema. Nell'impostazione di visualizzazione la risoluzione massima era 1280x720. Così:

  1. usando il comando xrandr ho visto il nome di questo monitor e l'elenco delle risoluzioni.
  2. Ho eseguito lo script: xrandr --output {nome del monitor} --mode {risoluzione}

Per esempio:

xrandr --output DP-2-1 --mode 2560x1440

3

Questo è quello che dovevo fare su un #IntelMaker #Jouleper farlo funzionare nella risoluzione nativa con un MONITOR COLORE TFT 7 POLLICI SUNFOUNDER, che è elencato come con risoluzione 1024 * 600, ma è stato invece preso come 1280x720.

Innanzitutto, Intel Joule con Linux 4.4.15-yocto-standard x86_64 non sembra avere gtf(1), quindi ho dovuto usare una macchina diversa per calcolare i numeri appropriati:

$ 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

$ 

Quindi, crea un file con i comandi appropriati:

# 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

Quindi, startxo startxfce4, ed esegui ./1024x600.sh, dopo di che, verrà segnalato quanto segue 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)
# 

La risposta include nomi utente e host personali non pertinenti e non separa chiaramente i comandi dal loro output, il che può confondere i lettori. Un metodo standard per comunicare che qualcosa è un comando sarebbe prefissarlo semplicemente con $. Anche WM predefinito di Kali è GNOME, non XFCE, forse dovrebbe essere chiaro che il comando startxfce4 è solo per gli utenti che eseguono XFCE versione 4. La probabilità che molti altri utenti eseguiranno esattamente Linux 4.4.15-yocto-standard x86_64non mi sembra alta, quindi vorrei invece scrivi che gtf(o cvt) potrebbe essere necessario prima installare.
miyalys,

1

Ho corso:

xrandr --verbose

che mi ha dato un elenco di tag di dimensioni e corrispondenti valori di pixel

poi ho usato

xrandr -s 6

per selezionare la risoluzione 1920x1080


1

Salvare lo script e avviarlo (bash script.sh 1024 720 60) è possibile impostare la risoluzione personalizzata con quello script ma è una soluzione temporanea ogni volta che si effettua il logout e si accede nuovamente è necessario eseguire nuovamente lo script. È possibile aggiungere 2 righe di codice nel tuo profilo bash.bashrc.per eseguire lo script direttamente dal terminale.

#!/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

0

Il mio problema è che la risoluzione del notebook ha questo:

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

La mia schermata principale / predefinita è 1366x768.

Ma vorrei provare una risoluzione 1920x1080 (DesireResolution) sul mio notebook.

Ho provato di tutto.

Non sono riuscito a trovare una soluzione perché il mio notebook non accetta comandi addmode o newmode da xrandr per aumentare la risoluzione, come questa richiesta di domanda di scambio di stack.

Quindi ho fatto un po 'di matematica!

1920/1366 = 1.4055636896
1080/768 = 1.40625

sostanzialmente DesireResolution / MaxResolution

ed esegui questo comando

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

Se è necessario ripristinare la risoluzione originale

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

È possibile adattarsi a qualsiasi risoluzione desiderata.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.