OK, controllare xset source code. Le parti di codice rilevanti sono
#include <X11/extensions/dpms.h>
...
Display* dpy = XOpenDisplay(NULL);
...
int dummy;
CARD16 standby, suspend, off;
BOOL onoff;
CARD16 state;
printf("DPMS (Energy Star):\n");
if (DPMSQueryExtension(dpy, &dummy, &dummy))
{
if (DPMSCapable(dpy))
{
DPMSGetTimeouts(dpy, &standby, &suspend, &off);
printf (" Standby: %d Suspend: %d Off: %d\n",
standby, suspend, off);
DPMSInfo(dpy, &state, &onoff);
if (onoff)
{
printf(" DPMS is Enabled\n");
switch (state)
{
case DPMSModeOn:
printf(" Monitor is On\n");
break;
case DPMSModeStandby:
printf(" Monitor is in Standby\n");
break;
case DPMSModeSuspend:
printf(" Monitor is in Suspend\n");
break;
case DPMSModeOff:
printf(" Monitor is Off\n");
break;
default:
printf(" Unrecognized response from server\n");
}
}
}
}
Solo nel caso qualcuno altro ha bisogno di questo ;-)
fonte
2010-10-02 05:05:30
Grazie, questo è il trucco. Non è la soluzione più elegante, ma il controllo dell'output per "Monitor è acceso/spento" funziona. –
Questo va bene, ma si basa su un server X disponibile. Se hai solo una console (cosa rara di questi tempi, ammettiamolo), non funzionerà. – Gabe
Nel mio caso va bene. Gestisco un browser Gtk-WebKit a schermo intero che fa filtrare la memoria come un setaccio, quindi dopo che lo schermo è stato spento per un po 'posso tranquillamente uccidere e riavviare il browser ;-) Ovviamente sarebbe bello non avere quelle perdite in primo luogo ... –