mirror of
https://github.com/swaywm/sway.git
synced 2026-05-03 06:46:26 -04:00
Criteria improvements
Adds support for the following criteria tokens: id (X11 window ID), instance, tiling, workspace. Ensures each view will only execute a criteria once, by storing a list of executed criteria in the view. This is the same strategy used by i3. This also adds a check for criteria when an xwayland view changes its title, class, instance or window type.
This commit is contained in:
parent
73cc92213f
commit
e9fe1141e6
6 changed files with 171 additions and 28 deletions
|
|
@ -20,11 +20,15 @@ enum sway_view_prop {
|
|||
VIEW_PROP_APP_ID,
|
||||
VIEW_PROP_CLASS,
|
||||
VIEW_PROP_INSTANCE,
|
||||
VIEW_PROP_WINDOW_TYPE,
|
||||
VIEW_PROP_WINDOW_ROLE,
|
||||
VIEW_PROP_X11_WINDOW_ID,
|
||||
};
|
||||
|
||||
struct sway_view_impl {
|
||||
const char *(*get_prop)(struct sway_view *view,
|
||||
const char *(*get_string_prop)(struct sway_view *view,
|
||||
enum sway_view_prop prop);
|
||||
uint32_t (*get_int_prop)(struct sway_view *view, enum sway_view_prop prop);
|
||||
void (*configure)(struct sway_view *view, double ox, double oy, int width,
|
||||
int height);
|
||||
void (*set_activated)(struct sway_view *view, bool activated);
|
||||
|
|
@ -52,6 +56,8 @@ struct sway_view {
|
|||
enum sway_container_border border;
|
||||
int border_thickness;
|
||||
|
||||
list_t *executed_criteria;
|
||||
|
||||
union {
|
||||
struct wlr_xdg_surface_v6 *wlr_xdg_surface_v6;
|
||||
struct wlr_xwayland_surface *wlr_xwayland_surface;
|
||||
|
|
@ -91,6 +97,9 @@ struct sway_xwayland_view {
|
|||
struct wl_listener request_maximize;
|
||||
struct wl_listener request_configure;
|
||||
struct wl_listener request_fullscreen;
|
||||
struct wl_listener set_title;
|
||||
struct wl_listener set_class;
|
||||
struct wl_listener set_window_type;
|
||||
struct wl_listener map;
|
||||
struct wl_listener unmap;
|
||||
struct wl_listener destroy;
|
||||
|
|
@ -165,6 +174,12 @@ const char *view_get_class(struct sway_view *view);
|
|||
|
||||
const char *view_get_instance(struct sway_view *view);
|
||||
|
||||
uint32_t view_get_x11_window_id(struct sway_view *view);
|
||||
|
||||
uint32_t view_get_window_type(struct sway_view *view);
|
||||
|
||||
uint32_t view_get_window_role(struct sway_view *view);
|
||||
|
||||
const char *view_get_type(struct sway_view *view);
|
||||
|
||||
void view_configure(struct sway_view *view, double ox, double oy, int width,
|
||||
|
|
@ -217,4 +232,10 @@ void view_child_destroy(struct sway_view_child *child);
|
|||
*/
|
||||
void view_update_title(struct sway_view *view, bool force);
|
||||
|
||||
/**
|
||||
* Run any criteria that match the view and haven't been run on this view
|
||||
* before.
|
||||
*/
|
||||
void view_execute_criteria(struct sway_view *view);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue