This allows to reject focus requests from specific applications.
*skipWindowSwitcher* removes window from the Window Switcher (alt-tab
on-screen-display)
+*<windowRules><windowRule ignoreFocusRequest="">* [yes|no|default]
+ *ignoreFocusRequest* prevent window to activate itself.
+
## ENVIRONMENT VARIABLES
*XCURSOR_THEME* and *XCURSOR_SIZE* are supported to set cursor theme
enum property server_decoration;
enum property skip_taskbar;
enum property skip_window_switcher;
+ enum property ignore_focus_request;
struct wl_list link; /* struct rcxml.window_rules */
};
set_property(content, ¤t_window_rule->skip_taskbar);
} else if (!strcasecmp(nodename, "skipWindowSwitcher")) {
set_property(content, ¤t_window_rule->skip_window_switcher);
+ } else if (!strcasecmp(nodename, "ignoreFocusRequest")) {
+ set_property(content, ¤t_window_rule->ignore_focus_request);
/* Actions */
} else if (!strcmp(nodename, "name.action")) {
&& !strcasecmp(property, "skipWindowSwitcher")) {
return rule->skip_window_switcher;
}
+ if (rule->ignore_focus_request
+ && !strcasecmp(property, "ignoreFocusRequest")) {
+ return rule->ignore_focus_request;
+ }
}
}
return LAB_PROP_UNSPECIFIED;
* for the seat / serial being correct and then allow the request.
*/
+ if (window_rules_get_property(view, "ignoreFocusRequest") == LAB_PROP_TRUE) {
+ wlr_log(WLR_INFO, "Ignoring focus request due to window rule configuration");
+ return;
+ }
+
/*
* TODO: This is the exact same code as used in foreign.c.
* Refactor it into a public helper function somewhere.
struct xwayland_view *xwayland_view =
wl_container_of(listener, xwayland_view, request_activate);
struct view *view = &xwayland_view->base;
+
+ if (window_rules_get_property(view, "ignoreFocusRequest") == LAB_PROP_TRUE) {
+ wlr_log(WLR_INFO, "Ignoring focus request due to window rule configuration");
+ return;
+ }
+
desktop_focus_and_activate_view(&view->server->seat, view);
view_move_to_front(view);
}