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


32

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


Ответы:


37

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

$ xrandr | fgrep '*'

Не могли бы вы добавить пример ответа к ответу? И я предполагаю xrandr |g grep \*, что трюк?
Эхтеш Чоудхури

11

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


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

1
xdpyinfo | awk -F '[x] +' '/
sizes

@ Peter.O, спасибо. Это хорошая компактная форма команды. Я обновил ответ.
crayzeewulf

Действительно, но некоторые (все?) Настройки нескольких мониторов отображаются в xdpyinfo как один экран, в то время как xrandr правильно перечисляет экраны и их разрешение. Это может или не может быть проблемой в зависимости от контекста.
Стефан Гурихон

5

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

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

xrandr | egrep '^[^ ]|[0-9]\*\+'

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.