| dwm-qubesrules-6.3.diff - sites - public wiki contents of suckless.org | |
| git clone git://git.suckless.org/sites | |
| Log | |
| Files | |
| Refs | |
| --- | |
| dwm-qubesrules-6.3.diff (2398B) | |
| --- | |
| 1 From: 3o14r473 <[email protected]> E4FE E61C 3B02 F4CA B6D8 0CA7 F105 757D 34B… | |
| 2 Donate: monero:41rMoMLvk8hEJYP2vbv3dNUGzN95CLXoANAtmAVaUxzse5KfPjhkE7d4P… | |
| 3 Subject: [PATCH] dwm-qubesrules-6.3.diff | |
| 4 | |
| 5 This patch allows dwm to use QubesOS-specific | |
| 6 window properties, _QUBES_LABEL and _QUBES_VMNAME, in its rulematching. | |
| 7 | |
| 8 It needs to be applied on top of the qubesdecorations patch. | |
| 9 --- | |
| 10 config.def.h | 8 +++++--- | |
| 11 dwm.c | 6 ++++++ | |
| 12 2 files changed, 11 insertions(+), 3 deletions(-) | |
| 13 | |
| 14 diff --git a/config.def.h b/config.def.h | |
| 15 index 42dce05..b246392 100644 | |
| 16 --- a/config.def.h | |
| 17 +++ b/config.def.h | |
| 18 @@ -40,12 +40,14 @@ static const char *tags[] = { "1", "2", "3", "4", "5… | |
| 19 | |
| 20 static const Rule rules[] = { | |
| 21 /* xprop(1): | |
| 22 + * _QUBES_LABEL(CARDINAL) = label | |
| 23 + * _QUBES_VMNAME(STRING) = qube | |
| 24 * WM_CLASS(STRING) = instance, class | |
| 25 * WM_NAME(STRING) = title | |
| 26 */ | |
| 27 - /* class instance title tags mask isfloating … | |
| 28 - { "Gimp", NULL, NULL, 0, 1, … | |
| 29 - { "Firefox", NULL, NULL, 1 << 8, 0, … | |
| 30 + /* label qube class instance title tags m… | |
| 31 + { 0, "personal", "Gimp", NULL, NULL, 0, … | |
| 32 + { 6, NULL, "Firefox", NULL, NULL, 1 << 8… | |
| 33 }; | |
| 34 | |
| 35 /* layout(s) */ | |
| 36 diff --git a/dwm.c b/dwm.c | |
| 37 index be99dde..9a71902 100644 | |
| 38 --- a/dwm.c | |
| 39 +++ b/dwm.c | |
| 40 @@ -86,6 +86,7 @@ typedef struct { | |
| 41 typedef struct Monitor Monitor; | |
| 42 typedef struct Client Client; | |
| 43 struct Client { | |
| 44 + int label; | |
| 45 char vmname[256]; | |
| 46 char name[256]; | |
| 47 float mina, maxa; | |
| 48 @@ -135,6 +136,8 @@ struct Monitor { | |
| 49 }; | |
| 50 | |
| 51 typedef struct { | |
| 52 + int label; | |
| 53 + const char *qube; | |
| 54 const char *class; | |
| 55 const char *instance; | |
| 56 const char *title; | |
| 57 @@ -301,6 +304,8 @@ applyrules(Client *c) | |
| 58 for (i = 0; i < LENGTH(rules); i++) { | |
| 59 r = &rules[i]; | |
| 60 if ((!r->title || strstr(c->name, r->title)) | |
| 61 + && (!r->label || (c->label == r->label)) | |
| 62 + && (!r->qube || strstr(c->vmname, r->qube)) | |
| 63 && (!r->class || strstr(class, r->class)) | |
| 64 && (!r->instance || strstr(instance, r->instance))) | |
| 65 { | |
| 66 @@ -1076,6 +1081,7 @@ manage(Window w, XWindowAttributes *wa) | |
| 67 c->tags = t->tags; | |
| 68 } else { | |
| 69 c->mon = selmon; | |
| 70 + c->label = getlabel(c); | |
| 71 applyrules(c); | |
| 72 } | |
| 73 | |
| 74 -- | |
| 75 2.30.2 | |
| 76 |