mirror of
https://github.com/swaywm/sway.git
synced 2024-12-27 07:26:55 +01:00
i3 compat: Adding support for the all
criteria
Matches all views. i3 PR: https://github.com/i3/i3/pull/4460 Fixes #7110
This commit is contained in:
parent
3dd2f4a67f
commit
d952ce403e
3 changed files with 14 additions and 3 deletions
|
@ -43,6 +43,7 @@ struct criteria {
|
|||
struct pattern *window_role;
|
||||
enum atom_name window_type;
|
||||
#endif
|
||||
bool all;
|
||||
bool floating;
|
||||
bool tiling;
|
||||
char urgent; // 'l' for latest or 'o' for oldest
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
bool criteria_is_empty(struct criteria *criteria) {
|
||||
return !criteria->title
|
||||
&& !criteria->shell
|
||||
&& !criteria->all
|
||||
&& !criteria->app_id
|
||||
&& !criteria->con_mark
|
||||
&& !criteria->con_id
|
||||
|
@ -456,6 +457,7 @@ static enum atom_name parse_window_type(const char *type) {
|
|||
#endif
|
||||
|
||||
enum criteria_token {
|
||||
T_ALL,
|
||||
T_APP_ID,
|
||||
T_CON_ID,
|
||||
T_CON_MARK,
|
||||
|
@ -478,7 +480,9 @@ enum criteria_token {
|
|||
};
|
||||
|
||||
static enum criteria_token token_from_name(char *name) {
|
||||
if (strcmp(name, "app_id") == 0) {
|
||||
if (strcmp(name, "all") == 0) {
|
||||
return T_ALL;
|
||||
} else if (strcmp(name, "app_id") == 0) {
|
||||
return T_APP_ID;
|
||||
} else if (strcmp(name, "con_id") == 0) {
|
||||
return T_CON_ID;
|
||||
|
@ -524,8 +528,8 @@ static bool parse_token(struct criteria *criteria, char *name, char *value) {
|
|||
return false;
|
||||
}
|
||||
|
||||
// Require value, unless token is floating or tiled
|
||||
if (!value && token != T_FLOATING && token != T_TILING) {
|
||||
// Require value, unless token is all, floating or tiled
|
||||
if (!value && token != T_ALL && token != T_FLOATING && token != T_TILING) {
|
||||
const char *fmt = "Token '%s' requires a value";
|
||||
int len = strlen(fmt) + strlen(name) - 1;
|
||||
error = malloc(len);
|
||||
|
@ -535,6 +539,9 @@ static bool parse_token(struct criteria *criteria, char *name, char *value) {
|
|||
|
||||
char *endptr = NULL;
|
||||
switch (token) {
|
||||
case T_ALL:
|
||||
criteria->all = true;
|
||||
break;
|
||||
case T_TITLE:
|
||||
pattern_create(&criteria->title, value);
|
||||
break;
|
||||
|
|
|
@ -962,6 +962,9 @@ properties in practice for your applications.
|
|||
|
||||
The following attributes may be matched with:
|
||||
|
||||
*all*
|
||||
Matches all windows.
|
||||
|
||||
*app_id*
|
||||
Compare value against the app id. Can be a regular expression. If value is
|
||||
\_\_focused\_\_, then the app id must be the same as that of the currently
|
||||
|
|
Loading…
Reference in a new issue