X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=i3bar%2Finclude%2Fchild.h;h=3afed81947efbe4fc2c703b105b768a84b3a4a80;hb=3745e6f4843b638fcc73c3b499bdae4bc6f6132c;hp=0405816d2b52e6abbf237985923c530fc2fd639e;hpb=60da522e13134c46d406fedad095e393f482d797;p=i3%2Fi3 diff --git a/i3bar/include/child.h b/i3bar/include/child.h index 0405816d..3afed819 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 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 the unhidden 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,10 +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); -#endif +/* + * kill()s the child process (if any) and closes and + * free()s the stdin- and SIGCHLD-watchers + * + */ +void kill_child(void); + +/* + * Sends a SIGSTOP to the child process (if existent) + * + */ +void stop_child(void); + +/* + * 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, int mods);