Comment connaître ma résolution d'écran à partir d'un script Shell?
xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'
La commande xdpyinfo
affiche diverses informations sur votre serveur X. Il écrit beaucoup de choses sur la sortie standard mais nous avons seulement besoin de la ligne commençant par Word dimensions
, nous utilisons donc grep
. Enfin, nous utilisons sed
pour nettoyer le résultat.
xdpyinfo | grep dimensions
vous donnera la résolution totale. Si vous avez plusieurs écrans, ce sera la somme de tous. xrandr --current
vous donnera la résolution pour chaque moniteur.
J'utilise cet extrait pour trouver la résolution maximale possible pour rDesktop sans passer en plein écran:
Xaxis=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f1)
Yaxis=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f2)
Sortie:
Xaxis = 1280
Yaxis = 1024
Minus décoration de fenêtres (plus ou moins):
MaxRes=$(($Xaxis-5))"x"$(($Yaxis-25))
Sortie:
MaxRes = 1275x999
Quelle est la résolution maximale pour rDesktop sans passer en plein écran.
Fin de commande:
rdesktop -u $User -P -z -5 -g $MaxRes $Host &
Cela fonctionne bien jusqu'à présent, mais je n'ai pas encore fait de tests approfondis.
Un autre exemple est celui du screencast avec avconv
:
avconv -f x11grab -r 15 -s `xrandr --current | grep '*' | uniq | awk '{print $1}'` -i :0.0 -c:v libx264 ./output.mp4
Vous pouvez utiliser la commande xrandr -q
. À partir de là, vous pouvez créer un script shell si nécessaire.
Pour plus d'informations sur la commande, allez ici ou tapez man xrandr
############################################ ## J'utilise ceci avec un programme d'enregistrement vidéo. # Taille de la fenêtre - option root - informations sur la fenêtre racine de l'écran Echo $ (xwininfo -root | grep ' '| awk' {print $ 2;} ') # sortie (s): 1024x768 + 0 + 0 # hauteur x largeur + x + y positions. ### #################### ## Manuel de référence ## Man xwininfo
Deux alternatives possibles produites combinant les réponses de @ user31752 et @ eliezer-e-vargas
Une regex plus simple:
$ xrandr --current | sed -n 's/.* connected \([0-9]*\)x\([0-9]*\)+.*/\1x\2/p'
1440x900
ou en utilisant cut:
$ xrandr --current | grep ' connected ' | cut -d ' ' -f 3 | cut -d '+' -f 1
1440x900
L’utilisation de grep '*' | uniq
de @ eliezer-e-vargas permet d’obtenir une ligne différente (par exemple, "1440x900 59.90 * + 59.89") de la sortie xrandr, tandis que le grep 'connecté' en obtient une simple (par exemple, "LVDS1 connecté en 1440x900 + 0 + 0 ..... ").
L'utilisation de regex par @ user31752 est Nice, la ligne que j'utilise nécessite donc une regex plus simple, ou peut être remplacée par la commande de coupe plus simple.
Exemple de sortie 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)
xdpyinfo
le fera, avec une analyse syntaxique. Il donne beaucoup d'informations que vous devrez ensuite Dig Dig, et les dimensions de
Comme dans la réponse acceptée mais moins compliquée:
xdpyinfo | grep dimensions
Exemple de sortie:
dimensions: 1366x768 pixels (361x203 millimeters)
La norme vesa fournit une méthode permettant de lire la résolution de l'écran du moniteur.
Données d'identification des affichages étendus (EDID ): Cette norme définit les formats de données destinés à transporter les informations de configuration, permettant une utilisation optimale des affichages.
Un moniteur prend généralement en charge plusieurs résolutions et actualisations. Bien sûr, quelqu'un préférera le maximum (physique).
Pour lire ces données de moniteur, essayez l’une des solutions suivantes:
edid-decode
S'il n'est pas installé, tapez
Sudo apt install edid-decode
Puis lisez le fichier edid
edid-decode /sys/class/drm/card0-eDP-1/edid
read-edid
Installer avec
Sudo apt install read-edid
Lisez ensuite les données du moniteur à l’écran via i2c et analysez-les.
Sudo get-edid | parse-edid
Hexdump les données edid
Si edid-tools n'est pas installé, vous pouvez vider le fichier hexadécimal edid
, par exemple:
hd /sys/class/drm/card0-eDP-1/edid
Pour chiffrer ce fichier hexadécimal, consultez wiki ou téléchargez les spécifications edid .