mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-05 04:06:08 -05:00
This patch adds the IPC infrastructure necessary to propagate SIGUSR1/SIGUSR2 from a footclient process to the server process. By targeting a particular footclient instance, only that particular instance changes theme. This is different from when targeting the server process, where all instances change theme. Closes #2156
45 lines
955 B
C
45 lines
955 B
C
#pragma once
|
|
|
|
#include <stdint.h>
|
|
#include <stdbool.h>
|
|
#include <stddef.h>
|
|
|
|
struct client_string {
|
|
uint16_t len;
|
|
/* char str[static len]; */
|
|
};
|
|
|
|
struct client_data {
|
|
bool hold:1;
|
|
bool no_wait:1;
|
|
bool xdga_token:1;
|
|
uint8_t reserved:5;
|
|
|
|
uint8_t token_len;
|
|
uint16_t cwd_len;
|
|
uint16_t override_count;
|
|
uint16_t argc;
|
|
uint16_t env_count;
|
|
|
|
/* char cwd[static cwd_len]; */
|
|
/* char token[static token_len]; */
|
|
/* struct client_string overrides[static override_count]; */
|
|
/* struct client_string argv[static argc]; */
|
|
/* struct client_string envp[static env_count]; */
|
|
} __attribute__((packed));
|
|
|
|
_Static_assert(sizeof(struct client_data) == 10, "protocol struct size error");
|
|
|
|
enum client_ipc_code {
|
|
FOOT_IPC_SIGUSR,
|
|
};
|
|
|
|
struct client_ipc_hdr {
|
|
enum client_ipc_code ipc_code;
|
|
uint8_t size;
|
|
} __attribute__((packed));
|
|
|
|
|
|
struct client_ipc_sigusr {
|
|
int signo;
|
|
} __attribute__((packed));
|