Add support for the new Wayland protocol xdg-system-bell

From the release notes:

    system bell - allowing e.g. terminal emulators to hand off system
    bell alerts to the compositor for among other things accessibility
    purposes

The new protocol is used when the new config option
bell.system=yes (and the compositor implements the protocol,
obviously).

The system bell is rung independent of whether the foot window has
keyboard focus or not (thus relying on compositor configuration to
determine whether anything should be done or not in response to the
bell).

The new option is enabled by default.
This commit is contained in:
Daniel Eklöf 2025-01-17 10:10:10 +01:00
parent 7e7fd0468d
commit 2a07a2e6b9
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
11 changed files with 91 additions and 11 deletions

View file

@ -24,6 +24,10 @@
#include <xdg-toplevel-icon-v1.h>
#endif
#if defined(HAVE_XDG_SYSTEM_BELL)
#include <xdg-system-bell-v1.h>
#endif
#include <fcft/fcft.h>
#include <tllist.h>
@ -451,6 +455,10 @@ struct wayland {
struct xdg_toplevel_icon_manager_v1 *toplevel_icon_manager;
#endif
#if defined(HAVE_XDG_SYSTEM_BELL)
struct xdg_system_bell_v1 *system_bell;
#endif
bool presentation_timings;
struct wp_presentation *presentation;
uint32_t presentation_clock_id;
@ -492,6 +500,7 @@ void wayl_win_destroy(struct wl_window *win);
void wayl_win_scale(struct wl_window *win, const struct buffer *buf);
void wayl_win_alpha_changed(struct wl_window *win);
bool wayl_win_set_urgent(struct wl_window *win);
bool wayl_win_ring_bell(const struct wl_window *win);
bool wayl_win_csd_titlebar_visible(const struct wl_window *win);
bool wayl_win_csd_borders_visible(const struct wl_window *win);