2
#include <X11/extensions/Xrandr.h>
6
int main( int argc, char* argv[] )
8
Display* dpy = XOpenDisplay( NULL );
9
XSetWindowAttributes attrs;
10
Window w = XCreateWindow( dpy, DefaultRootWindow( dpy ), 0, 0, 100, 100, 0, CopyFromParent, CopyFromParent,
11
CopyFromParent, 0, &attrs );
12
// XMapWindow( dpy, w );
14
if( !XRRQueryExtension( dpy, &base, &error ))
18
if( !XRRQueryVersion( dpy, &major, &minor ) || major < 1 || (major == 1 && minor < 2 ))
20
XRRSelectInput( dpy, w,
21
RRScreenChangeNotifyMask | RRCrtcChangeNotifyMask | RROutputChangeNotifyMask | RROutputPropertyNotifyMask );
29
// XRRFreeScreenResources(XRRGetScreenResources( dpy, w ));
30
XRRGetScreenSizeRange( dpy, w, &a, &b, &c, &d );
31
// XSync( dpy, False );
37
XNextEvent( dpy, &ev );
38
if( ev.xany.type == base + RRScreenChangeNotify )
40
printf( "Screen Change\n" );
42
if( ev.xany.type == base + RRNotify )
44
XRRNotifyEvent* e = reinterpret_cast< XRRNotifyEvent* >( &ev );
47
case RRNotify_CrtcChange:
48
printf( "Crtc Change\n" );
50
case RRNotify_OutputChange:
51
printf( "Output Change\n" );
53
case RRNotify_OutputProperty:
54
printf( "Output Property Change\n" );
57
printf( "Unknown Notify\n" );