Я ищу способ сообщения разрешения экрана. Я хочу настроить запуск сценариев rdesktop
и запускать его на нескольких машинах с разными разрешениями, поэтому я хочу, чтобы его можно было динамически определять.
Я ищу способ сообщения разрешения экрана. Я хочу настроить запуск сценариев rdesktop
и запускать его на нескольких машинах с разными разрешениями, поэтому я хочу, чтобы его можно было динамически определять.
Ответы:
Используйте команду xrandr
. Без аргументов он отображает доступные разрешения и текущее (со звездочкой), например:
$ xrandr | fgrep '*'
xrandr |g grep \*
, что трюк?
Альтернативное решение: xdpyinfo | grep dimensions
. xdpyinfo
он старше xrandr
, поэтому может быть более переносимым, если вы используете очень старый дистрибутив или какой-то другой X-сервер.
xdpyinfo
то время как xrandr
правильно перечисляются экраны и их разрешение. Это может или не может быть проблемой в зависимости от контекста.
xdpyinfo
кажется, что сообщает правильные размеры в пикселях, он сообщает о неправильном разрешении (DPI). Например, на моем мониторе с размерами 3840x2160 (родной и фактический) и размером 708 мм x 399 мм, как сообщается xrandr
, xdpyinfo
говорится, что разрешение составляет 96x96 точек на дюйм.
Вы можете получить горизонтальное и вертикальное разрешение, используя следующую команду:
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
Я должен был выглядеть немного сложнее, прежде чем отправлять. xrandr
будет отображать текущие настройки дисплея, если не задано никаких других аргументов.
По умолчанию это сбросит все возможные настройки отображения, это можно отфильтровать следующим образом:
xrandr | egrep '^[^ ]|[0-9]\*\+'
xrandr
вывод для использования imagemagickxrandr |grep \* |awk '{print $1}'