Réponses:
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 n’avons besoin que de la ligne commençant par le mot dimensions
, nous l’utilisons donc grep
. Enfin, nous utilisons sed
pour nettoyer le résultat.
xdpyinfo
imprime un message d'erreur s'il ne peut pas accéder aux informations, donc erreur de redirection vers /dev/null
. Pour cette raison , vous pouvez ajouter une redirection d'erreur: xdpyinfo 2> /dev/null
. Ainsi, la pleine Piple 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.
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 concerne le screencast avec 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' -f1
si vous souhaitez spécifier un écran (avec une configuration multi-moniteur) ( SCREEN
index 1)
############################################## ## 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 'geometry' | awk '{print $ 2;}') # sortie (s): 1024x768 + 0 + 0 # hauteur x largeur + x + y positions. ######################## ## Manuel de référence ## homme xwininfo
xwininfo -root|sed '/Height/!d;s/.* //'
pour la hauteur et la xwininfo -root|sed '/Width/!d;s/.* //'
largeur.
xdpyinfo
le fera, avec un peu d'analyse. Il donne beaucoup d'informations que vous devrez ensuite creuser le numéro d'écran, et les dimensions de
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
from @ eliezer-e-vargas permet d’obtenir une ligne différente (ex. "1440x900 59.90 * + 59.89") de la sortie xrandr, tandis que le grep 'connecté' en obtient une simple (ex. "LVDS1 connecté 1440x900 + 0 + 0 ..... ").
L'utilisation de regex par @ user31752 est agréable; 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)
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 pour 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 edid
fichier
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 edid
fichier hexadécimal, par exemple:
hd /sys/class/drm/card0-eDP-1/edid
Pour chiffrer ce fichier hexadécimal, jetez un œil à wiki ou téléchargez les spécifications edid .
$( )
syntaxe (ieDIMENSIONS=$(xdpyinfo ...
). Puis utilisez àsed
nouveau pour obtenir les deux:WIDTH=$(echo $DIMENSIONS | sed -r 's/x.*//')
etHEIGHT=$(echo $DIMENSIONS | sed -r 's/.*x//')
.