Linux retrieve monitor names

linux, ubuntu, xserver

Solution

`sudo get-edid` didn't work for me. (EDIT: now works on another computer, Lubuntu 14.10; I'd blame BIOS differences but that's a random guess...)

Anyway under X, `xrandr --verbose` prints the EDID block. Here is a quick and dirty way to extract it and pass to `parse-edid`:

#!/bin/bash
xrandr --verbose | perl -ne '
if ((/EDID(_DATA)?:/.../:/) && !/:/) {
  s/^\s+//;
  chomp;
  $hex .= $_;
} elsif ($hex) {
  # Use "|strings" if you dont have read-edid package installed 
  # and just want to see (or grep) the human-readable parts.
  open FH, "|parse-edid"; 
  print FH pack("H*", $hex); 
  $hex = "";
}'

Problem

Situation: I'm using multiple monitors and I want to get their names in bash. Currently I'm using Ubuntu 10.04. I know about xrandr. From it I can get only statistics data. What I want is to read all monitor names in an array to work with them. Is there a clear way to do that without cutting names from some kind of string? A clear way would be reading them from file. A not clear way would be to pipe xrandr output to some sort a function to cut names out from it.

Original source