Я шукаю спосіб повідомлення про дозвіл відображення. Я хочу налаштувати сценарії для запуску 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}'