Skip to main content

DPMS extension

Display Power Management Signaling: query and control the monitor power level (On / Standby / Suspend / Off) and the idle timeouts that trigger each level.

X.require('dpms', (err, dpms) => {
dpms.GetTimeouts((err, timeouts) => {
// [standbySeconds, suspendSeconds, offSeconds]
});
dpms.Enable();
dpms.ForceLevel(3); // blank the display (Off)
});

All replies are arrays (positional), not objects.

Requests​

GetVersion(clientMajor, clientMinor, cb)​

cb(err, [major, minor]) — the DPMS version the server implements. Not called automatically.

Capable(cb)​

cb(err, [capable]) — capable is 1 when the display system supports DPMS, else 0. Note the single-element array.

GetTimeouts(cb)​

cb(err, [standby, suspend, off]) — idle timeouts in seconds; 0 disables the corresponding level.

SetTimeouts(standby, suspend, off)​

Sets the three idle timeouts (seconds, CARD16; 0 disables a level). No reply. The server requires standby <= suspend <= off (ignoring zeros) and answers BadValue otherwise.

Enable()​

Enables DPMS control of the display, using the current timeout values. No reply.

Disable()​

Disables DPMS (display stays on regardless of timeouts). No reply.

ForceLevel(level)​

Immediately puts the display into level: 0 On, 1 Standby, 2 Suspend, 3 Off. No reply. DPMS must be enabled first, otherwise the server answers with an error (the test calls Enable() before forcing a level).

Info(cb)​

cb(err, [powerLevel, state]) — current power level (same codes as ForceLevel) and state 1 when DPMS is enabled, 0 when disabled.

Events / errors​

None.

Notes​

  • Reply unpacking uses the generated decoders in lib/generated/dpms-replies.js; results are re-shaped into the positional arrays above for API compatibility.
  • No level constants are attached to the extension object; use the numeric codes (0 On, 1 Standby, 2 Suspend, 3 Off).
  • Some servers are built or started without DPMS (the require callback then gets Error('extension not available')); the test suite skips itself in that case.