mirror of
https://github.com/swaywm/sway.git
synced 2025-11-16 06:59:49 -05:00
Impliment i3-style marks
This commit adds three commands to sway: `show_marks`, `mark` and `unmark`. Marks are displayed right-aligned in the window border as i3 does. Marks may be found using criteria. Fixes #1007
This commit is contained in:
parent
ab7570d311
commit
2445d27960
12 changed files with 189 additions and 0 deletions
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
enum criteria_type { // *must* keep in sync with criteria_strings[]
|
||||
CRIT_CLASS,
|
||||
CRIT_CON_MARK,
|
||||
CRIT_ID,
|
||||
CRIT_INSTANCE,
|
||||
CRIT_TITLE,
|
||||
|
|
@ -25,6 +26,7 @@ enum criteria_type { // *must* keep in sync with criteria_strings[]
|
|||
// this *must* match the ordering in criteria_type enum
|
||||
static const char * const criteria_strings[] = {
|
||||
"class",
|
||||
"con_mark",
|
||||
"id",
|
||||
"instance",
|
||||
"title",
|
||||
|
|
@ -243,6 +245,10 @@ ect_cleanup:
|
|||
return error;
|
||||
}
|
||||
|
||||
int regex_cmp(const char *item, const regex_t *regex) {
|
||||
return regexec(regex, item, 0, NULL, 0);
|
||||
}
|
||||
|
||||
// test a single view if it matches list of criteria tokens (all of them).
|
||||
static bool criteria_test(swayc_t *cont, list_t *tokens) {
|
||||
if (cont->type != C_VIEW) {
|
||||
|
|
@ -264,6 +270,11 @@ static bool criteria_test(swayc_t *cont, list_t *tokens) {
|
|||
matches++;
|
||||
}
|
||||
break;
|
||||
case CRIT_CON_MARK:
|
||||
if (crit->regex && cont->marks && (list_seq_find(cont->marks, (int (*)(const void *, const void *))regex_cmp, crit->regex) != -1)) {
|
||||
++matches;
|
||||
}
|
||||
break;
|
||||
case CRIT_ID:
|
||||
if (!cont->app_id) {
|
||||
// ignore
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue