Ответы:
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//')
,