main: do a theme toggle upon receiving SIGUSR1

Caveat: in server mode, *all* instances toggle their themes.
This commit is contained in:
Daniel Eklöf 2025-06-09 07:38:26 +02:00
parent 33eefa7b45
commit d9675a7140
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 19 additions and 0 deletions

View file

@ -73,6 +73,8 @@
`key-bindings.color-theme-toggle` key bindings. These can be used to
switch between the primary and alternative color themes. They are
not bound by default.
* Sending `SIGUSR1` to the foot process now triggers a theme switch
(in server mode, **all** instances toggles their themes).
* Support for private mode 2031 - [_Dark and Light Mode
Detection_](https://contour-terminal.org/vt-extensions/color-palette-update-notifications/)
([#2025][2025])

17
main.c
View file

@ -45,6 +45,19 @@ fdm_sigint(struct fdm *fdm, int signo, void *data)
return true;
}
static bool
fdm_sigusr1(struct fdm *fdm, int signo, void *data)
{
struct wayland *wayl = data;
tll_foreach(wayl->terms, it) {
struct terminal *term = it->item;
term_theme_toggle(term);
}
return true;
}
static void
print_usage(const char *prog_name)
{
@ -608,6 +621,9 @@ main(int argc, char *const *argv)
goto out;
}
if (!fdm_signal_add(fdm, SIGUSR1, &fdm_sigusr1, wayl))
goto out;
struct sigaction sig_ign = {.sa_handler = SIG_IGN};
sigemptyset(&sig_ign.sa_mask);
if (sigaction(SIGHUP, &sig_ign, NULL) < 0 ||
@ -643,6 +659,7 @@ out:
wayl_destroy(wayl);
key_binding_manager_destroy(key_binding_manager);
reaper_destroy(reaper);
fdm_signal_del(fdm, SIGUSR1);
fdm_signal_del(fdm, SIGTERM);
fdm_signal_del(fdm, SIGINT);
fdm_destroy(fdm);