X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=i3bar%2Finclude%2Fchild.h;h=9479fac1df8bdfecd0c005000bfd76b7dd10a6e5;hb=161db6f17d734ac9deb0a20e81b78d4b2a92ce68;hp=2622b3b0ed647ea9c7bc04b19f0f719221cc8175;hpb=8d09ed7bf53ebf39c8139146465c520e2edc0837;p=i3%2Fi3 diff --git a/i3bar/include/child.h b/i3bar/include/child.h index 2622b3b0..9479fac1 100644 --- a/i3bar/include/child.h +++ b/i3bar/include/child.h @@ -1,18 +1,49 @@ /* - * i3bar - an xcb-based status- and ws-bar for i3 + * vim:ts=4:sw=4:expandtab * - * © 2010-2011 Axel Wagner and contributors + * i3bar - an xcb-based status- and ws-bar for i3 + * © 2010 Axel Wagner and contributors (see also: LICENSE) * - * See file LICNSE for license information + * child.c: Getting input for the statusline * */ -#ifndef CHILD_H_ -#define CHILD_H_ +#pragma once + +#include + +#include #define STDIN_CHUNK_SIZE 1024 +typedef struct { + pid_t pid; + + /** + * The version number is an uint32_t to avoid machines with different sizes of + * 'int' to allow different values here. It’s highly unlikely we ever exceed + * even an int8_t, but still… + */ + uint32_t version; + + bool stopped; + /** + * The signal requested by the client to inform it of the hidden state of i3bar + */ + int stop_signal; + /** + * The signal requested by the client to inform it of theun hidden state of i3bar + */ + int cont_signal; + + /** + * Enable click events + */ + bool click_events; + bool click_events_init; +} i3bar_child; + /* - * Start a child-process with the specified command and reroute stdin. + * Start a child process with the specified command and reroute stdin. * We actually start a $SHELL to execute the command so we don't have to care * about arguments and such * @@ -20,22 +51,38 @@ void start_child(char *command); /* - * kill()s the child-prozess (if existend) and closes and - * free()s the stdin- and sigchild-watchers + * kill()s the child process (if any). Called when exit()ing. * */ -void kill_child(); +void kill_child_at_exit(void); /* - * Sends a SIGSTOP to the child-process (if existent) + * kill()s the child process (if any) and closes and + * free()s the stdin- and SIGCHLD-watchers * */ -void stop_child(); +void kill_child(void); /* - * Sends a SIGCONT to the child-process (if existent) + * Sends a SIGSTOP to the child process (if existent) * */ -void cont_child(); +void stop_child(void); -#endif +/* + * Sends a SIGCONT to the child process (if existent) + * + */ +void cont_child(void); + +/* + * Whether or not the child want click events + * + */ +bool child_want_click_events(void); + +/* + * Generates a click event, if enabled. + * + */ +void send_block_clicked(int button, const char *name, const char *instance, int x, int y, int x_rel, int y_rel, int width, int height);