i3/i3bar/include/child.h

87 lines
1.7 KiB
C
Raw Normal View History

2010-08-07 12:05:16 -04:00
/*
* vim:ts=4:sw=4:expandtab
2010-08-07 12:05:16 -04:00
*
* i3bar - an xcb-based status- and ws-bar for i3
* © 2010-2012 Axel Wagner and contributors (see also: LICENSE)
2010-08-07 12:05:16 -04:00
*
2015-03-24 08:41:16 -04:00
* child.c: Getting input for the statusline
2010-08-07 12:05:16 -04:00
*
*/
#pragma once
#include <stdbool.h>
#define STDIN_CHUNK_SIZE 1024
2012-09-03 04:23:25 -04:00
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. Its 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;
2012-09-03 04:23:25 -04:00
} i3bar_child;
2010-08-06 20:10:05 -04:00
/*
2015-03-23 15:56:49 -04:00
* Start a child process with the specified command and reroute stdin.
2010-08-06 20:10:05 -04:00
* We actually start a $SHELL to execute the command so we don't have to care
* about arguments and such
*
*/
void start_child(char *command);
2010-08-06 20:10:05 -04:00
/*
2015-03-23 15:56:49 -04:00
* kill()s the child process (if any). Called when exit()ing.
*
*/
void kill_child_at_exit(void);
/*
2015-03-23 15:56:49 -04:00
* kill()s the child process (if any) and closes and
* free()s the stdin- and SIGCHLD-watchers
2010-08-06 20:10:05 -04:00
*
*/
void kill_child(void);
2010-08-25 12:31:03 -04:00
/*
2015-03-23 15:56:49 -04:00
* Sends a SIGSTOP to the child process (if existent)
2010-08-25 12:31:03 -04:00
*
*/
void stop_child(void);
2010-08-25 12:31:03 -04:00
/*
2015-03-23 15:56:49 -04:00
* Sends a SIGCONT to the child process (if existent)
2010-08-25 12:31:03 -04:00
*
*/
void cont_child(void);
2010-08-25 12:31:03 -04:00
/*
* 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);