mirror of
https://github.com/protesilaos/modus-themes.git
synced 2026-09-10 07:16:30 -04:00
Compare commits
1581 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f1ad6c9383 | ||
|
|
d7e30694cb | ||
|
|
bcf065b803 | ||
|
|
a3e7ba2805 | ||
|
|
fd124dc370 | ||
|
|
24e4b4b9e4 | ||
|
|
2bae09feeb | ||
|
|
0f4d27dd96 | ||
|
|
27a0ed0260 | ||
|
|
9a3cd56cc2 | ||
|
|
b86cace435 | ||
|
|
21ffe0cd5a | ||
|
|
75ad377135 | ||
|
|
8ebcedea65 | ||
|
|
887af1139e | ||
|
|
52d4665bc5 | ||
|
|
75aa3fa79e | ||
|
|
940249694c | ||
|
|
7d53a6959c | ||
|
|
e81c3c6ce3 | ||
|
|
47dc463561 | ||
|
|
50b7a66423 | ||
|
|
9a46f89607 | ||
|
|
3c98eadc35 | ||
|
|
4bd5e91ee0 | ||
|
|
f2b88b4d7f | ||
|
|
a1d081256e | ||
|
|
0cf5a2a52a | ||
|
|
bf69c6cbcc | ||
|
|
35586477b1 | ||
|
|
31e8394cb1 | ||
|
|
21d97d4fe6 | ||
|
|
89294a9a6f | ||
|
|
f237b3ec47 | ||
|
|
61b5e30bb8 | ||
|
|
b3bd04aca5 | ||
|
|
a69a3c80b6 | ||
|
|
89e40be4d8 | ||
|
|
a071a9d8e7 | ||
|
|
a378446107 | ||
|
|
9172a0e8ef | ||
|
|
f28a5e5931 | ||
|
|
50c42fe90d | ||
|
|
c981ca60ae | ||
|
|
c6a08aa1a8 | ||
|
|
2d044ac89f | ||
|
|
f97a9b0240 | ||
|
|
ef2fa82b12 | ||
|
|
87d5764ecc | ||
|
|
c115002430 | ||
|
|
a47ed7af3f | ||
|
|
124ba3168e | ||
|
|
c6bb5eb8df | ||
|
|
a4b6ada971 | ||
|
|
634dcc3245 | ||
|
|
c8925cd23b | ||
|
|
b242d43e6a | ||
|
|
b4eca2c241 | ||
|
|
806c894611 | ||
|
|
02a339ab2d | ||
|
|
c2be0f59b5 | ||
|
|
211a72b708 | ||
|
|
b7f64effe5 | ||
|
|
7c3c48b6dd | ||
|
|
1fc28ad804 | ||
|
|
3ab7b22105 | ||
|
|
7f146f8826 | ||
|
|
5efd13653a | ||
|
|
34c169a780 | ||
|
|
010ed94527 | ||
|
|
0164619a09 | ||
|
|
8ebdc208ae | ||
|
|
2156e94a40 | ||
|
|
15c77ce939 | ||
|
|
0775c7ee92 | ||
|
|
c9c0974747 | ||
|
|
cf0044518f | ||
|
|
8d62a73f2a | ||
|
|
4b286c2b61 | ||
|
|
488e913b1e | ||
|
|
f71db69bad | ||
|
|
7c2ce1ff0d | ||
|
|
7950791b52 | ||
|
|
195011352e | ||
|
|
a2c40a9f92 | ||
|
|
657fd6f92d | ||
|
|
9e87779b5e | ||
|
|
ea87862946 | ||
|
|
8635304365 | ||
|
|
ef4197d5ae | ||
|
|
51c89ec604 | ||
|
|
4ca21529ae | ||
|
|
704edc5af3 | ||
|
|
551f4254c8 | ||
|
|
44cc370313 | ||
|
|
f90869584a | ||
|
|
742054c713 | ||
|
|
0217c0dde5 | ||
|
|
8a8ed85ae7 | ||
|
|
d2f64a8a4f | ||
|
|
f430f287bd | ||
|
|
ec4c79c472 | ||
|
|
087b419503 | ||
|
|
d76bbf9865 | ||
|
|
dce91510b3 | ||
|
|
df74b73a60 | ||
|
|
282dbd66b5 | ||
|
|
b31966fe65 | ||
|
|
c63be80d3b | ||
|
|
953ec93841 | ||
|
|
f062c8d99a | ||
|
|
a134889772 | ||
|
|
2e19f038c3 | ||
|
|
6fa9f61f48 | ||
|
|
dbd67e1140 | ||
|
|
937ee8047b | ||
|
|
7d234fd65f | ||
|
|
b07a5d5001 | ||
|
|
9492b9e3fa | ||
|
|
0a6f5d33a3 | ||
|
|
d763988f80 | ||
|
|
84528d1f3e | ||
|
|
5e69da089a | ||
|
|
bbb43a6f62 | ||
|
|
e0f42f2740 | ||
|
|
e5fb7f2229 | ||
|
|
83501bcd50 | ||
|
|
5e1621d638 | ||
|
|
c865abc82d | ||
|
|
30cbfe27b5 | ||
|
|
6beea7125e | ||
|
|
100533ab0f | ||
|
|
a4264088b7 | ||
|
|
ed36e34132 | ||
|
|
cb20bbe83f | ||
|
|
9d0226961d | ||
|
|
789cb7ea32 | ||
|
|
b45b0d8a7c | ||
|
|
ecd696daf8 | ||
|
|
b2e0aff5ed | ||
|
|
1343ea9947 | ||
|
|
122d53333f | ||
|
|
127ed57f0e | ||
|
|
9dd3b9074b | ||
|
|
9af856fb38 | ||
|
|
c475454d87 | ||
|
|
0ace30e471 | ||
|
|
b633768b7c | ||
|
|
ea135519d3 | ||
|
|
27456c3121 | ||
|
|
2c225b634e | ||
|
|
4ecefd924f | ||
|
|
4b4fd65336 | ||
|
|
39682cd87c | ||
|
|
ba747a245f | ||
|
|
0f6ce4f8bb | ||
|
|
c57f158886 | ||
|
|
55be658ddf | ||
|
|
8a45a1393a | ||
|
|
4d9a19513d | ||
|
|
192b2f612e | ||
|
|
0b6956a783 | ||
|
|
073e1d2488 | ||
|
|
afe5c14f30 | ||
|
|
8f05f03bc9 | ||
|
|
e22df9248c | ||
|
|
be8111f267 | ||
|
|
7eeadab5d8 | ||
|
|
e438a2fcdc | ||
|
|
b38aaf265f | ||
|
|
f5df8edd15 | ||
|
|
e8dee25bd6 | ||
|
|
53fa9fd23d | ||
|
|
3247c5d0f7 | ||
|
|
d1a9fbb4e6 | ||
|
|
5b4747748e | ||
|
|
d1037f1322 | ||
|
|
fc20e2bf7a | ||
|
|
89185784ea | ||
|
|
6dcd369037 | ||
|
|
cd01e5ead6 | ||
|
|
d673df22ca | ||
|
|
46d4b49266 | ||
|
|
7a86cf49a8 | ||
|
|
4ac7fdd6c7 | ||
|
|
c8a6aa6998 | ||
|
|
03c716e5bb | ||
|
|
cb99f74bc9 | ||
|
|
0358a2a460 | ||
|
|
83670578ea | ||
|
|
e1154773ce | ||
|
|
9649a18f69 | ||
|
|
64735b7df0 | ||
|
|
703dad8fd1 | ||
|
|
582f53b07b | ||
|
|
175a519494 | ||
|
|
53f461b397 | ||
|
|
725bf50aba | ||
|
|
bf9dfed400 | ||
|
|
7d06212953 | ||
|
|
3cc6f7fec2 | ||
|
|
2c901c9969 | ||
|
|
c41281151f | ||
|
|
b238abe7fc | ||
|
|
bcaf0835fd | ||
|
|
117875cb12 | ||
|
|
2a32f92782 | ||
|
|
7076680932 | ||
|
|
344946ac0e | ||
|
|
f4474129e6 | ||
|
|
1ee7c20971 | ||
|
|
ffdee3a436 | ||
|
|
fdcbb99be2 | ||
|
|
6fc7630666 | ||
|
|
fc3783e5d3 | ||
|
|
dbbfff6582 | ||
|
|
0958eb8e48 | ||
|
|
1129cf5f92 | ||
|
|
ecfd90d430 | ||
|
|
7bfc18d130 | ||
|
|
3b0bbaa779 | ||
|
|
01080b292b | ||
|
|
1d0348fc64 | ||
|
|
c2cf943239 | ||
|
|
d0f1537f95 | ||
|
|
1a346f825b | ||
|
|
7f5e40060a | ||
|
|
a8583fae4e | ||
|
|
cf8cc86afc | ||
|
|
b48837de67 | ||
|
|
0088add0ad | ||
|
|
e49b1e0248 | ||
|
|
c15eea4125 | ||
|
|
80db306ddb | ||
|
|
ec8f8a80b1 | ||
|
|
4694dc5a8b | ||
|
|
78e79d3eba | ||
|
|
2c85a495cb | ||
|
|
24d426e59b | ||
|
|
ed618c1050 | ||
|
|
51dd0362b9 | ||
|
|
1a7867074e | ||
|
|
feecb71130 | ||
|
|
0730b28045 | ||
|
|
a416bc4906 | ||
|
|
823d31d19b | ||
|
|
72bf76eb84 | ||
|
|
ef3e513dfe | ||
|
|
5af03b7294 | ||
|
|
23e443a016 | ||
|
|
a472f54645 | ||
|
|
c270cd8f5e | ||
|
|
26d60d3e6b | ||
|
|
53717d1607 | ||
|
|
81862dfa99 | ||
|
|
065fbe15e7 | ||
|
|
2602e2c0db | ||
|
|
3ddb82b37b | ||
|
|
f79684961e | ||
|
|
88fca8fd42 | ||
|
|
b9eb16d1a1 | ||
|
|
e08fb8adcd | ||
|
|
bb548f6564 | ||
|
|
3058909617 | ||
|
|
ee27621ce8 | ||
|
|
0e3b21ef87 | ||
|
|
0cd0b3cc7b | ||
|
|
3b0850883a | ||
|
|
c94938ff79 | ||
|
|
4c6a73dc71 | ||
|
|
d46e782510 | ||
|
|
4fd8cdfc55 | ||
|
|
bbaa20a45b | ||
|
|
a1149ce5e7 | ||
|
|
edd5b66833 | ||
|
|
5777db8d9b | ||
|
|
9c65704b61 | ||
|
|
1b663444fe | ||
|
|
11329d1c49 | ||
|
|
0844ec814a | ||
|
|
0eae2aa8f5 | ||
|
|
247f5803bc | ||
|
|
7e06d30099 | ||
|
|
0b67bdfb20 | ||
|
|
4fca99d3ac | ||
|
|
dda6a00e37 | ||
|
|
2bc9c72fbd | ||
|
|
72ed98f786 | ||
|
|
4514036961 | ||
|
|
5e77bff62e | ||
|
|
68de71e7aa | ||
|
|
0839a6b3cb | ||
|
|
70b31306d0 | ||
|
|
1d3bdbd2e5 | ||
|
|
88d6a8d721 | ||
|
|
ef3e0e5d4d | ||
|
|
6e1bdce593 | ||
|
|
67b6db32fb | ||
|
|
16c2c667c4 | ||
|
|
26dd0fabb1 | ||
|
|
3f3655451b | ||
|
|
98c3e0b815 | ||
|
|
d05bd5dde5 | ||
|
|
83c34e9726 | ||
|
|
c2acde4a47 | ||
|
|
e52f388522 | ||
|
|
223e813805 | ||
|
|
acc01872a3 | ||
|
|
920f7ae8b2 | ||
|
|
0648a01dee | ||
|
|
51e067c9df | ||
|
|
39e2c01cc0 | ||
|
|
19b21a3876 | ||
|
|
1eb95eac3c | ||
|
|
71ba12c4d7 | ||
|
|
db6c6b5e97 | ||
|
|
f4ada31861 | ||
|
|
60b99c1a7c | ||
|
|
388f92e2d7 | ||
|
|
e5f23ca184 | ||
|
|
effaf91b9c | ||
|
|
b15e40987f | ||
|
|
2dbcc8f903 | ||
|
|
8b4e9d9ccd | ||
|
|
33a8ca40b5 | ||
|
|
c4b5b27ad1 | ||
|
|
9fc269c0a6 | ||
|
|
94878dbd9c | ||
|
|
4f707d9a53 | ||
|
|
85101fb4ab | ||
|
|
8f39cafdda | ||
|
|
fce1a5e835 | ||
|
|
d90dffe3cf | ||
|
|
d25d0318ad | ||
|
|
589b49cea0 | ||
|
|
7183244783 | ||
|
|
f8514d5e15 | ||
|
|
8803f696cd | ||
|
|
647f117506 | ||
|
|
f7ac5a6aa0 | ||
|
|
ae80e32ea7 | ||
|
|
ea426e5c90 | ||
|
|
e6463c0e21 | ||
|
|
f6d56513dd | ||
|
|
c681422305 | ||
|
|
f6fe42f046 | ||
|
|
a8d8332398 | ||
|
|
493bd7a243 | ||
|
|
08820b2599 | ||
|
|
0a2c7b84b1 | ||
|
|
6eac188782 | ||
|
|
574587f56b | ||
|
|
21327092f0 | ||
|
|
233571e577 | ||
|
|
a1ad1e5ef7 | ||
|
|
0482eab0f4 | ||
|
|
6b2053b4ae | ||
|
|
3ac449fb45 | ||
|
|
407bf5e510 | ||
|
|
b2e6d78d5f | ||
|
|
902a601c08 | ||
|
|
74767ad3f8 | ||
|
|
b741887a87 | ||
|
|
a8325500bc | ||
|
|
0ef42d8a92 | ||
|
|
3b47b64a38 | ||
|
|
41074f39a2 | ||
|
|
f71a62c50f | ||
|
|
a6db89ac18 | ||
|
|
f55db96b09 | ||
|
|
149da8e473 | ||
|
|
085ee06c57 | ||
|
|
c2aa51f495 | ||
|
|
36ac9e5861 | ||
|
|
1099f8a20d | ||
|
|
d8a80e52d1 | ||
|
|
02b4027555 | ||
|
|
8582e487a4 | ||
|
|
9ef5731b5b | ||
|
|
f186a4e0af | ||
|
|
4798477791 | ||
|
|
cae9e08865 | ||
|
|
a391efc0f8 | ||
|
|
99eb9d4c9a | ||
|
|
cfa3545171 | ||
|
|
933a926247 | ||
|
|
563316fa89 | ||
|
|
e411452012 | ||
|
|
8c4684325e | ||
|
|
91cd9dfed3 | ||
|
|
0648760267 | ||
|
|
e942399a16 | ||
|
|
7111708f15 | ||
|
|
efbedafcbb | ||
|
|
1f42a8165d | ||
|
|
b104e2b9f4 | ||
|
|
c05e5a0433 | ||
|
|
3e091098f0 | ||
|
|
6326130654 | ||
|
|
14b7dd39a2 | ||
|
|
64681aadf5 | ||
|
|
247a9f7291 | ||
|
|
f86f23362f | ||
|
|
5cdb8cc81d | ||
|
|
c100ec6844 | ||
|
|
eac296eb1d | ||
|
|
e8f99ba7d7 | ||
|
|
1d71c7d942 | ||
|
|
49d435ee79 | ||
|
|
154f876545 | ||
|
|
36decff7c2 | ||
|
|
52f8e110bb | ||
|
|
97966a3502 | ||
|
|
5f6ac4b130 | ||
|
|
01f683346f | ||
|
|
86112e457a | ||
|
|
63ba534f1a | ||
|
|
b20d38115b | ||
|
|
b73415fda1 | ||
|
|
d6b387f6ad | ||
|
|
bea8a0436e | ||
|
|
4c01c5e479 | ||
|
|
27558488ef | ||
|
|
c2016385f9 | ||
|
|
566c1ba4ca | ||
|
|
8557c39298 | ||
|
|
0739ea4406 | ||
|
|
ecf3698412 | ||
|
|
711b9c1454 | ||
|
|
5b7cd71019 | ||
|
|
f8881652d3 | ||
|
|
0bd89da8ae | ||
|
|
d9adb13ebc | ||
|
|
5a335389b1 | ||
|
|
636a19a28b | ||
|
|
e5f0a31f92 | ||
|
|
ee104f0f16 | ||
|
|
97c23e87d8 | ||
|
|
4c245ba030 | ||
|
|
4a7ff08327 | ||
|
|
d945f1c1aa | ||
|
|
8317ad8d50 | ||
|
|
bb5a91f9c1 | ||
|
|
f3ca643038 | ||
|
|
741486b03c | ||
|
|
102650a412 | ||
|
|
bdd3470622 | ||
|
|
a91870a447 | ||
|
|
076709b769 | ||
|
|
08ed0d631c | ||
|
|
91b9b3f9ae | ||
|
|
f52e2f16b0 | ||
|
|
7a76dca731 | ||
|
|
76fe11a79c | ||
|
|
e84e1a7b0b | ||
|
|
95dde90c84 | ||
|
|
161391ba67 | ||
|
|
6f0e64daaa | ||
|
|
6d590469e5 | ||
|
|
e6df63dacd | ||
|
|
c56c1a3cf0 | ||
|
|
d0a4d673ee | ||
|
|
53df07e5e8 | ||
|
|
cf88cc5b13 | ||
|
|
69d949fb27 | ||
|
|
87c7fa3e4b | ||
|
|
4a7f7b18b3 | ||
|
|
7b7cc02f1c | ||
|
|
753cdab306 | ||
|
|
264814f51e | ||
|
|
e33c037359 | ||
|
|
abb41f9836 | ||
|
|
c9fa2b8d83 | ||
|
|
da5d701f6c | ||
|
|
6be21f1119 | ||
|
|
d13e9a8bd9 | ||
|
|
e32af5e54d | ||
|
|
6cc997945f | ||
|
|
76ea634816 | ||
|
|
2c4e1dc7ce | ||
|
|
7c5eed1cda | ||
|
|
58d1b88c1d | ||
|
|
161792b1b0 | ||
|
|
92109f871b | ||
|
|
5d474cd524 | ||
|
|
e9c612c6c0 | ||
|
|
c40225e6d9 | ||
|
|
f4e67c80c9 | ||
|
|
b55d84a5cb | ||
|
|
2f19a51511 | ||
|
|
bf6c6ce67a | ||
|
|
5f9dc66851 | ||
|
|
b9e822be6c | ||
|
|
7601df769e | ||
|
|
6639604271 | ||
|
|
d31def4f58 | ||
|
|
ebefa010b2 | ||
|
|
3550360e88 | ||
|
|
fd5800c395 | ||
|
|
6636c91b88 | ||
|
|
b7aa3ae780 | ||
|
|
6979a37a1e | ||
|
|
3576d14f06 | ||
|
|
21b77de155 | ||
|
|
01b78e587d | ||
|
|
af00e1c019 | ||
|
|
6880f3a7d9 | ||
|
|
847311bf74 | ||
|
|
93e89bdcf8 | ||
|
|
1fe0a3c9c4 | ||
|
|
792ebec01a | ||
|
|
16fc1ed7b0 | ||
|
|
51c7c4dc21 | ||
|
|
d85547d58b | ||
|
|
7cc3d1495d | ||
|
|
d5a0eeb4f0 | ||
|
|
d3164f4295 | ||
|
|
d3fc7563df | ||
|
|
81037da9aa | ||
|
|
ad58ce7d29 | ||
|
|
0666b7e925 | ||
|
|
a7a018c016 | ||
|
|
fc3c16f1da | ||
|
|
38b7b353ef | ||
|
|
9e51b1b678 | ||
|
|
87e84aac7d | ||
|
|
5df9c6c98d | ||
|
|
0c03c3b34a | ||
|
|
de28e15485 | ||
|
|
ed44bbae35 | ||
|
|
2569f4a596 | ||
|
|
9966f9fd60 | ||
|
|
063ae646f0 | ||
|
|
63af2adfed | ||
|
|
3d7e9d6213 | ||
|
|
cfe8702f56 | ||
|
|
4c82e40fb4 | ||
|
|
6725de0b9f | ||
|
|
e520baff18 | ||
|
|
c98df7220b | ||
|
|
1c582c44ff | ||
|
|
654244eb78 | ||
|
|
dfd1879431 | ||
|
|
3c3096178d | ||
|
|
453f69b436 | ||
|
|
7c8d4766e1 | ||
|
|
42e161138b | ||
|
|
80b8de398f | ||
|
|
a162cd09e7 | ||
|
|
26e9ab4fbd | ||
|
|
3631e70d29 | ||
|
|
fe05b2a87c | ||
|
|
34b8a5018b | ||
|
|
5917d8a490 | ||
|
|
bd28200a5b | ||
|
|
03312ad25c | ||
|
|
d650f01c51 | ||
|
|
5341ab74e7 | ||
|
|
ce5477ae08 | ||
|
|
4661315930 | ||
|
|
d8d36c40e1 | ||
|
|
8e45bc97fb | ||
|
|
edb78e5f46 | ||
|
|
0f6563320c | ||
|
|
e6702f9b9f | ||
|
|
5d9a43beb8 | ||
|
|
55609222f9 | ||
|
|
8535e3245a | ||
|
|
f3cd4d6983 | ||
|
|
63ab46d7ee | ||
|
|
ab56e2888b | ||
|
|
0d7203256a | ||
|
|
5e834b6fcf | ||
|
|
e1efd2dd95 | ||
|
|
13ff52a8eb | ||
|
|
55dd76805f | ||
|
|
610ae60123 | ||
|
|
de57a78821 | ||
|
|
4b10426687 | ||
|
|
d565ad1bf1 | ||
|
|
75791f5efc | ||
|
|
17116b7026 | ||
|
|
3bef1fae4b | ||
|
|
b19db8dd84 | ||
|
|
5949d78f3b | ||
|
|
f4616689bc | ||
|
|
d807e1f013 | ||
|
|
d79e658660 | ||
|
|
f3fa1aba0b | ||
|
|
3c69034e87 | ||
|
|
157866d5f9 | ||
|
|
ac394f8490 | ||
|
|
8267677f81 | ||
|
|
cf469564b7 | ||
|
|
df1798234e | ||
|
|
bc3cc758ba | ||
|
|
dc0d606e2a | ||
|
|
891bd2913c | ||
|
|
2afc2a1f40 | ||
|
|
07d7073884 | ||
|
|
306e4110b7 | ||
|
|
ecfa4ded5a | ||
|
|
895e10936a | ||
|
|
6faf2d29c3 | ||
|
|
4a5bf64108 | ||
|
|
823f87c791 | ||
|
|
6834d3c686 | ||
|
|
77b9a2ae25 | ||
|
|
98a3f8886d | ||
|
|
613f953412 | ||
|
|
107df813fb | ||
|
|
54e6481c4c | ||
|
|
3e1fb56a41 | ||
|
|
fcb72f0d10 | ||
|
|
bbfd330e7d | ||
|
|
233abe6562 | ||
|
|
b9685bede6 | ||
|
|
9f3dba14ec | ||
|
|
414de6955c | ||
|
|
77a0310b5c | ||
|
|
817ff75d11 | ||
|
|
27ae9b919e | ||
|
|
4932dfc349 | ||
|
|
0c4a9973e0 | ||
|
|
a62e505303 | ||
|
|
95be7968f3 | ||
|
|
ab1582fd2f | ||
|
|
19e91f9e72 | ||
|
|
c2cb0404c3 | ||
|
|
cbe6c0284f | ||
|
|
cb612d3689 | ||
|
|
8bbebd2f39 | ||
|
|
1725bfd1ed | ||
|
|
32c50cd4f6 | ||
|
|
6a37cebdee | ||
|
|
db70c2ca92 | ||
|
|
7532d69bf1 | ||
|
|
3002f6fb64 | ||
|
|
bff0673d86 | ||
|
|
243fc35181 | ||
|
|
cb2ce8bedf | ||
|
|
259a31af9f | ||
|
|
113fc936be | ||
|
|
8b210e065e | ||
|
|
daa4b3f4a7 | ||
|
|
7a22d934a3 | ||
|
|
a9f709e344 | ||
|
|
c4ebbfd210 | ||
|
|
db5b771c42 | ||
|
|
573db128a0 | ||
|
|
4c73580111 | ||
|
|
4f7fa199d2 | ||
|
|
b694570fd0 | ||
|
|
b941fc19a2 | ||
|
|
deec3131fd | ||
|
|
1090a80a76 | ||
|
|
d2762db19e | ||
|
|
44d9d41576 | ||
|
|
56bd9c8f32 | ||
|
|
e7db39b956 | ||
|
|
bea2f68833 | ||
|
|
1963b6b874 | ||
|
|
a082d7739f | ||
|
|
d28a6af77b | ||
|
|
51466b1355 | ||
|
|
74119b87c8 | ||
|
|
0cde97e94b | ||
|
|
d33c545153 | ||
|
|
7384dbf264 | ||
|
|
6179c6b29c | ||
|
|
fe281a7651 | ||
|
|
9617574eb2 | ||
|
|
af05234b21 | ||
|
|
114ffb4141 | ||
|
|
435916a255 | ||
|
|
accf6985ae | ||
|
|
263e4f2572 | ||
|
|
b08e2fe48f | ||
|
|
ba5fc209b1 | ||
|
|
dee2fea470 | ||
|
|
80c5d25ad4 | ||
|
|
8f9255c5e1 | ||
|
|
5bec85b46d | ||
|
|
0ae74c87e2 | ||
|
|
146e011db7 | ||
|
|
3ba09931d0 | ||
|
|
fb634dd64c | ||
|
|
cec733f367 | ||
|
|
83e40fa1a1 | ||
|
|
58089edd35 | ||
|
|
1693c8f04d | ||
|
|
fbd93c1c3a | ||
|
|
abb09cc9fe | ||
|
|
c87577ba3e | ||
|
|
97658c2e77 | ||
|
|
6660a53426 | ||
|
|
6ef0de0e11 | ||
|
|
4b954c4772 | ||
|
|
794593afd9 | ||
|
|
4c7ada933b | ||
|
|
bef8b24801 | ||
|
|
4fc0ce3f84 | ||
|
|
4b88a07b03 | ||
|
|
850356e42a | ||
|
|
68cd61d913 | ||
|
|
9252ca3d4c | ||
|
|
5d57c7354b | ||
|
|
57539cad16 | ||
|
|
9be57d9d6e | ||
|
|
41e8f1088b | ||
|
|
a0019a75bf | ||
|
|
9681c439bd | ||
|
|
9e08c78a2b | ||
|
|
970e9bd269 | ||
|
|
ed71ba54a2 | ||
|
|
9e66703606 | ||
|
|
89a796d30e | ||
|
|
9c95ece906 | ||
|
|
f4237bdb02 | ||
|
|
105ee4a5a6 | ||
|
|
2de70fa128 | ||
|
|
64823c7767 | ||
|
|
5a777c30ca | ||
|
|
3019731405 | ||
|
|
6e38792b21 | ||
|
|
564c4f3758 | ||
|
|
39ab1ab5ea | ||
|
|
c85ac37c7b | ||
|
|
ae1b4522f3 | ||
|
|
ac9fd6d6b7 | ||
|
|
a9530bfbad | ||
|
|
a8add23364 | ||
|
|
241bba6b36 | ||
|
|
d07b696c7b | ||
|
|
41dc735308 | ||
|
|
1d7817c05c | ||
|
|
6940c37554 | ||
|
|
f984e5587e | ||
|
|
f480b4db88 | ||
|
|
a1fc3b4d5d | ||
|
|
186d808464 | ||
|
|
642cc5f835 | ||
|
|
c5e1341a48 | ||
|
|
b7b60365fb | ||
|
|
b875e788b6 | ||
|
|
fef9116871 | ||
|
|
b410fccb04 | ||
|
|
bdb18b2ee2 | ||
|
|
ff70fd4136 | ||
|
|
284433625e | ||
|
|
daf689493e | ||
|
|
084f88bea0 | ||
|
|
6b2e660e14 | ||
|
|
3f5953b17b | ||
|
|
69b67b77af | ||
|
|
fe08a02c4c | ||
|
|
562e27b23d | ||
|
|
457e8cfe94 | ||
|
|
9c8d863f3f | ||
|
|
76109e4a28 | ||
|
|
b4ae827560 | ||
|
|
70bbeed80f | ||
|
|
b23c84e6b4 | ||
|
|
ad36c88feb | ||
|
|
7b65e735b8 | ||
|
|
69f6ad2545 | ||
|
|
a42240aa71 | ||
|
|
f6f0ef6680 | ||
|
|
221bfffdc1 | ||
|
|
c00930f4ff | ||
|
|
b9fdda5e5d | ||
|
|
3f330da835 | ||
|
|
b0f35918ef | ||
|
|
561497cafa | ||
|
|
b8d38c3b06 | ||
|
|
430a812d41 | ||
|
|
4e331d27de | ||
|
|
960571c1ec | ||
|
|
7ef62b72fc | ||
|
|
eb59dcc178 | ||
|
|
ea9c8ba7bb | ||
|
|
114c17568c | ||
|
|
576f902613 | ||
|
|
ce84d5261a | ||
|
|
70e3d983a7 | ||
|
|
ae602dda25 | ||
|
|
5f5be291f0 | ||
|
|
99b23d6983 | ||
|
|
4ef638c53b | ||
|
|
0f3e96982c | ||
|
|
3d3bb621a8 | ||
|
|
a672fb6720 | ||
|
|
5082d4363c | ||
|
|
1fdb0676f9 | ||
|
|
db6ea48ac9 | ||
|
|
b4ef90bb95 | ||
|
|
f9c83600a9 | ||
|
|
0557146806 | ||
|
|
aa437e1a35 | ||
|
|
bca906855d | ||
|
|
e213a88f35 | ||
|
|
ae1d68d4b9 | ||
|
|
db13063e10 | ||
|
|
acd951f8cb | ||
|
|
d4dbc32bf3 | ||
|
|
e0df0e29d4 | ||
|
|
fb2ecd7d05 | ||
|
|
f7255e03f3 | ||
|
|
1ffcb4c72f | ||
|
|
d0a8710733 | ||
|
|
d1eb264a52 | ||
|
|
f7060311d8 | ||
|
|
51eca51ef3 | ||
|
|
fd01c6ee53 | ||
|
|
530532130a | ||
|
|
410a09e938 | ||
|
|
b39f7b4ce0 | ||
|
|
965024167f | ||
|
|
53e0670139 | ||
|
|
adbd8e3f83 | ||
|
|
7c418faf58 | ||
|
|
b503206a62 | ||
|
|
fe028304d4 | ||
|
|
36aeb9d8f8 | ||
|
|
12b0eb0ea2 | ||
|
|
7b58110d84 | ||
|
|
b31b6f7999 | ||
|
|
7661b78509 | ||
|
|
34a67fe530 | ||
|
|
f4cc61f4e9 | ||
|
|
4be8ac678b | ||
|
|
df7749bbed | ||
|
|
7ee0bcba71 | ||
|
|
b70f754ca6 | ||
|
|
01b47a0446 | ||
|
|
ae8808400c | ||
|
|
66b85092c4 | ||
|
|
46919766bc | ||
|
|
13eb392547 | ||
|
|
55d1651450 | ||
|
|
98690410be | ||
|
|
716a275255 | ||
|
|
aa995a97f7 | ||
|
|
ee32b1a0d4 | ||
|
|
2431375725 | ||
|
|
c3ed8a6e2f | ||
|
|
b3f39e8d10 | ||
|
|
cfc8c4eef0 | ||
|
|
ab1394e0d2 | ||
|
|
45ef111a58 | ||
|
|
518a99cd00 | ||
|
|
be5fa4b2a3 | ||
|
|
5d88ea850e | ||
|
|
fd81d2c2ea | ||
|
|
8d4c30796e | ||
|
|
ede2ab0e0f | ||
|
|
081093922d | ||
|
|
9df031172d | ||
|
|
193f4afa35 | ||
|
|
3f4290e78a | ||
|
|
a380f86397 | ||
|
|
66b327f6a4 | ||
|
|
d5996542f2 | ||
|
|
128acb1664 | ||
|
|
f90def4d90 | ||
|
|
038295f72c | ||
|
|
7465ffcfbe | ||
|
|
2c34f81b83 | ||
|
|
90167ee9f2 | ||
|
|
70adc47676 | ||
|
|
df3e2a80de | ||
|
|
add4cc0c01 | ||
|
|
d4e70e069b | ||
|
|
7f951714ae | ||
|
|
7f2952c499 | ||
|
|
d8e92a50f0 | ||
|
|
2942c77e30 | ||
|
|
c340c5b019 | ||
|
|
829d06d9d3 | ||
|
|
d9d8463713 | ||
|
|
18e36949cf | ||
|
|
f4282839d8 | ||
|
|
39ac76907c | ||
|
|
9aed34e909 | ||
|
|
e1d1075635 | ||
|
|
962cc2c274 | ||
|
|
a68e4236bd | ||
|
|
28fa9ad0b7 | ||
|
|
ca4d92aa0d | ||
|
|
87289b0918 | ||
|
|
bbbbe5cc27 | ||
|
|
f0ddbfd9aa | ||
|
|
4a25600cb0 | ||
|
|
21099418eb | ||
|
|
1ee4c9576f | ||
|
|
235435c68f | ||
|
|
2404de30c2 | ||
|
|
7b0460dc4a | ||
|
|
469454d8d8 | ||
|
|
1121193dc5 | ||
|
|
4346ab5ed5 | ||
|
|
9a89ce136b | ||
|
|
c26d5a641c | ||
|
|
4a2449a2e8 | ||
|
|
0cf6af24ca | ||
|
|
0ca79257ef | ||
|
|
2dacdf9013 | ||
|
|
211d7114fa | ||
|
|
4dca14bb16 | ||
|
|
9e1b5dfce3 | ||
|
|
7d643b30f4 | ||
|
|
9721c0576f | ||
|
|
b061a7b038 | ||
|
|
af72dbc902 | ||
|
|
5ce2bd34b1 | ||
|
|
54bf022080 | ||
|
|
6afb2448d2 | ||
|
|
3cbd104551 | ||
|
|
eddf79d2a3 | ||
|
|
b4fabcbb51 | ||
|
|
4e9c88bdb5 | ||
|
|
f45ad83b42 | ||
|
|
1fd126d0bc | ||
|
|
0dc7854103 | ||
|
|
9225ac0d0a | ||
|
|
b3302411a1 | ||
|
|
3cb41ff0d3 | ||
|
|
40138996b2 | ||
|
|
0848f7c311 | ||
|
|
ff68262a60 | ||
|
|
8fc686012d | ||
|
|
46419d939b | ||
|
|
542ee4ab5c | ||
|
|
4455e93bc5 | ||
|
|
63e9e799f4 | ||
|
|
76c9a218b8 | ||
|
|
2b046eceb4 | ||
|
|
5a624267a5 | ||
|
|
80f25ad161 | ||
|
|
d18f0b462d | ||
|
|
c634edec0a | ||
|
|
188f68ba43 | ||
|
|
953f70236d | ||
|
|
031d2d943f | ||
|
|
59a8361c95 | ||
|
|
399d3eaa74 | ||
|
|
f5b5f05d1c | ||
|
|
4777d7fc7b | ||
|
|
d7970e71eb | ||
|
|
c82b58f4b3 | ||
|
|
23b1fc95dd | ||
|
|
6ae40baacc | ||
|
|
476445b8f2 | ||
|
|
70c6ae4386 | ||
|
|
a43682effd | ||
|
|
6652156eb4 | ||
|
|
f87a9e682b | ||
|
|
e0db9b3aea | ||
|
|
40351943d0 | ||
|
|
207cd6e4e0 | ||
|
|
4b3095ab19 | ||
|
|
5932c761b1 | ||
|
|
cc82fd0e6f | ||
|
|
57cb3347ad | ||
|
|
c7d03a3a38 | ||
|
|
3a27ce30fe | ||
|
|
687a7941e3 | ||
|
|
32dc7f9bc1 | ||
|
|
575644f9a3 | ||
|
|
5c96ca3854 | ||
|
|
1bf2713e1d | ||
|
|
ae6cc7ed14 | ||
|
|
9c9347683b | ||
|
|
0618486c41 | ||
|
|
d6afeffdf2 | ||
|
|
257db66b64 | ||
|
|
112e40bd55 | ||
|
|
8f670279af | ||
|
|
9b025c00f8 | ||
|
|
4f1456c955 | ||
|
|
5ddf26d58d | ||
|
|
0573238eaf | ||
|
|
76efc86315 | ||
|
|
38037dba96 | ||
|
|
492d31db41 | ||
|
|
52a848e42c | ||
|
|
93401ca2c8 | ||
|
|
72eb32f4fb | ||
|
|
0e3262d068 | ||
|
|
9a7d47b9be | ||
|
|
3bcd88cb79 | ||
|
|
6ee797ba04 | ||
|
|
601a049873 | ||
|
|
adf85ae831 | ||
|
|
93c2ae3da4 | ||
|
|
61db7d4bca | ||
|
|
a70065cf82 | ||
|
|
f36fd67831 | ||
|
|
3dc825382f | ||
|
|
2fa9a272fe | ||
|
|
1b589e0094 | ||
|
|
871b8ae533 | ||
|
|
f5b5f1c26e | ||
|
|
380e60cf49 | ||
|
|
eb38b92495 | ||
|
|
7c74495bf7 | ||
|
|
81cf29f227 | ||
|
|
8bb44672da | ||
|
|
01f7fcac2d | ||
|
|
b0b052e605 | ||
|
|
1adbf9838f | ||
|
|
63ceefc5cf | ||
|
|
df10f50e94 | ||
|
|
bbadce06bb | ||
|
|
81953a3355 | ||
|
|
2f6cfd68e5 | ||
|
|
398e8fa2be | ||
|
|
d5b8d103e8 | ||
|
|
bb07fe14cf | ||
|
|
da5d9835e9 | ||
|
|
879beb8386 | ||
|
|
e5697a3155 | ||
|
|
0b8026e24d | ||
|
|
983f974ff9 | ||
|
|
af9a6a8861 | ||
|
|
9581e3ac14 | ||
|
|
737253a0bd | ||
|
|
04783252a6 | ||
|
|
d98c31d519 | ||
|
|
13beb314f8 | ||
|
|
5e80e5c0b6 | ||
|
|
1cc172c3c9 | ||
|
|
6d19d3cdc6 | ||
|
|
0ff34a73c2 | ||
|
|
61d5397648 | ||
|
|
b9b7b3b487 | ||
|
|
7e5de3db9c | ||
|
|
f981d57bb5 | ||
|
|
882a384a14 | ||
|
|
c8f1682d51 | ||
|
|
d6fd5e685f | ||
|
|
15cd7f7ef3 | ||
|
|
76c5bb03b4 | ||
|
|
e55ddd7bbe | ||
|
|
e80497a2ab | ||
|
|
99e434afbd | ||
|
|
93781a4436 | ||
|
|
191bc74656 | ||
|
|
570e492cec | ||
|
|
f96880dd70 | ||
|
|
ec6ca0a15e | ||
|
|
75f39af564 | ||
|
|
041689b1ad | ||
|
|
fa40dbdc44 | ||
|
|
ff4bbd5dae | ||
|
|
af2efb9fe9 | ||
|
|
054a838178 | ||
|
|
8f74db7030 | ||
|
|
670bbaf869 | ||
|
|
c45374473a | ||
|
|
7648c5eafc | ||
|
|
4f1edb3560 | ||
|
|
54f27735dc | ||
|
|
db3e7005d8 | ||
|
|
d7b1c7da77 | ||
|
|
71e157f1b7 | ||
|
|
27abbdd047 | ||
|
|
e4833cd655 | ||
|
|
daeb717da8 | ||
|
|
b8aa0887be | ||
|
|
83b6cfd9d7 | ||
|
|
85eaba2c52 | ||
|
|
fda40b5c07 | ||
|
|
533595cf16 | ||
|
|
6a5cbf838f | ||
|
|
45bacd9cfd | ||
|
|
920acc5688 | ||
|
|
d8daaf85b9 | ||
|
|
9e4d1eb4c6 | ||
|
|
fe2076c5a0 | ||
|
|
e478002d82 | ||
|
|
f7a4179bd2 | ||
|
|
41a9d726a8 | ||
|
|
71674e0126 | ||
|
|
4f3b512e17 | ||
|
|
448701868a | ||
|
|
e66a9903fc | ||
|
|
30b7868fed | ||
|
|
baa8dcec18 | ||
|
|
d7affae1b6 | ||
|
|
86547e4c21 | ||
|
|
5c63e6d10b | ||
|
|
24fd053845 | ||
|
|
b9d1ba7f1b | ||
|
|
55feec8859 | ||
|
|
6b842cc6c6 | ||
|
|
9cd3314018 | ||
|
|
c9950d3fce | ||
|
|
5a12068494 | ||
|
|
53e98dd349 | ||
|
|
53070c7d09 | ||
|
|
718557503a | ||
|
|
37b634989c | ||
|
|
92188a2113 | ||
|
|
aa8e982cbc | ||
|
|
383836f6b8 | ||
|
|
25a36d75ae | ||
|
|
912731d599 | ||
|
|
64ffc9d21d | ||
|
|
c70713eecb | ||
|
|
76f81d0ad8 | ||
|
|
3b40d82a92 | ||
|
|
0d49906db4 | ||
|
|
3e2a8704ed | ||
|
|
cdfbd26801 | ||
|
|
4d8b53ac85 | ||
|
|
87c14c3cf6 | ||
|
|
24e6b3e1e3 | ||
|
|
ca4c8f6e31 | ||
|
|
b891d54771 | ||
|
|
0a8c4cdcd4 | ||
|
|
20b252ed29 | ||
|
|
898c4ceb7c | ||
|
|
5fda403abd | ||
|
|
889c5dc34e | ||
|
|
dedbc595e4 | ||
|
|
5f28f98709 | ||
|
|
749322fdc3 | ||
|
|
f01530e9b7 | ||
|
|
dab4cbfb33 | ||
|
|
29c7a68b03 | ||
|
|
122591a350 | ||
|
|
3c47d71070 | ||
|
|
7d4d93f9a8 | ||
|
|
31c1ab8e92 | ||
|
|
bd049491d5 | ||
|
|
3fcf136507 | ||
|
|
6056ce8f62 | ||
|
|
b9bbe2d3e5 | ||
|
|
95bc61c7c0 | ||
|
|
3ebdcc4f5d | ||
|
|
af7eea1371 | ||
|
|
964ad36f63 | ||
|
|
0ec98f879e | ||
|
|
8427640cfa | ||
|
|
eb25d560e2 | ||
|
|
372da155e5 | ||
|
|
60aed2bae6 | ||
|
|
1618160c24 | ||
|
|
b460f0950f | ||
|
|
bb75e632f7 | ||
|
|
1b4238f51d | ||
|
|
a736eebd67 | ||
|
|
7021b96548 | ||
|
|
f034b32d9b | ||
|
|
996183764e | ||
|
|
fefea89f4e | ||
|
|
78bbebe356 | ||
|
|
633e275f69 | ||
|
|
d2739d5de6 | ||
|
|
1687bd8e73 | ||
|
|
2555810dca | ||
|
|
87ea2fcf93 | ||
|
|
f1e6e3aa2e | ||
|
|
53eddd0c6b | ||
|
|
45d529d141 | ||
|
|
fe82f31cc1 | ||
|
|
e3cf3945f0 | ||
|
|
cfae5212de | ||
|
|
24af1c4dff | ||
|
|
6bf02afced | ||
|
|
6ad6baf76f | ||
|
|
d0e8742f21 | ||
|
|
5b73fc3059 | ||
|
|
a7ff3db686 | ||
|
|
449a96ea19 | ||
|
|
bfa626303a | ||
|
|
5f011b4522 | ||
|
|
a205d0680b | ||
|
|
f1d824f13c | ||
|
|
2abec68c11 | ||
|
|
a4a51097d0 | ||
|
|
62d8acbad0 | ||
|
|
f64ef0dfae | ||
|
|
5853a39a08 | ||
|
|
04e2c1e1d5 | ||
|
|
e877742299 | ||
|
|
ed0fcbd620 | ||
|
|
ddf4a812af | ||
|
|
e896bebd38 | ||
|
|
a044561789 | ||
|
|
38523f05ac | ||
|
|
961f58504f | ||
|
|
35e67b0b94 | ||
|
|
8f6854eb65 | ||
|
|
094464c6e9 | ||
|
|
a3f97bf483 | ||
|
|
ff1b3ea8de | ||
|
|
a84a2b3eec | ||
|
|
b9ec2d7a1a | ||
|
|
ab3cf42981 | ||
|
|
b660c76542 | ||
|
|
b47cd0b962 | ||
|
|
2905104186 | ||
|
|
6135aba08e | ||
|
|
a3487366db | ||
|
|
96ccfb51a5 | ||
|
|
67bcc044f8 | ||
|
|
c19a23f0ec | ||
|
|
7003edbade | ||
|
|
7c770559a6 | ||
|
|
f108f6554f | ||
|
|
38aa4120f6 | ||
|
|
a722e8d041 | ||
|
|
e819293f4b | ||
|
|
6286d01fce | ||
|
|
6e54b6daea | ||
|
|
b14782498a | ||
|
|
23044f3f36 | ||
|
|
0d69160328 | ||
|
|
b00294eb0a | ||
|
|
d58aac47b5 | ||
|
|
b32ebbade5 | ||
|
|
c3b517da8f | ||
|
|
a0d7ef7585 | ||
|
|
1ae96698ec | ||
|
|
76929394f5 | ||
|
|
7ac53f571e | ||
|
|
3dfc5e4943 | ||
|
|
7a686388c8 | ||
|
|
45269556bc | ||
|
|
2d4ef7d90c | ||
|
|
3adce8484b | ||
|
|
5e9c375f0d | ||
|
|
7f9170515c | ||
|
|
3a7b4bc704 | ||
|
|
2e3c9c1af9 | ||
|
|
32d6360a5a | ||
|
|
30053282e4 | ||
|
|
26c79c1138 | ||
|
|
887069ccd3 | ||
|
|
16d9365fb0 | ||
|
|
2bc2522266 | ||
|
|
5513b63c46 | ||
|
|
af620f1030 | ||
|
|
e00fe9588a | ||
|
|
8f6f6669d4 | ||
|
|
423895b112 | ||
|
|
bb51e40f96 | ||
|
|
5e23203b43 | ||
|
|
88b435ef42 | ||
|
|
3ca07ba172 | ||
|
|
17604072e4 | ||
|
|
992d5d83f4 | ||
|
|
02c568bd6a | ||
|
|
1b101276a7 | ||
|
|
4610d1382c | ||
|
|
efa98a9dbc | ||
|
|
c636f9c199 | ||
|
|
280c9e9094 | ||
|
|
7f93b0588b | ||
|
|
e5d336d143 | ||
|
|
2aecf26847 | ||
|
|
8f8fcef637 | ||
|
|
4b2fd9f406 | ||
|
|
0cf013959f | ||
|
|
8e7c1dc4e7 | ||
|
|
549cbfccb2 | ||
|
|
af84ab4a14 | ||
|
|
58cfe1b145 | ||
|
|
9bded22a00 | ||
|
|
2d4e7fb642 | ||
|
|
1e39d0d0c6 | ||
|
|
02d4dab903 | ||
|
|
2b70516efa | ||
|
|
0be58ff03d | ||
|
|
69e5eddb7c | ||
|
|
3506d7f30e | ||
|
|
24ba4578a5 | ||
|
|
882796dc92 | ||
|
|
d43dc95945 | ||
|
|
d1b67e1ab2 | ||
|
|
128c386abd | ||
|
|
002fb82f12 | ||
|
|
97e72cd027 | ||
|
|
476ff24181 | ||
|
|
e33a760971 | ||
|
|
045806838d | ||
|
|
ce46aeeac7 | ||
|
|
b05535788c | ||
|
|
b9b42f3fc6 | ||
|
|
327bfe563e | ||
|
|
c42f7c7bd3 | ||
|
|
5004d91c85 | ||
|
|
db8bfc7e42 | ||
|
|
36cfed176d | ||
|
|
e35272d3c7 | ||
|
|
bcb1be6769 | ||
|
|
8c1ec2f0ee | ||
|
|
f75e785bfa | ||
|
|
fbf6552840 | ||
|
|
0a2a7698b8 | ||
|
|
d8027894f9 | ||
|
|
3823b86f01 | ||
|
|
59a286c9ce | ||
|
|
5a4eb4594f | ||
|
|
7c61950cca | ||
|
|
c6d62bd604 | ||
|
|
74e08cd5a1 | ||
|
|
5358ebfa2e | ||
|
|
147d4a73fb | ||
|
|
4157d60099 | ||
|
|
a4855ab106 | ||
|
|
551f65507c | ||
|
|
ddc9113ff2 | ||
|
|
0366d4e0dd | ||
|
|
c92a4d493f | ||
|
|
28162edf23 | ||
|
|
20aefac2e7 | ||
|
|
14c4bb6c45 | ||
|
|
1efaa7ef79 | ||
|
|
50d22a76c4 | ||
|
|
57e6a9a1ea | ||
|
|
ab3f31a91f | ||
|
|
a459c0c682 | ||
|
|
97a4511d9d | ||
|
|
647addcf9f | ||
|
|
1f77eb2239 | ||
|
|
9dc97b3978 | ||
|
|
866822a812 | ||
|
|
900fde1f6c | ||
|
|
d4cfa3c178 | ||
|
|
3b88959d5e | ||
|
|
eb74f0460d | ||
|
|
5458f6da59 | ||
|
|
6696daed99 | ||
|
|
4df58c6e2e | ||
|
|
b84e53db50 | ||
|
|
ab58eadae1 | ||
|
|
7f620e2d24 | ||
|
|
abaa9a78d0 | ||
|
|
6bfd147671 | ||
|
|
975f087d1a | ||
|
|
683a76686e | ||
|
|
c2b23efb9b | ||
|
|
effce44cb8 | ||
|
|
138b7bfa03 | ||
|
|
5ed45c93a8 | ||
|
|
120dc0d1c4 | ||
|
|
08483f57df | ||
|
|
42166f3ec3 | ||
|
|
7e007910dc | ||
|
|
3acd53268c | ||
|
|
18dd2457d2 | ||
|
|
dd64df9213 | ||
|
|
502d619dcb | ||
|
|
f1cf9a1eb2 | ||
|
|
7cc9bb0f41 | ||
|
|
606c774de4 | ||
|
|
30b6228076 | ||
|
|
f1149c1800 | ||
|
|
3a8594884e | ||
|
|
c5c6a0f0ff | ||
|
|
26062fdc69 | ||
|
|
5c9873c17d | ||
|
|
0bf4095918 | ||
|
|
66ff9ea64b | ||
|
|
076a671f83 | ||
|
|
15f3ffa451 | ||
|
|
8ce7e5c848 | ||
|
|
2a96ce0363 | ||
|
|
0f39eb3fd9 | ||
|
|
38677234ad | ||
|
|
638e92c481 | ||
|
|
1812d878fe | ||
|
|
f900b843b2 | ||
|
|
c5c44fcd9e | ||
|
|
57599b1d73 | ||
|
|
d784a1591d | ||
|
|
b65dabc06b | ||
|
|
bc8604e93e | ||
|
|
3c272ec34a | ||
|
|
681e031739 | ||
|
|
9f4cdec106 | ||
|
|
8a5bfdd4fd | ||
|
|
cbd33fbd17 | ||
|
|
a6fdd14ebb | ||
|
|
7e3d53f485 | ||
|
|
39830fccef | ||
|
|
b31564a2dd | ||
|
|
b42b754e94 | ||
|
|
7dbd19f174 | ||
|
|
8ce12ca687 | ||
|
|
092a9048b3 | ||
|
|
0ff09b3ab6 | ||
|
|
4f650af7ee | ||
|
|
4c45169b3f | ||
|
|
d9e4546031 | ||
|
|
0260109d15 | ||
|
|
59da1b3511 | ||
|
|
6783341110 | ||
|
|
73a6b71975 | ||
|
|
5fee33731e | ||
|
|
7e0ea7c976 | ||
|
|
72e1b47484 | ||
|
|
7872863eda | ||
|
|
7b9304f668 | ||
|
|
ad5cb41daf | ||
|
|
05f331d061 | ||
|
|
0b42e595fb | ||
|
|
1d55785ab0 | ||
|
|
a7c17f36f1 | ||
|
|
c65ea67673 | ||
|
|
aed22dd122 | ||
|
|
b333550383 | ||
|
|
375450fbdb | ||
|
|
ee35a9af34 | ||
|
|
10a0c9f422 | ||
|
|
e4ee971f53 | ||
|
|
56844e1f8f | ||
|
|
7db7f03026 | ||
|
|
c58ef647a5 | ||
|
|
845a8bfd7b | ||
|
|
d0a62f6c95 | ||
|
|
ced0d8995d | ||
|
|
6dd3c0ef81 | ||
|
|
c018c83c5e | ||
|
|
c80eed8585 | ||
|
|
fb7e470f06 | ||
|
|
562ebb7e49 | ||
|
|
330cf93d19 | ||
|
|
777089c0ff | ||
|
|
e9ceaf902d | ||
|
|
e85d2c14dc | ||
|
|
ea07008020 | ||
|
|
e4d698d445 | ||
|
|
976f52b34a | ||
|
|
d654f0e1a6 | ||
|
|
4d8314d893 | ||
|
|
ad9fbc44ad | ||
|
|
d4e769910e | ||
|
|
1609056946 | ||
|
|
7e08e8b8e5 | ||
|
|
d40d5a5a1e | ||
|
|
2b0c31b94d | ||
|
|
418d9541e5 | ||
|
|
a9399d08ce | ||
|
|
974122a225 | ||
|
|
4015c9dc04 | ||
|
|
7a04a60292 | ||
|
|
7d0cebf065 | ||
|
|
0d1d818884 | ||
|
|
93c291e10e | ||
|
|
7bc79ba94e | ||
|
|
63bdbe120d | ||
|
|
64f9378a51 | ||
|
|
f04842805f | ||
|
|
d3decb214d | ||
|
|
9d3d2b04e1 | ||
|
|
2bb6d3487b | ||
|
|
d32abfe4b4 | ||
|
|
0a65330460 | ||
|
|
b9b95bf7d0 | ||
|
|
12e790f315 | ||
|
|
2235ce5937 | ||
|
|
935da3bc3f | ||
|
|
966a526006 | ||
|
|
8939a32ced | ||
|
|
4211bcd6db | ||
|
|
20d2942e8d | ||
|
|
d2e057b370 | ||
|
|
8567d60bf0 | ||
|
|
2e27e1c612 | ||
|
|
d86f895418 | ||
|
|
e44e579381 | ||
|
|
b36e06f007 | ||
|
|
00e30f1a1a | ||
|
|
960ddb7211 | ||
|
|
c763a67768 | ||
|
|
6ae36d5214 | ||
|
|
03c2457a89 | ||
|
|
b95c576fb6 | ||
|
|
a08c9618cd | ||
|
|
d4148687be | ||
|
|
a135569c37 | ||
|
|
abe2047067 | ||
|
|
bee9dda7ac | ||
|
|
fc936326f9 | ||
|
|
2860a94f78 | ||
|
|
64c8009b3e | ||
|
|
e09ff58a20 | ||
|
|
e4108585cb | ||
|
|
ffe8cbe205 | ||
|
|
c0c542a573 | ||
|
|
7ff26d1267 | ||
|
|
edc2d2c922 | ||
|
|
b750324aba | ||
|
|
d04a5f5251 | ||
|
|
ef0e3f5229 | ||
|
|
7a1cbd71c7 | ||
|
|
5b44ac6340 | ||
|
|
563d00dafd | ||
|
|
712a9f446b | ||
|
|
7241ea0a41 | ||
|
|
9eda0afacf | ||
|
|
5d35fed1ab | ||
|
|
a840f0714d | ||
|
|
e376f658a0 | ||
|
|
e207484039 | ||
|
|
a66b30547e | ||
|
|
70bdd38d93 | ||
|
|
8fb0e4abca | ||
|
|
58402fbddb | ||
|
|
6f0eda73a7 | ||
|
|
469ff07139 | ||
|
|
e7b6c2c3ff | ||
|
|
2def36d538 | ||
|
|
74e773a8a4 | ||
|
|
e342e3568c | ||
|
|
554a75fba9 | ||
|
|
d68d0b64a6 | ||
|
|
5d68eda096 | ||
|
|
6f2b048528 | ||
|
|
467aab7137 | ||
|
|
7401a62378 | ||
|
|
191f2a6856 | ||
|
|
7be6ff01d0 | ||
|
|
1901552a97 | ||
|
|
9958ecd45a | ||
|
|
3f593fd4e0 | ||
|
|
810a035768 | ||
|
|
cf4f308ad1 | ||
|
|
11c701a9ac | ||
|
|
9c80eba37d | ||
|
|
9f1ad6e731 | ||
|
|
aadf1788b7 | ||
|
|
04a70d256e | ||
|
|
b6285162d8 | ||
|
|
0494b9bfa0 | ||
|
|
1a900505bd | ||
|
|
5795c7c29e | ||
|
|
b1f94b20a9 | ||
|
|
3d6221e284 | ||
|
|
d00946e80b | ||
|
|
6117ec171b | ||
|
|
4da9042dbc | ||
|
|
5cd7f47e6e | ||
|
|
e034dcaa16 | ||
|
|
842c672a81 | ||
|
|
ee0670f85b | ||
|
|
522da95261 | ||
|
|
14161b3c08 | ||
|
|
f50c7bb579 | ||
|
|
94f39c7c6f | ||
|
|
493c8e8cc6 | ||
|
|
40b5b7497b | ||
|
|
a42c171038 | ||
|
|
29b8a11504 | ||
|
|
f2445a43d8 | ||
|
|
a1752787db | ||
|
|
af3b52ac79 | ||
|
|
e8f1b89974 | ||
|
|
173c6685ac | ||
|
|
c71114127c | ||
|
|
5738d159d7 | ||
|
|
0751e31230 | ||
|
|
9928e20172 | ||
|
|
872b71772e | ||
|
|
2329803b86 | ||
|
|
7f9ee33e8f | ||
|
|
15fe9503c3 | ||
|
|
dd2b51a76f | ||
|
|
df59b4ca8d | ||
|
|
9c17c57889 | ||
|
|
7184ef2eed | ||
|
|
ea65e7de40 | ||
|
|
7cdf9302a3 | ||
|
|
a3a12c0afb | ||
|
|
cf04c27f4f | ||
|
|
b5aa33d2df | ||
|
|
874a2834b5 |
4788
CHANGELOG.org
4788
CHANGELOG.org
File diff suppressed because it is too large
Load diff
4
COPYING
4
COPYING
|
|
@ -632,7 +632,7 @@ state the exclusion of warranty; and each file should have at least
|
|||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
modus-themes
|
||||
Copyright (C) 2019-2022 Free Software Foundation, Inc.
|
||||
Copyright (C) 2019-2023 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail.
|
|||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
modus-themes Copyright (C) 2019-2022 Free Software Foundation, Inc.
|
||||
modus-themes Copyright (C) 2019-2023 Free Software Foundation, Inc.
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
|
|
|||
321
README.md
321
README.md
|
|
@ -1,230 +1,137 @@
|
|||
# Modus themes for GNU Emacs (Modus Operandi and Modus Vivendi)
|
||||
# Modus themes for GNU Emacs
|
||||
|
||||
A pair of highly accessible themes that conform with the WCAG AAA
|
||||
standard for colour contrast between background and foreground
|
||||
combinations (a minimum contrast of 7:1---the highest standard of its
|
||||
kind). The Modus themes also strive to empower users with red-green
|
||||
color deficiency: this is achieved through customisation options that
|
||||
replace all relevant instances of green with blue, as well as the
|
||||
overall design of the themes which relies mostly on colours that cover
|
||||
the blue-cyan-magenta side of the spectrum.
|
||||
IMAGES HERE: <https://protesilaos.com/emacs/modus-themes-pictures>.
|
||||
|
||||
The themes are built into GNU Emacs 28 (development target). They are
|
||||
also distributed in several packages formats.
|
||||
Highly accessible themes, conforming with the highest standard for
|
||||
colour contrast between background and foreground values (WCAG AAA).
|
||||
They also are optimised for users with red-green colour deficiency.
|
||||
|
||||
+ `modus-operandi` is light.
|
||||
+ `modus-vivendi` is dark.
|
||||
The themes are very customisable and provide support for a very wide
|
||||
range of packages. Their manual is detailed so that new users can get
|
||||
started, while it also provides custom code for all sorts of more
|
||||
advanced customisations.
|
||||
|
||||
For some demo content, check:
|
||||
Since August 2020, the original Modus themes (`modus-operandi`,
|
||||
`modus-vivendi`) are built into Emacs version 28 or higher. Emacs 28
|
||||
ships with `modus-themes` version `1.6.0`. Emacs 29 includes version
|
||||
`3.0.0`. Emacs 30 provides a newer, refactored version that
|
||||
thoroughly refashions how the themes are implemented and customized.
|
||||
Such major versions are not backward-compatible due to the limited
|
||||
resources at my disposal to support multiple versions of Emacs and of
|
||||
the themes across the years.
|
||||
|
||||
+ The screenshots of the themes <https://protesilaos.com/emacs/modus-themes-pictures/>.
|
||||
+ My videos on Emacs <https://protesilaos.com/code-casts/>.
|
||||
Starting with version `5.0.0` of the `modus-themes`, other packages
|
||||
can be built on top to provide their own "Modus" derivative themes.
|
||||
The manual has a section about building on top of Modus. My
|
||||
`ef-themes` and `standard-themes` are done in this way (versions
|
||||
`2.0.0` and `3.0.0`, respectively).
|
||||
|
||||
## Quick setup for the latest version
|
||||
|
||||
### Built-in version
|
||||
|
||||
For the themes that are built into Emacs you cannot `require` the
|
||||
package. Use the following instead.
|
||||
|
||||
With `use-package`:
|
||||
|
||||
```elisp
|
||||
(use-package emacs
|
||||
:init
|
||||
;; Add all your customizations prior to loading the themes
|
||||
(setq modus-themes-italic-constructs t
|
||||
modus-themes-bold-constructs nil
|
||||
modus-themes-region '(bg-only no-extend))
|
||||
:config
|
||||
;; Load the theme of your choice:
|
||||
(load-theme 'modus-operandi) ;; OR (load-theme 'modus-vivendi)
|
||||
:bind ("<f5>" . modus-themes-toggle)
|
||||
```
|
||||
|
||||
Without `use-package`:
|
||||
|
||||
```elisp
|
||||
;; Add all your customizations prior to loading the themes
|
||||
(setq modus-themes-italic-constructs t
|
||||
modus-themes-bold-constructs nil
|
||||
modus-themes-region '(bg-only no-extend))
|
||||
|
||||
;; Load the theme of your choice:
|
||||
(load-theme 'modus-operandi) ;; OR (load-theme 'modus-vivendi)
|
||||
|
||||
(define-key global-map (kbd "<f5>") #'modus-themes-toggle)
|
||||
```
|
||||
|
||||
### Packaged version
|
||||
|
||||
With `use-package`:
|
||||
+ Package name (GNU ELPA): `modus-themes`
|
||||
+ Official manual: <https://protesilaos.com/emacs/modus-themes>
|
||||
+ Change log: <https://protesilaos.com/emacs/modus-themes-changelog>
|
||||
+ Colour palette: <https://protesilaos.com/emacs/modus-themes-colors>
|
||||
+ Sample pictures: <https://protesilaos.com/emacs/modus-themes-pictures>
|
||||
+ Git repositories:
|
||||
+ GitHub: <https://github.com/protesilaos/modus-themes>
|
||||
+ GitLab: <https://gitlab.com/protesilaos/modus-themes>
|
||||
+ Backronym: My Old Display Unexpectedly Sharpened ... themes.
|
||||
|
||||
```elisp
|
||||
(use-package modus-themes
|
||||
:ensure
|
||||
:ensure t
|
||||
:demand t
|
||||
:init
|
||||
;; Add all your customizations prior to loading the themes
|
||||
(setq modus-themes-italic-constructs t
|
||||
modus-themes-bold-constructs nil
|
||||
modus-themes-region '(bg-only no-extend))
|
||||
|
||||
;; Load the theme files before enabling a theme
|
||||
(modus-themes-load-themes)
|
||||
;; Starting with version 5.0.0 of the `modus-themes', other packages
|
||||
;; can be built on top to provide their own "Modus" derivatives.
|
||||
;; For example, this is what I do with my `ef-themes' and
|
||||
;; `standard-themes' (starting with versions 2.0.0 and 3.0.0,
|
||||
;; respectively).
|
||||
;;
|
||||
;; The `modus-themes-include-derivatives-mode' makes all Modus
|
||||
;; commands that act on a theme consider all such derivatives, if
|
||||
;; their respective packages are available and have been loaded.
|
||||
;;
|
||||
;; Note that those packages can even completely take over from the
|
||||
;; Modus themes such that, for example, `modus-themes-rotate' only
|
||||
;; goes through the Ef themes (to this end, the Ef themes provide
|
||||
;; the `ef-themes-take-over-modus-themes-mode' and the Standard
|
||||
;; themes have the `standard-themes-take-over-modus-themes-mode'
|
||||
;; equivalent).
|
||||
;;
|
||||
;; If you only care about the Modus themes, then (i) you do not need
|
||||
;; to enable the `modus-themes-include-derivatives-mode' and (ii) do
|
||||
;; not install and activate those other theme packages.
|
||||
(modus-themes-include-derivatives-mode 1)
|
||||
:bind
|
||||
(("<f5>" . modus-themes-rotate)
|
||||
("C-<f5>" . modus-themes-select)
|
||||
("M-<f5>" . modus-themes-load-random))
|
||||
:config
|
||||
;; Load the theme of your choice:
|
||||
(modus-themes-load-operandi) ;; OR (modus-themes-load-vivendi)
|
||||
:bind ("<f5>" . modus-themes-toggle))
|
||||
;; Your customizations here. All customizations must evaluated
|
||||
;; BEFORE loading the theme.
|
||||
(setq modus-themes-to-toggle '(modus-operandi modus-vivendi)
|
||||
modus-themes-to-rotate modus-themes-items
|
||||
modus-themes-mixed-fonts t
|
||||
modus-themes-variable-pitch-ui t
|
||||
modus-themes-italic-constructs t
|
||||
modus-themes-bold-constructs t
|
||||
modus-themes-completions '((t . (bold)))
|
||||
modus-themes-prompts '(bold)
|
||||
modus-themes-headings
|
||||
'((agenda-structure . (variable-pitch light 2.2))
|
||||
(agenda-date . (variable-pitch regular 1.3))
|
||||
(t . (regular 1.15))))
|
||||
|
||||
(setq modus-themes-common-palette-overrides nil)
|
||||
|
||||
;; Finally, load your theme of choice (or a random one with
|
||||
;; `modus-themes-load-random', `modus-themes-load-random-dark',
|
||||
;; `modus-themes-load-random-light').
|
||||
(modus-themes-load-theme 'modus-operandi))
|
||||
```
|
||||
|
||||
Without `use-package`:
|
||||
## Links to other projects
|
||||
|
||||
```elisp
|
||||
(require 'modus-themes)
|
||||
In this section I collect links to other themes built on top of Modus,
|
||||
have Modus as a dependency, or are porting Modus to some other
|
||||
platform. You are welcome to append your project to the relevant list.
|
||||
|
||||
;; Add all your customizations prior to loading the themes
|
||||
(setq modus-themes-italic-constructs t
|
||||
modus-themes-bold-constructs nil
|
||||
modus-themes-region '(bg-only no-extend))
|
||||
In linking to these projects, I am not endorsing anybody's views.
|
||||
|
||||
;; Load the theme files before enabling a theme
|
||||
(modus-themes-load-themes)
|
||||
### Emacs themes based on Modus
|
||||
|
||||
;; Load the theme of your choice:
|
||||
(modus-themes-load-operandi) ;; OR (modus-themes-load-vivendi)
|
||||
This is not an exhaustive list. You are welcome to add your package
|
||||
here. Newer projects are at the bottom and are added as I am made
|
||||
aware of them.
|
||||
|
||||
(define-key global-map (kbd "<f5>") #'modus-themes-toggle)
|
||||
```
|
||||
- `ef-themes` by Protesilaos <https://github.com/protesilaos/ef-themes>
|
||||
- `standard-themes` by Protesilaos <https://github.com/protesilaos/standard-themes>
|
||||
- `modus-ewal-theme` by Oliwier Czerwiński <https://github.com/deadendpl/modus-ewal-theme>
|
||||
- `modus-flexoki` by Derek Passen <https://github.com/dpassen/modus-flexoki>
|
||||
- `faff-theme` (since version 4) by James Ferguson <https://github.com/WJCFerguson/emacs-faff-theme>
|
||||
- `modus-catpuccin` by Magnus Therning <https://gitlab.com/magus/modus-catppuccin>
|
||||
- `pixel-themes` by Lucas <https://github.com/lucasobx/pixel-themes>
|
||||
- `modus-nordic` (`modus-nordic-night` and `modus-nordic-midnight`) by Ashton Wiersdorf <https://codeberg.org/ashton314/modus-nordic-night>
|
||||
- `folio-theme` by kn66 (nobu43) <https://github.com/kn66/folio-theme.el>
|
||||
- `modus-alabaster` by Derek Passen <https://github.com/dpassen/modus-alabaster>
|
||||
- `modus-vague` by Ashish Panigrahi <https://github.com/paniash/modus-vague.git>
|
||||
- `peppers-theme` by Joar von Arndt <https://codeberg.org/joar/peppers-theme>
|
||||
|
||||
Note: make sure that you **do not customise** `custom-theme-load-path`
|
||||
or `custom-theme-directory` _after_ the themes' package declaration.
|
||||
That will lead to failures in loading the files. If you must change
|
||||
those variables, do it before the package declaration.
|
||||
### Other Emacs packages based on Modus
|
||||
|
||||
## All customisations in short
|
||||
- `modus-themes-exporter` by Protesilaos <https://github.com/protesilaos/modus-themes-exporter>
|
||||
|
||||
While you should read the manual for all the details (see next section),
|
||||
here is a snippet with all current customisation options and their
|
||||
possible values. Note that those settings are only for purposes of
|
||||
demonstration:
|
||||
### Projects inspired by the Modus themes
|
||||
|
||||
```elisp
|
||||
(setq modus-themes-italic-constructs t
|
||||
modus-themes-bold-constructs nil
|
||||
modus-themes-mixed-fonts nil
|
||||
modus-themes-subtle-line-numbers nil
|
||||
modus-themes-intense-mouseovers nil
|
||||
modus-themes-deuteranopia t
|
||||
modus-themes-tabs-accented t
|
||||
modus-themes-variable-pitch-ui nil
|
||||
modus-themes-inhibit-reload t ; only applies to `customize-set-variable' and related
|
||||
This is not an exhaustive list. You are welcome to add your project here.
|
||||
|
||||
modus-themes-fringes nil ; {nil,'subtle,'intense}
|
||||
|
||||
;; Options for `modus-themes-lang-checkers' are either nil (the
|
||||
;; default), or a list of properties that may include any of those
|
||||
;; symbols: `straight-underline', `text-also', `background',
|
||||
;; `intense' OR `faint'.
|
||||
modus-themes-lang-checkers nil
|
||||
|
||||
;; Options for `modus-themes-mode-line' are either nil, or a list
|
||||
;; that can combine any of `3d' OR `moody', `borderless',
|
||||
;; `accented', a natural number for extra padding (or a cons cell
|
||||
;; of padding and NATNUM), and a floating point for the height of
|
||||
;; the text relative to the base font size (or a cons cell of
|
||||
;; height and FLOAT)
|
||||
modus-themes-mode-line '(accented borderless (padding . 4) (height . 0.9))
|
||||
|
||||
;; Same as above:
|
||||
;; modus-themes-mode-line '(accented borderless 4 0.9)
|
||||
|
||||
;; Options for `modus-themes-markup' are either nil, or a list
|
||||
;; that can combine any of `bold', `italic', `background',
|
||||
;; `intense'.
|
||||
modus-themes-markup '(background italic)
|
||||
|
||||
;; Options for `modus-themes-syntax' are either nil (the default),
|
||||
;; or a list of properties that may include any of those symbols:
|
||||
;; `faint', `yellow-comments', `green-strings', `alt-syntax'
|
||||
modus-themes-syntax nil
|
||||
|
||||
;; Options for `modus-themes-hl-line' are either nil (the default),
|
||||
;; or a list of properties that may include any of those symbols:
|
||||
;; `accented', `underline', `intense'
|
||||
modus-themes-hl-line '(underline accented)
|
||||
|
||||
;; Options for `modus-themes-paren-match' are either nil (the
|
||||
;; default), or a list of properties that may include any of those
|
||||
;; symbols: `bold', `intense', `underline'
|
||||
modus-themes-paren-match '(bold intense)
|
||||
|
||||
;; Options for `modus-themes-links' are either nil (the default),
|
||||
;; or a list of properties that may include any of those symbols:
|
||||
;; `neutral-underline' OR `no-underline', `faint' OR `no-color',
|
||||
;; `bold', `italic', `background'
|
||||
modus-themes-links '(neutral-underline background)
|
||||
|
||||
;; Options for `modus-themes-box-buttons' are either nil (the
|
||||
;; default), or a list that can combine any of `flat', `accented',
|
||||
;; `faint', `variable-pitch', `underline', `all-buttons', the
|
||||
;; symbol of any font weight as listed in `modus-themes-weights',
|
||||
;; and a floating point number (e.g. 0.9) for the height of the
|
||||
;; button's text.
|
||||
modus-themes-box-buttons '(variable-pitch flat faint 0.9)
|
||||
|
||||
;; Options for `modus-themes-prompts' are either nil (the
|
||||
;; default), or a list of properties that may include any of those
|
||||
;; symbols: `background', `bold', `gray', `intense', `italic'
|
||||
modus-themes-prompts '(intense bold)
|
||||
|
||||
;; The `modus-themes-completions' is an alist that reads three
|
||||
;; keys: `matches', `selection', `popup'. Each accepts a nil
|
||||
;; value (or empty list) or a list of properties that can include
|
||||
;; any of the following (for WEIGHT read further below):
|
||||
;;
|
||||
;; `matches' - `background', `intense', `underline', `italic', WEIGHT
|
||||
;; `selection' - `accented', `intense', `underline', `italic', `text-also' WEIGHT
|
||||
;; `popup' - same as `selected'
|
||||
;; `t' - applies to any key not explicitly referenced (check docs)
|
||||
;;
|
||||
;; WEIGHT is a symbol such as `semibold', `light', or anything
|
||||
;; covered in `modus-themes-weights'. Bold is used in the absence
|
||||
;; of an explicit WEIGHT.
|
||||
modus-themes-completions '((matches . (extrabold))
|
||||
(selection . (semibold accented))
|
||||
(popup . (accented intense)))
|
||||
|
||||
modus-themes-mail-citations nil ; {nil,'intense,'faint,'monochrome}
|
||||
|
||||
;; Options for `modus-themes-region' are either nil (the default),
|
||||
;; or a list of properties that may include any of those symbols:
|
||||
;; `no-extend', `bg-only', `accented'
|
||||
modus-themes-region '(bg-only no-extend)
|
||||
|
||||
;; Options for `modus-themes-diffs': nil, 'desaturated, 'bg-only
|
||||
modus-themes-diffs 'desaturated
|
||||
|
||||
modus-themes-org-blocks 'gray-background ; {nil,'gray-background,'tinted-background}
|
||||
|
||||
modus-themes-org-agenda ; this is an alist: read the manual or its doc string
|
||||
'((header-block . (variable-pitch 1.3))
|
||||
(header-date . (grayscale workaholic bold-today 1.1))
|
||||
(event . (accented varied))
|
||||
(scheduled . uniform)
|
||||
(habit . traffic-light))
|
||||
|
||||
modus-themes-headings ; this is an alist: read the manual or its doc string
|
||||
'((1 . (overline background variable-pitch 1.3))
|
||||
(2 . (rainbow overline 1.1))
|
||||
(t . (semibold))))
|
||||
```
|
||||
|
||||
## Further information
|
||||
|
||||
Read the [Info manual HTML](https://protesilaos.com/emacs/modus-themes)
|
||||
version for how to install, load, enable, and customise the themes. If
|
||||
you are using the latest version of the themes, you already have the
|
||||
manual installed: evaluate `(info "(modus-themes) Top")` to start
|
||||
reading it.
|
||||
|
||||
The themes cover a broad range of packages and are highly customisable.
|
||||
- `hugo-modus` by Yejun Su is a theme for the Hugo static site
|
||||
generator: <https://github.com/goofansu/hugo-modus>. It uses colours
|
||||
from the Modus themes.
|
||||
- `modus-themes.nvim` by Miika Nissi and others is a port for NeoVim:
|
||||
<https://github.com/miikanissi/modus-themes.nvim>.
|
||||
- `zed-modus-themes` by Vitaly Slobodin is a port for the Zed editor:
|
||||
<https://github.com/vitallium/zed-modus-themes>.
|
||||
- `word-smith` by Sadsnake1 is a distraction-free writing for Obsidian
|
||||
that includes ports of the Modus themes: <https://github.com/Sadsnake1/word-smith>
|
||||
- `omarchy-modus-themes` by Dhavan Vaidya: <https://github.com/codingquark/omarchy-modus-themes>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
7950
doc/modus-themes.org
7950
doc/modus-themes.org
File diff suppressed because it is too large
Load diff
95
modus-operandi-deuteranopia-theme.el
Normal file
95
modus-operandi-deuteranopia-theme.el
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
;;; modus-operandi-deuteranopia-theme.el --- Deuteranopia-optimized theme with a white background -*- lexical-binding:t -*-
|
||||
|
||||
;; Copyright (C) 2019-2026 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Protesilaos <info@protesilaos.com>
|
||||
;; Maintainer: Protesilaos <info@protesilaos.com>
|
||||
;; URL: https://github.com/protesilaos/modus-themes
|
||||
;; Keywords: faces, theme, accessibility
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
;; GNU Emacs is free software: you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation, either version 3 of the License, or
|
||||
;; (at your option) any later version.
|
||||
;;
|
||||
;; GNU Emacs is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
;;
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
;;
|
||||
;; The Modus themes conform with the highest standard for
|
||||
;; color-contrast accessibility between background and foreground
|
||||
;; values (WCAG AAA). They are also highly customizable and can even
|
||||
;; be used as the basis for other themes. Please refer to the official
|
||||
;; Info manual for further documentation (distributed with the themes,
|
||||
;; or available at: <https://protesilaos.com/emacs/modus-themes>).
|
||||
|
||||
;;; Code:
|
||||
|
||||
|
||||
|
||||
(unless (and (fboundp 'require-theme)
|
||||
load-file-name
|
||||
(equal (file-name-directory load-file-name)
|
||||
(expand-file-name "themes/" data-directory))
|
||||
(require-theme 'modus-themes t))
|
||||
(require 'modus-themes))
|
||||
|
||||
(defcustom modus-operandi-deuteranopia-palette-user nil
|
||||
"Like the `modus-operandi-deuteranopia-palette' for user-defined entries.
|
||||
This is meant to extend the palette with custom named colors and/or
|
||||
semantic palette mappings. Those may then be used in combination with
|
||||
palette overrides (also see `modus-themes-common-palette-overrides' and
|
||||
`modus-operandi-deuteranopia-palette-overrides')."
|
||||
:group 'modus-themes
|
||||
:package-version '(modus-themes . "4.5.0")
|
||||
:type '(repeat (list symbol (choice symbol string)))
|
||||
:link '(info-link "(modus-themes) Option to extend the palette for use with overrides"))
|
||||
|
||||
(defcustom modus-operandi-deuteranopia-palette-overrides nil
|
||||
"Overrides for `modus-operandi-deuteranopia-palette'.
|
||||
|
||||
Mirror the elements of the aforementioned palette, overriding
|
||||
their value.
|
||||
|
||||
For overrides that are shared across all of the Modus themes,
|
||||
refer to `modus-themes-common-palette-overrides'.
|
||||
|
||||
Theme-specific overrides take precedence over shared overrides.
|
||||
The idea of common overrides is to change semantic color
|
||||
mappings, such as to make the cursor red. Wherea theme-specific
|
||||
overrides can also be used to change the value of a named color,
|
||||
such as what hexadecimal RGB value the red-warmer symbol
|
||||
represents."
|
||||
:group 'modus-themes
|
||||
:package-version '(modus-themes . "4.0.0")
|
||||
:version "30.1"
|
||||
:type '(repeat (list symbol (choice symbol string)))
|
||||
:link '(info-link "(modus-themes) Palette overrides"))
|
||||
|
||||
(modus-themes-theme
|
||||
'modus-operandi-deuteranopia
|
||||
'modus-themes
|
||||
"Deuteranopia-optimized theme with a white background.
|
||||
This variant is optimized for users with red-green color
|
||||
deficiency (deuteranopia). It conforms with the highest
|
||||
legibility standard for color contrast between background and
|
||||
foreground in any given piece of text, which corresponds to a
|
||||
minimum contrast in relative luminance of 7:1 (WCAG AAA
|
||||
standard)."
|
||||
'light
|
||||
'modus-themes-operandi-deuteranopia-palette
|
||||
'modus-operandi-deuteranopia-palette-user
|
||||
'modus-operandi-deuteranopia-palette-overrides
|
||||
'modus-themes-faces-deuteranopia)
|
||||
|
||||
(provide 'modus-operandi-deuteranopia-theme)
|
||||
|
||||
;;; modus-operandi-deuteranopia-theme.el ends here
|
||||
|
|
@ -1,11 +1,10 @@
|
|||
;;; modus-operandi-theme.el --- Elegant, highly legible and customizable light theme -*- lexical-binding:t -*-
|
||||
;;; modus-operandi-theme.el --- Elegant, highly legible theme with a white background -*- lexical-binding:t -*-
|
||||
|
||||
;; Copyright (C) 2019-2022 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2019-2026 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Protesilaos Stavrou <info@protesilaos.com>
|
||||
;; URL: https://git.sr.ht/~protesilaos/modus-themes
|
||||
;; Version: 2.3.2
|
||||
;; Package-Requires: ((emacs "27.1"))
|
||||
;; Author: Protesilaos <info@protesilaos.com>
|
||||
;; Maintainer: Protesilaos <info@protesilaos.com>
|
||||
;; URL: https://github.com/protesilaos/modus-themes
|
||||
;; Keywords: faces, theme, accessibility
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
|
@ -25,48 +24,69 @@
|
|||
|
||||
;;; Commentary:
|
||||
;;
|
||||
;; Modus Operandi is the light variant of the Modus themes (Modus
|
||||
;; Vivendi is the dark one). The themes are designed for color-contrast
|
||||
;; accessibility. More specifically:
|
||||
;;
|
||||
;; 1. Provide a consistent minimum contrast ratio between background
|
||||
;; and foreground values of 7:1 or higher. This meets the highest
|
||||
;; such accessibility criterion per the guidelines of the Worldwide
|
||||
;; Web Consortium's Working Group on Accessibility (WCAG AAA
|
||||
;; standard).
|
||||
;;
|
||||
;; 2. Offer as close to full face coverage as possible. The list is
|
||||
;; already quite long, with more additions to follow as part of the
|
||||
;; ongoing development process.
|
||||
;;
|
||||
;; For a complete view of the project, also refer to the following files
|
||||
;; (should be distributed in the same repository/directory as the
|
||||
;; current item):
|
||||
;;
|
||||
;; - modus-themes.el (Main code shared between the themes)
|
||||
;; - modus-vivendi-theme.el (Dark theme)
|
||||
;; The Modus themes conform with the highest standard for
|
||||
;; color-contrast accessibility between background and foreground
|
||||
;; values (WCAG AAA). They are also highly customizable and can even
|
||||
;; be used as the basis for other themes. Please refer to the official
|
||||
;; Info manual for further documentation (distributed with the themes,
|
||||
;; or available at: <https://protesilaos.com/emacs/modus-themes>).
|
||||
|
||||
;;; Code:
|
||||
|
||||
|
||||
|
||||
(eval-and-compile
|
||||
(unless (and (fboundp 'require-theme)
|
||||
load-file-name
|
||||
(equal (file-name-directory load-file-name)
|
||||
(expand-file-name "themes/" data-directory))
|
||||
(require-theme 'modus-themes t))
|
||||
(require 'modus-themes))
|
||||
(unless (and (fboundp 'require-theme)
|
||||
load-file-name
|
||||
(equal (file-name-directory load-file-name)
|
||||
(expand-file-name "themes/" data-directory))
|
||||
(require-theme 'modus-themes t))
|
||||
(require 'modus-themes))
|
||||
|
||||
(deftheme modus-operandi
|
||||
"Elegant, highly legible and customizable light theme.
|
||||
(defcustom modus-operandi-palette-user nil
|
||||
"Like the `modus-operandi-palette' for user-defined entries.
|
||||
This is meant to extend the palette with custom named colors and/or
|
||||
semantic palette mappings. Those may then be used in combination with
|
||||
palette overrides (also see `modus-themes-common-palette-overrides' and
|
||||
`modus-operandi-palette-overrides')."
|
||||
:group 'modus-themes
|
||||
:package-version '(modus-themes . "4.5.0")
|
||||
:type '(repeat (list symbol (choice symbol string)))
|
||||
:link '(info-link "(modus-themes) Option to extend the palette for use with overrides"))
|
||||
|
||||
(defcustom modus-operandi-palette-overrides nil
|
||||
"Overrides for `modus-operandi-palette'.
|
||||
|
||||
Mirror the elements of the aforementioned palette, overriding
|
||||
their value.
|
||||
|
||||
For overrides that are shared across all of the Modus themes,
|
||||
refer to `modus-themes-common-palette-overrides'.
|
||||
|
||||
Theme-specific overrides take precedence over shared overrides.
|
||||
The idea of common overrides is to change semantic color
|
||||
mappings, such as to make the cursor red. Wherea theme-specific
|
||||
overrides can also be used to change the value of a named color,
|
||||
such as what hexadecimal RGB value the red-warmer symbol
|
||||
represents."
|
||||
:group 'modus-themes
|
||||
:package-version '(modus-themes . "4.0.0")
|
||||
:version "30.1"
|
||||
:type '(repeat (list symbol (choice symbol string)))
|
||||
:link '(info-link "(modus-themes) Palette overrides"))
|
||||
|
||||
(modus-themes-theme
|
||||
'modus-operandi
|
||||
'modus-themes
|
||||
"Elegant, highly legible theme with a white background.
|
||||
Conforms with the highest legibility standard for color contrast
|
||||
between background and foreground in any given piece of text,
|
||||
which corresponds to a minimum contrast in relative luminance of
|
||||
7:1 (WCAG AAA standard).")
|
||||
7:1 (WCAG AAA standard)."
|
||||
'light
|
||||
'modus-themes-operandi-palette
|
||||
'modus-operandi-palette-user
|
||||
'modus-operandi-palette-overrides)
|
||||
|
||||
(modus-themes-theme modus-operandi)
|
||||
|
||||
(provide-theme 'modus-operandi))
|
||||
(provide 'modus-operandi-theme)
|
||||
|
||||
;;; modus-operandi-theme.el ends here
|
||||
|
|
|
|||
92
modus-operandi-tinted-theme.el
Normal file
92
modus-operandi-tinted-theme.el
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
;;; modus-operandi-tinted-theme.el --- Elegant, highly legible theme with a light ochre background -*- lexical-binding:t -*-
|
||||
|
||||
;; Copyright (C) 2019-2026 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Protesilaos <info@protesilaos.com>
|
||||
;; Maintainer: Protesilaos <info@protesilaos.com>
|
||||
;; URL: https://github.com/protesilaos/modus-themes
|
||||
;; Keywords: faces, theme, accessibility
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
;; GNU Emacs is free software: you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation, either version 3 of the License, or
|
||||
;; (at your option) any later version.
|
||||
;;
|
||||
;; GNU Emacs is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
;;
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
;;
|
||||
;; The Modus themes conform with the highest standard for
|
||||
;; color-contrast accessibility between background and foreground
|
||||
;; values (WCAG AAA). They are also highly customizable and can even
|
||||
;; be used as the basis for other themes. Please refer to the official
|
||||
;; Info manual for further documentation (distributed with the themes,
|
||||
;; or available at: <https://protesilaos.com/emacs/modus-themes>).
|
||||
|
||||
;;; Code:
|
||||
|
||||
|
||||
|
||||
(unless (and (fboundp 'require-theme)
|
||||
load-file-name
|
||||
(equal (file-name-directory load-file-name)
|
||||
(expand-file-name "themes/" data-directory))
|
||||
(require-theme 'modus-themes t))
|
||||
(require 'modus-themes))
|
||||
|
||||
(defcustom modus-operandi-tinted-palette-user nil
|
||||
"Like the `modus-operandi-tinted-palette' for user-defined entries.
|
||||
This is meant to extend the palette with custom named colors and/or
|
||||
semantic palette mappings. Those may then be used in combination with
|
||||
palette overrides (also see `modus-themes-common-palette-overrides' and
|
||||
`modus-operandi-tinted-palette-overrides')."
|
||||
:group 'modus-themes
|
||||
:package-version '(modus-themes . "4.5.0")
|
||||
:type '(repeat (list symbol (choice symbol string)))
|
||||
:link '(info-link "(modus-themes) Option to extend the palette for use with overrides"))
|
||||
|
||||
(defcustom modus-operandi-tinted-palette-overrides nil
|
||||
"Overrides for `modus-operandi-tinted-palette'.
|
||||
|
||||
Mirror the elements of the aforementioned palette, overriding
|
||||
their value.
|
||||
|
||||
For overrides that are shared across all of the Modus themes,
|
||||
refer to `modus-themes-common-palette-overrides'.
|
||||
|
||||
Theme-specific overrides take precedence over shared overrides.
|
||||
The idea of common overrides is to change semantic color
|
||||
mappings, such as to make the cursor red. Wherea theme-specific
|
||||
overrides can also be used to change the value of a named color,
|
||||
such as what hexadecimal RGB value the red-warmer symbol
|
||||
represents."
|
||||
:group 'modus-themes
|
||||
:package-version '(modus-themes . "4.0.0")
|
||||
:version "30.1"
|
||||
:type '(repeat (list symbol (choice symbol string)))
|
||||
:link '(info-link "(modus-themes) Palette overrides"))
|
||||
|
||||
(modus-themes-theme
|
||||
'modus-operandi-tinted
|
||||
'modus-themes
|
||||
"Elegant, highly legible theme with a light ochre background.
|
||||
Conforms with the highest legibility standard for color contrast
|
||||
between background and foreground in any given piece of text,
|
||||
which corresponds to a minimum contrast in relative luminance of
|
||||
7:1 (WCAG AAA standard)."
|
||||
'light
|
||||
'modus-themes-operandi-tinted-palette
|
||||
'modus-operandi-tinted-palette-user
|
||||
'modus-operandi-tinted-palette-overrides)
|
||||
|
||||
(provide 'modus-operandi-tinted-theme)
|
||||
|
||||
;;; modus-operandi-tinted-theme.el ends here
|
||||
95
modus-operandi-tritanopia-theme.el
Normal file
95
modus-operandi-tritanopia-theme.el
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
;;; modus-operandi-tritanopia-theme.el --- Tritanopia-optimized theme with a white background -*- lexical-binding:t -*-
|
||||
|
||||
;; Copyright (C) 2019-2026 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Protesilaos <info@protesilaos.com>
|
||||
;; Maintainer: Protesilaos <info@protesilaos.com>
|
||||
;; URL: https://github.com/protesilaos/modus-themes
|
||||
;; Keywords: faces, theme, accessibility
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
;; GNU Emacs is free software: you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation, either version 3 of the License, or
|
||||
;; (at your option) any later version.
|
||||
;;
|
||||
;; GNU Emacs is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
;;
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
;;
|
||||
;; The Modus themes conform with the highest standard for
|
||||
;; color-contrast accessibility between background and foreground
|
||||
;; values (WCAG AAA). They are also highly customizable and can even
|
||||
;; be used as the basis for other themes. Please refer to the official
|
||||
;; Info manual for further documentation (distributed with the themes,
|
||||
;; or available at: <https://protesilaos.com/emacs/modus-themes>).
|
||||
|
||||
;;; Code:
|
||||
|
||||
|
||||
|
||||
(unless (and (fboundp 'require-theme)
|
||||
load-file-name
|
||||
(equal (file-name-directory load-file-name)
|
||||
(expand-file-name "themes/" data-directory))
|
||||
(require-theme 'modus-themes t))
|
||||
(require 'modus-themes))
|
||||
|
||||
(defcustom modus-operandi-tritanopia-palette-user nil
|
||||
"Like the `modus-operandi-tritanopia-palette' for user-defined entries.
|
||||
This is meant to extend the palette with custom named colors and/or
|
||||
semantic palette mappings. Those may then be used in combination with
|
||||
palette overrides (also see `modus-themes-common-palette-overrides' and
|
||||
`modus-operandi-tritanopia-palette-overrides')."
|
||||
:group 'modus-themes
|
||||
:package-version '(modus-themes . "4.5.0")
|
||||
:type '(repeat (list symbol (choice symbol string)))
|
||||
:link '(info-link "(modus-themes) Option to extend the palette for use with overrides"))
|
||||
|
||||
(defcustom modus-operandi-tritanopia-palette-overrides nil
|
||||
"Overrides for `modus-operandi-tritanopia-palette'.
|
||||
|
||||
Mirror the elements of the aforementioned palette, overriding
|
||||
their value.
|
||||
|
||||
For overrides that are shared across all of the Modus themes,
|
||||
refer to `modus-themes-common-palette-overrides'.
|
||||
|
||||
Theme-specific overrides take precedence over shared overrides.
|
||||
The idea of common overrides is to change semantic color
|
||||
mappings, such as to make the cursor red. Wherea theme-specific
|
||||
overrides can also be used to change the value of a named color,
|
||||
such as what hexadecimal RGB value the red-warmer symbol
|
||||
represents."
|
||||
:group 'modus-themes
|
||||
:package-version '(modus-themes . "4.0.0")
|
||||
:version "30.1"
|
||||
:type '(repeat (list symbol (choice symbol string)))
|
||||
:link '(info-link "(modus-themes) Palette overrides"))
|
||||
|
||||
(modus-themes-theme
|
||||
'modus-operandi-tritanopia
|
||||
'modus-themes
|
||||
"Tritanopia-optimized theme with a white background.
|
||||
This variant is optimized for users with blue-yellow color
|
||||
deficiency (tritanopia). It conforms with the highest
|
||||
legibility standard for color contrast between background and
|
||||
foreground in any given piece of text, which corresponds to a
|
||||
minimum contrast in relative luminance of 7:1 (WCAG AAA
|
||||
standard)."
|
||||
'light
|
||||
'modus-themes-operandi-tritanopia-palette
|
||||
'modus-operandi-tritanopia-palette-user
|
||||
'modus-operandi-tritanopia-palette-overrides
|
||||
'modus-themes-faces-tritanopia)
|
||||
|
||||
(provide 'modus-operandi-tritanopia-theme)
|
||||
|
||||
;;; modus-operandi-tritanopia-theme.el ends here
|
||||
14591
modus-themes.el
14591
modus-themes.el
File diff suppressed because it is too large
Load diff
95
modus-vivendi-deuteranopia-theme.el
Normal file
95
modus-vivendi-deuteranopia-theme.el
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
;;; modus-vivendi-deuteranopia-theme.el --- Deuteranopia-optimized theme with a black background -*- lexical-binding:t -*-
|
||||
|
||||
;; Copyright (C) 2019-2026 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Protesilaos <info@protesilaos.com>
|
||||
;; Maintainer: Protesilaos <info@protesilaos.com>
|
||||
;; URL: https://github.com/protesilaos/modus-themes
|
||||
;; Keywords: faces, theme, accessibility
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
;; GNU Emacs is free software: you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation, either version 3 of the License, or
|
||||
;; (at your option) any later version.
|
||||
;;
|
||||
;; GNU Emacs is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
;;
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
;;
|
||||
;; The Modus themes conform with the highest standard for
|
||||
;; color-contrast accessibility between background and foreground
|
||||
;; values (WCAG AAA). They are also highly customizable and can even
|
||||
;; be used as the basis for other themes. Please refer to the official
|
||||
;; Info manual for further documentation (distributed with the themes,
|
||||
;; or available at: <https://protesilaos.com/emacs/modus-themes>).
|
||||
|
||||
;;; Code:
|
||||
|
||||
|
||||
|
||||
(unless (and (fboundp 'require-theme)
|
||||
load-file-name
|
||||
(equal (file-name-directory load-file-name)
|
||||
(expand-file-name "themes/" data-directory))
|
||||
(require-theme 'modus-themes t))
|
||||
(require 'modus-themes))
|
||||
|
||||
(defcustom modus-vivendi-deuteranopia-palette-user nil
|
||||
"Like the `modus-vivendi-deuteranopia-palette' for user-defined entries.
|
||||
This is meant to extend the palette with custom named colors and/or
|
||||
semantic palette mappings. Those may then be used in combination with
|
||||
palette overrides (also see `modus-themes-common-palette-overrides' and
|
||||
`modus-vivendi-deuteranopia-palette-overrides')."
|
||||
:group 'modus-themes
|
||||
:package-version '(modus-themes . "4.5.0")
|
||||
:type '(repeat (list symbol (choice symbol string)))
|
||||
:link '(info-link "(modus-themes) Option to extend the palette for use with overrides"))
|
||||
|
||||
(defcustom modus-vivendi-deuteranopia-palette-overrides nil
|
||||
"Overrides for `modus-vivendi-deuteranopia-palette'.
|
||||
|
||||
Mirror the elements of the aforementioned palette, overriding
|
||||
their value.
|
||||
|
||||
For overrides that are shared across all of the Modus themes,
|
||||
refer to `modus-themes-common-palette-overrides'.
|
||||
|
||||
Theme-specific overrides take precedence over shared overrides.
|
||||
The idea of common overrides is to change semantic color
|
||||
mappings, such as to make the cursor red. Wherea theme-specific
|
||||
overrides can also be used to change the value of a named color,
|
||||
such as what hexadecimal RGB value the red-warmer symbol
|
||||
represents."
|
||||
:group 'modus-themes
|
||||
:package-version '(modus-themes . "4.0.0")
|
||||
:version "30.1"
|
||||
:type '(repeat (list symbol (choice symbol string)))
|
||||
:link '(info-link "(modus-themes) Palette overrides"))
|
||||
|
||||
(modus-themes-theme
|
||||
'modus-vivendi-deuteranopia
|
||||
'modus-themes
|
||||
"Deuteranopia-optimized theme with a black background.
|
||||
This variant is optimized for users with red-green color
|
||||
deficiency (deuteranopia). It conforms with the highest
|
||||
legibility standard for color contrast between background and
|
||||
foreground in any given piece of text, which corresponds to a
|
||||
minimum contrast in relative luminance of 7:1 (WCAG AAA
|
||||
standard)."
|
||||
'dark
|
||||
'modus-themes-vivendi-deuteranopia-palette
|
||||
'modus-vivendi-deuteranopia-palette-user
|
||||
'modus-vivendi-deuteranopia-palette-overrides
|
||||
'modus-themes-faces-deuteranopia)
|
||||
|
||||
(provide 'modus-vivendi-deuteranopia-theme)
|
||||
|
||||
;;; modus-vivendi-deuteranopia-theme.el ends here
|
||||
|
|
@ -1,11 +1,10 @@
|
|||
;;; modus-vivendi-theme.el --- Elegant, highly legible and customizable light theme -*- lexical-binding:t -*-
|
||||
;;; modus-vivendi-theme.el --- Elegant, highly legible theme with a black background -*- lexical-binding:t -*-
|
||||
|
||||
;; Copyright (C) 2019-2022 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2019-2026 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Protesilaos Stavrou <info@protesilaos.com>
|
||||
;; URL: https://git.sr.ht/~protesilaos/modus-themes
|
||||
;; Version: 2.3.2
|
||||
;; Package-Requires: ((emacs "27.1"))
|
||||
;; Author: Protesilaos <info@protesilaos.com>
|
||||
;; Maintainer: Protesilaos <info@protesilaos.com>
|
||||
;; URL: https://github.com/protesilaos/modus-themes
|
||||
;; Keywords: faces, theme, accessibility
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
|
@ -25,48 +24,69 @@
|
|||
|
||||
;;; Commentary:
|
||||
;;
|
||||
;; Modus Vivendi is the dark variant of the Modus themes (Modus Operandi
|
||||
;; is the light one). The themes are designed for color-contrast
|
||||
;; accessibility. More specifically:
|
||||
;;
|
||||
;; 1. Provide a consistent minimum contrast ratio between background
|
||||
;; and foreground values of 7:1 or higher. This meets the highest
|
||||
;; such accessibility criterion per the guidelines of the Worldwide
|
||||
;; Web Consortium's Working Group on Accessibility (WCAG AAA
|
||||
;; standard).
|
||||
;;
|
||||
;; 2. Offer as close to full face coverage as possible. The list is
|
||||
;; already quite long, with more additions to follow as part of the
|
||||
;; ongoing development process.
|
||||
;;
|
||||
;; For a complete view of the project, also refer to the following files
|
||||
;; (should be distributed in the same repository/directory as the
|
||||
;; current item):
|
||||
;;
|
||||
;; - modus-themes.el (Main code shared between the themes)
|
||||
;; - modus-operandi-theme.el (Light theme)
|
||||
;; The Modus themes conform with the highest standard for
|
||||
;; color-contrast accessibility between background and foreground
|
||||
;; values (WCAG AAA). They are also highly customizable and can even
|
||||
;; be used as the basis for other themes. Please refer to the official
|
||||
;; Info manual for further documentation (distributed with the themes,
|
||||
;; or available at: <https://protesilaos.com/emacs/modus-themes>).
|
||||
|
||||
;;; Code:
|
||||
|
||||
|
||||
|
||||
(eval-and-compile
|
||||
(unless (and (fboundp 'require-theme)
|
||||
load-file-name
|
||||
(equal (file-name-directory load-file-name)
|
||||
(expand-file-name "themes/" data-directory))
|
||||
(require-theme 'modus-themes t))
|
||||
(require 'modus-themes))
|
||||
(unless (and (fboundp 'require-theme)
|
||||
load-file-name
|
||||
(equal (file-name-directory load-file-name)
|
||||
(expand-file-name "themes/" data-directory))
|
||||
(require-theme 'modus-themes t))
|
||||
(require 'modus-themes))
|
||||
|
||||
(deftheme modus-vivendi
|
||||
"Elegant, highly legible and customizable dark theme.
|
||||
(defcustom modus-vivendi-palette-user nil
|
||||
"Like the `modus-vivendi--palette' for user-defined entries.
|
||||
This is meant to extend the palette with custom named colors and/or
|
||||
semantic palette mappings. Those may then be used in combination with
|
||||
palette overrides (also see `modus-themes-common-palette-overrides' and
|
||||
`modus-vivendi--palette-overrides')."
|
||||
:group 'modus-themes
|
||||
:package-version '(modus-themes . "4.5.0")
|
||||
:type '(repeat (list symbol (choice symbol string)))
|
||||
:link '(info-link "(modus-themes) Option to extend the palette for use with overrides"))
|
||||
|
||||
(defcustom modus-vivendi-palette-overrides nil
|
||||
"Overrides for `modus-vivendi-palette'.
|
||||
|
||||
Mirror the elements of the aforementioned palette, overriding
|
||||
their value.
|
||||
|
||||
For overrides that are shared across all of the Modus themes,
|
||||
refer to `modus-themes-common-palette-overrides'.
|
||||
|
||||
Theme-specific overrides take precedence over shared overrides.
|
||||
The idea of common overrides is to change semantic color
|
||||
mappings, such as to make the cursor red. Wherea theme-specific
|
||||
overrides can also be used to change the value of a named color,
|
||||
such as what hexadecimal RGB value the red-warmer symbol
|
||||
represents."
|
||||
:group 'modus-themes
|
||||
:package-version '(modus-themes . "4.0.0")
|
||||
:version "30.1"
|
||||
:type '(repeat (list symbol (choice symbol string)))
|
||||
:link '(info-link "(modus-themes) Palette overrides"))
|
||||
|
||||
(modus-themes-theme
|
||||
'modus-vivendi
|
||||
'modus-themes
|
||||
"Elegant, highly legible theme with a black background.
|
||||
Conforms with the highest legibility standard for color contrast
|
||||
between background and foreground in any given piece of text,
|
||||
which corresponds to a minimum contrast in relative luminance of
|
||||
7:1 (WCAG AAA standard).")
|
||||
7:1 (WCAG AAA standard)."
|
||||
'dark
|
||||
'modus-themes-vivendi-palette
|
||||
'modus-vivendi-palette-user
|
||||
'modus-vivendi-palette-overrides)
|
||||
|
||||
(modus-themes-theme modus-vivendi)
|
||||
|
||||
(provide-theme 'modus-vivendi))
|
||||
(provide 'modus-vivendi-theme)
|
||||
|
||||
;;; modus-vivendi-theme.el ends here
|
||||
|
|
|
|||
92
modus-vivendi-tinted-theme.el
Normal file
92
modus-vivendi-tinted-theme.el
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
;;; modus-vivendi-tinted-theme.el --- Elegant, highly legible theme with a night sky background -*- lexical-binding:t -*-
|
||||
|
||||
;; Copyright (C) 2019-2026 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Protesilaos <info@protesilaos.com>
|
||||
;; Maintainer: Protesilaos <info@protesilaos.com>
|
||||
;; URL: https://github.com/protesilaos/modus-themes
|
||||
;; Keywords: faces, theme, accessibility
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
;; GNU Emacs is free software: you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation, either version 3 of the License, or
|
||||
;; (at your option) any later version.
|
||||
;;
|
||||
;; GNU Emacs is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
;;
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
;;
|
||||
;; The Modus themes conform with the highest standard for
|
||||
;; color-contrast accessibility between background and foreground
|
||||
;; values (WCAG AAA). They are also highly customizable and can even
|
||||
;; be used as the basis for other themes. Please refer to the official
|
||||
;; Info manual for further documentation (distributed with the themes,
|
||||
;; or available at: <https://protesilaos.com/emacs/modus-themes>).
|
||||
|
||||
;;; Code:
|
||||
|
||||
|
||||
|
||||
(unless (and (fboundp 'require-theme)
|
||||
load-file-name
|
||||
(equal (file-name-directory load-file-name)
|
||||
(expand-file-name "themes/" data-directory))
|
||||
(require-theme 'modus-themes t))
|
||||
(require 'modus-themes))
|
||||
|
||||
(defcustom modus-vivendi-tinted-palette-user nil
|
||||
"Like the `modus-vivendi-tinted-palette' for user-defined entries.
|
||||
This is meant to extend the palette with custom named colors and/or
|
||||
semantic palette mappings. Those may then be used in combination with
|
||||
palette overrides (also see `modus-themes-common-palette-overrides' and
|
||||
`modus-vivendi-tinted-palette-overrides')."
|
||||
:group 'modus-themes
|
||||
:package-version '(modus-themes . "4.5.0")
|
||||
:type '(repeat (list symbol (choice symbol string)))
|
||||
:link '(info-link "(modus-themes) Option to extend the palette for use with overrides"))
|
||||
|
||||
(defcustom modus-vivendi-tinted-palette-overrides nil
|
||||
"Overrides for `modus-vivendi-tinted-palette'.
|
||||
|
||||
Mirror the elements of the aforementioned palette, overriding
|
||||
their value.
|
||||
|
||||
For overrides that are shared across all of the Modus themes,
|
||||
refer to `modus-themes-common-palette-overrides'.
|
||||
|
||||
Theme-specific overrides take precedence over shared overrides.
|
||||
The idea of common overrides is to change semantic color
|
||||
mappings, such as to make the cursor red. Wherea theme-specific
|
||||
overrides can also be used to change the value of a named color,
|
||||
such as what hexadecimal RGB value the red-warmer symbol
|
||||
represents."
|
||||
:group 'modus-themes
|
||||
:package-version '(modus-themes . "4.0.0")
|
||||
:version "30.1"
|
||||
:type '(repeat (list symbol (choice symbol string)))
|
||||
:link '(info-link "(modus-themes) Palette overrides"))
|
||||
|
||||
(modus-themes-theme
|
||||
'modus-vivendi-tinted
|
||||
'modus-themes
|
||||
"Elegant, highly legible theme with a night sky background.
|
||||
Conforms with the highest legibility standard for color contrast
|
||||
between background and foreground in any given piece of text,
|
||||
which corresponds to a minimum contrast in relative luminance of
|
||||
7:1 (WCAG AAA standard)."
|
||||
'dark
|
||||
'modus-themes-vivendi-tinted-palette
|
||||
'modus-vivendi-tinted-palette-user
|
||||
'modus-vivendi-tinted-palette-overrides)
|
||||
|
||||
(provide 'modus-vivendi-tinted-theme)
|
||||
|
||||
;;; modus-vivendi-tinted-theme.el ends here
|
||||
95
modus-vivendi-tritanopia-theme.el
Normal file
95
modus-vivendi-tritanopia-theme.el
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
;;; modus-vivendi-tritanopia-theme.el --- Tritanopia-optimized theme with a black background -*- lexical-binding:t -*-
|
||||
|
||||
;; Copyright (C) 2019-2026 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Protesilaos <info@protesilaos.com>
|
||||
;; Maintainer: Protesilaos <info@protesilaos.com>
|
||||
;; URL: https://github.com/protesilaos/modus-themes
|
||||
;; Keywords: faces, theme, accessibility
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
;; GNU Emacs is free software: you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation, either version 3 of the License, or
|
||||
;; (at your option) any later version.
|
||||
;;
|
||||
;; GNU Emacs is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
;;
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
;;
|
||||
;; The Modus themes conform with the highest standard for
|
||||
;; color-contrast accessibility between background and foreground
|
||||
;; values (WCAG AAA). They are also highly customizable and can even
|
||||
;; be used as the basis for other themes. Please refer to the official
|
||||
;; Info manual for further documentation (distributed with the themes,
|
||||
;; or available at: <https://protesilaos.com/emacs/modus-themes>).
|
||||
|
||||
;;; Code:
|
||||
|
||||
|
||||
|
||||
(unless (and (fboundp 'require-theme)
|
||||
load-file-name
|
||||
(equal (file-name-directory load-file-name)
|
||||
(expand-file-name "themes/" data-directory))
|
||||
(require-theme 'modus-themes t))
|
||||
(require 'modus-themes))
|
||||
|
||||
(defcustom modus-vivendi-tritanopia-palette-user nil
|
||||
"Like the `modus-vivendi-tritanopia-palette' for user-defined entries.
|
||||
This is meant to extend the palette with custom named colors and/or
|
||||
semantic palette mappings. Those may then be used in combination with
|
||||
palette overrides (also see `modus-themes-common-palette-overrides' and
|
||||
`modus-vivendi-tritanopia-palette-overrides')."
|
||||
:group 'modus-themes
|
||||
:package-version '(modus-themes . "4.5.0")
|
||||
:type '(repeat (list symbol (choice symbol string)))
|
||||
:link '(info-link "(modus-themes) Option to extend the palette for use with overrides"))
|
||||
|
||||
(defcustom modus-vivendi-tritanopia-palette-overrides nil
|
||||
"Overrides for `modus-vivendi-tritanopia-palette'.
|
||||
|
||||
Mirror the elements of the aforementioned palette, overriding
|
||||
their value.
|
||||
|
||||
For overrides that are shared across all of the Modus themes,
|
||||
refer to `modus-themes-common-palette-overrides'.
|
||||
|
||||
Theme-specific overrides take precedence over shared overrides.
|
||||
The idea of common overrides is to change semantic color
|
||||
mappings, such as to make the cursor red. Wherea theme-specific
|
||||
overrides can also be used to change the value of a named color,
|
||||
such as what hexadecimal RGB value the red-warmer symbol
|
||||
represents."
|
||||
:group 'modus-themes
|
||||
:package-version '(modus-themes . "4.0.0")
|
||||
:version "30.1"
|
||||
:type '(repeat (list symbol (choice symbol string)))
|
||||
:link '(info-link "(modus-themes) Palette overrides"))
|
||||
|
||||
(modus-themes-theme
|
||||
'modus-vivendi-tritanopia
|
||||
'modus-themes
|
||||
"Tritanopia-optimized theme with a black background.
|
||||
This variant is optimized for users with blue-yellow color
|
||||
deficiency (tritanopia). It conforms with the highest
|
||||
legibility standard for color contrast between background and
|
||||
foreground in any given piece of text, which corresponds to a
|
||||
minimum contrast in relative luminance of 7:1 (WCAG AAA
|
||||
standard)."
|
||||
'dark
|
||||
'modus-themes-vivendi-tritanopia-palette
|
||||
'modus-vivendi-tritanopia-palette-user
|
||||
'modus-vivendi-tritanopia-palette-overrides
|
||||
'modus-themes-faces-tritanopia)
|
||||
|
||||
(provide 'modus-vivendi-tritanopia-theme)
|
||||
|
||||
;;; modus-vivendi-tritanopia-theme.el ends here
|
||||
372
tests/modus-themes-test.el
Normal file
372
tests/modus-themes-test.el
Normal file
|
|
@ -0,0 +1,372 @@
|
|||
;;; modus-themes-test.el --- Unit tests for the Modus themes -*- lexical-binding: t -*-
|
||||
|
||||
;; Copyright (C) 2025-2026 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Protesilaos <info@protesilaos.com>,
|
||||
;; Rudolf Adamkovič <rudolf@adamkovic.org>
|
||||
;; Maintainer: Protesilaos <info@protesilaos.com>
|
||||
;; URL: https://github.com/protesilaos/modus-themes
|
||||
|
||||
;; This file is NOT part of GNU Emacs.
|
||||
|
||||
;; This program is free software; you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation, either version 3 of the License, or
|
||||
;; (at your option) any later version.
|
||||
;;
|
||||
;; This program is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
;;
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; Tests for the Modus themes. Note that we are using Shorthands in
|
||||
;; this file, so the "mtt-" prefix really is "modus-themes-test-".
|
||||
;; Evaluate the following to learn more:
|
||||
;;
|
||||
;; (info "(elisp) Shorthands")
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'ert)
|
||||
(require 'modus-themes)
|
||||
|
||||
(defmacro mtt-define-test (symbol &rest body)
|
||||
"Write test for SYMBOL with BODY forms.
|
||||
If the `car' of BODY is a string, use it as the docstring of the test.
|
||||
Else provide a generic snippet of text."
|
||||
(declare (doc-string 2) (indent defun))
|
||||
(let* ((first (car body))
|
||||
(has-docstring (stringp first))
|
||||
(docstring (if has-docstring
|
||||
first
|
||||
(format "Test that `%s' does the right thing." symbol)))
|
||||
(body (if has-docstring (cdr body) body)))
|
||||
`(ert-deftest ,(intern (format "mtt-%s" symbol)) ()
|
||||
,docstring
|
||||
,@body)))
|
||||
|
||||
(mtt-define-test modus-themes--color-hex-p
|
||||
(should (modus-themes--color-hex-p "#123"))
|
||||
(should (modus-themes--color-hex-p "#123456"))
|
||||
(should (modus-themes--color-hex-p "#abc"))
|
||||
(should (modus-themes--color-hex-p "#ABCDEF"))
|
||||
(should-not (modus-themes--color-hex-p "abc"))
|
||||
(should-not (modus-themes--color-hex-p "#abcd"))
|
||||
(should-not (modus-themes--color-hex-p "#12345"))
|
||||
(should-not (modus-themes--color-hex-p "#1234567"))
|
||||
(should-not (modus-themes--color-hex-p "#zzz"))
|
||||
(should-not (modus-themes--color-hex-p "#zzz"))
|
||||
(should-not (modus-themes--color-hex-p "#12g456")))
|
||||
|
||||
(mtt-define-test modus-themes--hex-or-name-to-rgb
|
||||
(should (equal (modus-themes--hex-or-name-to-rgb "#fff") (list 1.0 1.0 1.0)))
|
||||
(should (equal (modus-themes--hex-or-name-to-rgb "#000") (list 0.0 0.0 0.0)))
|
||||
(should (equal (modus-themes--hex-or-name-to-rgb "#f00") (list 1.0 0.0 0.0)))
|
||||
(should (equal (modus-themes--hex-or-name-to-rgb "#0f0") (list 0.0 1.0 0.0)))
|
||||
(should (equal (modus-themes--hex-or-name-to-rgb "#00f") (list 0.0 0.0 1.0)))
|
||||
(should (equal (modus-themes--hex-or-name-to-rgb "#ffffff") (list 1.0 1.0 1.0)))
|
||||
(should (equal (modus-themes--hex-or-name-to-rgb "#000000") (list 0.0 0.0 0.0)))
|
||||
(should (equal (modus-themes--hex-or-name-to-rgb "#ff0000") (list 1.0 0.0 0.0)))
|
||||
(should (equal (modus-themes--hex-or-name-to-rgb "#00ff00") (list 0.0 1.0 0.0)))
|
||||
;; NOTE 2026-04-12: I do not need it to be precise here, hence the `format'.
|
||||
(let ((rgb-rounded-fn
|
||||
(lambda (hex)
|
||||
(let ((rgb (modus-themes--hex-or-name-to-rgb hex)))
|
||||
(mapcar (lambda (float) (string-to-number (format "%.2f" float))) rgb)))))
|
||||
(should (equal (funcall rgb-rounded-fn "#800000") (list 0.5 0.0 0.0)))
|
||||
(should (equal (funcall rgb-rounded-fn "#008000") (list 0.0 0.5 0.0)))
|
||||
(should (equal (funcall rgb-rounded-fn "#000080") (list 0.0 0.0 0.5))))
|
||||
(should-error (modus-themes--hex-or-name-to-rgb ""))
|
||||
(should-error (modus-themes--hex-or-name-to-rgb "#"))
|
||||
(should-error (modus-themes--hex-or-name-to-rgb "#1"))
|
||||
(should-error (modus-themes--hex-or-name-to-rgb "#12"))
|
||||
(should-error (modus-themes--hex-or-name-to-rgb "#1234"))
|
||||
(should-error (modus-themes--hex-or-name-to-rgb "#12345"))
|
||||
(should-error (modus-themes--hex-or-name-to-rgb "#gggggg"))
|
||||
(should-error (modus-themes--hex-or-name-to-rgb (list 1.0 1.0 1.0))))
|
||||
|
||||
(mtt-define-test modus-themes-wcag-formula
|
||||
"Test that `modus-themes-wcag-formula' does the right thing.
|
||||
Also see `modus-themes-test--modus-themes--hex-to-rgb'."
|
||||
(should (= (modus-themes-wcag-formula "#ffffff") 1.0))
|
||||
(should (= (modus-themes-wcag-formula "#000000") 0.0))
|
||||
(should-error (modus-themes-wcag-formula "#00000")))
|
||||
|
||||
(mtt-define-test modus-themes-contrast
|
||||
"Test that `modus-themes-contrast' works as intended.
|
||||
Also see `modus-themes-test--modus-themes--hex-to-rgb'."
|
||||
(should (= (modus-themes-contrast "#ffffff" "#000000") 21.0))
|
||||
(should (= (modus-themes-contrast "#000000" "#ffffff") 21.0))
|
||||
;; NOTE 2026-04-12: I do not need it to be precise here, hence the `format'.
|
||||
(let ((float-2-fn (lambda (hex1 hex2) (string-to-number (format "%.2f" (modus-themes-contrast hex1 hex2))))))
|
||||
(should (= (funcall float-2-fn "#ff0000" "#ffffff") 4.0))
|
||||
(should (= (funcall float-2-fn "#00ff00" "#ffffff") 1.37))
|
||||
(should (= (funcall float-2-fn "#0000ff" "#ffffff") 8.59))
|
||||
(should (= (funcall float-2-fn "#ffff00" "#ffffff") 1.07))
|
||||
(should (= (funcall float-2-fn "#00ffff" "#ffffff") 1.25))
|
||||
(should (= (funcall float-2-fn "#ff00ff" "#ffffff") 3.14)))
|
||||
(should-error (modus-themes-contrast "#ffffff" "#00000"))
|
||||
(should-error (modus-themes-contrast "#fffff" "#00000")))
|
||||
|
||||
(mtt-define-test modus-themes--color-eight-to-six-digits
|
||||
(should (string= (modus-themes--color-eight-to-six-digits "#f00") "#f00"))
|
||||
(should (string= (modus-themes--color-eight-to-six-digits "#ff1919") "#ff1919"))
|
||||
(should (string= (modus-themes--color-eight-to-six-digits "#ffff19991999") "#ff1919")))
|
||||
|
||||
(mtt-define-test modus-themes-adjust-value
|
||||
"Test that `modus-themes-adjust-value' does the right thing.
|
||||
Also see `modus-themes-test--modus-themes--hex-to-rgb'."
|
||||
(should (string= (modus-themes-adjust-value "#ff0000" 10) "#ff1919"))
|
||||
(should (string= (modus-themes-adjust-value "#505050" 100) "#ffffff"))
|
||||
(should (string= (modus-themes-adjust-value "#505050" -100) "#000000"))
|
||||
(should (string= (modus-themes-adjust-value "#505050" 0) "#505050"))
|
||||
(should-error (modus-themes-adjust-value "#ff00" 10)))
|
||||
|
||||
(mtt-define-test modus-themes-activate
|
||||
(if (custom-theme-p 'modus-operandi-tritanopia)
|
||||
(should-not (modus-themes-activate 'modus-operandi-tritanopia))
|
||||
(should (custom-theme-p 'modus-operandi-tritanopia))))
|
||||
|
||||
(mtt-define-test modus-themes--belongs-to-family-p
|
||||
(should (modus-themes--belongs-to-family-p 'modus-operandi 'modus-themes))
|
||||
(should-not (modus-themes--belongs-to-family-p 'my-fancy-theme 'modus-themes))
|
||||
(should-not (modus-themes--belongs-to-family-p 'modus-operandi 'my-fancy-themes)))
|
||||
|
||||
(mtt-define-test modus-themes-get-all-known-themes
|
||||
(should (equal (modus-themes-get-all-known-themes) modus-themes-items))
|
||||
(should-not (modus-themes-get-all-known-themes 'my-fancy-themes)))
|
||||
|
||||
(mtt-define-test modus-themes--background-p
|
||||
(should (modus-themes--background-p 'modus-operandi 'light))
|
||||
(should-not (modus-themes--background-p 'modus-operandi 'dark))
|
||||
(should-not (modus-themes--background-p 'modus-operandi t))
|
||||
(should-not (modus-themes--background-p 'modus-operandi :light)))
|
||||
|
||||
(mtt-define-test modus-themes-sort
|
||||
(let ((first-has-prefix-fn (lambda (themes prefix)
|
||||
(when-let* ((first (car themes))
|
||||
(name (symbol-name first)))
|
||||
(string-match-p prefix name)))))
|
||||
(should (funcall first-has-prefix-fn (modus-themes-sort (reverse modus-themes-items) 'light) "modus-operandi"))
|
||||
(should (funcall first-has-prefix-fn (modus-themes-sort modus-themes-items 'dark) "modus-vivendi"))))
|
||||
|
||||
(mtt-define-test inheritance
|
||||
"Ensure all faces inherit from valid faces."
|
||||
;; Third-party packages, loaded if possible to better test face inheritance.
|
||||
(require 'font-latex nil t)
|
||||
(let ((current-theme (modus-themes-get-current-theme)))
|
||||
(unwind-protect
|
||||
(progn
|
||||
(modus-themes-load-theme 'modus-operandi)
|
||||
(should-not (seq-filter
|
||||
(lambda (face)
|
||||
;; The face either has no parent ...
|
||||
(if-let* ((parent (face-attribute face :inherit)))
|
||||
(and (symbolp parent)
|
||||
(not (eq parent 'unspecified))
|
||||
;; ... or its parent is a valid face.
|
||||
(not (facep parent)))))
|
||||
(face-list))))
|
||||
(modus-themes-load-theme current-theme))))
|
||||
|
||||
(mtt-define-test color-dark-p
|
||||
(let ((modus-operandi-sample-foregrounds
|
||||
'("#a60000"
|
||||
"#972500"
|
||||
"#a0132f"
|
||||
"#7f0000"
|
||||
"#006800"
|
||||
"#316500"
|
||||
"#00663f"
|
||||
"#2a5045"
|
||||
"#6f5500"
|
||||
"#884900"
|
||||
"#7a4f2f"
|
||||
"#624416"
|
||||
"#0031a9"
|
||||
"#3548cf"
|
||||
"#0000b0"
|
||||
"#003497"
|
||||
"#721045"
|
||||
"#8f0075"
|
||||
"#531ab6"
|
||||
"#7c318f"
|
||||
"#005e8b"
|
||||
"#3f578f"
|
||||
"#005f5f"
|
||||
"#005077"))
|
||||
(modus-vivendi-sample-foregrounds
|
||||
'("#ff5f59"
|
||||
"#ff6b55"
|
||||
"#ff7f86"
|
||||
"#ff9580"
|
||||
"#44bc44"
|
||||
"#70b900"
|
||||
"#00c06f"
|
||||
"#88ca9f"
|
||||
"#d0bc00"
|
||||
"#fec43f"
|
||||
"#dfaf7a"
|
||||
"#d2b580"
|
||||
"#2fafff"
|
||||
"#79a8ff"
|
||||
"#00bcff"
|
||||
"#82b0ec"
|
||||
"#feacd0"
|
||||
"#f78fe7"
|
||||
"#b6a0ff"
|
||||
"#caa6df"
|
||||
"#00d3d0"
|
||||
"#4ae2f0"
|
||||
"#6ae4b9"
|
||||
"#9ac8e0")))
|
||||
(should (seq-every-p #'modus-themes-color-dark-p modus-operandi-sample-foregrounds))
|
||||
(should-not (seq-every-p #'modus-themes-color-dark-p modus-vivendi-sample-foregrounds))))
|
||||
|
||||
(mtt-define-test get-readable-foreground
|
||||
(let ((modus-operandi-sample-foregrounds
|
||||
'("#a60000"
|
||||
"#972500"
|
||||
"#a0132f"
|
||||
"#7f0000"
|
||||
"#006800"
|
||||
"#316500"
|
||||
"#00663f"
|
||||
"#2a5045"
|
||||
"#6f5500"
|
||||
"#884900"
|
||||
"#7a4f2f"
|
||||
"#624416"
|
||||
"#0031a9"
|
||||
"#3548cf"
|
||||
"#0000b0"
|
||||
"#003497"
|
||||
"#721045"
|
||||
"#8f0075"
|
||||
"#531ab6"
|
||||
"#7c318f"
|
||||
"#005e8b"
|
||||
"#3f578f"
|
||||
"#005f5f"
|
||||
"#005077"))
|
||||
(modus-vivendi-sample-foregrounds
|
||||
'("#ff5f59"
|
||||
"#ff6b55"
|
||||
"#ff7f86"
|
||||
"#ff9580"
|
||||
"#44bc44"
|
||||
"#70b900"
|
||||
"#00c06f"
|
||||
"#88ca9f"
|
||||
"#d0bc00"
|
||||
"#fec43f"
|
||||
"#dfaf7a"
|
||||
"#d2b580"
|
||||
"#2fafff"
|
||||
"#79a8ff"
|
||||
"#00bcff"
|
||||
"#82b0ec"
|
||||
"#feacd0"
|
||||
"#f78fe7"
|
||||
"#b6a0ff"
|
||||
"#caa6df"
|
||||
"#00d3d0"
|
||||
"#4ae2f0"
|
||||
"#6ae4b9"
|
||||
"#9ac8e0")))
|
||||
(should (seq-every-p
|
||||
(lambda (value)
|
||||
(string= value "#ffffff"))
|
||||
(mapcar #'modus-themes-get-readable-foreground modus-operandi-sample-foregrounds)))
|
||||
(should (seq-every-p
|
||||
(lambda (value)
|
||||
(string= value "#000000"))
|
||||
(mapcar #'modus-themes-get-readable-foreground modus-vivendi-sample-foregrounds)))))
|
||||
|
||||
(mtt-define-test complete-palette-mappings
|
||||
"Ensure all built-in palettes contain entries for all palette mappings.
|
||||
This computes a complete list of mapping names from the built-in palettes
|
||||
and then cross-checks the palettes against the list. This should help ensure
|
||||
consistency and completeness where adding a new mapping in one palette will
|
||||
fail this test until it is added in all palettes."
|
||||
(let* ((operandi-names (seq-uniq (mapcar #'car modus-themes-operandi-palette)))
|
||||
(operandi-tinted-names (seq-uniq (mapcar #'car modus-themes-operandi-tinted-palette)))
|
||||
(operandi-deuteranopia-names (seq-uniq (mapcar #'car modus-themes-operandi-deuteranopia-palette)))
|
||||
(operandi-tritanopia-names (seq-uniq (mapcar #'car modus-themes-operandi-tritanopia-palette)))
|
||||
(vivendi-names (seq-uniq (mapcar #'car modus-themes-vivendi-palette)))
|
||||
(vivendi-tinted-names (seq-uniq (mapcar #'car modus-themes-vivendi-tinted-palette)))
|
||||
(vivendi-deuteranopia-names (seq-uniq (mapcar #'car modus-themes-vivendi-deuteranopia-palette)))
|
||||
(vivendi-tritanopia-names (seq-uniq (mapcar #'car modus-themes-vivendi-tritanopia-palette)))
|
||||
(all-names (seq-uniq (append operandi-names
|
||||
operandi-tinted-names
|
||||
operandi-deuteranopia-names
|
||||
operandi-tritanopia-names
|
||||
vivendi-names
|
||||
vivendi-tinted-names
|
||||
vivendi-deuteranopia-names
|
||||
vivendi-tritanopia-names))))
|
||||
(should (seq-empty-p (seq-difference all-names operandi-names)))
|
||||
(should (seq-empty-p (seq-difference all-names operandi-tinted-names)))
|
||||
(should (seq-empty-p (seq-difference all-names operandi-deuteranopia-names)))
|
||||
(should (seq-empty-p (seq-difference all-names operandi-tritanopia-names)))
|
||||
(should (seq-empty-p (seq-difference all-names vivendi-names)))
|
||||
(should (seq-empty-p (seq-difference all-names vivendi-tinted-names)))
|
||||
(should (seq-empty-p (seq-difference all-names vivendi-deuteranopia-names)))
|
||||
(should (seq-empty-p (seq-difference all-names vivendi-tritanopia-names)))))
|
||||
|
||||
(mtt-define-test modus-themes-generate-palette
|
||||
"Ensure `modus-themes-generate-palette' provides enough mapping coverage
|
||||
such that the generated palette does not inherit explicit color values
|
||||
from a parent core palette."
|
||||
(let* ((generated-palette (modus-themes-generate-palette
|
||||
'((fg-main "#ffffff")
|
||||
(bg-main "#000000")
|
||||
(red "#ff0000")
|
||||
(green "#00ff00")
|
||||
(yellow "#ffff00")
|
||||
(blue "#0000ff")
|
||||
(magenta "#ff00ff")
|
||||
(cyan "#00ffff"))))
|
||||
;; These are colors we expect to have an explicit hex value,
|
||||
;; either because they were provided explicitly in the call to
|
||||
;; `modus-themes-generate-palette' above, or because we expect
|
||||
;; `modus-themes-generate-palette' to generate the color.
|
||||
(explicit-colors '( fg-main bg-main
|
||||
fg-alt fg-dim bg-inactive bg-active bg-dim border
|
||||
;; cyan
|
||||
cyan bg-cyan-nuanced bg-cyan-subtle bg-cyan-intense
|
||||
cyan-intense cyan-faint cyan-cooler cyan-warmer
|
||||
;; magenta
|
||||
magenta bg-magenta-nuanced bg-magenta-subtle bg-magenta-intense
|
||||
magenta-intense magenta-faint magenta-cooler magenta-warmer
|
||||
;; blue
|
||||
blue bg-blue-nuanced bg-blue-subtle bg-blue-intense
|
||||
blue-intense blue-faint blue-cooler blue-warmer
|
||||
;; yellow
|
||||
yellow bg-yellow-nuanced bg-yellow-subtle bg-yellow-intense
|
||||
yellow-intense yellow-faint yellow-cooler yellow-warmer
|
||||
;; green
|
||||
green bg-green-nuanced bg-green-subtle bg-green-intense
|
||||
green-intense green-faint green-cooler green-warmer
|
||||
;; red
|
||||
red bg-red-nuanced bg-red-subtle bg-red-intense
|
||||
red-intense red-faint red-cooler red-warmer)))
|
||||
;; Ensure all other colors in the palette map to a color name and not an
|
||||
;; explicit hex value. If this check fails, the offending color should
|
||||
;; be mapped to an appropriate color name in `modus-themes-generate-palette'.
|
||||
(should (seq-empty-p (seq-remove (lambda (elem)
|
||||
(or (member (car elem) explicit-colors)
|
||||
(symbolp (cadr elem))))
|
||||
generated-palette)))))
|
||||
|
||||
(provide 'modus-themes-test)
|
||||
;;; modus-themes-test.el ends here
|
||||
|
||||
;; Local Variables:
|
||||
;; read-symbol-shorthands: (("mtt" . "modus-themes-test-"))
|
||||
;; End:
|
||||
Loading…
Reference in a new issue