Отримайте роздільну здатність дисплея з командного рядка для робочого столу Linux


32

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


Відповіді:


37

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

$ xrandr | fgrep '*'

Чи можете ви додати якийсь зразок виводу до відповіді? І я здогадуюсь, xrandr |g grep \*чи це трюк?
Ehtesh Choudhury

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] +' '/ розміри: / {print $ 3, $ 4}'
Peter.O

@ Peter.O, спасибі Це приємна компактна форма команди. Я оновив відповідь.
crayzeewulf

Дійсно, але деякі (усі?) Мультимоніторні налаштування відображаються як один екран у xdpyinfo, тоді як xrandr правильно перераховує екрани та їх роздільну здатність. Це може бути або не бути проблемою залежно від контексту.
Стефан Гурішон

5

Я повинен був виглядати трохи важче перед публікацією. xrandrбуде перегукуватися з поточними налаштуваннями дисплея, якщо не подано жодних інших аргументів.

За замовчуванням це скидає всі можливі налаштування дисплея. Це можна відфільтрувати наступним чином:

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.