#ifndef _SWAY_ROOT_H #define _SWAY_ROOT_H #include #include #include #include #include "sway/tree/container.h" #include "config.h" #include "list.h" extern struct sway_container root_container; struct sway_root { struct wlr_output_layout *output_layout; struct wl_listener output_layout_change; #ifdef HAVE_XWAYLAND struct wl_list xwayland_unmanaged; // sway_xwayland_unmanaged::link #endif struct wl_list drag_icons; // sway_drag_icon::link struct wlr_texture *debug_tree; struct wl_list all_outputs; // sway_output::link list_t *scratchpad; // struct sway_container list_t *saved_workspaces; // For when there's no connected outputs struct { struct wl_signal new_container; } events; }; void root_create(void); void root_destroy(void); /** * Move a container to the scratchpad. */ void root_scratchpad_add_container(struct sway_container *con); /** * Remove a container from the scratchpad. */ void root_scratchpad_remove_container(struct sway_container *con); /** * Show a single scratchpad container. */ void root_scratchpad_show(struct sway_container *con); /** * Hide a single scratchpad container. */ void root_scratchpad_hide(struct sway_container *con); struct sway_container *root_workspace_for_pid(pid_t pid); void root_record_workspace_pid(pid_t pid); void root_for_each_workspace(void (*f)(struct sway_container *con, void *data), void *data); void root_for_each_container(void (*f)(struct sway_container *con, void *data), void *data); struct sway_container *root_find_output( bool (*test)(struct sway_container *con, void *data), void *data); struct sway_container *root_find_workspace( bool (*test)(struct sway_container *con, void *data), void *data); struct sway_container *root_find_container( bool (*test)(struct sway_container *con, void *data), void *data); #endif