Respuestas:
xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'
El comando xdpyinfo
muestra 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 sed
para limpiar el resultado.
xdpyinfo
imprime 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 dimensions
le dará la resolución total, si tiene varios monitores será la suma de todos ellos. xrandr --current
le 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' -f1
si desea especificar una pantalla (con una configuración de varios monitores) ( SCREEN
está 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.
xdpyinfo
lo 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 edid
archivo
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 edid
archivo 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, usesed
nuevamente para obtener los dos:WIDTH=$(echo $DIMENSIONS | sed -r 's/x.*//')
yHEIGHT=$(echo $DIMENSIONS | sed -r 's/.*x//')
.