mirror of
https://github.com/vale981/bspwm
synced 2025-03-05 09:51:38 -05:00
Add {,user}_LAYOUT modifiers to desktop selectors
`.tiled`, `.monocle`, `.user_tiled` and `.user_monocle` can now be used in desktop selectors.
This commit is contained in:
parent
09d86ca86c
commit
853bb73452
5 changed files with 59 additions and 3 deletions
17
doc/bspwm.1
17
doc/bspwm.1
|
@ -4,10 +4,10 @@
|
||||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||||
.\" Date: 09/08/2020
|
.\" Date: 09/08/2020
|
||||||
.\" Manual: Bspwm Manual
|
.\" Manual: Bspwm Manual
|
||||||
.\" Source: Bspwm 0.9.10-8-ge64864b
|
.\" Source: Bspwm 0.9.10-9-gab72002
|
||||||
.\" Language: English
|
.\" Language: English
|
||||||
.\"
|
.\"
|
||||||
.TH "BSPWM" "1" "09/08/2020" "Bspwm 0\&.9\&.10\-8\-ge64864b" "Bspwm Manual"
|
.TH "BSPWM" "1" "09/08/2020" "Bspwm 0\&.9\&.10\-9\-gab72002" "Bspwm Manual"
|
||||||
.\" -----------------------------------------------------------------
|
.\" -----------------------------------------------------------------
|
||||||
.\" * Define some portability stuff
|
.\" * Define some portability stuff
|
||||||
.\" -----------------------------------------------------------------
|
.\" -----------------------------------------------------------------
|
||||||
|
@ -328,6 +328,9 @@ DESKTOP_SEL := [DESKTOP_SEL#](CYCLE_DIR|any|last|newest|older|newer|
|
||||||
[MONITOR_SEL:](focused|^<n>)|
|
[MONITOR_SEL:](focused|^<n>)|
|
||||||
<desktop_id>|<desktop_name>)[\&.[!]focused][\&.[!]active]
|
<desktop_id>|<desktop_name>)[\&.[!]focused][\&.[!]active]
|
||||||
[\&.[!]occupied][\&.[!]urgent][\&.[!]local]
|
[\&.[!]occupied][\&.[!]urgent][\&.[!]local]
|
||||||
|
[\&.[!]LAYOUT][\&.[!]user_LAYOUT]
|
||||||
|
|
||||||
|
LAYOUT := tiled|monocle
|
||||||
.fi
|
.fi
|
||||||
.if n \{\
|
.if n \{\
|
||||||
.RE
|
.RE
|
||||||
|
@ -426,6 +429,16 @@ Only consider urgent desktops\&.
|
||||||
.RS 4
|
.RS 4
|
||||||
Only consider desktops inside the reference monitor\&.
|
Only consider desktops inside the reference monitor\&.
|
||||||
.RE
|
.RE
|
||||||
|
.PP
|
||||||
|
[!](tiled|monocle)
|
||||||
|
.RS 4
|
||||||
|
Only consider desktops with the given layout\&.
|
||||||
|
.RE
|
||||||
|
.PP
|
||||||
|
[!](user_tiled|user_monocle)
|
||||||
|
.RS 4
|
||||||
|
Only consider desktops which have the given layout as userLayout\&.
|
||||||
|
.RE
|
||||||
.RE
|
.RE
|
||||||
.SS "Monitor"
|
.SS "Monitor"
|
||||||
.sp
|
.sp
|
||||||
|
|
|
@ -211,6 +211,9 @@ DESKTOP_SEL := [DESKTOP_SEL#](CYCLE_DIR|any|last|newest|older|newer|
|
||||||
[MONITOR_SEL:](focused|^<n>)|
|
[MONITOR_SEL:](focused|^<n>)|
|
||||||
<desktop_id>|<desktop_name>)[.[!]focused][.[!]active]
|
<desktop_id>|<desktop_name>)[.[!]focused][.[!]active]
|
||||||
[.[!]occupied][.[!]urgent][.[!]local]
|
[.[!]occupied][.[!]urgent][.[!]local]
|
||||||
|
[.[!]LAYOUT][.[!]user_LAYOUT]
|
||||||
|
|
||||||
|
LAYOUT := tiled|monocle
|
||||||
----
|
----
|
||||||
|
|
||||||
Descriptors
|
Descriptors
|
||||||
|
@ -264,6 +267,12 @@ Modifiers
|
||||||
[!]local::
|
[!]local::
|
||||||
Only consider desktops inside the reference monitor.
|
Only consider desktops inside the reference monitor.
|
||||||
|
|
||||||
|
[!](tiled|monocle)::
|
||||||
|
Only consider desktops with the given layout.
|
||||||
|
|
||||||
|
[!](user_tiled|user_monocle)::
|
||||||
|
Only consider desktops which have the given layout as userLayout.
|
||||||
|
|
||||||
Monitor
|
Monitor
|
||||||
~~~~~~~
|
~~~~~~~
|
||||||
|
|
||||||
|
|
|
@ -503,6 +503,10 @@ bool parse_desktop_modifiers(char *desc, desktop_select_t *sel)
|
||||||
GET_MOD(active)
|
GET_MOD(active)
|
||||||
GET_MOD(urgent)
|
GET_MOD(urgent)
|
||||||
GET_MOD(local)
|
GET_MOD(local)
|
||||||
|
GET_MOD(tiled)
|
||||||
|
GET_MOD(monocle)
|
||||||
|
GET_MOD(user_tiled)
|
||||||
|
GET_MOD(user_monocle)
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
28
src/query.c
28
src/query.c
|
@ -511,7 +511,11 @@ desktop_select_t make_desktop_select(void)
|
||||||
.focused = OPTION_NONE,
|
.focused = OPTION_NONE,
|
||||||
.active = OPTION_NONE,
|
.active = OPTION_NONE,
|
||||||
.urgent = OPTION_NONE,
|
.urgent = OPTION_NONE,
|
||||||
.local = OPTION_NONE
|
.local = OPTION_NONE,
|
||||||
|
.tiled = OPTION_NONE,
|
||||||
|
.monocle = OPTION_NONE,
|
||||||
|
.user_tiled = OPTION_NONE,
|
||||||
|
.user_monocle = OPTION_NONE
|
||||||
};
|
};
|
||||||
return sel;
|
return sel;
|
||||||
}
|
}
|
||||||
|
@ -1240,6 +1244,28 @@ bool desktop_matches(coordinates_t *loc, coordinates_t *ref, desktop_select_t *s
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define DLAYOUT(p, e) \
|
||||||
|
if (sel->p != OPTION_NONE && \
|
||||||
|
loc->desktop->layout != e \
|
||||||
|
? sel->p == OPTION_TRUE \
|
||||||
|
: sel->p == OPTION_FALSE) { \
|
||||||
|
return false; \
|
||||||
|
}
|
||||||
|
DLAYOUT(tiled, LAYOUT_TILED)
|
||||||
|
DLAYOUT(monocle, LAYOUT_MONOCLE)
|
||||||
|
#undef DLAYOUT
|
||||||
|
|
||||||
|
#define DUSERLAYOUT(p, e) \
|
||||||
|
if (sel->p != OPTION_NONE && \
|
||||||
|
loc->desktop->user_layout != e \
|
||||||
|
? sel->p == OPTION_TRUE \
|
||||||
|
: sel->p == OPTION_FALSE) { \
|
||||||
|
return false; \
|
||||||
|
}
|
||||||
|
DUSERLAYOUT(user_tiled, LAYOUT_TILED)
|
||||||
|
DUSERLAYOUT(user_monocle, LAYOUT_MONOCLE)
|
||||||
|
#undef DUSERLAYOUT
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -193,6 +193,10 @@ typedef struct {
|
||||||
option_bool_t active;
|
option_bool_t active;
|
||||||
option_bool_t urgent;
|
option_bool_t urgent;
|
||||||
option_bool_t local;
|
option_bool_t local;
|
||||||
|
option_bool_t tiled;
|
||||||
|
option_bool_t monocle;
|
||||||
|
option_bool_t user_tiled;
|
||||||
|
option_bool_t user_monocle;
|
||||||
} desktop_select_t;
|
} desktop_select_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
Loading…
Add table
Reference in a new issue