mirror of
https://github.com/protesilaos/modus-themes.git
synced 2026-09-10 07:16:30 -04:00
Compare commits
662 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 |
1480
CHANGELOG.org
1480
CHANGELOG.org
File diff suppressed because it is too large
Load diff
106
README.md
106
README.md
|
|
@ -20,6 +20,12 @@ 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.
|
||||
|
||||
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).
|
||||
|
||||
+ Package name (GNU ELPA): `modus-themes`
|
||||
+ Official manual: <https://protesilaos.com/emacs/modus-themes>
|
||||
+ Change log: <https://protesilaos.com/emacs/modus-themes-changelog>
|
||||
|
|
@ -29,3 +35,103 @@ the themes across the years.
|
|||
+ 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 t
|
||||
:demand t
|
||||
:init
|
||||
;; 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
|
||||
;; 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))
|
||||
```
|
||||
|
||||
## Links to other projects
|
||||
|
||||
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.
|
||||
|
||||
In linking to these projects, I am not endorsing anybody's views.
|
||||
|
||||
### Emacs themes based on Modus
|
||||
|
||||
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.
|
||||
|
||||
- `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>
|
||||
|
||||
### Other Emacs packages based on Modus
|
||||
|
||||
- `modus-themes-exporter` by Protesilaos <https://github.com/protesilaos/modus-themes-exporter>
|
||||
|
||||
### Projects inspired by the Modus themes
|
||||
|
||||
This is not an exhaustive list. You are welcome to add your project here.
|
||||
|
||||
- `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
3200
doc/modus-themes.org
3200
doc/modus-themes.org
File diff suppressed because it is too large
Load diff
|
|
@ -1,9 +1,9 @@
|
|||
;;; modus-operandi-deuteranopia-theme.el --- Deuteranopia-optimized theme with a white background -*- lexical-binding:t -*-
|
||||
|
||||
;; Copyright (C) 2019-2024 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2019-2026 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Protesilaos Stavrou <info@protesilaos.com>
|
||||
;; Maintainer: Protesilaos Stavrou <info@protesilaos.com>
|
||||
;; Author: Protesilaos <info@protesilaos.com>
|
||||
;; Maintainer: Protesilaos <info@protesilaos.com>
|
||||
;; URL: https://github.com/protesilaos/modus-themes
|
||||
;; Keywords: faces, theme, accessibility
|
||||
|
||||
|
|
@ -26,465 +26,35 @@
|
|||
;;
|
||||
;; The Modus themes conform with the highest standard for
|
||||
;; color-contrast accessibility between background and foreground
|
||||
;; values (WCAG AAA). Please refer to the official Info manual for
|
||||
;; further documentation (distributed with the themes, or available
|
||||
;; at: <https://protesilaos.com/emacs/modus-themes>).
|
||||
;; 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))
|
||||
|
||||
;;;###theme-autoload
|
||||
(deftheme modus-operandi-deuteranopia
|
||||
"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)."
|
||||
:background-mode 'light
|
||||
:kind 'color-scheme
|
||||
:family 'modus)
|
||||
|
||||
(defconst modus-operandi-deuteranopia-palette
|
||||
'(
|
||||
;;; Basic values
|
||||
|
||||
(bg-main "#ffffff")
|
||||
(bg-dim "#f2f2f2")
|
||||
(fg-main "#000000")
|
||||
(fg-dim "#595959")
|
||||
(fg-alt "#193668")
|
||||
(bg-active "#c4c4c4")
|
||||
(bg-inactive "#e0e0e0")
|
||||
(border "#9f9f9f")
|
||||
|
||||
;;; Common accent foregrounds
|
||||
|
||||
(red "#a60000")
|
||||
(red-warmer "#972500")
|
||||
(red-cooler "#a0132f")
|
||||
(red-faint "#7f0000")
|
||||
(red-intense "#d00000")
|
||||
(green "#006800")
|
||||
(green-warmer "#316500")
|
||||
(green-cooler "#00663f")
|
||||
(green-faint "#2a5045")
|
||||
(green-intense "#008900")
|
||||
(yellow "#695500")
|
||||
(yellow-warmer "#973300")
|
||||
(yellow-cooler "#77492f")
|
||||
(yellow-faint "#624416")
|
||||
(yellow-intense "#808000")
|
||||
(blue "#0031a9")
|
||||
(blue-warmer "#3548cf")
|
||||
(blue-cooler "#0000b0")
|
||||
(blue-faint "#003497")
|
||||
(blue-intense "#0000ff")
|
||||
(magenta "#721045")
|
||||
(magenta-warmer "#8f0075")
|
||||
(magenta-cooler "#531ab6")
|
||||
(magenta-faint "#7c318f")
|
||||
(magenta-intense "#dd22dd")
|
||||
(cyan "#005e8b")
|
||||
(cyan-warmer "#3f578f")
|
||||
(cyan-cooler "#005f5f")
|
||||
(cyan-faint "#005077")
|
||||
(cyan-intense "#008899")
|
||||
|
||||
;;; Uncommon accent foregrounds
|
||||
|
||||
(rust "#8a290f")
|
||||
(gold "#80601f")
|
||||
(olive "#56692d")
|
||||
(slate "#2f3f83")
|
||||
(indigo "#4a3a8a")
|
||||
(maroon "#731c52")
|
||||
(pink "#7b435c")
|
||||
|
||||
;;; Common accent backgrounds
|
||||
|
||||
(bg-red-intense "#ff8f88")
|
||||
(bg-green-intense "#8adf80")
|
||||
(bg-yellow-intense "#f3d000")
|
||||
(bg-blue-intense "#bfc9ff")
|
||||
(bg-magenta-intense "#dfa0f0")
|
||||
(bg-cyan-intense "#a4d5f9")
|
||||
|
||||
(bg-red-subtle "#ffcfbf")
|
||||
(bg-green-subtle "#b3fabf")
|
||||
(bg-yellow-subtle "#fff576")
|
||||
(bg-blue-subtle "#ccdfff")
|
||||
(bg-magenta-subtle "#ffddff")
|
||||
(bg-cyan-subtle "#bfefff")
|
||||
|
||||
(bg-red-nuanced "#ffe8e8")
|
||||
(bg-green-nuanced "#e0f6e0")
|
||||
(bg-yellow-nuanced "#f8f0d0")
|
||||
(bg-blue-nuanced "#ecedff")
|
||||
(bg-magenta-nuanced "#f8e6f5")
|
||||
(bg-cyan-nuanced "#e0f2fa")
|
||||
|
||||
;;; Uncommon accent backgrounds
|
||||
|
||||
(bg-ochre "#f0e0cc")
|
||||
(bg-lavender "#dfdbfa")
|
||||
(bg-sage "#c0e7d4")
|
||||
|
||||
;;; Graphs
|
||||
|
||||
(bg-graph-red-0 "#d0b029")
|
||||
(bg-graph-red-1 "#e0cab4")
|
||||
(bg-graph-green-0 "#8ad080")
|
||||
(bg-graph-green-1 "#afdfa5")
|
||||
(bg-graph-yellow-0 "#ffcf00")
|
||||
(bg-graph-yellow-1 "#f9ff00")
|
||||
(bg-graph-blue-0 "#7f9fff")
|
||||
(bg-graph-blue-1 "#9fc6ff")
|
||||
(bg-graph-magenta-0 "#b0b0d0")
|
||||
(bg-graph-magenta-1 "#d0dfdf")
|
||||
(bg-graph-cyan-0 "#6faad9")
|
||||
(bg-graph-cyan-1 "#bfe0ff")
|
||||
|
||||
;;; Special purpose
|
||||
|
||||
(bg-completion "#c0deff")
|
||||
(bg-hover "#b2e4dc")
|
||||
(bg-hover-secondary "#f5d0a0")
|
||||
(bg-hl-line "#dae5ec")
|
||||
(bg-region "#bdbdbd")
|
||||
(fg-region "#000000")
|
||||
|
||||
(bg-char-0 "#7feaff")
|
||||
(bg-char-1 "#ffaaff")
|
||||
(bg-char-2 "#dff000")
|
||||
|
||||
(bg-mode-line-active "#d0d6ff")
|
||||
(fg-mode-line-active "#0f0f0f")
|
||||
(border-mode-line-active "#4f4f74")
|
||||
(bg-mode-line-inactive "#e6e6e6")
|
||||
(fg-mode-line-inactive "#585858")
|
||||
(border-mode-line-inactive "#a3a3a3")
|
||||
|
||||
(modeline-err "#603a00")
|
||||
(modeline-warning "#454500")
|
||||
(modeline-info "#023d92")
|
||||
|
||||
(bg-tab-bar "#dfdfdf")
|
||||
(bg-tab-current "#ffffff")
|
||||
(bg-tab-other "#c2c2c2")
|
||||
|
||||
;;; Diffs
|
||||
|
||||
(bg-added "#d5d7ff")
|
||||
(bg-added-faint "#e6e6ff")
|
||||
(bg-added-refine "#babcef")
|
||||
(bg-added-fringe "#275acc")
|
||||
(fg-added "#303099")
|
||||
(fg-added-intense "#0303cc")
|
||||
|
||||
(bg-changed "#eecfdf")
|
||||
(bg-changed-faint "#f0dde5")
|
||||
(bg-changed-refine "#e0b0d0")
|
||||
(bg-changed-fringe "#9f6ab0")
|
||||
(fg-changed "#6f1343")
|
||||
(fg-changed-intense "#7f0f9f")
|
||||
|
||||
(bg-removed "#f4f099")
|
||||
(bg-removed-faint "#f6f6b7")
|
||||
(bg-removed-refine "#ede06f")
|
||||
(bg-removed-fringe "#c0b200")
|
||||
(fg-removed "#553d00")
|
||||
(fg-removed-intense "#7f6f00")
|
||||
|
||||
(bg-diff-context "#f3f3f3")
|
||||
|
||||
;;; Paren match
|
||||
|
||||
(bg-paren-match "#5fcfff")
|
||||
(fg-paren-match fg-main)
|
||||
(bg-paren-expression "#efd3f5")
|
||||
(underline-paren-match unspecified)
|
||||
|
||||
;;; Mappings
|
||||
|
||||
;;;; General mappings
|
||||
|
||||
(fringe bg-dim)
|
||||
(cursor blue-intense)
|
||||
|
||||
(keybind blue-cooler)
|
||||
(name blue-cooler)
|
||||
(identifier yellow-faint)
|
||||
|
||||
(err yellow-warmer)
|
||||
(warning yellow)
|
||||
(info blue)
|
||||
|
||||
(underline-err yellow-intense)
|
||||
(underline-warning magenta-faint)
|
||||
(underline-note cyan)
|
||||
|
||||
(bg-prominent-err bg-yellow-intense)
|
||||
(fg-prominent-err fg-main)
|
||||
(bg-prominent-warning bg-magenta-intense)
|
||||
(fg-prominent-warning fg-main)
|
||||
(bg-prominent-note bg-cyan-intense)
|
||||
(fg-prominent-note fg-main)
|
||||
|
||||
(bg-active-argument bg-yellow-nuanced)
|
||||
(fg-active-argument yellow-warmer)
|
||||
(bg-active-value bg-blue-nuanced)
|
||||
(fg-active-value blue-warmer)
|
||||
|
||||
;;;; Code mappings
|
||||
|
||||
(builtin magenta-warmer)
|
||||
(comment yellow-cooler)
|
||||
(constant blue-cooler)
|
||||
(docstring green-faint)
|
||||
(docmarkup magenta-faint)
|
||||
(fnname magenta)
|
||||
(keyword magenta-cooler)
|
||||
(preprocessor red-cooler)
|
||||
(string blue-warmer)
|
||||
(type cyan-cooler)
|
||||
(variable cyan)
|
||||
(rx-construct yellow-cooler)
|
||||
(rx-backslash blue-cooler)
|
||||
|
||||
;;;; Accent mappings
|
||||
|
||||
(accent-0 blue)
|
||||
(accent-1 yellow-warmer)
|
||||
(accent-2 cyan)
|
||||
(accent-3 magenta-cooler)
|
||||
|
||||
;;;; Button mappings
|
||||
|
||||
(fg-button-active fg-main)
|
||||
(fg-button-inactive fg-dim)
|
||||
(bg-button-active bg-active)
|
||||
(bg-button-inactive bg-dim)
|
||||
|
||||
;;;; Completion mappings
|
||||
|
||||
(fg-completion-match-0 blue)
|
||||
(fg-completion-match-1 yellow-warmer)
|
||||
(fg-completion-match-2 cyan)
|
||||
(fg-completion-match-3 magenta-cooler)
|
||||
(bg-completion-match-0 unspecified)
|
||||
(bg-completion-match-1 unspecified)
|
||||
(bg-completion-match-2 unspecified)
|
||||
(bg-completion-match-3 unspecified)
|
||||
|
||||
;;;; Date mappings
|
||||
|
||||
(date-common cyan)
|
||||
(date-deadline yellow-warmer)
|
||||
(date-event fg-alt)
|
||||
(date-holiday yellow-warmer)
|
||||
(date-holiday-other blue)
|
||||
(date-now fg-main)
|
||||
(date-range fg-alt)
|
||||
(date-scheduled yellow-cooler)
|
||||
(date-weekday cyan)
|
||||
(date-weekend yellow-faint)
|
||||
|
||||
;;;; Line number mappings
|
||||
|
||||
(fg-line-number-inactive fg-dim)
|
||||
(fg-line-number-active fg-main)
|
||||
(bg-line-number-inactive bg-dim)
|
||||
(bg-line-number-active bg-active)
|
||||
|
||||
;;;; Link mappings
|
||||
|
||||
(fg-link blue-warmer)
|
||||
(bg-link unspecified)
|
||||
(underline-link blue-warmer)
|
||||
|
||||
(fg-link-symbolic cyan)
|
||||
(bg-link-symbolic unspecified)
|
||||
(underline-link-symbolic cyan)
|
||||
|
||||
(fg-link-visited yellow-faint)
|
||||
(bg-link-visited unspecified)
|
||||
(underline-link-visited yellow-faint)
|
||||
|
||||
;;;; Mail mappings
|
||||
|
||||
(mail-cite-0 blue-warmer)
|
||||
(mail-cite-1 yellow)
|
||||
(mail-cite-2 cyan-faint)
|
||||
(mail-cite-3 yellow-faint)
|
||||
(mail-part blue)
|
||||
(mail-recipient blue)
|
||||
(mail-subject yellow-cooler)
|
||||
(mail-other cyan-faint)
|
||||
|
||||
;;;; Mark mappings
|
||||
|
||||
(bg-mark-delete bg-yellow-subtle)
|
||||
(fg-mark-delete yellow)
|
||||
(bg-mark-select bg-cyan-subtle)
|
||||
(fg-mark-select cyan)
|
||||
(bg-mark-other bg-magenta-subtle)
|
||||
(fg-mark-other magenta)
|
||||
|
||||
;;;; Prompt mappings
|
||||
|
||||
(fg-prompt blue)
|
||||
(bg-prompt unspecified)
|
||||
|
||||
;;;; Prose mappings
|
||||
|
||||
(bg-prose-block-delimiter bg-dim)
|
||||
(fg-prose-block-delimiter fg-dim)
|
||||
(bg-prose-block-contents bg-dim)
|
||||
|
||||
(bg-prose-code unspecified)
|
||||
(fg-prose-code cyan-cooler)
|
||||
|
||||
(bg-prose-macro unspecified)
|
||||
(fg-prose-macro magenta-cooler)
|
||||
|
||||
(bg-prose-verbatim unspecified)
|
||||
(fg-prose-verbatim magenta-warmer)
|
||||
|
||||
(prose-done blue)
|
||||
(prose-todo yellow-warmer)
|
||||
|
||||
(prose-metadata fg-dim)
|
||||
(prose-metadata-value fg-alt)
|
||||
|
||||
(prose-table fg-alt)
|
||||
(prose-table-formula yellow-warmer)
|
||||
|
||||
(prose-tag magenta-faint)
|
||||
|
||||
;;;; Rainbow mappings
|
||||
|
||||
(rainbow-0 blue)
|
||||
(rainbow-1 yellow)
|
||||
(rainbow-2 blue-warmer)
|
||||
(rainbow-3 yellow-cooler)
|
||||
(rainbow-4 blue-cooler)
|
||||
(rainbow-5 yellow-warmer)
|
||||
(rainbow-6 blue-faint)
|
||||
(rainbow-7 yellow-faint)
|
||||
(rainbow-8 cyan)
|
||||
|
||||
;;;; Search mappings
|
||||
|
||||
(bg-search-current bg-yellow-intense)
|
||||
(bg-search-lazy bg-blue-intense)
|
||||
(bg-search-replace bg-magenta-intense)
|
||||
|
||||
(bg-search-rx-group-0 bg-cyan-intense)
|
||||
(bg-search-rx-group-1 bg-magenta-intense)
|
||||
(bg-search-rx-group-2 bg-blue-subtle)
|
||||
(bg-search-rx-group-3 bg-yellow-subtle)
|
||||
|
||||
;;;; Space mappings
|
||||
|
||||
(bg-space unspecified)
|
||||
(fg-space border)
|
||||
(bg-space-err bg-yellow-intense)
|
||||
|
||||
;;;; Terminal mappings
|
||||
|
||||
(bg-term-black "#000000")
|
||||
(fg-term-black "#000000")
|
||||
(bg-term-black-bright "#595959")
|
||||
(fg-term-black-bright "#595959")
|
||||
|
||||
(bg-term-red red)
|
||||
(fg-term-red red)
|
||||
(bg-term-red-bright red-warmer)
|
||||
(fg-term-red-bright red-warmer)
|
||||
|
||||
(bg-term-green green)
|
||||
(fg-term-green green)
|
||||
(bg-term-green-bright green-cooler)
|
||||
(fg-term-green-bright green-cooler)
|
||||
|
||||
(bg-term-yellow yellow)
|
||||
(fg-term-yellow yellow)
|
||||
(bg-term-yellow-bright yellow-warmer)
|
||||
(fg-term-yellow-bright yellow-warmer)
|
||||
|
||||
(bg-term-blue blue)
|
||||
(fg-term-blue blue)
|
||||
(bg-term-blue-bright blue-warmer)
|
||||
(fg-term-blue-bright blue-warmer)
|
||||
|
||||
(bg-term-magenta magenta)
|
||||
(fg-term-magenta magenta)
|
||||
(bg-term-magenta-bright magenta-cooler)
|
||||
(fg-term-magenta-bright magenta-cooler)
|
||||
|
||||
(bg-term-cyan cyan)
|
||||
(fg-term-cyan cyan)
|
||||
(bg-term-cyan-bright cyan-cooler)
|
||||
(fg-term-cyan-bright cyan-cooler)
|
||||
|
||||
(bg-term-white "#a6a6a6")
|
||||
(fg-term-white "#a6a6a6")
|
||||
(bg-term-white-bright "#ffffff")
|
||||
(fg-term-white-bright "#ffffff")
|
||||
|
||||
;;;; Heading mappings
|
||||
|
||||
(fg-heading-0 cyan-cooler)
|
||||
(fg-heading-1 fg-main)
|
||||
(fg-heading-2 yellow-faint)
|
||||
(fg-heading-3 fg-alt)
|
||||
(fg-heading-4 magenta)
|
||||
(fg-heading-5 green-faint)
|
||||
(fg-heading-6 red-faint)
|
||||
(fg-heading-7 cyan-warmer)
|
||||
(fg-heading-8 fg-dim)
|
||||
|
||||
(bg-heading-0 unspecified)
|
||||
(bg-heading-1 unspecified)
|
||||
(bg-heading-2 unspecified)
|
||||
(bg-heading-3 unspecified)
|
||||
(bg-heading-4 unspecified)
|
||||
(bg-heading-5 unspecified)
|
||||
(bg-heading-6 unspecified)
|
||||
(bg-heading-7 unspecified)
|
||||
(bg-heading-8 unspecified)
|
||||
|
||||
(overline-heading-0 unspecified)
|
||||
(overline-heading-1 unspecified)
|
||||
(overline-heading-2 unspecified)
|
||||
(overline-heading-3 unspecified)
|
||||
(overline-heading-4 unspecified)
|
||||
(overline-heading-5 unspecified)
|
||||
(overline-heading-6 unspecified)
|
||||
(overline-heading-7 unspecified)
|
||||
(overline-heading-8 unspecified))
|
||||
"The entire palette of the `modus-operandi-deuteranopia' theme.
|
||||
|
||||
Named colors have the form (COLOR-NAME HEX-VALUE) with the former
|
||||
as a symbol and the latter as a string.
|
||||
|
||||
Semantic color mappings have the form (MAPPING-NAME COLOR-NAME)
|
||||
with both as symbols. The latter is a named color that already
|
||||
exists in the palette and is associated with a HEX-VALUE.")
|
||||
|
||||
(defcustom modus-operandi-deuteranopia-palette-overrides nil
|
||||
"Overrides for `modus-operandi-deuteranopia-palette'.
|
||||
(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.
|
||||
|
|
@ -498,18 +68,28 @@ 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)))
|
||||
:set #'modus-themes--set-option
|
||||
:initialize #'custom-initialize-default
|
||||
:link '(info-link "(modus-themes) Palette overrides"))
|
||||
: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-operandi-deuteranopia-palette
|
||||
modus-operandi-deuteranopia-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-theme 'modus-operandi-deuteranopia))
|
||||
(provide 'modus-operandi-deuteranopia-theme)
|
||||
|
||||
;;; modus-operandi-deuteranopia-theme.el ends here
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
;;; modus-operandi-theme.el --- Elegant, highly legible theme with a white background -*- lexical-binding:t -*-
|
||||
|
||||
;; Copyright (C) 2019-2024 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2019-2026 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Protesilaos Stavrou <info@protesilaos.com>
|
||||
;; Maintainer: Protesilaos Stavrou <info@protesilaos.com>
|
||||
;; Author: Protesilaos <info@protesilaos.com>
|
||||
;; Maintainer: Protesilaos <info@protesilaos.com>
|
||||
;; URL: https://github.com/protesilaos/modus-themes
|
||||
;; Keywords: faces, theme, accessibility
|
||||
|
||||
|
|
@ -26,463 +26,35 @@
|
|||
;;
|
||||
;; The Modus themes conform with the highest standard for
|
||||
;; color-contrast accessibility between background and foreground
|
||||
;; values (WCAG AAA). Please refer to the official Info manual for
|
||||
;; further documentation (distributed with the themes, or available
|
||||
;; at: <https://protesilaos.com/emacs/modus-themes>).
|
||||
;; 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))
|
||||
|
||||
;;;###theme-autoload
|
||||
(deftheme modus-operandi
|
||||
"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)."
|
||||
:background-mode 'light
|
||||
:kind 'color-scheme
|
||||
:family 'modus)
|
||||
|
||||
(defconst modus-operandi-palette
|
||||
'(
|
||||
;;; Basic values
|
||||
|
||||
(bg-main "#ffffff")
|
||||
(bg-dim "#f2f2f2")
|
||||
(fg-main "#000000")
|
||||
(fg-dim "#595959")
|
||||
(fg-alt "#193668")
|
||||
(bg-active "#c4c4c4")
|
||||
(bg-inactive "#e0e0e0")
|
||||
(border "#9f9f9f")
|
||||
|
||||
;;; Common accent foregrounds
|
||||
|
||||
(red "#a60000")
|
||||
(red-warmer "#972500")
|
||||
(red-cooler "#a0132f")
|
||||
(red-faint "#7f0000")
|
||||
(red-intense "#d00000")
|
||||
(green "#006800")
|
||||
(green-warmer "#316500")
|
||||
(green-cooler "#00663f")
|
||||
(green-faint "#2a5045")
|
||||
(green-intense "#008900")
|
||||
(yellow "#6f5500")
|
||||
(yellow-warmer "#884900")
|
||||
(yellow-cooler "#7a4f2f")
|
||||
(yellow-faint "#624416")
|
||||
(yellow-intense "#808000")
|
||||
(blue "#0031a9")
|
||||
(blue-warmer "#3548cf")
|
||||
(blue-cooler "#0000b0")
|
||||
(blue-faint "#003497")
|
||||
(blue-intense "#0000ff")
|
||||
(magenta "#721045")
|
||||
(magenta-warmer "#8f0075")
|
||||
(magenta-cooler "#531ab6")
|
||||
(magenta-faint "#7c318f")
|
||||
(magenta-intense "#dd22dd")
|
||||
(cyan "#005e8b")
|
||||
(cyan-warmer "#3f578f")
|
||||
(cyan-cooler "#005f5f")
|
||||
(cyan-faint "#005077")
|
||||
(cyan-intense "#008899")
|
||||
|
||||
;;; Uncommon accent foregrounds
|
||||
|
||||
(rust "#8a290f")
|
||||
(gold "#80601f")
|
||||
(olive "#56692d")
|
||||
(slate "#2f3f83")
|
||||
(indigo "#4a3a8a")
|
||||
(maroon "#731c52")
|
||||
(pink "#7b435c")
|
||||
|
||||
;;; Common accent backgrounds
|
||||
|
||||
(bg-red-intense "#ff8f88")
|
||||
(bg-green-intense "#8adf80")
|
||||
(bg-yellow-intense "#f3d000")
|
||||
(bg-blue-intense "#bfc9ff")
|
||||
(bg-magenta-intense "#dfa0f0")
|
||||
(bg-cyan-intense "#a4d5f9")
|
||||
|
||||
(bg-red-subtle "#ffcfbf")
|
||||
(bg-green-subtle "#b3fabf")
|
||||
(bg-yellow-subtle "#fff576")
|
||||
(bg-blue-subtle "#ccdfff")
|
||||
(bg-magenta-subtle "#ffddff")
|
||||
(bg-cyan-subtle "#bfefff")
|
||||
|
||||
(bg-red-nuanced "#ffe8e8")
|
||||
(bg-green-nuanced "#e0f6e0")
|
||||
(bg-yellow-nuanced "#f8f0d0")
|
||||
(bg-blue-nuanced "#ecedff")
|
||||
(bg-magenta-nuanced "#f8e6f5")
|
||||
(bg-cyan-nuanced "#e0f2fa")
|
||||
|
||||
;;; Uncommon accent backgrounds
|
||||
|
||||
(bg-ochre "#f0e0cc")
|
||||
(bg-lavender "#dfdbfa")
|
||||
(bg-sage "#c0e7d4")
|
||||
|
||||
;;; Graphs
|
||||
|
||||
(bg-graph-red-0 "#ef7969")
|
||||
(bg-graph-red-1 "#ffaab4")
|
||||
(bg-graph-green-0 "#2fe029")
|
||||
(bg-graph-green-1 "#75ef30")
|
||||
(bg-graph-yellow-0 "#ffcf00")
|
||||
(bg-graph-yellow-1 "#f9ff00")
|
||||
(bg-graph-blue-0 "#7f90ff")
|
||||
(bg-graph-blue-1 "#9fc6ff")
|
||||
(bg-graph-magenta-0 "#e07fff")
|
||||
(bg-graph-magenta-1 "#fad0ff")
|
||||
(bg-graph-cyan-0 "#70d3f0")
|
||||
(bg-graph-cyan-1 "#afefff")
|
||||
|
||||
;;; Special purpose
|
||||
|
||||
(bg-completion "#c0deff")
|
||||
(bg-hover "#b2e4dc")
|
||||
(bg-hover-secondary "#f5d0a0")
|
||||
(bg-hl-line "#dae5ec")
|
||||
(bg-region "#bdbdbd")
|
||||
(fg-region "#000000")
|
||||
|
||||
(bg-char-0 "#7feaff")
|
||||
(bg-char-1 "#ffaaff")
|
||||
(bg-char-2 "#dff000")
|
||||
|
||||
(bg-mode-line-active "#c8c8c8")
|
||||
(fg-mode-line-active "#000000")
|
||||
(border-mode-line-active "#5a5a5a")
|
||||
(bg-mode-line-inactive "#e6e6e6")
|
||||
(fg-mode-line-inactive "#585858")
|
||||
(border-mode-line-inactive "#a3a3a3")
|
||||
|
||||
(modeline-err "#7f0000")
|
||||
(modeline-warning "#5f0070")
|
||||
(modeline-info "#002580")
|
||||
|
||||
(bg-tab-bar "#dfdfdf")
|
||||
(bg-tab-current "#ffffff")
|
||||
(bg-tab-other "#c2c2c2")
|
||||
|
||||
;;; Diffs
|
||||
|
||||
(bg-added "#c1f2d1")
|
||||
(bg-added-faint "#d8f8e1")
|
||||
(bg-added-refine "#aee5be")
|
||||
(bg-added-fringe "#6cc06c")
|
||||
(fg-added "#005000")
|
||||
(fg-added-intense "#006700")
|
||||
|
||||
(bg-changed "#ffdfa9")
|
||||
(bg-changed-faint "#ffefbf")
|
||||
(bg-changed-refine "#fac090")
|
||||
(bg-changed-fringe "#d7c20a")
|
||||
(fg-changed "#553d00")
|
||||
(fg-changed-intense "#655000")
|
||||
|
||||
(bg-removed "#ffd8d5")
|
||||
(bg-removed-faint "#ffe9e9")
|
||||
(bg-removed-refine "#f3b5af")
|
||||
(bg-removed-fringe "#d84a4f")
|
||||
(fg-removed "#8f1313")
|
||||
(fg-removed-intense "#aa2222")
|
||||
|
||||
(bg-diff-context "#f3f3f3")
|
||||
|
||||
;;; Paren match
|
||||
|
||||
(bg-paren-match "#5fcfff")
|
||||
(fg-paren-match fg-main)
|
||||
(bg-paren-expression "#efd3f5")
|
||||
(underline-paren-match unspecified)
|
||||
|
||||
;;; Mappings
|
||||
|
||||
;;;; General mappings
|
||||
|
||||
(fringe bg-dim)
|
||||
(cursor fg-main)
|
||||
|
||||
(keybind blue-cooler)
|
||||
(name magenta)
|
||||
(identifier yellow-cooler)
|
||||
|
||||
(err red)
|
||||
(warning yellow-warmer)
|
||||
(info cyan-cooler)
|
||||
|
||||
(underline-err red-intense)
|
||||
(underline-warning yellow-intense)
|
||||
(underline-note cyan-intense)
|
||||
|
||||
(bg-prominent-err bg-red-intense)
|
||||
(fg-prominent-err fg-main)
|
||||
(bg-prominent-warning bg-yellow-intense)
|
||||
(fg-prominent-warning fg-main)
|
||||
(bg-prominent-note bg-cyan-intense)
|
||||
(fg-prominent-note fg-main)
|
||||
|
||||
(bg-active-argument bg-yellow-nuanced)
|
||||
(fg-active-argument yellow-warmer)
|
||||
(bg-active-value bg-cyan-nuanced)
|
||||
(fg-active-value cyan-warmer)
|
||||
|
||||
;;;; Code mappings
|
||||
|
||||
(builtin magenta-warmer)
|
||||
(comment fg-dim)
|
||||
(constant blue-cooler)
|
||||
(docstring green-faint)
|
||||
(docmarkup magenta-faint)
|
||||
(fnname magenta)
|
||||
(keyword magenta-cooler)
|
||||
(preprocessor red-cooler)
|
||||
(string blue-warmer)
|
||||
(type cyan-cooler)
|
||||
(variable cyan)
|
||||
(rx-construct green-cooler)
|
||||
(rx-backslash magenta)
|
||||
|
||||
;;;; Accent mappings
|
||||
|
||||
(accent-0 blue)
|
||||
(accent-1 magenta-warmer)
|
||||
(accent-2 cyan)
|
||||
(accent-3 red)
|
||||
|
||||
;;;; Button mappings
|
||||
|
||||
(fg-button-active fg-main)
|
||||
(fg-button-inactive fg-dim)
|
||||
(bg-button-active bg-active)
|
||||
(bg-button-inactive bg-dim)
|
||||
|
||||
;;;; Completion mappings
|
||||
|
||||
(fg-completion-match-0 blue)
|
||||
(fg-completion-match-1 magenta-warmer)
|
||||
(fg-completion-match-2 cyan)
|
||||
(fg-completion-match-3 red)
|
||||
(bg-completion-match-0 unspecified)
|
||||
(bg-completion-match-1 unspecified)
|
||||
(bg-completion-match-2 unspecified)
|
||||
(bg-completion-match-3 unspecified)
|
||||
|
||||
;;;; Date mappings
|
||||
|
||||
(date-common cyan)
|
||||
(date-deadline red)
|
||||
(date-event fg-alt)
|
||||
(date-holiday red-cooler)
|
||||
(date-holiday-other blue)
|
||||
(date-now fg-main)
|
||||
(date-range fg-alt)
|
||||
(date-scheduled yellow-warmer)
|
||||
(date-weekday cyan)
|
||||
(date-weekend red-faint)
|
||||
|
||||
;;;; Line number mappings
|
||||
|
||||
(fg-line-number-inactive fg-dim)
|
||||
(fg-line-number-active fg-main)
|
||||
(bg-line-number-inactive bg-dim)
|
||||
(bg-line-number-active bg-active)
|
||||
|
||||
;;;; Link mappings
|
||||
|
||||
(fg-link blue-warmer)
|
||||
(bg-link unspecified)
|
||||
(underline-link blue-warmer)
|
||||
|
||||
(fg-link-symbolic cyan)
|
||||
(bg-link-symbolic unspecified)
|
||||
(underline-link-symbolic cyan)
|
||||
|
||||
(fg-link-visited magenta)
|
||||
(bg-link-visited unspecified)
|
||||
(underline-link-visited magenta)
|
||||
|
||||
;;;; Mail mappings
|
||||
|
||||
(mail-cite-0 blue-faint)
|
||||
(mail-cite-1 yellow-warmer)
|
||||
(mail-cite-2 cyan-cooler)
|
||||
(mail-cite-3 red-cooler)
|
||||
(mail-part cyan)
|
||||
(mail-recipient magenta-cooler)
|
||||
(mail-subject magenta-warmer)
|
||||
(mail-other magenta-faint)
|
||||
|
||||
;;;; Mark mappings
|
||||
|
||||
(bg-mark-delete bg-red-subtle)
|
||||
(fg-mark-delete red)
|
||||
(bg-mark-select bg-cyan-subtle)
|
||||
(fg-mark-select cyan)
|
||||
(bg-mark-other bg-yellow-subtle)
|
||||
(fg-mark-other yellow)
|
||||
|
||||
;;;; Prompt mappings
|
||||
|
||||
(fg-prompt cyan-cooler)
|
||||
(bg-prompt unspecified)
|
||||
|
||||
;;;; Prose mappings
|
||||
|
||||
(bg-prose-block-delimiter bg-dim)
|
||||
(fg-prose-block-delimiter fg-dim)
|
||||
(bg-prose-block-contents bg-dim)
|
||||
|
||||
(bg-prose-code unspecified)
|
||||
(fg-prose-code cyan-cooler)
|
||||
|
||||
(bg-prose-macro unspecified)
|
||||
(fg-prose-macro magenta-cooler)
|
||||
|
||||
(bg-prose-verbatim unspecified)
|
||||
(fg-prose-verbatim magenta-warmer)
|
||||
|
||||
(prose-done green)
|
||||
(prose-todo red)
|
||||
|
||||
(prose-metadata fg-dim)
|
||||
(prose-metadata-value fg-alt)
|
||||
|
||||
(prose-table fg-alt)
|
||||
(prose-table-formula magenta-warmer)
|
||||
|
||||
(prose-tag magenta-faint)
|
||||
|
||||
;;;; Rainbow mappings
|
||||
|
||||
(rainbow-0 fg-main)
|
||||
(rainbow-1 magenta-intense)
|
||||
(rainbow-2 cyan-intense)
|
||||
(rainbow-3 red-warmer)
|
||||
(rainbow-4 yellow-intense)
|
||||
(rainbow-5 magenta-cooler)
|
||||
(rainbow-6 green-intense)
|
||||
(rainbow-7 blue-warmer)
|
||||
(rainbow-8 magenta-warmer)
|
||||
|
||||
;;;; Search mappings
|
||||
|
||||
(bg-search-current bg-yellow-intense)
|
||||
(bg-search-lazy bg-cyan-intense)
|
||||
(bg-search-replace bg-red-intense)
|
||||
|
||||
(bg-search-rx-group-0 bg-blue-intense)
|
||||
(bg-search-rx-group-1 bg-green-intense)
|
||||
(bg-search-rx-group-2 bg-red-subtle)
|
||||
(bg-search-rx-group-3 bg-magenta-subtle)
|
||||
|
||||
;;;; Space mappings
|
||||
|
||||
(bg-space unspecified)
|
||||
(fg-space border)
|
||||
(bg-space-err bg-red-intense)
|
||||
|
||||
;;;; Terminal mappings
|
||||
|
||||
(bg-term-black "#000000")
|
||||
(fg-term-black "#000000")
|
||||
(bg-term-black-bright "#595959")
|
||||
(fg-term-black-bright "#595959")
|
||||
|
||||
(bg-term-red red)
|
||||
(fg-term-red red)
|
||||
(bg-term-red-bright red-warmer)
|
||||
(fg-term-red-bright red-warmer)
|
||||
|
||||
(bg-term-green green)
|
||||
(fg-term-green green)
|
||||
(bg-term-green-bright green-cooler)
|
||||
(fg-term-green-bright green-cooler)
|
||||
|
||||
(bg-term-yellow yellow)
|
||||
(fg-term-yellow yellow)
|
||||
(bg-term-yellow-bright yellow-warmer)
|
||||
(fg-term-yellow-bright yellow-warmer)
|
||||
|
||||
(bg-term-blue blue)
|
||||
(fg-term-blue blue)
|
||||
(bg-term-blue-bright blue-warmer)
|
||||
(fg-term-blue-bright blue-warmer)
|
||||
|
||||
(bg-term-magenta magenta)
|
||||
(fg-term-magenta magenta)
|
||||
(bg-term-magenta-bright magenta-cooler)
|
||||
(fg-term-magenta-bright magenta-cooler)
|
||||
|
||||
(bg-term-cyan cyan)
|
||||
(fg-term-cyan cyan)
|
||||
(bg-term-cyan-bright cyan-cooler)
|
||||
(fg-term-cyan-bright cyan-cooler)
|
||||
|
||||
(bg-term-white "#a6a6a6")
|
||||
(fg-term-white "#a6a6a6")
|
||||
(bg-term-white-bright "#ffffff")
|
||||
(fg-term-white-bright "#ffffff")
|
||||
|
||||
;;;; Heading mappings
|
||||
|
||||
(fg-heading-0 cyan-cooler)
|
||||
(fg-heading-1 fg-main)
|
||||
(fg-heading-2 yellow-faint)
|
||||
(fg-heading-3 fg-alt)
|
||||
(fg-heading-4 magenta)
|
||||
(fg-heading-5 green-faint)
|
||||
(fg-heading-6 red-faint)
|
||||
(fg-heading-7 cyan-warmer)
|
||||
(fg-heading-8 fg-dim)
|
||||
|
||||
(bg-heading-0 unspecified)
|
||||
(bg-heading-1 unspecified)
|
||||
(bg-heading-2 unspecified)
|
||||
(bg-heading-3 unspecified)
|
||||
(bg-heading-4 unspecified)
|
||||
(bg-heading-5 unspecified)
|
||||
(bg-heading-6 unspecified)
|
||||
(bg-heading-7 unspecified)
|
||||
(bg-heading-8 unspecified)
|
||||
|
||||
(overline-heading-0 unspecified)
|
||||
(overline-heading-1 unspecified)
|
||||
(overline-heading-2 unspecified)
|
||||
(overline-heading-3 unspecified)
|
||||
(overline-heading-4 unspecified)
|
||||
(overline-heading-5 unspecified)
|
||||
(overline-heading-6 unspecified)
|
||||
(overline-heading-7 unspecified)
|
||||
(overline-heading-8 unspecified))
|
||||
"The entire palette of the `modus-operandi' theme.
|
||||
|
||||
Named colors have the form (COLOR-NAME HEX-VALUE) with the former
|
||||
as a symbol and the latter as a string.
|
||||
|
||||
Semantic color mappings have the form (MAPPING-NAME COLOR-NAME)
|
||||
with both as symbols. The latter is a named color that already
|
||||
exists in the palette and is associated with a HEX-VALUE.")
|
||||
|
||||
(defcustom modus-operandi-palette-overrides nil
|
||||
"Overrides for `modus-operandi-palette'.
|
||||
(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-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.
|
||||
|
|
@ -496,18 +68,25 @@ 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)))
|
||||
:set #'modus-themes--set-option
|
||||
:initialize #'custom-initialize-default
|
||||
:link '(info-link "(modus-themes) Palette overrides"))
|
||||
: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-operandi-palette
|
||||
modus-operandi-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)."
|
||||
'light
|
||||
'modus-themes-operandi-palette
|
||||
'modus-operandi-palette-user
|
||||
'modus-operandi-palette-overrides)
|
||||
|
||||
(provide-theme 'modus-operandi))
|
||||
(provide 'modus-operandi-theme)
|
||||
|
||||
;;; modus-operandi-theme.el ends here
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
;;; modus-operandi-tinted-theme.el --- Elegant, highly legible theme with a light ochre background -*- lexical-binding:t -*-
|
||||
|
||||
;; Copyright (C) 2019-2024 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2019-2026 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Protesilaos Stavrou <info@protesilaos.com>
|
||||
;; Maintainer: Protesilaos Stavrou <info@protesilaos.com>
|
||||
;; Author: Protesilaos <info@protesilaos.com>
|
||||
;; Maintainer: Protesilaos <info@protesilaos.com>
|
||||
;; URL: https://github.com/protesilaos/modus-themes
|
||||
;; Keywords: faces, theme, accessibility
|
||||
|
||||
|
|
@ -26,463 +26,35 @@
|
|||
;;
|
||||
;; The Modus themes conform with the highest standard for
|
||||
;; color-contrast accessibility between background and foreground
|
||||
;; values (WCAG AAA). Please refer to the official Info manual for
|
||||
;; further documentation (distributed with the themes, or available
|
||||
;; at: <https://protesilaos.com/emacs/modus-themes>).
|
||||
;; 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))
|
||||
|
||||
;;;###theme-autoload
|
||||
(deftheme modus-operandi-tinted
|
||||
"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)."
|
||||
:background-mode 'light
|
||||
:kind 'color-scheme
|
||||
:family 'modus)
|
||||
|
||||
(defconst modus-operandi-tinted-palette
|
||||
'(
|
||||
;;; Basic values
|
||||
|
||||
(bg-main "#fbf7f0")
|
||||
(bg-dim "#efe9dd")
|
||||
(fg-main "#000000")
|
||||
(fg-dim "#595959")
|
||||
(fg-alt "#193668")
|
||||
(bg-active "#c9b9b0")
|
||||
(bg-inactive "#dfd5cf")
|
||||
(border "#9f9690")
|
||||
|
||||
;;; Common accent foregrounds
|
||||
|
||||
(red "#a60000")
|
||||
(red-warmer "#972500")
|
||||
(red-cooler "#a0132f")
|
||||
(red-faint "#7f0000")
|
||||
(red-intense "#d00000")
|
||||
(green "#006800")
|
||||
(green-warmer "#316500")
|
||||
(green-cooler "#00663f")
|
||||
(green-faint "#2a5045")
|
||||
(green-intense "#008900")
|
||||
(yellow "#6f5500")
|
||||
(yellow-warmer "#884900")
|
||||
(yellow-cooler "#7a4f2f")
|
||||
(yellow-faint "#624416")
|
||||
(yellow-intense "#808000")
|
||||
(blue "#0031a9")
|
||||
(blue-warmer "#3548cf")
|
||||
(blue-cooler "#0000b0")
|
||||
(blue-faint "#003497")
|
||||
(blue-intense "#0000ff")
|
||||
(magenta "#721045")
|
||||
(magenta-warmer "#8f0075")
|
||||
(magenta-cooler "#531ab6")
|
||||
(magenta-faint "#7c318f")
|
||||
(magenta-intense "#dd22dd")
|
||||
(cyan "#005e8b")
|
||||
(cyan-warmer "#3f578f")
|
||||
(cyan-cooler "#005f5f")
|
||||
(cyan-faint "#005077")
|
||||
(cyan-intense "#008899")
|
||||
|
||||
;;; Uncommon accent foregrounds
|
||||
|
||||
(rust "#8a290f")
|
||||
(gold "#80601f")
|
||||
(olive "#56692d")
|
||||
(slate "#2f3f83")
|
||||
(indigo "#4a3a8a")
|
||||
(maroon "#731c52")
|
||||
(pink "#7b435c")
|
||||
|
||||
;;; Common accent backgrounds
|
||||
|
||||
(bg-red-intense "#ff8f88")
|
||||
(bg-green-intense "#8adf80")
|
||||
(bg-yellow-intense "#f3d000")
|
||||
(bg-blue-intense "#bfc9ff")
|
||||
(bg-magenta-intense "#dfa0f0")
|
||||
(bg-cyan-intense "#a4d5f9")
|
||||
|
||||
(bg-red-subtle "#ffcfbf")
|
||||
(bg-green-subtle "#b3fabf")
|
||||
(bg-yellow-subtle "#fff576")
|
||||
(bg-blue-subtle "#ccdfff")
|
||||
(bg-magenta-subtle "#ffddff")
|
||||
(bg-cyan-subtle "#bfefff")
|
||||
|
||||
(bg-red-nuanced "#ffe8e8")
|
||||
(bg-green-nuanced "#e0f6e0")
|
||||
(bg-yellow-nuanced "#f8f0d0")
|
||||
(bg-blue-nuanced "#ecedff")
|
||||
(bg-magenta-nuanced "#f8e6f5")
|
||||
(bg-cyan-nuanced "#e0f2fa")
|
||||
|
||||
;;; Uncommon accent backgrounds
|
||||
|
||||
(bg-ochre "#f0e0cc")
|
||||
(bg-lavender "#dfdbfa")
|
||||
(bg-sage "#c0e7d4")
|
||||
|
||||
;;; Graphs
|
||||
|
||||
(bg-graph-red-0 "#ef7969")
|
||||
(bg-graph-red-1 "#ffaab4")
|
||||
(bg-graph-green-0 "#2fe029")
|
||||
(bg-graph-green-1 "#75ef30")
|
||||
(bg-graph-yellow-0 "#ffcf00")
|
||||
(bg-graph-yellow-1 "#f9ff00")
|
||||
(bg-graph-blue-0 "#7f90ff")
|
||||
(bg-graph-blue-1 "#9fc6ff")
|
||||
(bg-graph-magenta-0 "#e07fff")
|
||||
(bg-graph-magenta-1 "#fad0ff")
|
||||
(bg-graph-cyan-0 "#70d3f0")
|
||||
(bg-graph-cyan-1 "#afefff")
|
||||
|
||||
;;; Special purpose
|
||||
|
||||
(bg-completion "#f0c1cf")
|
||||
(bg-hover "#b2e4dc")
|
||||
(bg-hover-secondary "#f5d0a0")
|
||||
(bg-hl-line "#f1d5d0")
|
||||
(bg-region "#c2bcb5")
|
||||
(fg-region "#000000")
|
||||
|
||||
(bg-char-0 "#7feaff")
|
||||
(bg-char-1 "#ffaaff")
|
||||
(bg-char-2 "#dff000")
|
||||
|
||||
(bg-mode-line-active "#cab9b2")
|
||||
(fg-mode-line-active "#000000")
|
||||
(border-mode-line-active "#545454")
|
||||
(bg-mode-line-inactive "#dfd9cf")
|
||||
(fg-mode-line-inactive "#585858")
|
||||
(border-mode-line-inactive "#a59a94")
|
||||
|
||||
(modeline-err "#7f0000")
|
||||
(modeline-warning "#5f0070")
|
||||
(modeline-info "#002580")
|
||||
|
||||
(bg-tab-bar "#e0d4ce")
|
||||
(bg-tab-current "#fbf7f0")
|
||||
(bg-tab-other "#c8b8b2")
|
||||
|
||||
;;; Diffs
|
||||
|
||||
(bg-added "#c3ebc1")
|
||||
(bg-added-faint "#dcf8d1")
|
||||
(bg-added-refine "#acd6a5")
|
||||
(bg-added-fringe "#6cc06c")
|
||||
(fg-added "#005000")
|
||||
(fg-added-intense "#006700")
|
||||
|
||||
(bg-changed "#ffdfa9")
|
||||
(bg-changed-faint "#ffefbf")
|
||||
(bg-changed-refine "#fac090")
|
||||
(bg-changed-fringe "#c0b200")
|
||||
(fg-changed "#553d00")
|
||||
(fg-changed-intense "#655000")
|
||||
|
||||
(bg-removed "#f4d0cf")
|
||||
(bg-removed-faint "#ffe9e5")
|
||||
(bg-removed-refine "#f3b5a7")
|
||||
(bg-removed-fringe "#d84a4f")
|
||||
(fg-removed "#8f1313")
|
||||
(fg-removed-intense "#aa2222")
|
||||
|
||||
(bg-diff-context "#efe9df")
|
||||
|
||||
;;; Paren match
|
||||
|
||||
(bg-paren-match "#7fdfcf")
|
||||
(fg-paren-match fg-main)
|
||||
(bg-paren-expression "#efd3f5")
|
||||
(underline-paren-match unspecified)
|
||||
|
||||
;;; Mappings
|
||||
|
||||
;;;; General mappings
|
||||
|
||||
(fringe bg-dim)
|
||||
(cursor red-intense)
|
||||
|
||||
(keybind red)
|
||||
(name magenta)
|
||||
(identifier yellow-cooler)
|
||||
|
||||
(err red)
|
||||
(warning yellow-warmer)
|
||||
(info cyan-cooler)
|
||||
|
||||
(underline-err red-intense)
|
||||
(underline-warning yellow-intense)
|
||||
(underline-note cyan-intense)
|
||||
|
||||
(bg-prominent-err bg-red-intense)
|
||||
(fg-prominent-err fg-main)
|
||||
(bg-prominent-warning bg-yellow-intense)
|
||||
(fg-prominent-warning fg-main)
|
||||
(bg-prominent-note bg-cyan-intense)
|
||||
(fg-prominent-note fg-main)
|
||||
|
||||
(bg-active-argument bg-yellow-nuanced)
|
||||
(fg-active-argument yellow-warmer)
|
||||
(bg-active-value bg-cyan-nuanced)
|
||||
(fg-active-value cyan-warmer)
|
||||
|
||||
;;;; Code mappings
|
||||
|
||||
(builtin magenta-warmer)
|
||||
(comment red-faint)
|
||||
(constant blue-cooler)
|
||||
(docstring green-faint)
|
||||
(docmarkup magenta-faint)
|
||||
(fnname magenta)
|
||||
(keyword magenta-cooler)
|
||||
(preprocessor red-cooler)
|
||||
(string blue-warmer)
|
||||
(type cyan-cooler)
|
||||
(variable cyan)
|
||||
(rx-construct green-cooler)
|
||||
(rx-backslash magenta)
|
||||
|
||||
;;;; Accent mappings
|
||||
|
||||
(accent-0 blue)
|
||||
(accent-1 magenta-warmer)
|
||||
(accent-2 cyan)
|
||||
(accent-3 red)
|
||||
|
||||
;;;; Button mappings
|
||||
|
||||
(fg-button-active fg-main)
|
||||
(fg-button-inactive fg-dim)
|
||||
(bg-button-active bg-active)
|
||||
(bg-button-inactive bg-dim)
|
||||
|
||||
;;;; Completion mappings
|
||||
|
||||
(fg-completion-match-0 blue)
|
||||
(fg-completion-match-1 magenta-warmer)
|
||||
(fg-completion-match-2 cyan)
|
||||
(fg-completion-match-3 red)
|
||||
(bg-completion-match-0 unspecified)
|
||||
(bg-completion-match-1 unspecified)
|
||||
(bg-completion-match-2 unspecified)
|
||||
(bg-completion-match-3 unspecified)
|
||||
|
||||
;;;; Date mappings
|
||||
|
||||
(date-common cyan)
|
||||
(date-deadline red)
|
||||
(date-event fg-alt)
|
||||
(date-holiday red-cooler)
|
||||
(date-holiday-other blue)
|
||||
(date-now fg-main)
|
||||
(date-range fg-alt)
|
||||
(date-scheduled yellow-warmer)
|
||||
(date-weekday cyan)
|
||||
(date-weekend red-faint)
|
||||
|
||||
;;;; Line number mappings
|
||||
|
||||
(fg-line-number-inactive fg-dim)
|
||||
(fg-line-number-active fg-main)
|
||||
(bg-line-number-inactive bg-dim)
|
||||
(bg-line-number-active bg-active)
|
||||
|
||||
;;;; Link mappings
|
||||
|
||||
(fg-link blue-warmer)
|
||||
(bg-link unspecified)
|
||||
(underline-link blue-warmer)
|
||||
|
||||
(fg-link-symbolic cyan)
|
||||
(bg-link-symbolic unspecified)
|
||||
(underline-link-symbolic cyan)
|
||||
|
||||
(fg-link-visited magenta)
|
||||
(bg-link-visited unspecified)
|
||||
(underline-link-visited magenta)
|
||||
|
||||
;;;; Mail mappings
|
||||
|
||||
(mail-cite-0 blue-faint)
|
||||
(mail-cite-1 yellow-warmer)
|
||||
(mail-cite-2 cyan-cooler)
|
||||
(mail-cite-3 red-cooler)
|
||||
(mail-part cyan)
|
||||
(mail-recipient magenta-cooler)
|
||||
(mail-subject magenta-warmer)
|
||||
(mail-other magenta-faint)
|
||||
|
||||
;;;; Mark mappings
|
||||
|
||||
(bg-mark-delete bg-red-subtle)
|
||||
(fg-mark-delete red)
|
||||
(bg-mark-select bg-cyan-subtle)
|
||||
(fg-mark-select cyan)
|
||||
(bg-mark-other bg-yellow-subtle)
|
||||
(fg-mark-other yellow)
|
||||
|
||||
;;;; Prompt mappings
|
||||
|
||||
(fg-prompt cyan-cooler)
|
||||
(bg-prompt unspecified)
|
||||
|
||||
;;;; Prose mappings
|
||||
|
||||
(bg-prose-block-delimiter bg-dim)
|
||||
(fg-prose-block-delimiter fg-dim)
|
||||
(bg-prose-block-contents bg-dim)
|
||||
|
||||
(bg-prose-code unspecified)
|
||||
(fg-prose-code cyan-cooler)
|
||||
|
||||
(bg-prose-macro unspecified)
|
||||
(fg-prose-macro magenta-cooler)
|
||||
|
||||
(bg-prose-verbatim unspecified)
|
||||
(fg-prose-verbatim magenta-warmer)
|
||||
|
||||
(prose-done green)
|
||||
(prose-todo red)
|
||||
|
||||
(prose-metadata fg-dim)
|
||||
(prose-metadata-value fg-alt)
|
||||
|
||||
(prose-table fg-alt)
|
||||
(prose-table-formula magenta-warmer)
|
||||
|
||||
(prose-tag magenta-faint)
|
||||
|
||||
;;;; Rainbow mappings
|
||||
|
||||
(rainbow-0 fg-main)
|
||||
(rainbow-1 magenta-intense)
|
||||
(rainbow-2 cyan-intense)
|
||||
(rainbow-3 red-warmer)
|
||||
(rainbow-4 yellow-intense)
|
||||
(rainbow-5 magenta-cooler)
|
||||
(rainbow-6 green-intense)
|
||||
(rainbow-7 blue-warmer)
|
||||
(rainbow-8 magenta-warmer)
|
||||
|
||||
;;;; Search mappings
|
||||
|
||||
(bg-search-current bg-yellow-intense)
|
||||
(bg-search-lazy bg-cyan-intense)
|
||||
(bg-search-replace bg-red-intense)
|
||||
|
||||
(bg-search-rx-group-0 bg-blue-intense)
|
||||
(bg-search-rx-group-1 bg-green-intense)
|
||||
(bg-search-rx-group-2 bg-red-subtle)
|
||||
(bg-search-rx-group-3 bg-magenta-subtle)
|
||||
|
||||
;;;; Space mappings
|
||||
|
||||
(bg-space unspecified)
|
||||
(fg-space border)
|
||||
(bg-space-err bg-red-intense)
|
||||
|
||||
;;;; Terminal mappings
|
||||
|
||||
(bg-term-black "#000000")
|
||||
(fg-term-black "#000000")
|
||||
(bg-term-black-bright "#595959")
|
||||
(fg-term-black-bright "#595959")
|
||||
|
||||
(bg-term-red red)
|
||||
(fg-term-red red)
|
||||
(bg-term-red-bright red-warmer)
|
||||
(fg-term-red-bright red-warmer)
|
||||
|
||||
(bg-term-green green)
|
||||
(fg-term-green green)
|
||||
(bg-term-green-bright green-cooler)
|
||||
(fg-term-green-bright green-cooler)
|
||||
|
||||
(bg-term-yellow yellow)
|
||||
(fg-term-yellow yellow)
|
||||
(bg-term-yellow-bright yellow-warmer)
|
||||
(fg-term-yellow-bright yellow-warmer)
|
||||
|
||||
(bg-term-blue blue)
|
||||
(fg-term-blue blue)
|
||||
(bg-term-blue-bright blue-warmer)
|
||||
(fg-term-blue-bright blue-warmer)
|
||||
|
||||
(bg-term-magenta magenta)
|
||||
(fg-term-magenta magenta)
|
||||
(bg-term-magenta-bright magenta-cooler)
|
||||
(fg-term-magenta-bright magenta-cooler)
|
||||
|
||||
(bg-term-cyan cyan)
|
||||
(fg-term-cyan cyan)
|
||||
(bg-term-cyan-bright cyan-cooler)
|
||||
(fg-term-cyan-bright cyan-cooler)
|
||||
|
||||
(bg-term-white "#a6a6a6")
|
||||
(fg-term-white "#a6a6a6")
|
||||
(bg-term-white-bright "#ffffff")
|
||||
(fg-term-white-bright "#ffffff")
|
||||
|
||||
;;;; Heading mappings
|
||||
|
||||
(fg-heading-0 cyan-cooler)
|
||||
(fg-heading-1 fg-main)
|
||||
(fg-heading-2 yellow-faint)
|
||||
(fg-heading-3 fg-alt)
|
||||
(fg-heading-4 magenta)
|
||||
(fg-heading-5 green-faint)
|
||||
(fg-heading-6 red-faint)
|
||||
(fg-heading-7 cyan-warmer)
|
||||
(fg-heading-8 fg-dim)
|
||||
|
||||
(bg-heading-0 unspecified)
|
||||
(bg-heading-1 unspecified)
|
||||
(bg-heading-2 unspecified)
|
||||
(bg-heading-3 unspecified)
|
||||
(bg-heading-4 unspecified)
|
||||
(bg-heading-5 unspecified)
|
||||
(bg-heading-6 unspecified)
|
||||
(bg-heading-7 unspecified)
|
||||
(bg-heading-8 unspecified)
|
||||
|
||||
(overline-heading-0 unspecified)
|
||||
(overline-heading-1 unspecified)
|
||||
(overline-heading-2 unspecified)
|
||||
(overline-heading-3 unspecified)
|
||||
(overline-heading-4 unspecified)
|
||||
(overline-heading-5 unspecified)
|
||||
(overline-heading-6 unspecified)
|
||||
(overline-heading-7 unspecified)
|
||||
(overline-heading-8 unspecified))
|
||||
"The entire palette of the `modus-operandi-tinted' theme.
|
||||
|
||||
Named colors have the form (COLOR-NAME HEX-VALUE) with the former
|
||||
as a symbol and the latter as a string.
|
||||
|
||||
Semantic color mappings have the form (MAPPING-NAME COLOR-NAME)
|
||||
with both as symbols. The latter is a named color that already
|
||||
exists in the palette and is associated with a HEX-VALUE.")
|
||||
|
||||
(defcustom modus-operandi-tinted-palette-overrides nil
|
||||
"Overrides for `modus-operandi-tinted-palette'.
|
||||
(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.
|
||||
|
|
@ -496,18 +68,25 @@ 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)))
|
||||
:set #'modus-themes--set-option
|
||||
:initialize #'custom-initialize-default
|
||||
:link '(info-link "(modus-themes) Palette overrides"))
|
||||
: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-operandi-tinted-palette
|
||||
modus-operandi-tinted-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-theme 'modus-operandi-tinted))
|
||||
(provide 'modus-operandi-tinted-theme)
|
||||
|
||||
;;; modus-operandi-tinted-theme.el ends here
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
;;; modus-operandi-tritanopia-theme.el --- Tritanopia-optimized theme with a white background -*- lexical-binding:t -*-
|
||||
|
||||
;; Copyright (C) 2019-2024 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2019-2026 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Protesilaos Stavrou <info@protesilaos.com>
|
||||
;; Maintainer: Protesilaos Stavrou <info@protesilaos.com>
|
||||
;; Author: Protesilaos <info@protesilaos.com>
|
||||
;; Maintainer: Protesilaos <info@protesilaos.com>
|
||||
;; URL: https://github.com/protesilaos/modus-themes
|
||||
;; Keywords: faces, theme, accessibility
|
||||
|
||||
|
|
@ -26,465 +26,35 @@
|
|||
;;
|
||||
;; The Modus themes conform with the highest standard for
|
||||
;; color-contrast accessibility between background and foreground
|
||||
;; values (WCAG AAA). Please refer to the official Info manual for
|
||||
;; further documentation (distributed with the themes, or available
|
||||
;; at: <https://protesilaos.com/emacs/modus-themes>).
|
||||
;; 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))
|
||||
|
||||
;;;###theme-autoload
|
||||
(deftheme modus-operandi-tritanopia
|
||||
"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)."
|
||||
:background-mode 'light
|
||||
:kind 'color-scheme
|
||||
:family 'modus)
|
||||
|
||||
(defconst modus-operandi-tritanopia-palette
|
||||
'(
|
||||
;;; Basic values
|
||||
|
||||
(bg-main "#ffffff")
|
||||
(bg-dim "#f2f2f2")
|
||||
(fg-main "#000000")
|
||||
(fg-dim "#595959")
|
||||
(fg-alt "#193668")
|
||||
(bg-active "#c4c4c4")
|
||||
(bg-inactive "#e0e0e0")
|
||||
(border "#9f9f9f")
|
||||
|
||||
;;; Common accent foregrounds
|
||||
|
||||
(red "#a60000")
|
||||
(red-warmer "#b21100")
|
||||
(red-cooler "#a0132f")
|
||||
(red-faint "#702000")
|
||||
(red-intense "#d00000")
|
||||
(green "#006800")
|
||||
(green-warmer "#316500")
|
||||
(green-cooler "#00663f")
|
||||
(green-faint "#2a5045")
|
||||
(green-intense "#008900")
|
||||
(yellow "#695500")
|
||||
(yellow-warmer "#973300")
|
||||
(yellow-cooler "#77492f")
|
||||
(yellow-faint "#624416")
|
||||
(yellow-intense "#808000")
|
||||
(blue "#0031a9")
|
||||
(blue-warmer "#3548cf")
|
||||
(blue-cooler "#0000b0")
|
||||
(blue-faint "#003497")
|
||||
(blue-intense "#0000ff")
|
||||
(magenta "#721045")
|
||||
(magenta-warmer "#8f0075")
|
||||
(magenta-cooler "#531ab6")
|
||||
(magenta-faint "#7c318f")
|
||||
(magenta-intense "#cd22bd")
|
||||
(cyan "#005e8b")
|
||||
(cyan-warmer "#3f578f")
|
||||
(cyan-cooler "#005f5f")
|
||||
(cyan-faint "#004f5f")
|
||||
(cyan-intense "#008899")
|
||||
|
||||
;;; Uncommon accent foregrounds
|
||||
|
||||
(rust "#8a290f")
|
||||
(gold "#80601f")
|
||||
(olive "#56692d")
|
||||
(slate "#2f3f83")
|
||||
(indigo "#4a3a8a")
|
||||
(maroon "#731c52")
|
||||
(pink "#7b435c")
|
||||
|
||||
;;; Common accent backgrounds
|
||||
|
||||
(bg-red-intense "#ff8f88")
|
||||
(bg-green-intense "#8adf80")
|
||||
(bg-yellow-intense "#f3d000")
|
||||
(bg-blue-intense "#bfc9ff")
|
||||
(bg-magenta-intense "#dfa0f0")
|
||||
(bg-cyan-intense "#a4d5f9")
|
||||
|
||||
(bg-red-subtle "#ffcfbf")
|
||||
(bg-green-subtle "#b3fabf")
|
||||
(bg-yellow-subtle "#fff576")
|
||||
(bg-blue-subtle "#ccdfff")
|
||||
(bg-magenta-subtle "#ffddff")
|
||||
(bg-cyan-subtle "#bfefff")
|
||||
|
||||
(bg-red-nuanced "#ffe8e8")
|
||||
(bg-green-nuanced "#e0f6e0")
|
||||
(bg-yellow-nuanced "#f8f0d0")
|
||||
(bg-blue-nuanced "#ecedff")
|
||||
(bg-magenta-nuanced "#f8e6f5")
|
||||
(bg-cyan-nuanced "#e0f2fa")
|
||||
|
||||
;;; Uncommon accent backgrounds
|
||||
|
||||
(bg-ochre "#f0e0cc")
|
||||
(bg-lavender "#dfdbfa")
|
||||
(bg-sage "#c0e7d4")
|
||||
|
||||
;;; Graphs
|
||||
|
||||
(bg-graph-red-0 "#ef7969")
|
||||
(bg-graph-red-1 "#ffaab4")
|
||||
(bg-graph-green-0 "#70c3b0")
|
||||
(bg-graph-green-1 "#a3dfe5")
|
||||
(bg-graph-yellow-0 "#d99f9f")
|
||||
(bg-graph-yellow-1 "#ffb58f")
|
||||
(bg-graph-blue-0 "#80a0df")
|
||||
(bg-graph-blue-1 "#9fcaff")
|
||||
(bg-graph-magenta-0 "#efafcf")
|
||||
(bg-graph-magenta-1 "#ffdaef")
|
||||
(bg-graph-cyan-0 "#7fd3ed")
|
||||
(bg-graph-cyan-1 "#afefff")
|
||||
|
||||
;;; Special purpose
|
||||
|
||||
(bg-completion "#afdfef")
|
||||
(bg-hover "#ffafbc")
|
||||
(bg-hover-secondary "#9fdfff")
|
||||
(bg-hl-line "#dfeaec")
|
||||
(bg-region "#bdbdbd")
|
||||
(fg-region "#000000")
|
||||
|
||||
(bg-char-0 "#ff908f")
|
||||
(bg-char-1 "#bfbfff")
|
||||
(bg-char-2 "#5fcfdf")
|
||||
|
||||
(bg-mode-line-active "#afe0f2")
|
||||
(fg-mode-line-active "#0f0f0f")
|
||||
(border-mode-line-active "#2f4f44")
|
||||
(bg-mode-line-inactive "#e6e6e6")
|
||||
(fg-mode-line-inactive "#585858")
|
||||
(border-mode-line-inactive "#a3a3a3")
|
||||
|
||||
(modeline-err "#8f0000")
|
||||
(modeline-warning "#6f306f")
|
||||
(modeline-info "#00445f")
|
||||
|
||||
(bg-tab-bar "#dfdfdf")
|
||||
(bg-tab-current "#ffffff")
|
||||
(bg-tab-other "#c2c2c2")
|
||||
|
||||
;;; Diffs
|
||||
|
||||
(bg-added "#b5e7ff")
|
||||
(bg-added-faint "#c6f6ff")
|
||||
(bg-added-refine "#9adcef")
|
||||
(bg-added-fringe "#1782cc")
|
||||
(fg-added "#005079")
|
||||
(fg-added-intense "#0043aa")
|
||||
|
||||
(bg-changed "#eecfdf")
|
||||
(bg-changed-faint "#f0dde5")
|
||||
(bg-changed-refine "#e0b0d0")
|
||||
(bg-changed-fringe "#9f6ab0")
|
||||
(fg-changed "#6f1343")
|
||||
(fg-changed-intense "#7f0f9f")
|
||||
|
||||
(bg-removed "#ffd8d5")
|
||||
(bg-removed-faint "#ffe9e9")
|
||||
(bg-removed-refine "#f3b5af")
|
||||
(bg-removed-fringe "#d84a4f")
|
||||
(fg-removed "#8f1313")
|
||||
(fg-removed-intense "#aa2222")
|
||||
|
||||
(bg-diff-context "#f3f3f3")
|
||||
|
||||
;;; Paren match
|
||||
|
||||
(bg-paren-match "#5fcfff")
|
||||
(fg-paren-match fg-main)
|
||||
(bg-paren-expression "#efd3f5")
|
||||
(underline-paren-match unspecified)
|
||||
|
||||
;;; Mappings
|
||||
|
||||
;;;; General mappings
|
||||
|
||||
(fringe bg-dim)
|
||||
(cursor red-intense)
|
||||
|
||||
(keybind red)
|
||||
(name red-cooler)
|
||||
(identifier red-faint)
|
||||
|
||||
(err red-warmer)
|
||||
(warning magenta)
|
||||
(info cyan)
|
||||
|
||||
(underline-err red-intense)
|
||||
(underline-warning magenta-intense)
|
||||
(underline-note cyan-intense)
|
||||
|
||||
(bg-prominent-err bg-red-intense)
|
||||
(fg-prominent-err fg-main)
|
||||
(bg-prominent-warning bg-magenta-intense)
|
||||
(fg-prominent-warning fg-main)
|
||||
(bg-prominent-note bg-cyan-intense)
|
||||
(fg-prominent-note fg-main)
|
||||
|
||||
(bg-active-argument bg-red-nuanced)
|
||||
(fg-active-argument red-warmer)
|
||||
(bg-active-value bg-cyan-nuanced)
|
||||
(fg-active-value cyan)
|
||||
|
||||
;;;; Code mappings
|
||||
|
||||
(builtin magenta)
|
||||
(comment red-faint)
|
||||
(constant green-cooler)
|
||||
(docstring fg-alt)
|
||||
(docmarkup magenta-faint)
|
||||
(fnname cyan-warmer)
|
||||
(keyword red-cooler)
|
||||
(preprocessor red-warmer)
|
||||
(string cyan)
|
||||
(type blue-warmer)
|
||||
(variable cyan-cooler)
|
||||
(rx-construct red)
|
||||
(rx-backslash magenta)
|
||||
|
||||
;;;; Accent mappings
|
||||
|
||||
(accent-0 cyan)
|
||||
(accent-1 red-warmer)
|
||||
(accent-2 cyan-cooler)
|
||||
(accent-3 magenta)
|
||||
|
||||
;;;; Button mappings
|
||||
|
||||
(fg-button-active fg-main)
|
||||
(fg-button-inactive fg-dim)
|
||||
(bg-button-active bg-active)
|
||||
(bg-button-inactive bg-dim)
|
||||
|
||||
;;;; Completion mappings
|
||||
|
||||
(fg-completion-match-0 cyan)
|
||||
(fg-completion-match-1 red-warmer)
|
||||
(fg-completion-match-2 magenta)
|
||||
(fg-completion-match-3 cyan-cooler)
|
||||
(bg-completion-match-0 unspecified)
|
||||
(bg-completion-match-1 unspecified)
|
||||
(bg-completion-match-2 unspecified)
|
||||
(bg-completion-match-3 unspecified)
|
||||
|
||||
;;;; Date mappings
|
||||
|
||||
(date-common cyan-cooler)
|
||||
(date-deadline red)
|
||||
(date-event fg-alt)
|
||||
(date-holiday red)
|
||||
(date-holiday-other cyan)
|
||||
(date-now fg-main)
|
||||
(date-range fg-alt)
|
||||
(date-scheduled magenta)
|
||||
(date-weekday cyan)
|
||||
(date-weekend red-faint)
|
||||
|
||||
;;;; Line number mappings
|
||||
|
||||
(fg-line-number-inactive fg-dim)
|
||||
(fg-line-number-active fg-main)
|
||||
(bg-line-number-inactive bg-dim)
|
||||
(bg-line-number-active bg-active)
|
||||
|
||||
;;;; Link mappings
|
||||
|
||||
(fg-link cyan)
|
||||
(bg-link unspecified)
|
||||
(underline-link cyan)
|
||||
|
||||
(fg-link-symbolic cyan-cooler)
|
||||
(bg-link-symbolic unspecified)
|
||||
(underline-link-symbolic cyan-cooler)
|
||||
|
||||
(fg-link-visited magenta)
|
||||
(bg-link-visited unspecified)
|
||||
(underline-link-visited magenta)
|
||||
|
||||
;;;; Mail mappings
|
||||
|
||||
(mail-cite-0 cyan-faint)
|
||||
(mail-cite-1 red-faint)
|
||||
(mail-cite-2 magenta-warmer)
|
||||
(mail-cite-3 cyan-warmer)
|
||||
(mail-part cyan-cooler)
|
||||
(mail-recipient cyan)
|
||||
(mail-subject red-cooler)
|
||||
(mail-other cyan)
|
||||
|
||||
;;;; Mark mappings
|
||||
|
||||
(bg-mark-delete bg-red-subtle)
|
||||
(fg-mark-delete red)
|
||||
(bg-mark-select bg-cyan-subtle)
|
||||
(fg-mark-select cyan)
|
||||
(bg-mark-other bg-magenta-subtle)
|
||||
(fg-mark-other magenta)
|
||||
|
||||
;;;; Prompt mappings
|
||||
|
||||
(fg-prompt cyan-cooler)
|
||||
(bg-prompt unspecified)
|
||||
|
||||
;;;; Prose mappings
|
||||
|
||||
(bg-prose-block-delimiter bg-dim)
|
||||
(fg-prose-block-delimiter fg-dim)
|
||||
(bg-prose-block-contents bg-dim)
|
||||
|
||||
(bg-prose-code unspecified)
|
||||
(fg-prose-code cyan)
|
||||
|
||||
(bg-prose-macro unspecified)
|
||||
(fg-prose-macro red-warmer)
|
||||
|
||||
(bg-prose-verbatim unspecified)
|
||||
(fg-prose-verbatim magenta-warmer)
|
||||
|
||||
(prose-done cyan)
|
||||
(prose-todo red)
|
||||
|
||||
(prose-metadata fg-dim)
|
||||
(prose-metadata-value fg-alt)
|
||||
|
||||
(prose-table fg-alt)
|
||||
(prose-table-formula red-cooler)
|
||||
|
||||
(prose-tag magenta-faint)
|
||||
|
||||
;;;; Rainbow mappings
|
||||
|
||||
(rainbow-0 cyan)
|
||||
(rainbow-1 red)
|
||||
(rainbow-2 cyan-warmer)
|
||||
(rainbow-3 red-cooler)
|
||||
(rainbow-4 cyan-cooler)
|
||||
(rainbow-5 magenta)
|
||||
(rainbow-6 cyan-faint)
|
||||
(rainbow-7 magenta-faint)
|
||||
(rainbow-8 red-faint)
|
||||
|
||||
;;;; Search mappings
|
||||
|
||||
(bg-search-current bg-red-intense)
|
||||
(bg-search-lazy bg-cyan-intense)
|
||||
(bg-search-replace bg-magenta-intense)
|
||||
|
||||
(bg-search-rx-group-0 bg-blue-intense)
|
||||
(bg-search-rx-group-1 bg-magenta-intense)
|
||||
(bg-search-rx-group-2 bg-cyan-subtle)
|
||||
(bg-search-rx-group-3 bg-red-subtle)
|
||||
|
||||
;;;; Space mappings
|
||||
|
||||
(bg-space unspecified)
|
||||
(fg-space border)
|
||||
(bg-space-err bg-red-intense)
|
||||
|
||||
;;;; Terminal mappings
|
||||
|
||||
(bg-term-black "#000000")
|
||||
(fg-term-black "#000000")
|
||||
(bg-term-black-bright "#595959")
|
||||
(fg-term-black-bright "#595959")
|
||||
|
||||
(bg-term-red red)
|
||||
(fg-term-red red)
|
||||
(bg-term-red-bright red-warmer)
|
||||
(fg-term-red-bright red-warmer)
|
||||
|
||||
(bg-term-green green)
|
||||
(fg-term-green green)
|
||||
(bg-term-green-bright green-cooler)
|
||||
(fg-term-green-bright green-cooler)
|
||||
|
||||
(bg-term-yellow yellow)
|
||||
(fg-term-yellow yellow)
|
||||
(bg-term-yellow-bright yellow-warmer)
|
||||
(fg-term-yellow-bright yellow-warmer)
|
||||
|
||||
(bg-term-blue blue)
|
||||
(fg-term-blue blue)
|
||||
(bg-term-blue-bright blue-warmer)
|
||||
(fg-term-blue-bright blue-warmer)
|
||||
|
||||
(bg-term-magenta magenta)
|
||||
(fg-term-magenta magenta)
|
||||
(bg-term-magenta-bright magenta-cooler)
|
||||
(fg-term-magenta-bright magenta-cooler)
|
||||
|
||||
(bg-term-cyan cyan)
|
||||
(fg-term-cyan cyan)
|
||||
(bg-term-cyan-bright cyan-cooler)
|
||||
(fg-term-cyan-bright cyan-cooler)
|
||||
|
||||
(bg-term-white "#a6a6a6")
|
||||
(fg-term-white "#a6a6a6")
|
||||
(bg-term-white-bright "#ffffff")
|
||||
(fg-term-white-bright "#ffffff")
|
||||
|
||||
;;;; Heading mappings
|
||||
|
||||
(fg-heading-0 cyan-cooler)
|
||||
(fg-heading-1 fg-main)
|
||||
(fg-heading-2 red-faint)
|
||||
(fg-heading-3 cyan-faint)
|
||||
(fg-heading-4 magenta)
|
||||
(fg-heading-5 green-faint)
|
||||
(fg-heading-6 magenta-faint)
|
||||
(fg-heading-7 cyan-warmer)
|
||||
(fg-heading-8 fg-dim)
|
||||
|
||||
(bg-heading-0 unspecified)
|
||||
(bg-heading-1 unspecified)
|
||||
(bg-heading-2 unspecified)
|
||||
(bg-heading-3 unspecified)
|
||||
(bg-heading-4 unspecified)
|
||||
(bg-heading-5 unspecified)
|
||||
(bg-heading-6 unspecified)
|
||||
(bg-heading-7 unspecified)
|
||||
(bg-heading-8 unspecified)
|
||||
|
||||
(overline-heading-0 unspecified)
|
||||
(overline-heading-1 unspecified)
|
||||
(overline-heading-2 unspecified)
|
||||
(overline-heading-3 unspecified)
|
||||
(overline-heading-4 unspecified)
|
||||
(overline-heading-5 unspecified)
|
||||
(overline-heading-6 unspecified)
|
||||
(overline-heading-7 unspecified)
|
||||
(overline-heading-8 unspecified))
|
||||
"The entire palette of the `modus-operandi-tritanopia' theme.
|
||||
|
||||
Named colors have the form (COLOR-NAME HEX-VALUE) with the former
|
||||
as a symbol and the latter as a string.
|
||||
|
||||
Semantic color mappings have the form (MAPPING-NAME COLOR-NAME)
|
||||
with both as symbols. The latter is a named color that already
|
||||
exists in the palette and is associated with a HEX-VALUE.")
|
||||
|
||||
(defcustom modus-operandi-tritanopia-palette-overrides nil
|
||||
"Overrides for `modus-operandi-tritanopia-palette'.
|
||||
(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.
|
||||
|
|
@ -498,18 +68,28 @@ 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)))
|
||||
:set #'modus-themes--set-option
|
||||
:initialize #'custom-initialize-default
|
||||
:link '(info-link "(modus-themes) Palette overrides"))
|
||||
: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-operandi-tritanopia-palette
|
||||
modus-operandi-tritanopia-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-theme 'modus-operandi-tritanopia))
|
||||
(provide 'modus-operandi-tritanopia-theme)
|
||||
|
||||
;;; modus-operandi-tritanopia-theme.el ends here
|
||||
|
|
|
|||
7813
modus-themes.el
7813
modus-themes.el
File diff suppressed because it is too large
Load diff
|
|
@ -1,9 +1,9 @@
|
|||
;;; modus-vivendi-deuteranopia-theme.el --- Deuteranopia-optimized theme with a black background -*- lexical-binding:t -*-
|
||||
|
||||
;; Copyright (C) 2019-2024 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2019-2026 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Protesilaos Stavrou <info@protesilaos.com>
|
||||
;; Maintainer: Protesilaos Stavrou <info@protesilaos.com>
|
||||
;; Author: Protesilaos <info@protesilaos.com>
|
||||
;; Maintainer: Protesilaos <info@protesilaos.com>
|
||||
;; URL: https://github.com/protesilaos/modus-themes
|
||||
;; Keywords: faces, theme, accessibility
|
||||
|
||||
|
|
@ -26,465 +26,35 @@
|
|||
;;
|
||||
;; The Modus themes conform with the highest standard for
|
||||
;; color-contrast accessibility between background and foreground
|
||||
;; values (WCAG AAA). Please refer to the official Info manual for
|
||||
;; further documentation (distributed with the themes, or available
|
||||
;; at: <https://protesilaos.com/emacs/modus-themes>).
|
||||
;; 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))
|
||||
|
||||
;;;###theme-autoload
|
||||
(deftheme modus-vivendi-deuteranopia
|
||||
"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)."
|
||||
:background-mode 'dark
|
||||
:kind 'color-scheme
|
||||
:family 'modus)
|
||||
|
||||
(defconst modus-vivendi-deuteranopia-palette
|
||||
'(
|
||||
;;; Basic values
|
||||
|
||||
(bg-main "#000000")
|
||||
(bg-dim "#1e1e1e")
|
||||
(fg-main "#ffffff")
|
||||
(fg-dim "#989898")
|
||||
(fg-alt "#c6daff")
|
||||
(bg-active "#535353")
|
||||
(bg-inactive "#303030")
|
||||
(border "#646464")
|
||||
|
||||
;;; Common accent foregrounds
|
||||
|
||||
(red "#ff5f59")
|
||||
(red-warmer "#ff6b55")
|
||||
(red-cooler "#ff7f9f")
|
||||
(red-faint "#ff9580")
|
||||
(red-intense "#ff5f5f")
|
||||
(green "#44bc44")
|
||||
(green-warmer "#70b900")
|
||||
(green-cooler "#00c06f")
|
||||
(green-faint "#88ca9f")
|
||||
(green-intense "#44df44")
|
||||
(yellow "#cabf00")
|
||||
(yellow-warmer "#ffa00f")
|
||||
(yellow-cooler "#d8af7a")
|
||||
(yellow-faint "#d2b580")
|
||||
(yellow-intense "#efef00")
|
||||
(blue "#2fafff")
|
||||
(blue-warmer "#79a8ff")
|
||||
(blue-cooler "#00bcff")
|
||||
(blue-faint "#82b0ec")
|
||||
(blue-intense "#338fff")
|
||||
(magenta "#feacd0")
|
||||
(magenta-warmer "#f78fe7")
|
||||
(magenta-cooler "#b6a0ff")
|
||||
(magenta-faint "#caa6df")
|
||||
(magenta-intense "#ff66ff")
|
||||
(cyan "#00d3d0")
|
||||
(cyan-warmer "#4ae2f0")
|
||||
(cyan-cooler "#6ae4b9")
|
||||
(cyan-faint "#9ac8e0")
|
||||
(cyan-intense "#00eff0")
|
||||
|
||||
;;; Uncommon accent foregrounds
|
||||
|
||||
(rust "#db7b5f")
|
||||
(gold "#c0965b")
|
||||
(olive "#9cbd6f")
|
||||
(slate "#76afbf")
|
||||
(indigo "#9099d9")
|
||||
(maroon "#cf7fa7")
|
||||
(pink "#d09dc0")
|
||||
|
||||
;;; Common accent backgrounds
|
||||
|
||||
(bg-red-intense "#9d1f1f")
|
||||
(bg-green-intense "#2f822f")
|
||||
(bg-yellow-intense "#7a6100")
|
||||
(bg-blue-intense "#1640b0")
|
||||
(bg-magenta-intense "#7030af")
|
||||
(bg-cyan-intense "#2266ae")
|
||||
|
||||
(bg-red-subtle "#620f2a")
|
||||
(bg-green-subtle "#00422a")
|
||||
(bg-yellow-subtle "#4a4000")
|
||||
(bg-blue-subtle "#242679")
|
||||
(bg-magenta-subtle "#552f5f")
|
||||
(bg-cyan-subtle "#004065")
|
||||
|
||||
(bg-red-nuanced "#3a0c14")
|
||||
(bg-green-nuanced "#092f1f")
|
||||
(bg-yellow-nuanced "#381d0f")
|
||||
(bg-blue-nuanced "#12154a")
|
||||
(bg-magenta-nuanced "#2f0c3f")
|
||||
(bg-cyan-nuanced "#042837")
|
||||
|
||||
;;; Uncommon accent backgrounds
|
||||
|
||||
(bg-ochre "#442c2f")
|
||||
(bg-lavender "#38325c")
|
||||
(bg-sage "#0f3d30")
|
||||
|
||||
;;; Graphs
|
||||
|
||||
(bg-graph-red-0 "#bf6000")
|
||||
(bg-graph-red-1 "#733500")
|
||||
(bg-graph-green-0 "#6fbf8f")
|
||||
(bg-graph-green-1 "#2f5f4f")
|
||||
(bg-graph-yellow-0 "#c1c00a")
|
||||
(bg-graph-yellow-1 "#7f6640")
|
||||
(bg-graph-blue-0 "#0f90ef")
|
||||
(bg-graph-blue-1 "#1f2f8f")
|
||||
(bg-graph-magenta-0 "#7f7f8e")
|
||||
(bg-graph-magenta-1 "#4f4f5f")
|
||||
(bg-graph-cyan-0 "#376f9a")
|
||||
(bg-graph-cyan-1 "#00404f")
|
||||
|
||||
;;; Special purpose
|
||||
|
||||
(bg-completion "#2f447f")
|
||||
(bg-hover "#45605e")
|
||||
(bg-hover-secondary "#654a39")
|
||||
(bg-hl-line "#2f3849")
|
||||
(bg-region "#5a5a5a")
|
||||
(fg-region "#ffffff")
|
||||
|
||||
(bg-char-0 "#0050af")
|
||||
(bg-char-1 "#7f1f7f")
|
||||
(bg-char-2 "#625a00")
|
||||
|
||||
(bg-mode-line-active "#2a2a6a")
|
||||
(fg-mode-line-active "#f0f0f0")
|
||||
(border-mode-line-active "#8080a7")
|
||||
(bg-mode-line-inactive "#2d2d2d")
|
||||
(fg-mode-line-inactive "#969696")
|
||||
(border-mode-line-inactive "#606060")
|
||||
|
||||
(modeline-err "#e5bf00")
|
||||
(modeline-warning "#c0cf35")
|
||||
(modeline-info "#abeadf")
|
||||
|
||||
(bg-tab-bar "#313131")
|
||||
(bg-tab-current "#000000")
|
||||
(bg-tab-other "#545454")
|
||||
|
||||
;;; Diffs
|
||||
|
||||
(bg-added "#003066")
|
||||
(bg-added-faint "#001a4f")
|
||||
(bg-added-refine "#0f4a77")
|
||||
(bg-added-fringe "#006fff")
|
||||
(fg-added "#c4d5ff")
|
||||
(fg-added-intense "#8080ff")
|
||||
|
||||
(bg-changed "#2f123f")
|
||||
(bg-changed-faint "#1f022f")
|
||||
(bg-changed-refine "#3f325f")
|
||||
(bg-changed-fringe "#7f55a0")
|
||||
(fg-changed "#e3cfff")
|
||||
(fg-changed-intense "#cf9fe2")
|
||||
|
||||
(bg-removed "#3d3d00")
|
||||
(bg-removed-faint "#281f00")
|
||||
(bg-removed-refine "#555500")
|
||||
(bg-removed-fringe "#d0c03f")
|
||||
(fg-removed "#d4d48f")
|
||||
(fg-removed-intense "#d0b05f")
|
||||
|
||||
(bg-diff-context "#1a1a1a")
|
||||
|
||||
;;; Paren match
|
||||
|
||||
(bg-paren-match "#2f7f9f")
|
||||
(fg-paren-match fg-main)
|
||||
(bg-paren-expression "#453040")
|
||||
(underline-paren-match unspecified)
|
||||
|
||||
;;; Mappings
|
||||
|
||||
;;;; General mappings
|
||||
|
||||
(fringe bg-dim)
|
||||
(cursor yellow-intense)
|
||||
|
||||
(keybind blue-cooler)
|
||||
(name blue-cooler)
|
||||
(identifier yellow-faint)
|
||||
|
||||
(err yellow-warmer)
|
||||
(warning yellow)
|
||||
(info blue)
|
||||
|
||||
(underline-err yellow-intense)
|
||||
(underline-warning magenta-faint)
|
||||
(underline-note cyan)
|
||||
|
||||
(bg-prominent-err bg-yellow-intense)
|
||||
(fg-prominent-err fg-main)
|
||||
(bg-prominent-warning bg-magenta-intense)
|
||||
(fg-prominent-warning fg-main)
|
||||
(bg-prominent-note bg-cyan-intense)
|
||||
(fg-prominent-note fg-main)
|
||||
|
||||
(bg-active-argument bg-yellow-nuanced)
|
||||
(fg-active-argument yellow-warmer)
|
||||
(bg-active-value bg-blue-nuanced)
|
||||
(fg-active-value blue-warmer)
|
||||
|
||||
;;;; Code mappings
|
||||
|
||||
(builtin magenta-warmer)
|
||||
(comment yellow-cooler)
|
||||
(constant blue-cooler)
|
||||
(docstring cyan-faint)
|
||||
(docmarkup magenta-faint)
|
||||
(fnname magenta)
|
||||
(keyword magenta-cooler)
|
||||
(preprocessor red-cooler)
|
||||
(string blue-warmer)
|
||||
(type cyan-cooler)
|
||||
(variable cyan)
|
||||
(rx-construct yellow-cooler)
|
||||
(rx-backslash blue-cooler)
|
||||
|
||||
;;;; Accent mappings
|
||||
|
||||
(accent-0 blue-cooler)
|
||||
(accent-1 yellow)
|
||||
(accent-2 cyan-cooler)
|
||||
(accent-3 magenta-warmer)
|
||||
|
||||
;;;; Button mappings
|
||||
|
||||
(fg-button-active fg-main)
|
||||
(fg-button-inactive fg-dim)
|
||||
(bg-button-active bg-active)
|
||||
(bg-button-inactive bg-dim)
|
||||
|
||||
;;;; Completion mappings
|
||||
|
||||
(fg-completion-match-0 blue-cooler)
|
||||
(fg-completion-match-1 yellow)
|
||||
(fg-completion-match-2 cyan-cooler)
|
||||
(fg-completion-match-3 magenta-warmer)
|
||||
(bg-completion-match-0 unspecified)
|
||||
(bg-completion-match-1 unspecified)
|
||||
(bg-completion-match-2 unspecified)
|
||||
(bg-completion-match-3 unspecified)
|
||||
|
||||
;;;; Date mappings
|
||||
|
||||
(date-common cyan)
|
||||
(date-deadline yellow-warmer)
|
||||
(date-event fg-alt)
|
||||
(date-holiday yellow-warmer)
|
||||
(date-holiday-other blue)
|
||||
(date-now fg-main)
|
||||
(date-range fg-alt)
|
||||
(date-scheduled yellow-cooler)
|
||||
(date-weekday cyan)
|
||||
(date-weekend yellow-faint)
|
||||
|
||||
;;;; Line number mappings
|
||||
|
||||
(fg-line-number-inactive fg-dim)
|
||||
(fg-line-number-active fg-main)
|
||||
(bg-line-number-inactive bg-dim)
|
||||
(bg-line-number-active bg-active)
|
||||
|
||||
;;;; Link mappings
|
||||
|
||||
(fg-link blue-warmer)
|
||||
(bg-link unspecified)
|
||||
(underline-link blue-warmer)
|
||||
|
||||
(fg-link-symbolic cyan)
|
||||
(bg-link-symbolic unspecified)
|
||||
(underline-link-symbolic cyan)
|
||||
|
||||
(fg-link-visited yellow-faint)
|
||||
(bg-link-visited unspecified)
|
||||
(underline-link-visited yellow-faint)
|
||||
|
||||
;;;; Mail mappings
|
||||
|
||||
(mail-cite-0 blue-warmer)
|
||||
(mail-cite-1 yellow-cooler)
|
||||
(mail-cite-2 cyan-faint)
|
||||
(mail-cite-3 yellow)
|
||||
(mail-part blue)
|
||||
(mail-recipient blue)
|
||||
(mail-subject yellow-warmer)
|
||||
(mail-other cyan-faint)
|
||||
|
||||
;;;; Mark mappings
|
||||
|
||||
(bg-mark-delete bg-yellow-subtle)
|
||||
(fg-mark-delete yellow)
|
||||
(bg-mark-select bg-cyan-subtle)
|
||||
(fg-mark-select cyan)
|
||||
(bg-mark-other bg-magenta-subtle)
|
||||
(fg-mark-other magenta-warmer)
|
||||
|
||||
;;;; Prompt mappings
|
||||
|
||||
(fg-prompt blue)
|
||||
(bg-prompt unspecified)
|
||||
|
||||
;;;; Prose mappings
|
||||
|
||||
(bg-prose-block-delimiter bg-dim)
|
||||
(fg-prose-block-delimiter fg-dim)
|
||||
(bg-prose-block-contents bg-dim)
|
||||
|
||||
(bg-prose-code unspecified)
|
||||
(fg-prose-code cyan-cooler)
|
||||
|
||||
(bg-prose-macro unspecified)
|
||||
(fg-prose-macro magenta-cooler)
|
||||
|
||||
(bg-prose-verbatim unspecified)
|
||||
(fg-prose-verbatim magenta-warmer)
|
||||
|
||||
(prose-done blue)
|
||||
(prose-todo yellow-warmer)
|
||||
|
||||
(prose-metadata fg-dim)
|
||||
(prose-metadata-value fg-alt)
|
||||
|
||||
(prose-table fg-alt)
|
||||
(prose-table-formula yellow-warmer)
|
||||
|
||||
(prose-tag magenta-faint)
|
||||
|
||||
;;;; Rainbow mappings
|
||||
|
||||
(rainbow-0 yellow-warmer)
|
||||
(rainbow-1 blue)
|
||||
(rainbow-2 yellow-cooler)
|
||||
(rainbow-3 blue-warmer)
|
||||
(rainbow-4 yellow)
|
||||
(rainbow-5 cyan-warmer)
|
||||
(rainbow-6 yellow-faint)
|
||||
(rainbow-7 blue-faint)
|
||||
(rainbow-8 magenta-faint)
|
||||
|
||||
;;;; Search mappings
|
||||
|
||||
(bg-search-current bg-yellow-intense)
|
||||
(bg-search-lazy bg-blue-intense)
|
||||
(bg-search-replace bg-magenta-intense)
|
||||
|
||||
(bg-search-rx-group-0 bg-cyan-intense)
|
||||
(bg-search-rx-group-1 bg-magenta-intense)
|
||||
(bg-search-rx-group-2 bg-blue-subtle)
|
||||
(bg-search-rx-group-3 bg-yellow-subtle)
|
||||
|
||||
;;;; Space mappings
|
||||
|
||||
(bg-space unspecified)
|
||||
(fg-space border)
|
||||
(bg-space-err bg-yellow-intense)
|
||||
|
||||
;;;; Terminal mappings
|
||||
|
||||
(bg-term-black "#000000")
|
||||
(fg-term-black "#000000")
|
||||
(bg-term-black-bright "#595959")
|
||||
(fg-term-black-bright "#595959")
|
||||
|
||||
(bg-term-red red)
|
||||
(fg-term-red red)
|
||||
(bg-term-red-bright red-warmer)
|
||||
(fg-term-red-bright red-warmer)
|
||||
|
||||
(bg-term-green green)
|
||||
(fg-term-green green)
|
||||
(bg-term-green-bright green-cooler)
|
||||
(fg-term-green-bright green-cooler)
|
||||
|
||||
(bg-term-yellow yellow)
|
||||
(fg-term-yellow yellow)
|
||||
(bg-term-yellow-bright yellow-warmer)
|
||||
(fg-term-yellow-bright yellow-warmer)
|
||||
|
||||
(bg-term-blue blue)
|
||||
(fg-term-blue blue)
|
||||
(bg-term-blue-bright blue-warmer)
|
||||
(fg-term-blue-bright blue-warmer)
|
||||
|
||||
(bg-term-magenta magenta)
|
||||
(fg-term-magenta magenta)
|
||||
(bg-term-magenta-bright magenta-cooler)
|
||||
(fg-term-magenta-bright magenta-cooler)
|
||||
|
||||
(bg-term-cyan cyan)
|
||||
(fg-term-cyan cyan)
|
||||
(bg-term-cyan-bright cyan-cooler)
|
||||
(fg-term-cyan-bright cyan-cooler)
|
||||
|
||||
(bg-term-white "#a6a6a6")
|
||||
(fg-term-white "#a6a6a6")
|
||||
(bg-term-white-bright "#ffffff")
|
||||
(fg-term-white-bright "#ffffff")
|
||||
|
||||
;;;; Heading mappings
|
||||
|
||||
(fg-heading-0 cyan-cooler)
|
||||
(fg-heading-1 fg-main)
|
||||
(fg-heading-2 yellow-faint)
|
||||
(fg-heading-3 blue-faint)
|
||||
(fg-heading-4 magenta)
|
||||
(fg-heading-5 green-faint)
|
||||
(fg-heading-6 red-faint)
|
||||
(fg-heading-7 cyan-faint)
|
||||
(fg-heading-8 fg-dim)
|
||||
|
||||
(bg-heading-0 unspecified)
|
||||
(bg-heading-1 unspecified)
|
||||
(bg-heading-2 unspecified)
|
||||
(bg-heading-3 unspecified)
|
||||
(bg-heading-4 unspecified)
|
||||
(bg-heading-5 unspecified)
|
||||
(bg-heading-6 unspecified)
|
||||
(bg-heading-7 unspecified)
|
||||
(bg-heading-8 unspecified)
|
||||
|
||||
(overline-heading-0 unspecified)
|
||||
(overline-heading-1 unspecified)
|
||||
(overline-heading-2 unspecified)
|
||||
(overline-heading-3 unspecified)
|
||||
(overline-heading-4 unspecified)
|
||||
(overline-heading-5 unspecified)
|
||||
(overline-heading-6 unspecified)
|
||||
(overline-heading-7 unspecified)
|
||||
(overline-heading-8 unspecified))
|
||||
"The entire palette of the `modus-vivendi-deuteranopia' theme.
|
||||
|
||||
Named colors have the form (COLOR-NAME HEX-VALUE) with the former
|
||||
as a symbol and the latter as a string.
|
||||
|
||||
Semantic color mappings have the form (MAPPING-NAME COLOR-NAME)
|
||||
with both as symbols. The latter is a named color that already
|
||||
exists in the palette and is associated with a HEX-VALUE.")
|
||||
|
||||
(defcustom modus-vivendi-deuteranopia-palette-overrides nil
|
||||
"Overrides for `modus-vivendi-deuteranopia-palette'.
|
||||
(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.
|
||||
|
|
@ -498,18 +68,28 @@ 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)))
|
||||
:set #'modus-themes--set-option
|
||||
:initialize #'custom-initialize-default
|
||||
:link '(info-link "(modus-themes) Palette overrides"))
|
||||
: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-vivendi-deuteranopia-palette
|
||||
modus-vivendi-deuteranopia-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-theme 'modus-vivendi-deuteranopia))
|
||||
(provide 'modus-vivendi-deuteranopia-theme)
|
||||
|
||||
;;; modus-vivendi-deuteranopia-theme.el ends here
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
;;; modus-vivendi-theme.el --- Elegant, highly legible theme with a black background -*- lexical-binding:t -*-
|
||||
|
||||
;; Copyright (C) 2019-2024 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2019-2026 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Protesilaos Stavrou <info@protesilaos.com>
|
||||
;; Maintainer: Protesilaos Stavrou <info@protesilaos.com>
|
||||
;; Author: Protesilaos <info@protesilaos.com>
|
||||
;; Maintainer: Protesilaos <info@protesilaos.com>
|
||||
;; URL: https://github.com/protesilaos/modus-themes
|
||||
;; Keywords: faces, theme, accessibility
|
||||
|
||||
|
|
@ -26,463 +26,35 @@
|
|||
;;
|
||||
;; The Modus themes conform with the highest standard for
|
||||
;; color-contrast accessibility between background and foreground
|
||||
;; values (WCAG AAA). Please refer to the official Info manual for
|
||||
;; further documentation (distributed with the themes, or available
|
||||
;; at: <https://protesilaos.com/emacs/modus-themes>).
|
||||
;; 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))
|
||||
|
||||
;;;###theme-autoload
|
||||
(deftheme modus-vivendi
|
||||
"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)."
|
||||
:background-mode 'dark
|
||||
:kind 'color-scheme
|
||||
:family 'modus)
|
||||
|
||||
(defconst modus-vivendi-palette
|
||||
'(
|
||||
;;; Basic values
|
||||
|
||||
(bg-main "#000000")
|
||||
(bg-dim "#1e1e1e")
|
||||
(fg-main "#ffffff")
|
||||
(fg-dim "#989898")
|
||||
(fg-alt "#c6daff")
|
||||
(bg-active "#535353")
|
||||
(bg-inactive "#303030")
|
||||
(border "#646464")
|
||||
|
||||
;;; Common accent foregrounds
|
||||
|
||||
(red "#ff5f59")
|
||||
(red-warmer "#ff6b55")
|
||||
(red-cooler "#ff7f9f")
|
||||
(red-faint "#ff9580")
|
||||
(red-intense "#ff5f5f")
|
||||
(green "#44bc44")
|
||||
(green-warmer "#70b900")
|
||||
(green-cooler "#00c06f")
|
||||
(green-faint "#88ca9f")
|
||||
(green-intense "#44df44")
|
||||
(yellow "#d0bc00")
|
||||
(yellow-warmer "#fec43f")
|
||||
(yellow-cooler "#dfaf7a")
|
||||
(yellow-faint "#d2b580")
|
||||
(yellow-intense "#efef00")
|
||||
(blue "#2fafff")
|
||||
(blue-warmer "#79a8ff")
|
||||
(blue-cooler "#00bcff")
|
||||
(blue-faint "#82b0ec")
|
||||
(blue-intense "#338fff")
|
||||
(magenta "#feacd0")
|
||||
(magenta-warmer "#f78fe7")
|
||||
(magenta-cooler "#b6a0ff")
|
||||
(magenta-faint "#caa6df")
|
||||
(magenta-intense "#ff66ff")
|
||||
(cyan "#00d3d0")
|
||||
(cyan-warmer "#4ae2f0")
|
||||
(cyan-cooler "#6ae4b9")
|
||||
(cyan-faint "#9ac8e0")
|
||||
(cyan-intense "#00eff0")
|
||||
|
||||
;;; Uncommon accent foregrounds
|
||||
|
||||
(rust "#db7b5f")
|
||||
(gold "#c0965b")
|
||||
(olive "#9cbd6f")
|
||||
(slate "#76afbf")
|
||||
(indigo "#9099d9")
|
||||
(maroon "#cf7fa7")
|
||||
(pink "#d09dc0")
|
||||
|
||||
;;; Common accent backgrounds
|
||||
|
||||
(bg-red-intense "#9d1f1f")
|
||||
(bg-green-intense "#2f822f")
|
||||
(bg-yellow-intense "#7a6100")
|
||||
(bg-blue-intense "#1640b0")
|
||||
(bg-magenta-intense "#7030af")
|
||||
(bg-cyan-intense "#2266ae")
|
||||
|
||||
(bg-red-subtle "#620f2a")
|
||||
(bg-green-subtle "#00422a")
|
||||
(bg-yellow-subtle "#4a4000")
|
||||
(bg-blue-subtle "#242679")
|
||||
(bg-magenta-subtle "#552f5f")
|
||||
(bg-cyan-subtle "#004065")
|
||||
|
||||
(bg-red-nuanced "#3a0c14")
|
||||
(bg-green-nuanced "#092f1f")
|
||||
(bg-yellow-nuanced "#381d0f")
|
||||
(bg-blue-nuanced "#12154a")
|
||||
(bg-magenta-nuanced "#2f0c3f")
|
||||
(bg-cyan-nuanced "#042837")
|
||||
|
||||
;;; Uncommon accent backgrounds
|
||||
|
||||
(bg-ochre "#442c2f")
|
||||
(bg-lavender "#38325c")
|
||||
(bg-sage "#0f3d30")
|
||||
|
||||
;;; Graphs
|
||||
|
||||
(bg-graph-red-0 "#b52c2c")
|
||||
(bg-graph-red-1 "#702020")
|
||||
(bg-graph-green-0 "#0fed00")
|
||||
(bg-graph-green-1 "#007800")
|
||||
(bg-graph-yellow-0 "#f1e00a")
|
||||
(bg-graph-yellow-1 "#b08940")
|
||||
(bg-graph-blue-0 "#2fafef")
|
||||
(bg-graph-blue-1 "#1f2f8f")
|
||||
(bg-graph-magenta-0 "#bf94fe")
|
||||
(bg-graph-magenta-1 "#5f509f")
|
||||
(bg-graph-cyan-0 "#47dfea")
|
||||
(bg-graph-cyan-1 "#00808f")
|
||||
|
||||
;;; Special purpose
|
||||
|
||||
(bg-completion "#2f447f")
|
||||
(bg-hover "#45605e")
|
||||
(bg-hover-secondary "#654a39")
|
||||
(bg-hl-line "#2f3849")
|
||||
(bg-region "#5a5a5a")
|
||||
(fg-region "#ffffff")
|
||||
|
||||
(bg-char-0 "#0050af")
|
||||
(bg-char-1 "#7f1f7f")
|
||||
(bg-char-2 "#625a00")
|
||||
|
||||
(bg-mode-line-active "#505050")
|
||||
(fg-mode-line-active "#ffffff")
|
||||
(border-mode-line-active "#959595")
|
||||
(bg-mode-line-inactive "#2d2d2d")
|
||||
(fg-mode-line-inactive "#969696")
|
||||
(border-mode-line-inactive "#606060")
|
||||
|
||||
(modeline-err "#ffa9bf")
|
||||
(modeline-warning "#dfcf43")
|
||||
(modeline-info "#9fefff")
|
||||
|
||||
(bg-tab-bar "#313131")
|
||||
(bg-tab-current "#000000")
|
||||
(bg-tab-other "#545454")
|
||||
|
||||
;;; Diffs
|
||||
|
||||
(bg-added "#00381f")
|
||||
(bg-added-faint "#002910")
|
||||
(bg-added-refine "#034f2f")
|
||||
(bg-added-fringe "#237f3f")
|
||||
(fg-added "#a0e0a0")
|
||||
(fg-added-intense "#80e080")
|
||||
|
||||
(bg-changed "#363300")
|
||||
(bg-changed-faint "#2a1f00")
|
||||
(bg-changed-refine "#4a4a00")
|
||||
(bg-changed-fringe "#8a7a00")
|
||||
(fg-changed "#efef80")
|
||||
(fg-changed-intense "#c0b05f")
|
||||
|
||||
(bg-removed "#4f1119")
|
||||
(bg-removed-faint "#380a0f")
|
||||
(bg-removed-refine "#781a1f")
|
||||
(bg-removed-fringe "#b81a1f")
|
||||
(fg-removed "#ffbfbf")
|
||||
(fg-removed-intense "#ff9095")
|
||||
|
||||
(bg-diff-context "#1a1a1a")
|
||||
|
||||
;;; Paren match
|
||||
|
||||
(bg-paren-match "#2f7f9f")
|
||||
(fg-paren-match fg-main)
|
||||
(bg-paren-expression "#453040")
|
||||
(underline-paren-match unspecified)
|
||||
|
||||
;;; Mappings
|
||||
|
||||
;;;; General mappings
|
||||
|
||||
(fringe bg-dim)
|
||||
(cursor fg-main)
|
||||
|
||||
(keybind blue-cooler)
|
||||
(name magenta)
|
||||
(identifier yellow-faint)
|
||||
|
||||
(err red)
|
||||
(warning yellow-warmer)
|
||||
(info cyan-cooler)
|
||||
|
||||
(underline-err red-intense)
|
||||
(underline-warning yellow)
|
||||
(underline-note cyan)
|
||||
|
||||
(bg-prominent-err bg-red-intense)
|
||||
(fg-prominent-err fg-main)
|
||||
(bg-prominent-warning bg-yellow-intense)
|
||||
(fg-prominent-warning fg-main)
|
||||
(bg-prominent-note bg-cyan-intense)
|
||||
(fg-prominent-note fg-main)
|
||||
|
||||
(bg-active-argument bg-yellow-nuanced)
|
||||
(fg-active-argument yellow-cooler)
|
||||
(bg-active-value bg-cyan-nuanced)
|
||||
(fg-active-value cyan-cooler)
|
||||
|
||||
;;;; Code mappings
|
||||
|
||||
(builtin magenta-warmer)
|
||||
(comment fg-dim)
|
||||
(constant blue-cooler)
|
||||
(docstring cyan-faint)
|
||||
(docmarkup magenta-faint)
|
||||
(fnname magenta)
|
||||
(keyword magenta-cooler)
|
||||
(preprocessor red-cooler)
|
||||
(string blue-warmer)
|
||||
(type cyan-cooler)
|
||||
(variable cyan)
|
||||
(rx-construct green-cooler)
|
||||
(rx-backslash magenta)
|
||||
|
||||
;;;; Accent mappings
|
||||
|
||||
(accent-0 blue-cooler)
|
||||
(accent-1 magenta-warmer)
|
||||
(accent-2 cyan-cooler)
|
||||
(accent-3 yellow)
|
||||
|
||||
;;;; Button mappings
|
||||
|
||||
(fg-button-active fg-main)
|
||||
(fg-button-inactive fg-dim)
|
||||
(bg-button-active bg-active)
|
||||
(bg-button-inactive bg-dim)
|
||||
|
||||
;;;; Completion mappings
|
||||
|
||||
(fg-completion-match-0 blue-cooler)
|
||||
(fg-completion-match-1 magenta-warmer)
|
||||
(fg-completion-match-2 cyan-cooler)
|
||||
(fg-completion-match-3 yellow)
|
||||
(bg-completion-match-0 unspecified)
|
||||
(bg-completion-match-1 unspecified)
|
||||
(bg-completion-match-2 unspecified)
|
||||
(bg-completion-match-3 unspecified)
|
||||
|
||||
;;;; Date mappings
|
||||
|
||||
(date-common cyan)
|
||||
(date-deadline red)
|
||||
(date-event fg-alt)
|
||||
(date-holiday red-cooler)
|
||||
(date-holiday-other blue)
|
||||
(date-now fg-main)
|
||||
(date-range fg-alt)
|
||||
(date-scheduled yellow-warmer)
|
||||
(date-weekday cyan)
|
||||
(date-weekend red-faint)
|
||||
|
||||
;;;; Line number mappings
|
||||
|
||||
(fg-line-number-inactive fg-dim)
|
||||
(fg-line-number-active fg-main)
|
||||
(bg-line-number-inactive bg-dim)
|
||||
(bg-line-number-active bg-active)
|
||||
|
||||
;;;; Link mappings
|
||||
|
||||
(fg-link blue-warmer)
|
||||
(bg-link unspecified)
|
||||
(underline-link blue-warmer)
|
||||
|
||||
(fg-link-symbolic cyan)
|
||||
(bg-link-symbolic unspecified)
|
||||
(underline-link-symbolic cyan)
|
||||
|
||||
(fg-link-visited magenta)
|
||||
(bg-link-visited unspecified)
|
||||
(underline-link-visited magenta)
|
||||
|
||||
;;;; Mail mappings
|
||||
|
||||
(mail-cite-0 blue-warmer)
|
||||
(mail-cite-1 yellow-cooler)
|
||||
(mail-cite-2 cyan-cooler)
|
||||
(mail-cite-3 red-cooler)
|
||||
(mail-part blue)
|
||||
(mail-recipient magenta-cooler)
|
||||
(mail-subject magenta-warmer)
|
||||
(mail-other magenta-faint)
|
||||
|
||||
;;;; Mark mappings
|
||||
|
||||
(bg-mark-delete bg-red-subtle)
|
||||
(fg-mark-delete red-cooler)
|
||||
(bg-mark-select bg-cyan-subtle)
|
||||
(fg-mark-select cyan)
|
||||
(bg-mark-other bg-yellow-subtle)
|
||||
(fg-mark-other yellow)
|
||||
|
||||
;;;; Prompt mappings
|
||||
|
||||
(fg-prompt cyan-cooler)
|
||||
(bg-prompt unspecified)
|
||||
|
||||
;;;; Prose mappings
|
||||
|
||||
(bg-prose-block-delimiter bg-dim)
|
||||
(fg-prose-block-delimiter fg-dim)
|
||||
(bg-prose-block-contents bg-dim)
|
||||
|
||||
(bg-prose-code unspecified)
|
||||
(fg-prose-code cyan-cooler)
|
||||
|
||||
(bg-prose-macro unspecified)
|
||||
(fg-prose-macro magenta-cooler)
|
||||
|
||||
(bg-prose-verbatim unspecified)
|
||||
(fg-prose-verbatim magenta-warmer)
|
||||
|
||||
(prose-done green)
|
||||
(prose-todo red)
|
||||
|
||||
(prose-metadata fg-dim)
|
||||
(prose-metadata-value fg-alt)
|
||||
|
||||
(prose-table fg-alt)
|
||||
(prose-table-formula magenta-warmer)
|
||||
|
||||
(prose-tag magenta-faint)
|
||||
|
||||
;;;; Rainbow mappings
|
||||
|
||||
(rainbow-0 fg-main)
|
||||
(rainbow-1 magenta-intense)
|
||||
(rainbow-2 cyan-intense)
|
||||
(rainbow-3 red-warmer)
|
||||
(rainbow-4 yellow-intense)
|
||||
(rainbow-5 magenta-cooler)
|
||||
(rainbow-6 green-intense)
|
||||
(rainbow-7 blue-warmer)
|
||||
(rainbow-8 magenta-warmer)
|
||||
|
||||
;;;; Search mappings
|
||||
|
||||
(bg-search-current bg-yellow-intense)
|
||||
(bg-search-lazy bg-cyan-intense)
|
||||
(bg-search-replace bg-red-intense)
|
||||
|
||||
(bg-search-rx-group-0 bg-blue-intense)
|
||||
(bg-search-rx-group-1 bg-green-intense)
|
||||
(bg-search-rx-group-2 bg-red-subtle)
|
||||
(bg-search-rx-group-3 bg-magenta-subtle)
|
||||
|
||||
;;;; Space mappings
|
||||
|
||||
(bg-space unspecified)
|
||||
(fg-space border)
|
||||
(bg-space-err bg-red-intense)
|
||||
|
||||
;;;; Terminal mappings
|
||||
|
||||
(bg-term-black "#000000")
|
||||
(fg-term-black "#000000")
|
||||
(bg-term-black-bright "#595959")
|
||||
(fg-term-black-bright "#595959")
|
||||
|
||||
(bg-term-red red)
|
||||
(fg-term-red red)
|
||||
(bg-term-red-bright red-warmer)
|
||||
(fg-term-red-bright red-warmer)
|
||||
|
||||
(bg-term-green green)
|
||||
(fg-term-green green)
|
||||
(bg-term-green-bright green-cooler)
|
||||
(fg-term-green-bright green-cooler)
|
||||
|
||||
(bg-term-yellow yellow)
|
||||
(fg-term-yellow yellow)
|
||||
(bg-term-yellow-bright yellow-warmer)
|
||||
(fg-term-yellow-bright yellow-warmer)
|
||||
|
||||
(bg-term-blue blue)
|
||||
(fg-term-blue blue)
|
||||
(bg-term-blue-bright blue-warmer)
|
||||
(fg-term-blue-bright blue-warmer)
|
||||
|
||||
(bg-term-magenta magenta)
|
||||
(fg-term-magenta magenta)
|
||||
(bg-term-magenta-bright magenta-cooler)
|
||||
(fg-term-magenta-bright magenta-cooler)
|
||||
|
||||
(bg-term-cyan cyan)
|
||||
(fg-term-cyan cyan)
|
||||
(bg-term-cyan-bright cyan-cooler)
|
||||
(fg-term-cyan-bright cyan-cooler)
|
||||
|
||||
(bg-term-white "#a6a6a6")
|
||||
(fg-term-white "#a6a6a6")
|
||||
(bg-term-white-bright "#ffffff")
|
||||
(fg-term-white-bright "#ffffff")
|
||||
|
||||
;;;; Heading mappings
|
||||
|
||||
(fg-heading-0 cyan-cooler)
|
||||
(fg-heading-1 fg-main)
|
||||
(fg-heading-2 yellow-faint)
|
||||
(fg-heading-3 blue-faint)
|
||||
(fg-heading-4 magenta)
|
||||
(fg-heading-5 green-faint)
|
||||
(fg-heading-6 red-faint)
|
||||
(fg-heading-7 cyan-faint)
|
||||
(fg-heading-8 fg-dim)
|
||||
|
||||
(bg-heading-0 unspecified)
|
||||
(bg-heading-1 unspecified)
|
||||
(bg-heading-2 unspecified)
|
||||
(bg-heading-3 unspecified)
|
||||
(bg-heading-4 unspecified)
|
||||
(bg-heading-5 unspecified)
|
||||
(bg-heading-6 unspecified)
|
||||
(bg-heading-7 unspecified)
|
||||
(bg-heading-8 unspecified)
|
||||
|
||||
(overline-heading-0 unspecified)
|
||||
(overline-heading-1 unspecified)
|
||||
(overline-heading-2 unspecified)
|
||||
(overline-heading-3 unspecified)
|
||||
(overline-heading-4 unspecified)
|
||||
(overline-heading-5 unspecified)
|
||||
(overline-heading-6 unspecified)
|
||||
(overline-heading-7 unspecified)
|
||||
(overline-heading-8 unspecified))
|
||||
"The entire palette of the `modus-vivendi' theme.
|
||||
|
||||
Named colors have the form (COLOR-NAME HEX-VALUE) with the former
|
||||
as a symbol and the latter as a string.
|
||||
|
||||
Semantic color mappings have the form (MAPPING-NAME COLOR-NAME)
|
||||
with both as symbols. The latter is a named color that already
|
||||
exists in the palette and is associated with a HEX-VALUE.")
|
||||
|
||||
(defcustom modus-vivendi-palette-overrides nil
|
||||
"Overrides for `modus-vivendi-palette'.
|
||||
(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-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.
|
||||
|
|
@ -496,18 +68,25 @@ 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)))
|
||||
:set #'modus-themes--set-option
|
||||
:initialize #'custom-initialize-default
|
||||
:link '(info-link "(modus-themes) Palette overrides"))
|
||||
: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-vivendi-palette
|
||||
modus-vivendi-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)."
|
||||
'dark
|
||||
'modus-themes-vivendi-palette
|
||||
'modus-vivendi-palette-user
|
||||
'modus-vivendi-palette-overrides)
|
||||
|
||||
(provide-theme 'modus-vivendi))
|
||||
(provide 'modus-vivendi-theme)
|
||||
|
||||
;;; modus-vivendi-theme.el ends here
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
;;; modus-vivendi-tinted-theme.el --- Elegant, highly legible theme with a night sky background -*- lexical-binding:t -*-
|
||||
|
||||
;; Copyright (C) 2019-2024 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2019-2026 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Protesilaos Stavrou <info@protesilaos.com>
|
||||
;; Maintainer: Protesilaos Stavrou <info@protesilaos.com>
|
||||
;; Author: Protesilaos <info@protesilaos.com>
|
||||
;; Maintainer: Protesilaos <info@protesilaos.com>
|
||||
;; URL: https://github.com/protesilaos/modus-themes
|
||||
;; Keywords: faces, theme, accessibility
|
||||
|
||||
|
|
@ -26,463 +26,35 @@
|
|||
;;
|
||||
;; The Modus themes conform with the highest standard for
|
||||
;; color-contrast accessibility between background and foreground
|
||||
;; values (WCAG AAA). Please refer to the official Info manual for
|
||||
;; further documentation (distributed with the themes, or available
|
||||
;; at: <https://protesilaos.com/emacs/modus-themes>).
|
||||
;; 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))
|
||||
|
||||
;;;###theme-autoload
|
||||
(deftheme modus-vivendi-tinted
|
||||
"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)."
|
||||
:background-mode 'dark
|
||||
:kind 'color-scheme
|
||||
:family 'modus)
|
||||
|
||||
(defconst modus-vivendi-tinted-palette
|
||||
'(
|
||||
;;; Basic values
|
||||
|
||||
(bg-main "#0d0e1c")
|
||||
(bg-dim "#1d2235")
|
||||
(fg-main "#ffffff")
|
||||
(fg-dim "#989898")
|
||||
(fg-alt "#c6daff")
|
||||
(bg-active "#4a4f69")
|
||||
(bg-inactive "#2b3045")
|
||||
(border "#61647a")
|
||||
|
||||
;;; Common accent foregrounds
|
||||
|
||||
(red "#ff5f59")
|
||||
(red-warmer "#ff6b55")
|
||||
(red-cooler "#ff7f9f")
|
||||
(red-faint "#ff9f80")
|
||||
(red-intense "#ff5f5f")
|
||||
(green "#44bc44")
|
||||
(green-warmer "#70b900")
|
||||
(green-cooler "#00c06f")
|
||||
(green-faint "#88ca9f")
|
||||
(green-intense "#44df44")
|
||||
(yellow "#d0bc00")
|
||||
(yellow-warmer "#fec43f")
|
||||
(yellow-cooler "#dfaf7a")
|
||||
(yellow-faint "#d2b580")
|
||||
(yellow-intense "#efef00")
|
||||
(blue "#2fafff")
|
||||
(blue-warmer "#79a8ff")
|
||||
(blue-cooler "#00bcff")
|
||||
(blue-faint "#82b0ec")
|
||||
(blue-intense "#338fff")
|
||||
(magenta "#feacd0")
|
||||
(magenta-warmer "#f78fe7")
|
||||
(magenta-cooler "#b6a0ff")
|
||||
(magenta-faint "#caa6df")
|
||||
(magenta-intense "#ff66ff")
|
||||
(cyan "#00d3d0")
|
||||
(cyan-warmer "#4ae2f0")
|
||||
(cyan-cooler "#6ae4b9")
|
||||
(cyan-faint "#9ac8e0")
|
||||
(cyan-intense "#00eff0")
|
||||
|
||||
;;; Uncommon accent foregrounds
|
||||
|
||||
(rust "#db7b5f")
|
||||
(gold "#c0965b")
|
||||
(olive "#9cbd6f")
|
||||
(slate "#76afbf")
|
||||
(indigo "#9099d9")
|
||||
(maroon "#cf7fa7")
|
||||
(pink "#d09dc0")
|
||||
|
||||
;;; Common accent backgrounds
|
||||
|
||||
(bg-red-intense "#9d1f1f")
|
||||
(bg-green-intense "#2f822f")
|
||||
(bg-yellow-intense "#7a6100")
|
||||
(bg-blue-intense "#1640b0")
|
||||
(bg-magenta-intense "#7030af")
|
||||
(bg-cyan-intense "#2266ae")
|
||||
|
||||
(bg-red-subtle "#620f2a")
|
||||
(bg-green-subtle "#00422a")
|
||||
(bg-yellow-subtle "#4a4000")
|
||||
(bg-blue-subtle "#242679")
|
||||
(bg-magenta-subtle "#552f5f")
|
||||
(bg-cyan-subtle "#004065")
|
||||
|
||||
(bg-red-nuanced "#3a0c14")
|
||||
(bg-green-nuanced "#092f1f")
|
||||
(bg-yellow-nuanced "#381d0f")
|
||||
(bg-blue-nuanced "#12154a")
|
||||
(bg-magenta-nuanced "#2f0c3f")
|
||||
(bg-cyan-nuanced "#042837")
|
||||
|
||||
;;; Uncommon accent backgrounds
|
||||
|
||||
(bg-ochre "#442c2f")
|
||||
(bg-lavender "#38325c")
|
||||
(bg-sage "#0f3d30")
|
||||
|
||||
;;; Graphs
|
||||
|
||||
(bg-graph-red-0 "#b52c2c")
|
||||
(bg-graph-red-1 "#702020")
|
||||
(bg-graph-green-0 "#0fed00")
|
||||
(bg-graph-green-1 "#007800")
|
||||
(bg-graph-yellow-0 "#f1e00a")
|
||||
(bg-graph-yellow-1 "#b08940")
|
||||
(bg-graph-blue-0 "#2fafef")
|
||||
(bg-graph-blue-1 "#1f2f8f")
|
||||
(bg-graph-magenta-0 "#bf94fe")
|
||||
(bg-graph-magenta-1 "#5f509f")
|
||||
(bg-graph-cyan-0 "#47dfea")
|
||||
(bg-graph-cyan-1 "#00808f")
|
||||
|
||||
;;; Special purpose
|
||||
|
||||
(bg-completion "#483d8a")
|
||||
(bg-hover "#45605e")
|
||||
(bg-hover-secondary "#654a39")
|
||||
(bg-hl-line "#303a6f")
|
||||
(bg-region "#555a66")
|
||||
(fg-region "#ffffff")
|
||||
|
||||
(bg-char-0 "#0050af")
|
||||
(bg-char-1 "#7f1f7f")
|
||||
(bg-char-2 "#625a00")
|
||||
|
||||
(bg-mode-line-active "#484d67")
|
||||
(fg-mode-line-active "#ffffff")
|
||||
(border-mode-line-active "#979797")
|
||||
(bg-mode-line-inactive "#292d48")
|
||||
(fg-mode-line-inactive "#969696")
|
||||
(border-mode-line-inactive "#606270")
|
||||
|
||||
(modeline-err "#ffa9bf")
|
||||
(modeline-warning "#dfcf43")
|
||||
(modeline-info "#9fefff")
|
||||
|
||||
(bg-tab-bar "#2c3045")
|
||||
(bg-tab-current "#0d0e1c")
|
||||
(bg-tab-other "#4a4f6a")
|
||||
|
||||
;;; Diffs
|
||||
|
||||
(bg-added "#003a2f")
|
||||
(bg-added-faint "#002922")
|
||||
(bg-added-refine "#035542")
|
||||
(bg-added-fringe "#23884f")
|
||||
(fg-added "#a0e0a0")
|
||||
(fg-added-intense "#80e080")
|
||||
|
||||
(bg-changed "#363300")
|
||||
(bg-changed-faint "#2a1f00")
|
||||
(bg-changed-refine "#4a4a00")
|
||||
(bg-changed-fringe "#8f7a30")
|
||||
(fg-changed "#efef80")
|
||||
(fg-changed-intense "#c0b05f")
|
||||
|
||||
(bg-removed "#4f1127")
|
||||
(bg-removed-faint "#380a19")
|
||||
(bg-removed-refine "#781a3a")
|
||||
(bg-removed-fringe "#b81a26")
|
||||
(fg-removed "#ffbfbf")
|
||||
(fg-removed-intense "#ff9095")
|
||||
|
||||
(bg-diff-context "#1a1f30")
|
||||
|
||||
;;; Paren match
|
||||
|
||||
(bg-paren-match "#5f789f")
|
||||
(fg-paren-match fg-main)
|
||||
(bg-paren-expression "#453040")
|
||||
(underline-paren-match unspecified)
|
||||
|
||||
;;; Mappings
|
||||
|
||||
;;;; General mappings
|
||||
|
||||
(fringe bg-dim)
|
||||
(cursor magenta-intense)
|
||||
|
||||
(keybind magenta-cooler)
|
||||
(name magenta)
|
||||
(identifier yellow-faint)
|
||||
|
||||
(err red)
|
||||
(warning yellow-warmer)
|
||||
(info cyan-cooler)
|
||||
|
||||
(underline-err red-intense)
|
||||
(underline-warning yellow)
|
||||
(underline-note cyan)
|
||||
|
||||
(bg-prominent-err bg-red-intense)
|
||||
(fg-prominent-err fg-main)
|
||||
(bg-prominent-warning bg-yellow-intense)
|
||||
(fg-prominent-warning fg-main)
|
||||
(bg-prominent-note bg-cyan-intense)
|
||||
(fg-prominent-note fg-main)
|
||||
|
||||
(bg-active-argument bg-yellow-nuanced)
|
||||
(fg-active-argument yellow-cooler)
|
||||
(bg-active-value bg-cyan-nuanced)
|
||||
(fg-active-value cyan-cooler)
|
||||
|
||||
;;;; Code mappings
|
||||
|
||||
(builtin magenta-warmer)
|
||||
(comment red-faint)
|
||||
(constant blue-cooler)
|
||||
(docstring cyan-faint)
|
||||
(docmarkup magenta-faint)
|
||||
(fnname magenta)
|
||||
(keyword magenta-cooler)
|
||||
(preprocessor red-cooler)
|
||||
(string blue-warmer)
|
||||
(type cyan-cooler)
|
||||
(variable cyan)
|
||||
(rx-construct green-cooler)
|
||||
(rx-backslash magenta)
|
||||
|
||||
;;;; Accent mappings
|
||||
|
||||
(accent-0 blue-cooler)
|
||||
(accent-1 magenta-warmer)
|
||||
(accent-2 cyan-cooler)
|
||||
(accent-3 yellow)
|
||||
|
||||
;;;; Button mappings
|
||||
|
||||
(fg-button-active fg-main)
|
||||
(fg-button-inactive fg-dim)
|
||||
(bg-button-active bg-active)
|
||||
(bg-button-inactive bg-dim)
|
||||
|
||||
;;;; Completion mappings
|
||||
|
||||
(fg-completion-match-0 blue-cooler)
|
||||
(fg-completion-match-1 magenta-warmer)
|
||||
(fg-completion-match-2 cyan-cooler)
|
||||
(fg-completion-match-3 yellow)
|
||||
(bg-completion-match-0 unspecified)
|
||||
(bg-completion-match-1 unspecified)
|
||||
(bg-completion-match-2 unspecified)
|
||||
(bg-completion-match-3 unspecified)
|
||||
|
||||
;;;; Date mappings
|
||||
|
||||
(date-common cyan)
|
||||
(date-deadline red)
|
||||
(date-event fg-alt)
|
||||
(date-holiday red-cooler)
|
||||
(date-holiday-other blue)
|
||||
(date-now fg-main)
|
||||
(date-range fg-alt)
|
||||
(date-scheduled yellow-warmer)
|
||||
(date-weekday cyan)
|
||||
(date-weekend red-faint)
|
||||
|
||||
;;;; Line number mappings
|
||||
|
||||
(fg-line-number-inactive fg-dim)
|
||||
(fg-line-number-active fg-main)
|
||||
(bg-line-number-inactive bg-dim)
|
||||
(bg-line-number-active bg-active)
|
||||
|
||||
;;;; Link mappings
|
||||
|
||||
(fg-link blue-warmer)
|
||||
(bg-link unspecified)
|
||||
(underline-link blue-warmer)
|
||||
|
||||
(fg-link-symbolic cyan)
|
||||
(bg-link-symbolic unspecified)
|
||||
(underline-link-symbolic cyan)
|
||||
|
||||
(fg-link-visited magenta)
|
||||
(bg-link-visited unspecified)
|
||||
(underline-link-visited magenta)
|
||||
|
||||
;;;; Mail mappings
|
||||
|
||||
(mail-cite-0 blue-warmer)
|
||||
(mail-cite-1 yellow-cooler)
|
||||
(mail-cite-2 cyan-cooler)
|
||||
(mail-cite-3 red-cooler)
|
||||
(mail-part blue)
|
||||
(mail-recipient magenta-cooler)
|
||||
(mail-subject magenta-warmer)
|
||||
(mail-other magenta-faint)
|
||||
|
||||
;;;; Mark mappings
|
||||
|
||||
(bg-mark-delete bg-red-subtle)
|
||||
(fg-mark-delete red-cooler)
|
||||
(bg-mark-select bg-cyan-subtle)
|
||||
(fg-mark-select cyan)
|
||||
(bg-mark-other bg-yellow-subtle)
|
||||
(fg-mark-other yellow)
|
||||
|
||||
;;;; Prompt mappings
|
||||
|
||||
(fg-prompt cyan-cooler)
|
||||
(bg-prompt unspecified)
|
||||
|
||||
;;;; Prose mappings
|
||||
|
||||
(bg-prose-block-delimiter bg-dim)
|
||||
(fg-prose-block-delimiter fg-dim)
|
||||
(bg-prose-block-contents bg-dim)
|
||||
|
||||
(bg-prose-code unspecified)
|
||||
(fg-prose-code cyan-cooler)
|
||||
|
||||
(bg-prose-macro unspecified)
|
||||
(fg-prose-macro magenta-cooler)
|
||||
|
||||
(bg-prose-verbatim unspecified)
|
||||
(fg-prose-verbatim magenta-warmer)
|
||||
|
||||
(prose-done green)
|
||||
(prose-todo red)
|
||||
|
||||
(prose-metadata fg-dim)
|
||||
(prose-metadata-value fg-alt)
|
||||
|
||||
(prose-table fg-alt)
|
||||
(prose-table-formula magenta-warmer)
|
||||
|
||||
(prose-tag magenta-faint)
|
||||
|
||||
;;;; Rainbow mappings
|
||||
|
||||
(rainbow-0 fg-main)
|
||||
(rainbow-1 magenta-intense)
|
||||
(rainbow-2 cyan-intense)
|
||||
(rainbow-3 red-warmer)
|
||||
(rainbow-4 yellow-intense)
|
||||
(rainbow-5 magenta-cooler)
|
||||
(rainbow-6 green-intense)
|
||||
(rainbow-7 blue-warmer)
|
||||
(rainbow-8 magenta-warmer)
|
||||
|
||||
;;;; Search mappings
|
||||
|
||||
(bg-search-current bg-yellow-intense)
|
||||
(bg-search-lazy bg-cyan-intense)
|
||||
(bg-search-replace bg-red-intense)
|
||||
|
||||
(bg-search-rx-group-0 bg-blue-intense)
|
||||
(bg-search-rx-group-1 bg-green-intense)
|
||||
(bg-search-rx-group-2 bg-red-subtle)
|
||||
(bg-search-rx-group-3 bg-magenta-subtle)
|
||||
|
||||
;;;; Space mappings
|
||||
|
||||
(bg-space unspecified)
|
||||
(fg-space border)
|
||||
(bg-space-err bg-red-intense)
|
||||
|
||||
;;;; Terminal mappings
|
||||
|
||||
(bg-term-black "#000000")
|
||||
(fg-term-black "#000000")
|
||||
(bg-term-black-bright "#595959")
|
||||
(fg-term-black-bright "#595959")
|
||||
|
||||
(bg-term-red red)
|
||||
(fg-term-red red)
|
||||
(bg-term-red-bright red-warmer)
|
||||
(fg-term-red-bright red-warmer)
|
||||
|
||||
(bg-term-green green)
|
||||
(fg-term-green green)
|
||||
(bg-term-green-bright green-cooler)
|
||||
(fg-term-green-bright green-cooler)
|
||||
|
||||
(bg-term-yellow yellow)
|
||||
(fg-term-yellow yellow)
|
||||
(bg-term-yellow-bright yellow-warmer)
|
||||
(fg-term-yellow-bright yellow-warmer)
|
||||
|
||||
(bg-term-blue blue)
|
||||
(fg-term-blue blue)
|
||||
(bg-term-blue-bright blue-warmer)
|
||||
(fg-term-blue-bright blue-warmer)
|
||||
|
||||
(bg-term-magenta magenta)
|
||||
(fg-term-magenta magenta)
|
||||
(bg-term-magenta-bright magenta-cooler)
|
||||
(fg-term-magenta-bright magenta-cooler)
|
||||
|
||||
(bg-term-cyan cyan)
|
||||
(fg-term-cyan cyan)
|
||||
(bg-term-cyan-bright cyan-cooler)
|
||||
(fg-term-cyan-bright cyan-cooler)
|
||||
|
||||
(bg-term-white "#a6a6a6")
|
||||
(fg-term-white "#a6a6a6")
|
||||
(bg-term-white-bright "#ffffff")
|
||||
(fg-term-white-bright "#ffffff")
|
||||
|
||||
;;;; Heading mappings
|
||||
|
||||
(fg-heading-0 cyan-cooler)
|
||||
(fg-heading-1 fg-main)
|
||||
(fg-heading-2 yellow-faint)
|
||||
(fg-heading-3 blue-faint)
|
||||
(fg-heading-4 magenta)
|
||||
(fg-heading-5 green-faint)
|
||||
(fg-heading-6 red-faint)
|
||||
(fg-heading-7 cyan-faint)
|
||||
(fg-heading-8 fg-dim)
|
||||
|
||||
(bg-heading-0 unspecified)
|
||||
(bg-heading-1 unspecified)
|
||||
(bg-heading-2 unspecified)
|
||||
(bg-heading-3 unspecified)
|
||||
(bg-heading-4 unspecified)
|
||||
(bg-heading-5 unspecified)
|
||||
(bg-heading-6 unspecified)
|
||||
(bg-heading-7 unspecified)
|
||||
(bg-heading-8 unspecified)
|
||||
|
||||
(overline-heading-0 unspecified)
|
||||
(overline-heading-1 unspecified)
|
||||
(overline-heading-2 unspecified)
|
||||
(overline-heading-3 unspecified)
|
||||
(overline-heading-4 unspecified)
|
||||
(overline-heading-5 unspecified)
|
||||
(overline-heading-6 unspecified)
|
||||
(overline-heading-7 unspecified)
|
||||
(overline-heading-8 unspecified))
|
||||
"The entire palette of the `modus-vivendi-tinted' theme.
|
||||
|
||||
Named colors have the form (COLOR-NAME HEX-VALUE) with the former
|
||||
as a symbol and the latter as a string.
|
||||
|
||||
Semantic color mappings have the form (MAPPING-NAME COLOR-NAME)
|
||||
with both as symbols. The latter is a named color that already
|
||||
exists in the palette and is associated with a HEX-VALUE.")
|
||||
|
||||
(defcustom modus-vivendi-tinted-palette-overrides nil
|
||||
"Overrides for `modus-vivendi-tinted-palette'.
|
||||
(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.
|
||||
|
|
@ -496,18 +68,25 @@ 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)))
|
||||
:set #'modus-themes--set-option
|
||||
:initialize #'custom-initialize-default
|
||||
:link '(info-link "(modus-themes) Palette overrides"))
|
||||
: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-vivendi-tinted-palette
|
||||
modus-vivendi-tinted-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-theme 'modus-vivendi-tinted))
|
||||
(provide 'modus-vivendi-tinted-theme)
|
||||
|
||||
;;; modus-vivendi-tinted-theme.el ends here
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
;;; modus-vivendi-tritanopia-theme.el --- Tritanopia-optimized theme with a black background -*- lexical-binding:t -*-
|
||||
|
||||
;; Copyright (C) 2019-2024 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2019-2026 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Protesilaos Stavrou <info@protesilaos.com>
|
||||
;; Maintainer: Protesilaos Stavrou <info@protesilaos.com>
|
||||
;; Author: Protesilaos <info@protesilaos.com>
|
||||
;; Maintainer: Protesilaos <info@protesilaos.com>
|
||||
;; URL: https://github.com/protesilaos/modus-themes
|
||||
;; Keywords: faces, theme, accessibility
|
||||
|
||||
|
|
@ -26,465 +26,35 @@
|
|||
;;
|
||||
;; The Modus themes conform with the highest standard for
|
||||
;; color-contrast accessibility between background and foreground
|
||||
;; values (WCAG AAA). Please refer to the official Info manual for
|
||||
;; further documentation (distributed with the themes, or available
|
||||
;; at: <https://protesilaos.com/emacs/modus-themes>).
|
||||
;; 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))
|
||||
|
||||
;;;###theme-autoload
|
||||
(deftheme modus-vivendi-tritanopia
|
||||
"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)."
|
||||
:background-mode 'dark
|
||||
:kind 'color-scheme
|
||||
:family 'modus)
|
||||
|
||||
(defconst modus-vivendi-tritanopia-palette
|
||||
'(
|
||||
;;; Basic values
|
||||
|
||||
(bg-main "#000000")
|
||||
(bg-dim "#1e1e1e")
|
||||
(fg-main "#ffffff")
|
||||
(fg-dim "#989898")
|
||||
(fg-alt "#c6daff")
|
||||
(bg-active "#535353")
|
||||
(bg-inactive "#303030")
|
||||
(border "#646464")
|
||||
|
||||
;;; Common accent foregrounds
|
||||
|
||||
(red "#ff5f59")
|
||||
(red-warmer "#ff6740")
|
||||
(red-cooler "#ff6f9f")
|
||||
(red-faint "#ff9070")
|
||||
(red-intense "#ff5f5f")
|
||||
(green "#44bc44")
|
||||
(green-warmer "#70b900")
|
||||
(green-cooler "#00c06f")
|
||||
(green-faint "#88ca9f")
|
||||
(green-intense "#44df44")
|
||||
(yellow "#cabf00")
|
||||
(yellow-warmer "#ffa00f")
|
||||
(yellow-cooler "#d8af7a")
|
||||
(yellow-faint "#d2b580")
|
||||
(yellow-intense "#efef00")
|
||||
(blue "#2fafff")
|
||||
(blue-warmer "#79a8ff")
|
||||
(blue-cooler "#00bcff")
|
||||
(blue-faint "#82b0ec")
|
||||
(blue-intense "#338fff")
|
||||
(magenta "#feacd0")
|
||||
(magenta-warmer "#f78fe7")
|
||||
(magenta-cooler "#b6a0ff")
|
||||
(magenta-faint "#caa6df")
|
||||
(magenta-intense "#ef7fff")
|
||||
(cyan "#00d3d0")
|
||||
(cyan-warmer "#4ae2ff")
|
||||
(cyan-cooler "#6ae4b9")
|
||||
(cyan-faint "#7fdbdf")
|
||||
(cyan-intense "#00eff0")
|
||||
|
||||
;;; Uncommon accent foregrounds
|
||||
|
||||
(rust "#db7b5f")
|
||||
(gold "#c0965b")
|
||||
(olive "#9cbd6f")
|
||||
(slate "#76afbf")
|
||||
(indigo "#9099d9")
|
||||
(maroon "#cf7fa7")
|
||||
(pink "#d09dc0")
|
||||
|
||||
;;; Common accent backgrounds
|
||||
|
||||
(bg-red-intense "#9d1f1f")
|
||||
(bg-green-intense "#2f822f")
|
||||
(bg-yellow-intense "#7a6100")
|
||||
(bg-blue-intense "#1640b0")
|
||||
(bg-magenta-intense "#7030af")
|
||||
(bg-cyan-intense "#2266ae")
|
||||
|
||||
(bg-red-subtle "#620f2a")
|
||||
(bg-green-subtle "#00422a")
|
||||
(bg-yellow-subtle "#4a4000")
|
||||
(bg-blue-subtle "#242679")
|
||||
(bg-magenta-subtle "#552f5f")
|
||||
(bg-cyan-subtle "#004065")
|
||||
|
||||
(bg-red-nuanced "#3a0c14")
|
||||
(bg-green-nuanced "#092f1f")
|
||||
(bg-yellow-nuanced "#381d0f")
|
||||
(bg-blue-nuanced "#12154a")
|
||||
(bg-magenta-nuanced "#2f0c3f")
|
||||
(bg-cyan-nuanced "#042837")
|
||||
|
||||
;;; Uncommon accent backgrounds
|
||||
|
||||
(bg-ochre "#442c2f")
|
||||
(bg-lavender "#38325c")
|
||||
(bg-sage "#0f3d30")
|
||||
|
||||
;;; Graphs
|
||||
|
||||
(bg-graph-red-0 "#b52c2c")
|
||||
(bg-graph-red-1 "#702020")
|
||||
(bg-graph-green-0 "#afd1c0")
|
||||
(bg-graph-green-1 "#607a8f")
|
||||
(bg-graph-yellow-0 "#facfd6")
|
||||
(bg-graph-yellow-1 "#b57b85")
|
||||
(bg-graph-blue-0 "#4f9fdf")
|
||||
(bg-graph-blue-1 "#004559")
|
||||
(bg-graph-magenta-0 "#b6427f")
|
||||
(bg-graph-magenta-1 "#7f506f")
|
||||
(bg-graph-cyan-0 "#57dfea")
|
||||
(bg-graph-cyan-1 "#00808f")
|
||||
|
||||
;;; Special purpose
|
||||
|
||||
(bg-completion "#004253")
|
||||
(bg-hover "#8e3e3b")
|
||||
(bg-hover-secondary "#00405f")
|
||||
(bg-hl-line "#2f3849")
|
||||
(bg-region "#5a5a5a")
|
||||
(fg-region "#ffffff")
|
||||
|
||||
(bg-char-0 "#922a00")
|
||||
(bg-char-1 "#00709f")
|
||||
(bg-char-2 "#5f3faf")
|
||||
|
||||
(bg-mode-line-active "#003c52")
|
||||
(fg-mode-line-active "#f0f0f0")
|
||||
(border-mode-line-active "#5f8fb4")
|
||||
(bg-mode-line-inactive "#2d2d2d")
|
||||
(fg-mode-line-inactive "#969696")
|
||||
(border-mode-line-inactive "#606060")
|
||||
|
||||
(modeline-err "#ff7fbf")
|
||||
(modeline-warning "#df9f93")
|
||||
(modeline-info "#4fcfef")
|
||||
|
||||
(bg-tab-bar "#313131")
|
||||
(bg-tab-current "#000000")
|
||||
(bg-tab-other "#545454")
|
||||
|
||||
;;; Diffs
|
||||
|
||||
(bg-added "#004254")
|
||||
(bg-added-faint "#003042")
|
||||
(bg-added-refine "#004f7f")
|
||||
(bg-added-fringe "#008fcf")
|
||||
(fg-added "#9fdfdf")
|
||||
(fg-added-intense "#50c0ef")
|
||||
|
||||
(bg-changed "#2f123f")
|
||||
(bg-changed-faint "#1f022f")
|
||||
(bg-changed-refine "#3f325f")
|
||||
(bg-changed-fringe "#7f55a0")
|
||||
(fg-changed "#e3cfff")
|
||||
(fg-changed-intense "#cf9fe2")
|
||||
|
||||
(bg-removed "#4f1119")
|
||||
(bg-removed-faint "#380a0f")
|
||||
(bg-removed-refine "#781a1f")
|
||||
(bg-removed-fringe "#b81a1f")
|
||||
(fg-removed "#ffbfbf")
|
||||
(fg-removed-intense "#ff9095")
|
||||
|
||||
(bg-diff-context "#1a1a1a")
|
||||
|
||||
;;; Paren match
|
||||
|
||||
(bg-paren-match "#2f7f9f")
|
||||
(fg-paren-match fg-main)
|
||||
(bg-paren-expression "#453040")
|
||||
(underline-paren-match unspecified)
|
||||
|
||||
;;; Mappings
|
||||
|
||||
;;;; General mappings
|
||||
|
||||
(fringe bg-dim)
|
||||
(cursor red-intense)
|
||||
|
||||
(keybind red)
|
||||
(name red-cooler)
|
||||
(identifier red-faint)
|
||||
|
||||
(err red-warmer)
|
||||
(warning magenta)
|
||||
(info cyan)
|
||||
|
||||
(underline-err red-intense)
|
||||
(underline-warning magenta-intense)
|
||||
(underline-note cyan-intense)
|
||||
|
||||
(bg-prominent-err bg-red-intense)
|
||||
(fg-prominent-err fg-main)
|
||||
(bg-prominent-warning bg-magenta-intense)
|
||||
(fg-prominent-warning fg-main)
|
||||
(bg-prominent-note bg-cyan-intense)
|
||||
(fg-prominent-note fg-main)
|
||||
|
||||
(bg-active-argument bg-red-nuanced)
|
||||
(fg-active-argument red-warmer)
|
||||
(bg-active-value bg-cyan-nuanced)
|
||||
(fg-active-value cyan)
|
||||
|
||||
;;;; Code mappings
|
||||
|
||||
(builtin magenta)
|
||||
(comment red-faint)
|
||||
(constant green-faint)
|
||||
(docstring fg-alt)
|
||||
(docmarkup magenta-faint)
|
||||
(fnname cyan-warmer)
|
||||
(keyword red-cooler)
|
||||
(preprocessor red-warmer)
|
||||
(string cyan)
|
||||
(type blue-warmer)
|
||||
(variable cyan-cooler)
|
||||
(rx-construct red)
|
||||
(rx-backslash magenta)
|
||||
|
||||
;;;; Accent mappings
|
||||
|
||||
(accent-0 cyan)
|
||||
(accent-1 red-warmer)
|
||||
(accent-2 cyan-cooler)
|
||||
(accent-3 magenta)
|
||||
|
||||
;;;; Button mappings
|
||||
|
||||
(fg-button-active fg-main)
|
||||
(fg-button-inactive fg-dim)
|
||||
(bg-button-active bg-active)
|
||||
(bg-button-inactive bg-dim)
|
||||
|
||||
;;;; Completion mappings
|
||||
|
||||
(fg-completion-match-0 cyan)
|
||||
(fg-completion-match-1 red-warmer)
|
||||
(fg-completion-match-2 magenta)
|
||||
(fg-completion-match-3 cyan-cooler)
|
||||
(bg-completion-match-0 unspecified)
|
||||
(bg-completion-match-1 unspecified)
|
||||
(bg-completion-match-2 unspecified)
|
||||
(bg-completion-match-3 unspecified)
|
||||
|
||||
;;;; Date mappings
|
||||
|
||||
(date-common cyan-cooler)
|
||||
(date-deadline red)
|
||||
(date-event fg-alt)
|
||||
(date-holiday red-intense)
|
||||
(date-holiday-other cyan-warmer)
|
||||
(date-now fg-main)
|
||||
(date-range fg-alt)
|
||||
(date-scheduled magenta)
|
||||
(date-weekday cyan)
|
||||
(date-weekend red-faint)
|
||||
|
||||
;;;; Line number mappings
|
||||
|
||||
(fg-line-number-inactive fg-dim)
|
||||
(fg-line-number-active fg-main)
|
||||
(bg-line-number-inactive bg-dim)
|
||||
(bg-line-number-active bg-active)
|
||||
|
||||
;;;; Link mappings
|
||||
|
||||
(fg-link cyan)
|
||||
(bg-link unspecified)
|
||||
(underline-link cyan)
|
||||
|
||||
(fg-link-symbolic cyan-cooler)
|
||||
(bg-link-symbolic unspecified)
|
||||
(underline-link-symbolic cyan-cooler)
|
||||
|
||||
(fg-link-visited magenta)
|
||||
(bg-link-visited unspecified)
|
||||
(underline-link-visited magenta)
|
||||
|
||||
;;;; Mail mappings
|
||||
|
||||
(mail-cite-0 cyan-faint)
|
||||
(mail-cite-1 red-faint)
|
||||
(mail-cite-2 magenta-warmer)
|
||||
(mail-cite-3 cyan-warmer)
|
||||
(mail-part cyan-cooler)
|
||||
(mail-recipient cyan)
|
||||
(mail-subject red-cooler)
|
||||
(mail-other cyan)
|
||||
|
||||
;;;; Mark mappings
|
||||
|
||||
(bg-mark-delete bg-red-subtle)
|
||||
(fg-mark-delete red)
|
||||
(bg-mark-select bg-cyan-subtle)
|
||||
(fg-mark-select cyan)
|
||||
(bg-mark-other bg-magenta-subtle)
|
||||
(fg-mark-other magenta-warmer)
|
||||
|
||||
;;;; Prompt mappings
|
||||
|
||||
(fg-prompt cyan-cooler)
|
||||
(bg-prompt unspecified)
|
||||
|
||||
;;;; Prose mappings
|
||||
|
||||
(bg-prose-block-delimiter bg-dim)
|
||||
(fg-prose-block-delimiter fg-dim)
|
||||
(bg-prose-block-contents bg-dim)
|
||||
|
||||
(bg-prose-code unspecified)
|
||||
(fg-prose-code cyan)
|
||||
|
||||
(bg-prose-macro unspecified)
|
||||
(fg-prose-macro red-warmer)
|
||||
|
||||
(bg-prose-verbatim unspecified)
|
||||
(fg-prose-verbatim magenta-warmer)
|
||||
|
||||
(prose-done cyan)
|
||||
(prose-todo red)
|
||||
|
||||
(prose-metadata fg-dim)
|
||||
(prose-metadata-value fg-alt)
|
||||
|
||||
(prose-table fg-alt)
|
||||
(prose-table-formula red-cooler)
|
||||
|
||||
(prose-tag magenta-faint)
|
||||
|
||||
;;;; Rainbow mappings
|
||||
|
||||
(rainbow-0 cyan)
|
||||
(rainbow-1 red)
|
||||
(rainbow-2 cyan-warmer)
|
||||
(rainbow-3 red-cooler)
|
||||
(rainbow-4 cyan-cooler)
|
||||
(rainbow-5 magenta)
|
||||
(rainbow-6 cyan-faint)
|
||||
(rainbow-7 magenta-faint)
|
||||
(rainbow-8 red-faint)
|
||||
|
||||
;;;; Search mappings
|
||||
|
||||
(bg-search-current bg-red-intense)
|
||||
(bg-search-lazy bg-cyan-intense)
|
||||
(bg-search-replace bg-magenta-intense)
|
||||
|
||||
(bg-search-rx-group-0 bg-blue-intense)
|
||||
(bg-search-rx-group-1 bg-magenta-intense)
|
||||
(bg-search-rx-group-2 bg-cyan-subtle)
|
||||
(bg-search-rx-group-3 bg-red-subtle)
|
||||
|
||||
;;;; Space mappings
|
||||
|
||||
(bg-space unspecified)
|
||||
(fg-space border)
|
||||
(bg-space-err bg-red-intense)
|
||||
|
||||
;;;; Terminal mappings
|
||||
|
||||
(bg-term-black "#000000")
|
||||
(fg-term-black "#000000")
|
||||
(bg-term-black-bright "#595959")
|
||||
(fg-term-black-bright "#595959")
|
||||
|
||||
(bg-term-red red)
|
||||
(fg-term-red red)
|
||||
(bg-term-red-bright red-warmer)
|
||||
(fg-term-red-bright red-warmer)
|
||||
|
||||
(bg-term-green green)
|
||||
(fg-term-green green)
|
||||
(bg-term-green-bright green-cooler)
|
||||
(fg-term-green-bright green-cooler)
|
||||
|
||||
(bg-term-yellow yellow)
|
||||
(fg-term-yellow yellow)
|
||||
(bg-term-yellow-bright yellow-warmer)
|
||||
(fg-term-yellow-bright yellow-warmer)
|
||||
|
||||
(bg-term-blue blue)
|
||||
(fg-term-blue blue)
|
||||
(bg-term-blue-bright blue-warmer)
|
||||
(fg-term-blue-bright blue-warmer)
|
||||
|
||||
(bg-term-magenta magenta)
|
||||
(fg-term-magenta magenta)
|
||||
(bg-term-magenta-bright magenta-cooler)
|
||||
(fg-term-magenta-bright magenta-cooler)
|
||||
|
||||
(bg-term-cyan cyan)
|
||||
(fg-term-cyan cyan)
|
||||
(bg-term-cyan-bright cyan-cooler)
|
||||
(fg-term-cyan-bright cyan-cooler)
|
||||
|
||||
(bg-term-white "#a6a6a6")
|
||||
(fg-term-white "#a6a6a6")
|
||||
(bg-term-white-bright "#ffffff")
|
||||
(fg-term-white-bright "#ffffff")
|
||||
|
||||
;;;; Heading mappings
|
||||
|
||||
(fg-heading-0 cyan-cooler)
|
||||
(fg-heading-1 fg-main)
|
||||
(fg-heading-2 red-faint)
|
||||
(fg-heading-3 cyan-faint)
|
||||
(fg-heading-4 magenta)
|
||||
(fg-heading-5 green-faint)
|
||||
(fg-heading-6 magenta-faint)
|
||||
(fg-heading-7 cyan-faint)
|
||||
(fg-heading-8 fg-dim)
|
||||
|
||||
(bg-heading-0 unspecified)
|
||||
(bg-heading-1 unspecified)
|
||||
(bg-heading-2 unspecified)
|
||||
(bg-heading-3 unspecified)
|
||||
(bg-heading-4 unspecified)
|
||||
(bg-heading-5 unspecified)
|
||||
(bg-heading-6 unspecified)
|
||||
(bg-heading-7 unspecified)
|
||||
(bg-heading-8 unspecified)
|
||||
|
||||
(overline-heading-0 unspecified)
|
||||
(overline-heading-1 unspecified)
|
||||
(overline-heading-2 unspecified)
|
||||
(overline-heading-3 unspecified)
|
||||
(overline-heading-4 unspecified)
|
||||
(overline-heading-5 unspecified)
|
||||
(overline-heading-6 unspecified)
|
||||
(overline-heading-7 unspecified)
|
||||
(overline-heading-8 unspecified))
|
||||
"The entire palette of the `modus-vivendi-tritanopia' theme.
|
||||
|
||||
Named colors have the form (COLOR-NAME HEX-VALUE) with the former
|
||||
as a symbol and the latter as a string.
|
||||
|
||||
Semantic color mappings have the form (MAPPING-NAME COLOR-NAME)
|
||||
with both as symbols. The latter is a named color that already
|
||||
exists in the palette and is associated with a HEX-VALUE.")
|
||||
|
||||
(defcustom modus-vivendi-tritanopia-palette-overrides nil
|
||||
"Overrides for `modus-vivendi-tritanopia-palette'.
|
||||
(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.
|
||||
|
|
@ -498,18 +68,28 @@ 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)))
|
||||
:set #'modus-themes--set-option
|
||||
:initialize #'custom-initialize-default
|
||||
:link '(info-link "(modus-themes) Palette overrides"))
|
||||
: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-vivendi-tritanopia-palette
|
||||
modus-vivendi-tritanopia-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-theme 'modus-vivendi-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