Получить разрешение экрана из командной строки для Linux Desktop

32

Я ищу способ сообщения разрешения экрана. Я хочу настроить запуск сценариев rdesktopи запускать его на нескольких машинах с разными разрешениями, поэтому я хочу, чтобы его можно было динамически определять.

Бартон Читтенден
источник
unix.stackexchange.com/questions/2672/…
Сиро Сантилли 新疆 事件 中 at 法轮功 六四 事件

Ответы:

37

Используйте команду xrandr. Без аргументов он отображает доступные разрешения и текущее (со звездочкой), например:

$ xrandr | fgrep '*'
Диего Войтасен
источник
Не могли бы вы добавить пример ответа к ответу? И я предполагаю xrandr |g grep \*, что трюк?
Эхтеш Чоудхури
11

Альтернативное решение: xdpyinfo | grep dimensions. xdpyinfoон старше xrandr, поэтому может быть более переносимым, если вы используете очень старый дистрибутив или какой-то другой X-сервер.

liori
источник
2
Действительно, но некоторые (все?) Настройки нескольких мониторов отображаются как один экран, в xdpyinfoто время как xrandrправильно перечисляются экраны и их разрешение. Это может или не может быть проблемой в зависимости от контекста.
Стефан Гурихон
Примечание: хотя xdpyinfoкажется, что сообщает правильные размеры в пикселях, он сообщает о неправильном разрешении (DPI). Например, на моем мониторе с размерами 3840x2160 (родной и фактический) и размером 708 мм x 399 мм, как сообщается xrandr, xdpyinfoговорится, что разрешение составляет 96x96 точек на дюйм.
Руслан
7

Вы можете получить горизонтальное и вертикальное разрешение, используя следующую команду:

xdpyinfo | grep dimensions | awk '{print $2}' | awk -Fx '{print $1, $2}'

или, в более компактной форме (как предложено Peter.O в этом комментарии):

xdpyinfo | awk -F'[ x]+' '/dimensions:/{print $3, $4}' 

Например, на дисплее 1600x900 это даст следующий результат:

1600 900

Затем вы можете поместить значения в отдельные переменные, используя команду:

read RES_X RES_Y <<<$(xdpyinfo | awk -F'[ x]+' '/dimensions:/{print $3, $4}')

Выведите значения указанных выше переменных с помощью команды:

echo $RES_X, $RES_Y

На дисплее 1600x900 вывод:

1600, 900
crayzeewulf
источник
1
xdpyinfo | awk -F '[x] +' '/
sizes
@ Peter.O, спасибо. Это хорошая компактная форма команды. Я обновил ответ.
crayzeewulf
Действительно, но некоторые (все?) Настройки нескольких мониторов отображаются в xdpyinfo как один экран, в то время как xrandr правильно перечисляет экраны и их разрешение. Это может или не может быть проблемой в зависимости от контекста.
Стефан Гурихон
5

Я должен был выглядеть немного сложнее, прежде чем отправлять. xrandrбудет отображать текущие настройки дисплея, если не задано никаких других аргументов.

По умолчанию это сбросит все возможные настройки отображения, это можно отфильтровать следующим образом:

xrandr | egrep '^[^ ]|[0-9]\*\+'
Бартон Читтенден
источник
1

Чистый xrandrвывод для использования imagemagick

xrandr |grep \* |awk '{print $1}'
Серж Строобандт
источник