views:

175

answers:

4

How do you tell if a computer's monitor(s) are turned on/off from the command line in Linux? I've traditionally thought of monitors as output-only devices, but I've noticed the Gnome Monitor Preferences dialog has a "detect monitor" function. Can this be generalized to determine if a monitor is physically turned off?

A: 

You might want to look at the output of

$ xset -q

I'm not sure if it will work but I think the line " Monitor is (on|off)" should tell you the answer.

matthewbauer
Still gives me `Monitor is On` even when I turn it off.
Thomas
That might just show if the monitor's plugged in or not. I don't think there's a way to see if it's actually turned on. If it's plugged in, the OS assumes that it's on. Gnome probably just detects the monitor when it's plugged in not when it's on/off. I guess the only way to try this out is to type out the previous command, unplug your monitor, hit enter, plug monitor back in and see what it says. I can't test this b/c I'm on a laptop.
vlad003
"Still gives me Monitor is On even when I turn it off" - how can you tell? Maybe it's smart enough to go back and change the output when it detects you've turned your monitor on to check. Now I just have to figure out whether the fridge light _really_ goes off when you shut the door.
paxdiablo
With ssh from a different terminal, which has its monitor not turned off?
user unknown
If you turn your monitor off in the middle of a datacenter and nobody is there to execute "xset -q," does the computer really register the change in state of the monitor?
bowenl2
The VESA DDC controller must be getting power even though the display is off.
Joe Koberg
A: 

You can get some info using the xrandr command-line utility, if your video driver supports this extension.

haggai_e
It seems to give me the same false reading that I get from xset.
Chris S
A: 

I guess there must be some way, since screensavers shut it off, or acpi. But, sorry, no, I don't know any more.

find /proc/acpi/video -type f -exec cat {} \; -print

(on my laptop) doesn't show me something obvious, but your experience might differ.

user unknown
+3  A: 

The VESA DDC connection is an I2C connection that can be used to query the presence of the monitor.

Linux exposes the I2C device and userland programs can communicate directly with the monitor with code such as that at http://jaffar.cs.msu.su/oleg/ddcci/

Notice this below: Control 0xe1: +/1/1 [SAM: Power control (0 - off/1 - on)]

# ddcci-tool /dev/i2c-2 -e -c -d


ddcci-tool version 0.03

Reading EDID : 0x50@/dev/i2c-2
    Plug and Play ID: SAM00BA
    Input type: Analog

Using ddc/ci : 0x37@/dev/i2c-2

Capabilities:
(type(LCD)vcp(04 05 10 12 60(1 3) B0(1 2) B6 C6 C8 C9 D6(1 4) DC(1 2 3 4) DF))

Controls (valid/current/max):
Control 0x04: +/0/1 [Reset Factory Defaults]
Control 0x05: +/0/1 [SAM: Reset Brightness and Contrast]
Control 0x06: +/0/1 [Reset Factory Geometry]
Control 0x08: +/0/1 [Reset Factory Default Color]
Control 0x0e: +/60/120 [SAM: Image Lock Coarse]
Control 0x10: +/0/100 [Brightness]
Control 0x12: +/50/100 [Contrast]
Control 0x16: +/8/16 [Red Video Gain]
Control 0x18: +/8/16 [Green Video Gain]
Control 0x1a: +/8/16 [Blue Video Gain]
Control 0x1e: +/0/2 [SAM: Auto Size Center]
Control 0x20: +/50/100 [Horizontal Position]
Control 0x30: +/25/54 [Vertical Position]
Control 0x3e: +/39/50 [SAM: Image Lock Fine]
Control 0x60: +/1/3 [Input Source Select]
Control 0x62: +/0/100 [Audio Speaker Volume Adjust]
Control 0x6c: +/140/255 [Red Video Black Level]
Control 0x6e: +/127/255 [Green Video Black Level]
Control 0x70: +/121/255 [Blue Video Black Level]
Control 0xb0: +/0/2 [Settings]
Control 0xb6: +/3/8 [???]
Control 0xc6: +/1/1 [???]
Control 0xc8: +/5/16 [???]
Control 0xc9: +/1/0 [???]
Control 0xca: +/2/2 [On Screen Display]
Control 0xcc: +/2/11 [SAM: On Screen Display Language]
Control 0xd6: +/1/4 [SAM: DPMS control (1 - on/4 - stby)]
Control 0xdc: +/4/4 [SAM: MagicBright (1 - text/2 - internet/3 - entertain/4 - custom)]
Control 0xdf: +/512/0 [VCP Version]
Control 0xe0: +/0/2 [SAM: Color preset (0 - normal/1 - warm/2 - cool)]
Control 0xe1: +/1/1 [SAM: Power control (0 - off/1 - on)]
Control 0xe2: +/0/1 [???]
Control 0xed: +/108/255 [SAM: Red Video Black Level]
Control 0xee: +/101/255 [SAM: Green Video Black Level]
Control 0xef: +/103/255 [SAM: Blue Video Black Level]

An interesting question is whether or not your monitor returns that piece of data, and if not, whether it responds at all if it's currently turned off.

Joe Koberg