58 votes

Comment puis-je connaître ma résolution d'écran à partir d'un script shell?

Comment puis-je connaître la résolution de mon écran à partir d'un script shell ?

62voto

xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'

La commande xdpyinfo affiche diverses informations sur votre serveur X. Elle écrit beaucoup de choses dans la sortie standard mais nous avons seulement besoin de la ligne commençant par le mot dimensions, donc nous utilisons grep. Enfin, nous utilisons sed pour nettoyer le résultat.

0 votes

Si vous avez besoin de dimensions d'axe x et y séparément, vous pouvez faire ce qui suit. Tout d'abord, mettre le résultat de la commande ci-dessus dans une variable en utilisant la syntaxe $( ) (c'est-à-dire DIMENSIONS=$(xdpyinfo ...). Ensuite, utilisez à nouveau sed pour obtenir les deux : WIDTH=$(echo $DIMENSIONS | sed -r 's/x.*//') et HEIGHT=$(echo $DIMENSIONS | sed -r 's/.*x//').

0 votes

xdpyinfo imprime un message d'erreur s'il ne peut pas accéder aux informations, donc redirection d'erreur vers /dev/null. Pour cette raison, vous voudrez peut-être ajouter une redirection d'erreur : xdpyinfo 2> /dev/null. Ainsi, le pipeline complet ressemble à ceci : xdpyinfo 2> /dev/null | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/ '. Cela rendra votre script plus solide.

1 votes

xdpyinfo | grep dimensions: | awk '{print $2}' semble être plus simple et plus lisible.

32voto

Richard Inglis Points 3167

xdpyinfo | grep dimensions vous donnera la résolution totale, si vous avez plusieurs moniteurs, elle sera la somme de tous. xrandr --current vous donnera la résolution pour chaque moniteur.

J'utilise ce snippet 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

Sans les décorations de fenêtres (plus ou moins) :

MaxRes=$(($Xaxis-5))"x"$(($Yaxis-25))

Sortie :

MaxRes = 1275x999

Qui est la résolution maximale pour rDesktop sans passer en plein écran.

Commande finale :

rdesktop -u $User -P -z -5 -g $MaxRes $Host &

Cela fonctionne bien jusqu'à présent mais je n'ai pas testé de manière approfondie.

Un autre exemple est pour la capture d'écran avec avconv :

avconv -f x11grab -r 15 -s `xrandr --current | grep '*' | uniq | awk '{print $1}'` -i :0.0 -c:v libx264 ./output.mp4

0 votes

Il est dit> xdpyinfo: Impossible d'ouvrir l'affichage "".

0 votes

Comment découvrez-vous les modes disponibles pour changer?

0 votes

Si vous n'avez pas besoin de soustraire pour la décoration de la fenêtre (etc), vous pouvez le faire en une seule ligne rdesktop [other_args] -g $(xrandr --current | grep '*' | uniq | awk '{print $1}').

5voto

ricbax Points 5072

Vous pourriez 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

4voto

abu_bua Points 251

Une méthode très simple consiste à lire le fichier modes dans le répertoire sys :

cat /sys/class/graphics/*/modes

ou respectivement

cat /sys/class/graphics/*/virtual_size

0 votes

Je pense que c'est la meilleure réponse pour Linux.

2voto

JimmyLandStudios Points 121
#############################################
## J'utilise ceci avec un programme d'enregistrement vidéo.
#  taille de la fenêtre -- option racine - informations sur la fenêtre racine de l'écran
echo $(xwininfo -root | grep 'geometry' | awk '{print $2;}')
# sortie(s) : 1024x768+0+0
#            hauteur x largeur + positions x et y.
######################
## Manuel de référence ##
man xwininfo

0 votes

J'ai utilisé xwininfo -root|sed '/Height/!d;s/.* //' pour la hauteur et xwininfo -root|sed '/Width/!d;s/.* //' pour la largeur.

0 votes

Geo = xwininfo -root | grep 'geometry' | awk '{print $2;}' s = $ {geo%+0+0}; C'est ainsi que mon script BASH est pour 'avconv -s $s'

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X