Отображение информации о мониторе через командную строку

Есть ли способ запросить информацию о мониторе из командной строки? Например, получить модель монитора, аналогичную, например, какой lspci делает для получения информации о графической карте, или о том, включена она в данный момент или выключена, и тому подобное.

Если возможно, какую базовую информацию, подобную приведенной выше, можно легко собрать? Например, можно ли определить, находится ли монитор в портретном или альбомном положении? Или есть ли у него встроенные динамики или нет?

Предпочтение отдается командной строке, но если есть метод с графическим интерфейсом, я бы тоже хотел услышать об этом.

Да, есть, read-edid инструмент для сбора информации об оборудовании для мониторов VESA PnP. Этот инструмент имеет две команды: get-edid и parse-edid: инструменты для извлечения и интерпретации спецификаций монитора с использованием протокола VESA VBE DDC. ЭДИД (Расширенное Отображение Идентификационных Данных) - это формат метаданных для устройств отображения для описания их возможностей для источника видео.

Первый:

sudo apt-get install read-edid

Тогда попробуйте:

sudo get-edid | parse-edid
$ grep "NVIDIA(GPU-0)" /var/log/Xorg.0.log |head -17| cut -d\: -f2
 Дисплей (Samsung SA300/SA350 (DFP-0)) не поддерживает NVIDIA
     Стереосистема 3D-видения.
 Идентификатор EDID для Samsung SA300/SA350 (DFP-0) противоречит сам себе
     режим "1920x1080" указан в EDID; однако
допустимый диапазон VertRefresh EDID (56.000-75.000 Гц) будет
     исключить VertRefresh этого режима (50,0 Гц); игнорирование
     VertRefresh проверяет наличие режима "1920x1080".
 Идентификатор EDID для Samsung SA300/SA350 (DFP-0) противоречит сам себе
     режим "1280x720" указан в EDID; однако
допустимый диапазон VertRefresh EDID (56.000-75.000 Гц) будет
     исключить VertRefresh этого режима (50,0 Гц); игнорирование
     VertRefresh проверьте наличие режима "1280x720".
 Идентификатор EDID для Samsung SA300/SA350 (DFP-0) противоречит сам себе
     режим "720x576" указан в EDID; однако
допустимый диапазон VertRefresh EDID (56.000-75.000 Гц) будет
     исключить VertRefresh этого режима (50,0 Гц); игнорирование
     VertRefresh проверяет наличие режима "720x576".

Случай, когда get-edid отображаются не все мониторы

Как и у меня, у меня есть:

$ lshw -c display  *-display                      description: VGA compatible controller       product: 3rd Gen Core processor Graphics Controller       vendor: Intel Corporation       physical id: 2       bus info: pci@0000:00:02.0       version: 09       width: 64 bits       clock: 33MHz       capabilities: vga_controller bus_master cap_list rom       configuration: driver=i915 latency=0       resources: irq:27 memory:f6400000-f67fffff memory:e0000000-efffffff ioport:f000(size=64)

get-edid показывает только внешний монитор, подключенный к порту VGA.

  1. Устанавливать read-edid

     sudo apt-get install read-edid
  2. Считайте информацию EDID непосредственно из дерева SYSFS, в нем должны отображаться все обнаруженные мониторы

     ls /sys/class/drm/*/edid | xargs -i{} sh -c "echo {}; parse-edid < {}"

Попробуй

xrandr

(Я использовал эту программу один раз, когда играл с настройкой двух мониторов на Archlinux.)

Вы можете найти его в x11-server-utils пакет. Этот пакет содержит другие вещи, с которыми можно поиграть, например:

  • iceauth, инструмент для управления записями авторизации протокола ICE;
  • rgb;
  • sessreg, простая программа для управления записями utmp/wtmp;
  • xcmsdb, a device color characteristic utility for the X Color ManagementSystem;
  • xgamma, инструмент для запроса и настройки гамма-коррекции монитора;
  • xhost, очень опасная программа, которую вы никогда не должны использовать;
  • xmodmap, утилита для изменения ключевых карт и сопоставлений кнопок-указателей в X;
  • xrandr, интерфейс командной строки для расширения RandR;
  • xrdb, инструмент для управления базой данных ресурсов X server;
  • xrefresh, инструмент, который принудительно перерисовывает экран X;
  • xset, инструмент для настройки различных параметров X-сервера;
  • xsetmode и xsetpointer, инструменты для работы с X устройствами ввода;
  • xsetroot, инструмент для настройки внешнего вида корневого окна;
  • xstdcmap, утилита для выборочного определения стандартных свойств цветовой карты;
  • xvidtune - инструмент для настройки моделей X server для вашего монитора.(информация, найденная в synaptic package manager)

xrandr, xrandr --prop и xrandr --verbose даст вам некоторую информацию с разным уровнем детализации.

Информацию, предоставленную производителем, можно найти в ЭДИД формат.

Чтобы получить и декодировать EDID, сначала проверьте xrandr вывод на выяснить используемый интерфейс (например eDP-1) и apt install edid-decode, затем:

edid-decode </sys/class/drm/card0-eDP-1/edid

Пример вывода, который вы можете найти здесь. Замените eDP-1 с вашим интерфейсом, если это необходимо.

Альтернативно, xrandr --prop выводит EDID в шестнадцатеричном формате, который вы можете передать в этот онлайн Декодер EDID.

Я не рекомендую использовать read-edid пакет, потому что у меня был негативный опыт работы с ним (версия 3.0.2). В моем случае, get-edid выводит дополнительные символы после окончания, которые приводят к предупреждению от edid-decode и parse-edid выводит случайный мусор в ModelName и Identifier поля.

Это даст вам всю необходимую информацию:

dbus-send --session --print-reply --dest=org.gnome.Mutter.DisplayConfig /org/gnome/Mutter/DisplayConfig org.gnome.Mutter.DisplayConfig.GetCurrentState

Это сработало для меня в Ubuntu 18.04.
Монитор подключен с помощью HDMI:

grep -i "monitor name" /var/log/syslog

Какой у вас графический процессор?

02:00.0 VGA-совместимый контроллер: Advanced Micro Devices [AMD] урожденная ATI Madison [Mobility Radeon HD 5650/5750 / 6550M]

может быть, вам повезет больше с: sudo apt-get install xresprobe и запустите `sudo ddcprobe’

Related: hardware - Get monitor make and model and other info in human readable form - Unix & Linux Stack Exchange and ubuntu - Linux retrieve monitor names - Stack Overflow

См. также Как получить конфигурацию мониторов из командной строки? на Unix.SE