Ответы:
xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'
команда xdpyinfo отображает различную информацию о вашем X-сервере. Он пишет много вещей в стандартный вывод, но нам нужна только строка, начинающаяся со слова dimensionsТаким образом, мы используем grep, Наконец мы используем sed убрать результат.
xdpyinfo выдает сообщение об ошибке, если не может получить доступ к информации, поэтому перенаправление ошибки /dev/null, По этой причине вы можете добавить перенаправление ошибок: xdpyinfo 2> /dev/null, Итак, полный трубопровод выглядит так: xdpyinfo 2> /dev/null | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/', Это сделает ваш сценарий более солидным.
xdpyinfo | grep dimensions даст вам общее разрешение, если у вас есть несколько мониторов, это будет сумма всех их. xrandr --current даст вам разрешение для каждого монитора.
Я использую этот фрагмент, чтобы найти максимально возможное разрешение для rDesktop, не переходя на полный экран:
Xaxis=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f1)
Yaxis=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f2)
Выход:
Xaxis = 1280
Yaxis = 1024
Минус оформление окон (более или менее):
MaxRes=$(($Xaxis-5))"x"$(($Yaxis-25))
Выход:
MaxRes = 1275x999
Какое максимальное разрешение для rDesktop без перехода на весь экран
Завершить команду:
rdesktop -u $User -P -z -5 -g $MaxRes $Host &
Пока все работает нормально, но я не проверил тщательно.
Другой пример для скринкаста с 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}'),
#############################################
## I use this with a Video Recording Program.
# window size --root option - information on the screen's root window
echo $(xwininfo -root | grep 'geometry' | awk '{print $2;}')
# output(s): 1024x768+0+0
# height x width + x + y positions.
######################
## Reference Manual ##
man xwininfo
xwininfo -root|sed '/Height/!d;s/.* //' для высоты и xwininfo -root|sed '/Width/!d;s/.* //' для ширины.
xdpyinfo сделаю это, с некоторым разбором. Он дает много информации, которую вам нужно будет затем выкопать номер экрана и размеры из
Созданы две возможные альтернативы, объединяющие ответы @ user31752 и @ eliezer-e-vargas
Более простое регулярное выражение:
$ xrandr --current | sed -n 's/.* connected \([0-9]*\)x\([0-9]*\)+.*/\1x\2/p'
1440x900
или используя вырезать:
$ xrandr --current | grep ' connected ' | cut -d ' ' -f 3 | cut -d '+' -f 1
1440x900
Использование grep '*' | uniq из @ eliezer-e-vargas получить другую строку (например, "1440x900 59.90 * + 59.89") выхода xrandr, тогда как grep 'connected' получает простую (например, LVDS1 подключен 1440x900 + 0 + 0 ... .. ").
Использование regex @ user31752 приятно, поэтому строка, которую я использую, нуждается в более простом регулярном выражении или может быть заменена простой командой cut.
Пример вывода 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)
Как и в принятом ответе, но менее сложный:
xdpyinfo | grep dimensions
Пример вывода:
dimensions: 1366x768 pixels (361x203 millimeters)
Стандарт vesa предоставляет метод определения разрешения экрана монитора.
Расширенные данные идентификации дисплея (EDID ): Это стандарт определяет форматы данных для переноса информации о конфигурации, что позволяет оптимальное использование дисплеев.
Монитор обычно поддерживает несколько разрешений и обновлений. Конечно, кто-то предпочтет максимальный (физический).
Чтобы прочитать данные этого монитора, попробуйте одно из следующих решений:
EDID-декодирования
Если не установлено, введите
sudo apt install edid-decode
Тогда прочитайте edid файл
edid-decode /sys/class/drm/card0-eDP-1/edid
чтения EDID
Установить с
sudo apt install read-edid
Затем прочитайте через i2c данные монитора экрана и проанализируйте их
sudo get-edid | parse-edid
Hexdump edid данные
Если edid-инструменты не установлены, вы можете сбросить edid шестнадцатеричный файл, например:
hd /sys/class/drm/card0-eDP-1/edid
Чтобы зашифровать этот шестнадцатеричный файл, взгляните на вики или скачать Edid спецификации ,
$( )синтаксис (т.е.DIMENSIONS=$(xdpyinfo ...). Тогда используйтеsedеще раз, чтобы получить два:WIDTH=$(echo $DIMENSIONS | sed -r 's/x.*//')а такжеHEIGHT=$(echo $DIMENSIONS | sed -r 's/.*x//'),