ltk

Socket-based GUI for X11 (WIP)
git clone git://lumidify.org/ltk.git (fast, but not encrypted)
git clone https://lumidify.org/git/ltk.git (encrypted, but very slow)
Log | Files | Refs | README | LICENSE

commit 8427dcdb18de419d9d158dfa8eeedefe5baafc61
parent b0116ddb464d93adf3eeb2cd64f8ac9920cfc443
Author: lumidify <nobody@lumidify.org>
Date:   Tue,  2 Jun 2020 18:56:19 +0200

Read from stdin instead of FIFO

Diffstat:
Mltk.c | 27+++++++++++----------------
Atest.gui | 4++++
Dtest.sh | 6------
3 files changed, 15 insertions(+), 22 deletions(-)

diff --git a/ltk.c b/ltk.c @@ -206,30 +206,26 @@ proc_cmds(ltk_window *window, char *buf) { } } -/* copied from suckless st */ -#define TIMEDIFF(t1, t2) ((t1.tv_sec-t2.tv_sec)*1000 + \ - (t1.tv_nsec-t2.tv_nsec)/1E6) - /* FIXME: destroy remaining widgets in hash on exit */ int ltk_mainloop(ltk_window *window) { XEvent event; - int fd_in; struct stat st; struct timespec tick; + struct timeval tv; + fd_set rfds; + int fd_in = fileno(stdin); + char buf[200]; /* FIXME: what would be sensible? */ + int retval; tick.tv_sec = 0; tick.tv_nsec = 10000; - char buf[200]; /* FIXME: what would be sensible? */ - - if (lstat("ltk_in", &st) != -1) { - /* FIXME... */ - unlink("ltk_in"); - } + tv.tv_sec = 0; + tv.tv_usec = 0; - if (mkfifo("ltk_in", S_IRWXU)) return -1; - fd_in = open("ltk_in", O_RDONLY | O_NONBLOCK, 0); - if (fd_in == -1) return -1; while (running) { + FD_ZERO(&rfds); + FD_SET(fd_in, &rfds); + retval = select(fd_in + 1, &rfds, NULL, NULL, &tv); while (XPending(window->dpy)) { XNextEvent(window->dpy, &event); ltk_handle_event(window, event); @@ -250,14 +246,13 @@ ltk_mainloop(ltk_window *window) { free(last); } while (cur); window->first_event = window->last_event = NULL; - } else if (!read_line(fd_in, buf, sizeof(buf))) { + } else if (retval != -1 && retval != 0 && !read_line(fd_in, buf, sizeof(buf))) { proc_cmds(window, buf); } /* yes, this should be improved */ nanosleep(&tick, NULL); } - unlink("ltk_in"); } void diff --git a/test.gui b/test.gui @@ -0,0 +1,4 @@ +create button btn1 +grid btn1 0 0 +create button btn2 +grid btn2 1 1 diff --git a/test.sh b/test.sh @@ -1,6 +0,0 @@ -#!/bin/sh - -echo "create button btn1" > ltk_in -echo "grid btn1 0 0" > ltk_in -echo "create button btn2" > ltk_in -echo "grid btn2 1 1" > ltk_in