commit db1e571082a915e3c724015e8d0a9ec0c8378a0d
parent b8e91b6164007f305727034ae20722d078c21dba
Author: Samuel Dudik <samuel.dudik@gmail.com>
Date: Thu, 30 Jul 2020 14:41:01 +0200
Add timeout functionality
Diffstat:
M | main.c | | | 40 | +++++++++++++++++++++++++++++----------- |
1 file changed, 29 insertions(+), 11 deletions(-)
diff --git a/main.c b/main.c
@@ -2,13 +2,28 @@
#include <X11/Xft/Xft.h>
#include <stdio.h>
#include <stdlib.h>
+#include <signal.h>
+#include <unistd.h>
#include "config.h"
-int main(int argc, char *argv[])
+Display *display;
+Window window;
+
+void expire()
{
- Display *display = XOpenDisplay(NULL);
XEvent event;
+ event.type = ButtonPress;
+ XSendEvent(display, window, 0, 0, &event);
+ XFlush(display);
+}
+
+int main(int argc, char *argv[])
+{
+ signal(SIGALRM, expire);
+ alarm(duration);
+
+ display = XOpenDisplay(NULL);
if (display == NULL)
{
@@ -36,17 +51,18 @@ int main(int argc, char *argv[])
unsigned short x = pos_x;
unsigned short y = pos_y;
int height = font->ascent - font->descent + text_padding * 2;
- switch (corner) {
- case down_right:
- y = window_height - height - border_size * 2 - pos_y;
- case top_right:
- x = window_width - width - border_size * 2 - pos_x;
- break;
- case down_left:
- y = window_height - height - border_size * 2 - pos_y;
+ switch (corner)
+ {
+ case down_right:
+ y = window_height - height - border_size * 2 - pos_y;
+ case top_right:
+ x = window_width - width - border_size * 2 - pos_x;
+ break;
+ case down_left:
+ y = window_height - height - border_size * 2 - pos_y;
}
- Window window = XCreateWindow(
+ window = XCreateWindow(
display, root, x,
y, width, height, border_size,
DefaultDepth(display, screen), CopyFromParent,
@@ -62,6 +78,8 @@ int main(int argc, char *argv[])
// TODO free xftcolor
+ XEvent event;
+
while (1)
{
XNextEvent(display, &event);