Risposte:
xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'
Il comando xdpyinfovisualizza varie informazioni sul tuo server X. Scrive molte cose sull'output standard ma abbiamo solo bisogno della linea che inizia con la parola dimensions, quindi usiamo grep. Finalmente usiamo sedper pulire il risultato.
xdpyinfostampa un messaggio di errore se non può accedere alle informazioni, quindi reindirizzamento dell'errore a /dev/null. Per questo motivo si consiglia di aggiungere un reindirizzamento errore: xdpyinfo 2> /dev/null. Così, il piple piena assomiglia a questo: xdpyinfo 2> /dev/null | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'. Questo renderà il tuo script più solido.
xdpyinfo | grep dimensionsti darà la risoluzione totale, se hai più monitor sarà la somma di tutti. xrandr --currentti darà la risoluzione per ogni monitor.
Uso questo frammento per trovare la massima risoluzione possibile per rDesktop senza passare a schermo intero:
Xaxis=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f1)
Yaxis=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f2)
Produzione:
Xaxis = 1280
Yaxis = 1024
Minus decorazioni per finestre (più o meno):
MaxRes=$(($Xaxis-5))"x"$(($Yaxis-25))
Produzione:
MaxRes = 1275x999
Qual è la risoluzione massima per rDesktop senza passare a schermo intero.
Comando di fine:
rdesktop -u $User -P -z -5 -g $MaxRes $Host &
Finora funziona bene, ma non ho ancora testato a fondo.
Un altro esempio è per screencast con avconv:
avconv -f x11grab -r 15 -s `xrandr --current | grep '*' | uniq | awk '{print $1}'` -i :0.0 -c:v libx264 ./output.mp4
xdpyinfo: Unable to open display "".
rdesktop [other_args] -g $(xrandr --current | grep '*' | uniq | awk '{print $1}').
xrandr --current | grep '*' | awk -v line="$SCREEN" 'NR==line{print $1}' | cut -d 'x' -f1se si desidera specificare una schermata (con un'impostazione multi-monitor) ( SCREENè 1-indicizzata)
#############################################
## Lo uso con un programma di registrazione video.
# dimensione finestra - opzione root - informazioni sulla finestra principale dello schermo
echo $ (xwininfo -root | grep 'geometry' | awk '{print $ 2;}')
# output (s): 1024x768 + 0 + 0
# altezza x larghezza + x + posizioni y.
######################
## Manuale di riferimento ##
man xwininfo
xwininfo -root|sed '/Height/!d;s/.* //'per altezza e xwininfo -root|sed '/Width/!d;s/.* //'larghezza.
xdpyinfolo farà, con qualche analisi. Fornisce molte informazioni da cui dovrai quindi scavare il numero dello schermo e le dimensioni da
Due possibili alternative prodotte combinando le risposte di @ user31752 e @ eliezer-e-vargas
Una regex più semplice:
$ xrandr --current | sed -n 's/.* connected \([0-9]*\)x\([0-9]*\)+.*/\1x\2/p'
1440x900
o usando il taglio:
$ xrandr --current | grep ' connected ' | cut -d ' ' -f 3 | cut -d '+' -f 1
1440x900
L'uso di grep '*' | uniqda @ eliezer-e-vargas ottiene una linea diversa (es. "1440x900 59,90 * + 59,89") dell'uscita xrandr, mentre il grep "connesso" ne ottiene uno semplice (es. "LVDS1 collegato 1440x900 + 0 + 0 ..... ").
L'uso di regex da parte di @utente31752 è piacevole, quindi la linea che sto usando ha bisogno di una regex più semplice, o può essere sostituita con il comando di taglio più semplice.
Esempio di output xrandr
$ xrandr --current
Screen 0: minimum 320 x 200, current 1440 x 900, maximum 8192 x 8192
LVDS1 connected 1440x900+0+0 (normal left inverted right x axis y axis) 331mm x 207mm
1440x900 59.90*+ 59.89
1360x768 59.80 59.96
1152x864 60.00
1024x768 60.00
800x600 60.32 56.25
640x480 59.94
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
Come nella risposta accettata ma meno complicata:
xdpyinfo | grep dimensions
Esempio di output:
dimensions: 1366x768 pixels (361x203 millimeters)
Lo standard vesa fornisce un metodo per leggere la risoluzione dello schermo del monitor.
Dati di identificazione display esteso (EDID ): questo standard definisce i formati di dati per trasportare le informazioni di configurazione, consentendo un uso ottimale dei display.
Un monitor in genere supporta più risoluzioni e frequenze di aggiornamento. Naturalmente qualcuno preferirà il massimo (fisico).
Per leggere questi dati del monitor, provare una di queste soluzioni:
edid-decodifica
Se non installato, digitare
sudo apt install edid-decode
Quindi leggi il edidfile
edid-decode /sys/class/drm/card0-eDP-1/edid
lettura edid
Installa con
sudo apt install read-edid
Quindi leggere tramite i2c i dati del monitor dello schermo e analizzarli
sudo get-edid | parse-edid
Esaddump dei dati edid
Nel caso in cui edid-tools non sia installato, è possibile scaricare il edidfile esadecimale, ad esempio:
hd /sys/class/drm/card0-eDP-1/edid
Per crittografare questo file esadecimale, dai un'occhiata al wiki o scarica le specifiche di edid .
$( )sintassi (esDIMENSIONS=$(xdpyinfo ....). Quindi utilizzaresednuovamente per ottenere i due:WIDTH=$(echo $DIMENSIONS | sed -r 's/x.*//')eHEIGHT=$(echo $DIMENSIONS | sed -r 's/.*x//').