ssd: support window icons

The default `titleLayout` is updated to `icon:iconify,max,close` which
replaces the window menu button with the window icon.

When the icon file is not found or could not be loaded, the window menu
icon as before is shown.

The icon theme can be selected with `<theme><icon>`.

This commit adds libsfdo as an optional dependency. `-Dicon=disabled` can
be passsed to `meson setup` command in order to disable window icon, in
which case the window icon is always replaced with a window menu button.
This commit is contained in:
tokyo4j 2024-09-06 17:00:40 +09:00 committed by Hiroaki Yamamoto
parent b9414d8b8d
commit a745f91169
32 changed files with 452 additions and 142 deletions

View file

@ -73,6 +73,8 @@ struct ssd {
struct ssd_state_title_width active;
struct ssd_state_title_width inactive;
} title;
char *app_id;
} state;
/* An invisible area around the view which allows resizing */
@ -145,6 +147,8 @@ struct ssd_part *add_scene_button(
void add_toggled_icon(struct ssd_button *button, struct wl_list *part_list,
enum ssd_part_type type, struct wlr_buffer *icon_buffer,
struct wlr_buffer *hover_buffer);
void update_window_icon_buffer(struct wlr_scene_node *button_node,
struct wlr_buffer *buffer);
/* SSD internal helpers */
struct ssd_part *ssd_get_part(