Respuestas:
xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'
El comando xdpyinfomuestra diversa información sobre su servidor X. Escribe muchas cosas en la salida estándar, pero solo necesitamos que la línea comience con la palabra dimensions, por lo tanto, la usamos grep. Finalmente usamos sedpara limpiar el resultado.
xdpyinfoimprime un mensaje de error si no puede acceder a la información, por lo que la redirección de error a /dev/null. Por esta razón es posible que desee agregar una redirección de error: xdpyinfo 2> /dev/null. Por lo tanto, la piple completo es el siguiente: xdpyinfo 2> /dev/null | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'. Esto hará que tu script sea más sólido.
xdpyinfo | grep dimensionsle dará la resolución total, si tiene varios monitores será la suma de todos ellos. xrandr --currentle dará la resolución para cada monitor.
Utilizo este fragmento para encontrar la resolución máxima posible para rDesktop sin ir a pantalla completa:
Xaxis=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f1)
Yaxis=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f2)
Salida:
Xaxis = 1280
Yaxis = 1024
Decoración de ventanas menos (más o menos):
MaxRes=$(($Xaxis-5))"x"$(($Yaxis-25))
Salida:
MaxRes = 1275x999
¿Cuál es la resolución máxima para rDesktop sin pasar a pantalla completa?
Comando final:
rdesktop -u $User -P -z -5 -g $MaxRes $Host &
Funciona bien hasta ahora, pero no he probado a fondo sin embargo.
Otro ejemplo es para 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' -f1si desea especificar una pantalla (con una configuración de varios monitores) ( SCREENestá indexada en 1)
#############################################
## Lo uso con un programa de grabación de video.
# tamaño de la ventana - opción de raíz - información sobre la ventana raíz de la pantalla
echo $ (raíz xwininfo | grep 'geometría' | awk '{print $ 2;}')
# salida (s): 1024x768 + 0 + 0
# altura x ancho + x + y posiciones.
######################
## Manual de referencia ##
hombre xwininfo
xwininfo -root|sed '/Height/!d;s/.* //'por altura y xwininfo -root|sed '/Width/!d;s/.* //'por ancho.
xdpyinfolo hará, con un poco de análisis. Da mucha información de la que luego tendrás que cavar el número de pantalla y las dimensiones de
Dos posibles alternativas producidas combinando las respuestas de @ user31752 y @ eliezer-e-vargas
Una expresión regular más simple:
$ xrandr --current | sed -n 's/.* connected \([0-9]*\)x\([0-9]*\)+.*/\1x\2/p'
1440x900
o usando corte:
$ xrandr --current | grep ' connected ' | cut -d ' ' -f 3 | cut -d '+' -f 1
1440x900
El uso de grep '*' | uniq@ eliezer-e-vargas obtiene una línea diferente (ej. "1440x900 59.90 * + 59.89") de salida xrandr, mientras que el grep 'conectado' obtiene uno simple (ej. "LVDS1 conectado 1440x900 + 0 + 0 ..... ").
El uso de expresiones regulares por @ user31752 es bueno, por lo que la línea que estoy usando necesita una expresión regular más simple, o puede sustituirse con el comando de corte más simple.
Ejemplo de salida 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)
Como en la respuesta aceptada pero menos complicada:
xdpyinfo | grep dimensions
Ejemplo de salida:
dimensions: 1366x768 pixels (361x203 millimeters)
El estándar vesa proporciona un método para leer la resolución de la pantalla del monitor.
Datos de identificación de pantalla extendida (EDID ): este estándar define los formatos de datos para transportar información de configuración, lo que permite un uso óptimo de las pantallas.
Un monitor generalmente admite múltiples resoluciones y tasas de actualización. Por supuesto, alguien preferirá el máximo (físico).
Para leer los datos de este monitor, pruebe una de estas soluciones:
edid-decode
Si no está instalado, escriba
sudo apt install edid-decode
Luego lee el edidarchivo
edid-decode /sys/class/drm/card0-eDP-1/edid
read-edid
Instalar con
sudo apt install read-edid
Luego lea a través de i2c los datos del monitor de pantalla y analícelo
sudo get-edid | parse-edid
Hexdump los datos edid
En caso de que las herramientas edid no estén instaladas, puede volcar el edidarchivo hexadecimal, por ejemplo:
hd /sys/class/drm/card0-eDP-1/edid
Para cifrar este archivo hexadecimal, eche un vistazo a wiki o descargue las especificaciones edid .
$( )sintaxis (es decirDIMENSIONS=$(xdpyinfo ...). Luego, usesednuevamente para obtener los dos:WIDTH=$(echo $DIMENSIONS | sed -r 's/x.*//')yHEIGHT=$(echo $DIMENSIONS | sed -r 's/.*x//').