diff options
author | Tony Crisci <tony@dubstepdish.com> | 2017-12-03 10:49:13 -0500 |
---|---|---|
committer | Tony Crisci <tony@dubstepdish.com> | 2017-12-03 10:49:13 -0500 |
commit | 59db38ce17e04b19c25e06f0fd3622b2adace99f (patch) | |
tree | ad0664df06b1fd158605a5f4a26789634b9aaf5b | |
parent | b6f4120afc85f0df301a6823b8d8bca08d367fda (diff) | |
download | sway-59db38ce17e04b19c25e06f0fd3622b2adace99f.tar.xz |
sway wl_shell
-rw-r--r-- | include/sway/server.h | 1 | ||||
-rw-r--r-- | include/sway/view.h | 5 | ||||
-rw-r--r-- | sway/desktop/wl_shell.c | 30 |
3 files changed, 34 insertions, 2 deletions
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 <stdbool.h> +#include <stdlib.h> +#include <wayland-server.h> +#include <wlr/types/wlr_wl_shell.h> +#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; + } +} + |