Add support for xdg-session-management-v1

See https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/5321
This commit is contained in:
Simon Ser 2026-04-11 18:19:43 +02:00
parent 1606311553
commit c542c69170
9 changed files with 500 additions and 2 deletions

View file

@ -130,6 +130,12 @@ struct sway_server {
struct wlr_ext_workspace_manager_v1 *workspace_manager_v1;
struct wl_listener workspace_manager_v1_commit;
struct {
char *dir;
FILE *urandom;
struct wl_listener new_session;
} xdg_session_manager_v1;
struct wl_list pending_launcher_ctxs; // launcher_ctx::link
// The timeout for transactions, after which a transaction is applied

View file

@ -59,6 +59,7 @@ struct sway_view_impl {
struct sway_view *ancestor);
void (*close)(struct sway_view *view);
void (*close_popups)(struct sway_view *view);
void (*notify_state_update)(struct sway_view *view);
void (*destroy)(struct sway_view *view);
};
@ -113,6 +114,12 @@ struct sway_view {
#endif
};
struct {
bool pending;
char *workspace;
bool floating;
} session_restore;
struct {
struct wl_signal unmap;
} events;
@ -131,6 +138,12 @@ struct sway_xdg_shell_view {
struct wlr_scene_tree *image_capture_tree;
char *tag;
struct {
struct sway_xdg_session_v1 *session;
char *name;
struct wl_list link; // sway_xdg_session_v1.toplevels
} xdg_session_v1;
struct wl_listener commit;
struct wl_listener request_move;
struct wl_listener request_resize;
@ -366,4 +379,6 @@ bool view_can_tear(struct sway_view *view);
void xdg_toplevel_tag_manager_v1_handle_set_tag(struct wl_listener *listener, void *data);
void view_notify_state_update(struct sway_view *view);
#endif

View file

@ -0,0 +1,12 @@
#ifndef _SWAY_XDG_SESSION_MANAGEMENT_V1_H
#define _SWAY_XDG_SESSION_MANAGEMENT_V1_H
struct sway_xdg_session_v1;
bool init_xdg_session_management_v1(struct sway_server *server);
void finish_xdg_session_management_v1(struct sway_server *server);
void notify_xdg_session_management_v1_toplevel_initial_configure(struct sway_xdg_shell_view *view);
void notify_xdg_session_management_v1_toplevel_update(struct sway_xdg_shell_view *view);
#endif