summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--Makefile7
-rw-r--r--xrandr-notify.c46
3 files changed, 54 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9080e5e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+xrandr-notify
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..a12808a
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,7 @@
+TARGETS:= xrandr-notify
+LDFLAGS:=-lX11 -lXrandr
+
+all: $(TARGETS)
+
+clean:
+ $(RM) $(TARGETS)
diff --git a/xrandr-notify.c b/xrandr-notify.c
new file mode 100644
index 0000000..3c1ad52
--- /dev/null
+++ b/xrandr-notify.c
@@ -0,0 +1,46 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdbool.h>
+
+#include <X11/Xlib.h>
+#include <X11/extensions/Xrandr.h>
+
+int main(int argc, char **argv)
+{
+ Display *dpy;
+ Window root;
+ XEvent event;
+ int dummy, screen, randr_event_base;
+ bool has_randr;
+
+ dpy = XOpenDisplay(NULL);
+ if (dpy == NULL) {
+ fputs("ERROR: Could not open display!\n", stderr);
+ return EXIT_FAILURE;
+ }
+
+ /* Is the randr extension available? */
+ has_randr = false;
+ has_randr = XRRQueryExtension(dpy, &randr_event_base, &dummy);
+
+ if (has_randr) {
+ /* Get root window */
+ screen = DefaultScreen(dpy) ;
+ root = RootWindow(dpy, screen) ;
+
+ /* Notify on configuration change */
+ XRRSelectInput(dpy, root, RRScreenChangeNotifyMask);
+ }
+
+ while (true) {
+ XNextEvent(dpy, &event);
+
+ if (event.type == randr_event_base + RRScreenChangeNotify) {
+ return EXIT_SUCCESS;
+ }
+ }
+
+ /* should never happen */
+ return EXIT_FAILURE;
+}
+