web-dev-qa-db-fra.com

Comment ma résolution d'écran à partir d'un script Shell?

Comment connaître ma résolution d'écran à partir d'un script Shell?

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

54
user31752

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
27
Eliezer E. Vargas

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

4
ricbax
 ############################################ 
 ## 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 
2
JimmyLandStudios

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)
1
campisano

xdpyinfo le fera, avec une analyse syntaxique. Il donne beaucoup d'informations que vous devrez ensuite Dig Dig, et les dimensions de

1
Rich Homolka

Comme dans la réponse acceptée mais moins compliquée:

xdpyinfo | grep dimensions

Exemple de sortie:

dimensions:    1366x768 pixels (361x203 millimeters)
0
Billal Begueradj

Lecture des données de l'écran du moniteur

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 .

0
abu_bua