Как узнать разрешение экрана по сценарию оболочки?
ubuntu
gnome
xorg
resolution
dave4420
источник
источник
$( )
синтаксис (т.е.DIMENSIONS=$(xdpyinfo ...
). Тогда используйтеsed
еще раз, чтобы получить два:WIDTH=$(echo $DIMENSIONS | sed -r 's/x.*//')
а такжеHEIGHT=$(echo $DIMENSIONS | sed -r 's/.*x//')
,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, не переходя на полный экран:
Выход:
Минус оформление окон (более или менее):
Выход:
Какое максимальное разрешение для rDesktop без перехода на весь экран
Завершить команду:
Пока все работает нормально, но я не проверил тщательно.
Другой пример для скринкаста с
avconv
:источник
xdpyinfo: Unable to open display "".
rdesktop [other_args] -g $(xrandr --current | grep '*' | uniq | awk '{print $1}')
,Вы могли бы использовать
xrandr -q
команда. Из этого вы можете создать сценарий оболочки, если это необходимо.Для получения дополнительной информации о команде перейдите Вот или введите человек ксандр
источник
источник
xwininfo -root|sed '/Height/!d;s/.* //'
для высоты иxwininfo -root|sed '/Width/!d;s/.* //'
для ширины.xdpyinfo
сделаю это, с некоторым разбором. Он дает много информации, которую вам нужно будет затем выкопать номер экрана и размеры изисточник
Созданы две возможные альтернативы, объединяющие ответы @ user31752 и @ eliezer-e-vargas
Более простое регулярное выражение:
или используя вырезать:
Использование
grep '*' | uniq
из @ eliezer-e-vargas получить другую строку (например, "1440x900 59.90 * + 59.89") выхода xrandr, тогда как grep 'connected' получает простую (например, LVDS1 подключен 1440x900 + 0 + 0 ... .. ").Использование regex @ user31752 приятно, поэтому строка, которую я использую, нуждается в более простом регулярном выражении или может быть заменена простой командой cut.
Пример вывода xrandr
источник
Как и в принятом ответе, но менее сложный:
Пример вывода:
источник
Чтение данных с экрана монитора
Стандарт vesa предоставляет метод определения разрешения экрана монитора.
Монитор обычно поддерживает несколько разрешений и обновлений. Конечно, кто-то предпочтет максимальный (физический).
Чтобы прочитать данные этого монитора, попробуйте одно из следующих решений:
EDID-декодирования
Если не установлено, введите
Тогда прочитайте
edid
файлчтения EDID
Установить с
Затем прочитайте через i2c данные монитора экрана и проанализируйте их
Hexdump edid данные
Если edid-инструменты не установлены, вы можете сбросить
edid
шестнадцатеричный файл, например:Чтобы зашифровать этот шестнадцатеричный файл, взгляните на вики или скачать Edid спецификации ,
источник