foot/client: implement xdga client activation

This is an application of the xdg activation protocol that will allow
compositors to associate new foot toplevels with the command that
launched them.

footclient receives an activation token from the launcher which the
compositor can use to track application startup. It passes the token
to the foot server, which then activates the new window with the token
to complete the startup sequence.
This commit is contained in:
Ronan Pigott 2021-10-28 17:51:44 -07:00
parent 347e79f8a1
commit 99d5bf64bc
9 changed files with 51 additions and 11 deletions

View file

@ -12,15 +12,18 @@ struct client_string {
struct client_data {
bool hold:1;
bool no_wait:1;
uint8_t reserved:6;
bool xdga_token:1;
uint8_t reserved:5;
uint8_t token_len;
uint16_t cwd_len;
uint16_t override_count;
uint16_t argc;
/* char cwd[static cwd_len]; */
/* char token[static token_len]; */
/* struct client_string overrides[static override_count]; */
/* struct client_string argv[static argc]; */
} __attribute__((packed));
_Static_assert(sizeof(struct client_data) == 7, "protocol struct size error");
_Static_assert(sizeof(struct client_data) == 8, "protocol struct size error");