diff --git a/include/sway/server.h b/include/sway/server.h index b0684d15..1901e39f 100644 --- a/include/sway/server.h +++ b/include/sway/server.h @@ -42,5 +42,6 @@ void output_add_notify(struct wl_listener *listener, void *data); void output_remove_notify(struct wl_listener *listener, void *data); void handle_xdg_shell_v6_surface(struct wl_listener *listener, void *data); +void handle_wl_shell_surface(struct wl_listener *listener, void *data); #endif diff --git a/include/sway/view.h b/include/sway/view.h index 2707ca78..77d451e5 100644 --- a/include/sway/view.h +++ b/include/sway/view.h @@ -29,9 +29,8 @@ enum sway_view_type { enum sway_view_prop { VIEW_PROP_TITLE, - VIEW_PROP_CLASS, - VIEW_PROP_INSTANCE, VIEW_PROP_APP_ID, + VIEW_PROP_INSTANCE, }; /** @@ -46,10 +45,12 @@ struct sway_view { union { struct wlr_xdg_surface_v6 *wlr_xdg_surface_v6; + struct wlr_wl_shell_surface *wlr_wl_shell_surface; }; union { struct sway_xdg_surface_v6 *sway_xdg_surface_v6; + struct sway_wl_shell_surface *sway_wl_shell_surface; }; struct { diff --git a/sway/desktop/wl_shell.c b/sway/desktop/wl_shell.c new file mode 100644 index 00000000..8bfa605e --- /dev/null +++ b/sway/desktop/wl_shell.c @@ -0,0 +1,30 @@ +#define _POSIX_C_SOURCE 199309L +#include +#include +#include +#include +#include "sway/container.h" +#include "sway/layout.h" +#include "sway/server.h" +#include "sway/view.h" +#include "log.h" + +static bool assert_wl_shell(struct sway_view *view) { + return sway_assert(view->type == SWAY_WL_SHELL_VIEW, + "Expecting wl_shell view!"); +} + +static const char *get_prop(struct sway_view *view, enum sway_view_prop prop) { + if (!assert_wl_shell(view)) { + return NULL; + } + switch (prop) { + case VIEW_PROP_TITLE: + return view->wlr_wl_shell_surface->title; + case VIEW_PROP_APP_ID: + return view->wlr_wl_shell_surface->class; + default: + return NULL; + } +} +