├── .editorconfig
├── .gitignore
├── LICENSE
├── README.md
├── accent_generator
├── .gitignore
├── Blender_Dark_4_1.xml
├── Cargo.lock
├── Cargo.toml
├── latte_orignal.xml
├── mocha_master.xml
├── mocha_original.xml
└── src
│ └── main.rs
├── assets
├── .gitkeep
├── Latte.png
├── Macchiato.png
├── Mocha.png
├── accents frappe.svg
├── accents latte.svg
├── accents macchiato.svg
├── accents mocha.svg
├── accents_frappe_contrast.svg
├── accents_latte_contrast.svg
├── accents_macchiato_contrast.svg
├── accents_mocha_contrast.svg
├── catwalk.webp
├── catwalk_accent.webp
├── catwalk_contrast.webp
├── frappe.png
├── frappe_accent.png
├── frappe_contrast.png
├── latte_accent.png
├── latte_contrast.png
├── macchiato_accent.png
├── macchiato_contrast.png
├── moccha.png
├── mocha_accent.png
└── mocha_contrast.png
└── themes
├── accent
├── frappe
│ ├── frappe_blue_accent.xml
│ ├── frappe_flamingo_accent.xml
│ ├── frappe_green_accent.xml
│ ├── frappe_lavender_accent.xml
│ ├── frappe_maroon_accent.xml
│ ├── frappe_mauve_accent.xml
│ ├── frappe_morado_accent.xml
│ ├── frappe_peach_accent.xml
│ ├── frappe_pink_accent.xml
│ ├── frappe_red_accent.xml
│ ├── frappe_rosewater_accent.xml
│ ├── frappe_sapphire_accent.xml
│ ├── frappe_sky_accent.xml
│ ├── frappe_teal_accent.xml
│ └── frappe_yellow_accent.xml
├── latte
│ ├── latte_blue_accent.xml
│ ├── latte_flamingo_accent.xml
│ ├── latte_green_accent.xml
│ ├── latte_lavender_accent.xml
│ ├── latte_maroon_accent.xml
│ ├── latte_mauve_accent.xml
│ ├── latte_morado_accent.xml
│ ├── latte_peach_accent.xml
│ ├── latte_pink_accent.xml
│ ├── latte_red_accent.xml
│ ├── latte_rosewater_accent.xml
│ ├── latte_sapphire_accent.xml
│ ├── latte_sky_accent.xml
│ ├── latte_teal_accent.xml
│ └── latte_yellow_accent.xml
├── macchiato
│ ├── macchiato_blue_accent.xml
│ ├── macchiato_flamingo_accent.xml
│ ├── macchiato_green_accent.xml
│ ├── macchiato_lavender_accent.xml
│ ├── macchiato_maroon_accent.xml
│ ├── macchiato_mauve_accent.xml
│ ├── macchiato_morado_accent.xml
│ ├── macchiato_peach_accent.xml
│ ├── macchiato_pink_accent.xml
│ ├── macchiato_red_accent.xml
│ ├── macchiato_rosewater_accent.xml
│ ├── macchiato_sapphire_accent.xml
│ ├── macchiato_sky_accent.xml
│ ├── macchiato_teal_accent.xml
│ └── macchiato_yellow_accent.xml
└── mocha
│ ├── mocha_blue_accent.xml
│ ├── mocha_flamingo_accent.xml
│ ├── mocha_green_accent.xml
│ ├── mocha_lavender_accent.xml
│ ├── mocha_maroon_accent.xml
│ ├── mocha_mauve_accent.xml
│ ├── mocha_morado_accent.xml
│ ├── mocha_peach_accent.xml
│ ├── mocha_pink_accent.xml
│ ├── mocha_red_accent.xml
│ ├── mocha_rosewater_accent.xml
│ ├── mocha_sapphire_accent.xml
│ ├── mocha_sky_accent.xml
│ ├── mocha_teal_accent.xml
│ └── mocha_yellow_accent.xml
├── classic
├── frappe
│ ├── frappe_blue_classic.xml
│ ├── frappe_flamingo_classic.xml
│ ├── frappe_green_classic.xml
│ ├── frappe_lavender_classic.xml
│ ├── frappe_maroon_classic.xml
│ ├── frappe_mauve_classic.xml
│ ├── frappe_morado_classic.xml
│ ├── frappe_peach_classic.xml
│ ├── frappe_pink_classic.xml
│ ├── frappe_red_classic.xml
│ ├── frappe_rosewater_classic.xml
│ ├── frappe_sapphire_classic.xml
│ ├── frappe_sky_classic.xml
│ ├── frappe_teal_classic.xml
│ └── frappe_yellow_classic.xml
├── latte
│ ├── latte_blue_classic.xml
│ ├── latte_flamingo_classic.xml
│ ├── latte_green_classic.xml
│ ├── latte_lavender_classic.xml
│ ├── latte_maroon_classic.xml
│ ├── latte_mauve_classic.xml
│ ├── latte_morado_classic.xml
│ ├── latte_peach_classic.xml
│ ├── latte_pink_classic.xml
│ ├── latte_red_classic.xml
│ ├── latte_rosewater_classic.xml
│ ├── latte_sapphire_classic.xml
│ ├── latte_sky_classic.xml
│ ├── latte_teal_classic.xml
│ └── latte_yellow_classic.xml
├── macchiato
│ ├── macchiato_blue_classic.xml
│ ├── macchiato_flamingo_classic.xml
│ ├── macchiato_green_classic.xml
│ ├── macchiato_lavender_classic.xml
│ ├── macchiato_maroon_classic.xml
│ ├── macchiato_mauve_classic.xml
│ ├── macchiato_morado_classic.xml
│ ├── macchiato_peach_classic.xml
│ ├── macchiato_pink_classic.xml
│ ├── macchiato_red_classic.xml
│ ├── macchiato_rosewater_classic.xml
│ ├── macchiato_sapphire_classic.xml
│ ├── macchiato_sky_classic.xml
│ ├── macchiato_teal_classic.xml
│ └── macchiato_yellow_classic.xml
└── mocha
│ ├── mocha_blue_classic.xml
│ ├── mocha_flamingo_classic.xml
│ ├── mocha_green_classic.xml
│ ├── mocha_lavender_classic.xml
│ ├── mocha_maroon_classic.xml
│ ├── mocha_mauve_classic.xml
│ ├── mocha_morado_classic.xml
│ ├── mocha_peach_classic.xml
│ ├── mocha_pink_classic.xml
│ ├── mocha_red_classic.xml
│ ├── mocha_rosewater_classic.xml
│ ├── mocha_sapphire_classic.xml
│ ├── mocha_sky_classic.xml
│ ├── mocha_teal_classic.xml
│ └── mocha_yellow_classic.xml
└── saturated
├── frappe
├── frappe_blue_saturated.xml
├── frappe_flamingo_saturated.xml
├── frappe_green_saturated.xml
├── frappe_lavender_saturated.xml
├── frappe_maroon_saturated.xml
├── frappe_mauve_saturated.xml
├── frappe_morado_saturated.xml
├── frappe_peach_saturated.xml
├── frappe_pink_saturated.xml
├── frappe_red_saturated.xml
├── frappe_rosewater_saturated.xml
├── frappe_sapphire_saturated.xml
├── frappe_sky_saturated.xml
├── frappe_teal_saturated.xml
└── frappe_yellow_saturated.xml
├── latte
├── latte_blue_saturated.xml
├── latte_flamingo_saturated.xml
├── latte_green_saturated.xml
├── latte_lavender_saturated.xml
├── latte_maroon_saturated.xml
├── latte_mauve_saturated.xml
├── latte_morado_saturated.xml
├── latte_peach_saturated.xml
├── latte_pink_saturated.xml
├── latte_red_saturated.xml
├── latte_rosewater_saturated.xml
├── latte_sapphire_saturated.xml
├── latte_sky_saturated.xml
├── latte_teal_saturated.xml
└── latte_yellow_saturated.xml
├── macchiato
├── macchiato_blue_saturated.xml
├── macchiato_flamingo_saturated.xml
├── macchiato_green_saturated.xml
├── macchiato_lavender_saturated.xml
├── macchiato_maroon_saturated.xml
├── macchiato_mauve_saturated.xml
├── macchiato_morado_saturated.xml
├── macchiato_peach_saturated.xml
├── macchiato_pink_saturated.xml
├── macchiato_red_saturated.xml
├── macchiato_rosewater_saturated.xml
├── macchiato_sapphire_saturated.xml
├── macchiato_sky_saturated.xml
├── macchiato_teal_saturated.xml
└── macchiato_yellow_saturated.xml
└── mocha
├── mocha_blue_saturated.xml
├── mocha_flamingo_saturated.xml
├── mocha_green_saturated.xml
├── mocha_lavender_saturated.xml
├── mocha_maroon_saturated.xml
├── mocha_mauve_saturated.xml
├── mocha_morado_saturated.xml
├── mocha_peach_saturated.xml
├── mocha_pink_saturated.xml
├── mocha_red_saturated.xml
├── mocha_rosewater_saturated.xml
├── mocha_sapphire_saturated.xml
├── mocha_sky_saturated.xml
├── mocha_teal_saturated.xml
└── mocha_yellow_saturated.xml
/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig helps developers define and maintain consistent
2 | # coding styles between different editors and IDEs
3 | # EditorConfig is awesome: https://EditorConfig.org
4 |
5 | root = true
6 |
7 | [*]
8 | charset = utf-8
9 | indent_size = 2
10 | indent_style = space
11 | end_of_line = lf
12 | insert_final_newline = true
13 | trim_trailing_whitespace = true
14 |
15 | # go
16 | [*.go]
17 | indent_style = tab
18 | indent_size = 4
19 |
20 | # python
21 | [*.{ini,py,py.tpl,rst}]
22 | indent_size = 4
23 |
24 | # rust
25 | [*.rs]
26 | indent_size = 4
27 |
28 | # documentation, utils
29 | [*.{md,mdx,diff}]
30 | trim_trailing_whitespace = false
31 |
32 | # windows shell scripts
33 | [*.{cmd,bat,ps1}]
34 | end_of_line = crlf
35 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Ignore Mac DS_Store files
2 | .DS_Store
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Catppuccin
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | 
3 |
4 | Catppuccin for Blender
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | ## Saturated
15 |
16 |
17 |
18 |
19 |
20 | ## Accent
21 |
22 |
23 |
24 |
25 |
26 | ## Classic
27 |
28 |
29 |
30 |
31 |
32 | ## Previews and accents
33 |
34 | ### Saturated
35 |
36 |
37 | 🌻 Latte
38 |
39 |
40 |
41 |
42 | 🪴 Frappé
43 |
44 |
45 |
46 |
47 | 🌺 Macchiato
48 |
49 |
50 |
51 |
52 | 🌿 Mocha
53 |
54 |
55 |
56 |
57 | ### Accent
58 |
59 |
60 | 🌻 Latte
61 |
62 |
63 |
64 |
65 | 🪴 Frappé
66 |
67 |
68 |
69 |
70 | 🌺 Macchiato
71 |
72 |
73 |
74 |
75 | 🌿 Mocha
76 |
77 |
78 |
79 |
80 | ### Classic
81 |
82 |
83 | 🌻 Latte
84 |
85 |
86 |
87 |
88 | 🪴 Frappé
89 |
90 |
91 |
92 |
93 | 🌺 Macchiato
94 |
95 |
96 |
97 |
98 | 🌿 Mocha
99 |
100 |
101 |
102 |
103 | ## Usage
104 |
105 | 1. Clone or download this repository or your selected `.xml` theme file locally.
106 | 2. Open Blender's settings and theme installation dialog: `Edit → Preferences → Themes → Install`.
107 | 3. Browse to where you cloned Catppuccin and install the `.xml` file of your selected flavor and accent.
108 | 4. This copies the theme into `./scripts/presets/interface_theme/` subdirectory of your Blender [configuration directory](https://docs.blender.org/manual/en/latest/advanced/blender_directory_layout.html). You may now select it from the drop down menu.
109 |
110 | Made for Blender 3.5.
111 |
112 | ## 💝 Thanks to
113 |
114 | - [Dalibor-P](https://github.com/Dalibor-P)
115 | - [AmeKnite](https://github.com/ameknite)
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 | Copyright © 2021-present Catppuccin Org
125 |
126 |
127 |
128 |
129 |
130 |
--------------------------------------------------------------------------------
/accent_generator/.gitignore:
--------------------------------------------------------------------------------
1 | /target
2 |
--------------------------------------------------------------------------------
/accent_generator/Blender_Dark_4_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
34 |
35 |
47 |
48 |
49 |
50 |
62 |
63 |
64 |
65 |
77 |
78 |
79 |
80 |
92 |
93 |
94 |
95 |
107 |
108 |
109 |
110 |
122 |
123 |
124 |
125 |
137 |
138 |
139 |
140 |
152 |
153 |
154 |
155 |
167 |
168 |
169 |
170 |
182 |
183 |
184 |
185 |
197 |
198 |
199 |
200 |
212 |
213 |
214 |
215 |
227 |
228 |
229 |
230 |
242 |
243 |
244 |
245 |
257 |
258 |
259 |
260 |
272 |
273 |
274 |
275 |
287 |
288 |
289 |
290 |
302 |
303 |
304 |
305 |
317 |
318 |
319 |
320 |
333 |
334 |
335 |
336 |
348 |
349 |
350 |
351 |
352 |
353 |
431 |
432 |
450 |
451 |
456 |
457 |
458 |
459 |
464 |
465 |
466 |
467 |
468 |
469 |
473 |
474 |
475 |
476 |
477 |
478 |
512 |
513 |
532 |
533 |
538 |
539 |
540 |
541 |
542 |
543 |
549 |
550 |
551 |
552 |
553 |
554 |
558 |
559 |
578 |
579 |
584 |
585 |
586 |
587 |
588 |
589 |
590 |
591 |
617 |
618 |
637 |
638 |
643 |
644 |
645 |
646 |
647 |
648 |
654 |
655 |
656 |
657 |
658 |
659 |
693 |
694 |
713 |
714 |
719 |
720 |
721 |
722 |
723 |
724 |
730 |
731 |
732 |
733 |
734 |
735 |
781 |
782 |
801 |
802 |
807 |
808 |
809 |
810 |
811 |
812 |
813 |
814 |
849 |
850 |
869 |
870 |
875 |
876 |
877 |
878 |
879 |
880 |
886 |
887 |
888 |
889 |
890 |
891 |
895 |
896 |
915 |
916 |
921 |
922 |
923 |
924 |
925 |
926 |
927 |
928 |
942 |
943 |
962 |
963 |
968 |
969 |
970 |
971 |
972 |
973 |
974 |
975 |
1008 |
1009 |
1028 |
1029 |
1034 |
1035 |
1036 |
1037 |
1038 |
1039 |
1045 |
1046 |
1047 |
1048 |
1049 |
1050 |
1059 |
1060 |
1079 |
1080 |
1085 |
1086 |
1087 |
1088 |
1089 |
1090 |
1091 |
1092 |
1108 |
1109 |
1128 |
1129 |
1134 |
1135 |
1136 |
1137 |
1138 |
1139 |
1140 |
1141 |
1142 |
1143 |
1162 |
1163 |
1168 |
1169 |
1170 |
1171 |
1172 |
1173 |
1174 |
1175 |
1183 |
1184 |
1203 |
1204 |
1209 |
1210 |
1211 |
1212 |
1213 |
1214 |
1215 |
1216 |
1248 |
1249 |
1268 |
1269 |
1274 |
1275 |
1276 |
1277 |
1278 |
1279 |
1285 |
1286 |
1287 |
1288 |
1289 |
1290 |
1291 |
1292 |
1311 |
1312 |
1317 |
1318 |
1319 |
1320 |
1321 |
1322 |
1323 |
1324 |
1325 |
1326 |
1345 |
1346 |
1351 |
1352 |
1353 |
1354 |
1355 |
1356 |
1357 |
1358 |
1361 |
1362 |
1381 |
1382 |
1387 |
1388 |
1389 |
1390 |
1391 |
1392 |
1398 |
1399 |
1400 |
1401 |
1402 |
1403 |
1409 |
1410 |
1416 |
1417 |
1423 |
1424 |
1430 |
1431 |
1437 |
1438 |
1444 |
1445 |
1451 |
1452 |
1458 |
1459 |
1465 |
1466 |
1472 |
1473 |
1479 |
1480 |
1486 |
1487 |
1493 |
1494 |
1500 |
1501 |
1507 |
1508 |
1514 |
1515 |
1521 |
1522 |
1528 |
1529 |
1535 |
1536 |
1542 |
1543 |
1544 |
1545 |
1548 |
1549 |
1552 |
1553 |
1556 |
1557 |
1560 |
1561 |
1564 |
1565 |
1568 |
1569 |
1572 |
1573 |
1576 |
1577 |
1578 |
1579 |
1582 |
1583 |
1586 |
1587 |
1590 |
1591 |
1594 |
1595 |
1598 |
1599 |
1602 |
1603 |
1606 |
1607 |
1610 |
1611 |
1614 |
1615 |
1616 |
1617 |
1618 |
1619 |
1628 |
1629 |
1630 |
1631 |
1640 |
1641 |
1642 |
1643 |
1652 |
1653 |
1654 |
1655 |
--------------------------------------------------------------------------------
/accent_generator/Cargo.lock:
--------------------------------------------------------------------------------
1 | # This file is automatically @generated by Cargo.
2 | # It is not intended for manual editing.
3 | version = 3
4 |
5 | [[package]]
6 | name = "accent_generator"
7 | version = "0.1.0"
8 |
--------------------------------------------------------------------------------
/accent_generator/Cargo.toml:
--------------------------------------------------------------------------------
1 | [package]
2 | name = "accent_generator"
3 | version = "0.1.0"
4 | edition = "2021"
5 |
6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
7 |
--------------------------------------------------------------------------------
/accent_generator/latte_orignal.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
34 |
35 |
47 |
48 |
49 |
50 |
62 |
63 |
64 |
65 |
77 |
78 |
79 |
80 |
92 |
93 |
94 |
95 |
107 |
108 |
109 |
110 |
122 |
123 |
124 |
125 |
137 |
138 |
139 |
140 |
152 |
153 |
154 |
155 |
167 |
168 |
169 |
170 |
182 |
183 |
184 |
185 |
197 |
198 |
199 |
200 |
212 |
213 |
214 |
215 |
227 |
228 |
229 |
230 |
242 |
243 |
244 |
245 |
257 |
258 |
259 |
260 |
272 |
273 |
274 |
275 |
287 |
288 |
289 |
290 |
302 |
303 |
304 |
305 |
317 |
318 |
319 |
320 |
332 |
333 |
334 |
335 |
348 |
349 |
350 |
351 |
363 |
364 |
365 |
366 |
367 |
368 |
442 |
443 |
461 |
462 |
467 |
468 |
469 |
470 |
475 |
476 |
477 |
478 |
479 |
480 |
481 |
482 |
516 |
517 |
536 |
537 |
542 |
543 |
544 |
545 |
546 |
547 |
553 |
554 |
555 |
556 |
557 |
558 |
562 |
563 |
582 |
583 |
588 |
589 |
590 |
591 |
592 |
593 |
594 |
595 |
620 |
621 |
640 |
641 |
646 |
647 |
648 |
649 |
650 |
651 |
657 |
658 |
659 |
660 |
661 |
662 |
695 |
696 |
715 |
716 |
721 |
722 |
723 |
724 |
725 |
726 |
732 |
733 |
734 |
735 |
736 |
737 |
780 |
781 |
800 |
801 |
806 |
807 |
808 |
809 |
810 |
811 |
812 |
813 |
840 |
841 |
860 |
861 |
866 |
867 |
868 |
869 |
870 |
871 |
877 |
878 |
879 |
880 |
881 |
882 |
886 |
887 |
906 |
907 |
912 |
913 |
914 |
915 |
916 |
917 |
918 |
919 |
933 |
934 |
953 |
954 |
959 |
960 |
961 |
962 |
963 |
964 |
965 |
966 |
997 |
998 |
1017 |
1018 |
1023 |
1024 |
1025 |
1026 |
1027 |
1028 |
1034 |
1035 |
1036 |
1037 |
1038 |
1039 |
1048 |
1049 |
1068 |
1069 |
1074 |
1075 |
1076 |
1077 |
1078 |
1079 |
1080 |
1081 |
1097 |
1098 |
1117 |
1118 |
1123 |
1124 |
1125 |
1126 |
1127 |
1128 |
1129 |
1130 |
1131 |
1132 |
1151 |
1152 |
1157 |
1158 |
1159 |
1160 |
1161 |
1162 |
1163 |
1164 |
1172 |
1173 |
1192 |
1193 |
1198 |
1199 |
1200 |
1201 |
1202 |
1203 |
1204 |
1205 |
1237 |
1238 |
1257 |
1258 |
1263 |
1264 |
1265 |
1266 |
1267 |
1268 |
1274 |
1275 |
1276 |
1277 |
1278 |
1279 |
1280 |
1281 |
1300 |
1301 |
1306 |
1307 |
1308 |
1309 |
1310 |
1311 |
1312 |
1313 |
1314 |
1315 |
1334 |
1335 |
1340 |
1341 |
1342 |
1343 |
1344 |
1345 |
1346 |
1347 |
1350 |
1351 |
1370 |
1371 |
1376 |
1377 |
1378 |
1379 |
1380 |
1381 |
1387 |
1388 |
1389 |
1390 |
1391 |
1392 |
1398 |
1399 |
1405 |
1406 |
1412 |
1413 |
1419 |
1420 |
1426 |
1427 |
1433 |
1434 |
1440 |
1441 |
1447 |
1448 |
1454 |
1455 |
1461 |
1462 |
1468 |
1469 |
1475 |
1476 |
1482 |
1483 |
1489 |
1490 |
1496 |
1497 |
1503 |
1504 |
1510 |
1511 |
1517 |
1518 |
1524 |
1525 |
1531 |
1532 |
1533 |
1534 |
1537 |
1538 |
1541 |
1542 |
1545 |
1546 |
1549 |
1550 |
1553 |
1554 |
1557 |
1558 |
1561 |
1562 |
1565 |
1566 |
1567 |
1568 |
1571 |
1572 |
1575 |
1576 |
1579 |
1580 |
1583 |
1584 |
1587 |
1588 |
1591 |
1592 |
1595 |
1596 |
1599 |
1600 |
1603 |
1604 |
1605 |
1606 |
1607 |
1608 |
1616 |
1617 |
1618 |
1619 |
1627 |
1628 |
1629 |
1630 |
1638 |
1639 |
1640 |
1641 |
1642 |
--------------------------------------------------------------------------------
/accent_generator/mocha_master.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
34 |
35 |
47 |
48 |
49 |
50 |
62 |
63 |
64 |
65 |
77 |
78 |
79 |
80 |
92 |
93 |
94 |
95 |
107 |
108 |
109 |
110 |
122 |
123 |
124 |
125 |
137 |
138 |
139 |
140 |
152 |
153 |
154 |
155 |
167 |
168 |
169 |
170 |
182 |
183 |
184 |
185 |
197 |
198 |
199 |
200 |
212 |
213 |
214 |
215 |
227 |
228 |
229 |
230 |
242 |
243 |
244 |
245 |
257 |
258 |
259 |
260 |
272 |
273 |
274 |
275 |
287 |
288 |
289 | `1
301 |
302 |
303 |
304 |
316 |
317 |
318 |
319 |
331 |
332 |
333 |
334 |
347 |
348 |
349 |
350 |
362 |
363 |
364 |
365 |
366 |
367 |
441 |
442 |
460 |
461 |
466 |
467 |
468 |
469 |
474 |
475 |
476 |
477 |
478 |
479 |
480 |
481 |
515 |
516 |
535 |
536 |
541 |
542 |
543 |
544 |
545 |
546 |
552 |
553 |
554 |
555 |
556 |
557 |
561 |
562 |
581 |
582 |
587 |
588 |
589 |
590 |
591 |
592 |
593 |
594 |
619 |
620 |
639 |
640 |
645 |
646 |
647 |
648 |
649 |
650 |
656 |
657 |
658 |
659 |
660 |
661 |
695 |
696 |
715 |
716 |
721 |
722 |
723 |
724 |
725 |
726 |
732 |
733 |
734 |
735 |
736 |
737 |
780 |
781 |
800 |
801 |
806 |
807 |
808 |
809 |
810 |
811 |
812 |
813 |
840 |
841 |
860 |
861 |
866 |
867 |
868 |
869 |
870 |
871 |
877 |
878 |
879 |
880 |
881 |
882 |
886 |
887 |
906 |
907 |
912 |
913 |
914 |
915 |
916 |
917 |
918 |
919 |
933 |
934 |
953 |
954 |
959 |
960 |
961 |
962 |
963 |
964 |
965 |
966 |
997 |
998 |
1017 |
1018 |
1023 |
1024 |
1025 |
1026 |
1027 |
1028 |
1034 |
1035 |
1036 |
1037 |
1038 |
1039 |
1048 |
1049 |
1068 |
1069 |
1074 |
1075 |
1076 |
1077 |
1078 |
1079 |
1080 |
1081 |
1097 |
1098 |
1117 |
1118 |
1123 |
1124 |
1125 |
1126 |
1127 |
1128 |
1129 |
1130 |
1131 |
1132 |
1151 |
1152 |
1157 |
1158 |
1159 |
1160 |
1161 |
1162 |
1163 |
1164 |
1172 |
1173 |
1192 |
1193 |
1198 |
1199 |
1200 |
1201 |
1202 |
1203 |
1204 |
1205 |
1237 |
1238 |
1257 |
1258 |
1263 |
1264 |
1265 |
1266 |
1267 |
1268 |
1274 |
1275 |
1276 |
1277 |
1278 |
1279 |
1280 |
1281 |
1300 |
1301 |
1306 |
1307 |
1308 |
1309 |
1310 |
1311 |
1312 |
1313 |
1314 |
1315 |
1334 |
1335 |
1340 |
1341 |
1342 |
1343 |
1344 |
1345 |
1346 |
1347 |
1350 |
1351 |
1370 |
1371 |
1376 |
1377 |
1378 |
1379 |
1380 |
1381 |
1387 |
1388 |
1389 |
1390 |
1391 |
1392 |
1398 |
1399 |
1405 |
1406 |
1412 |
1413 |
1419 |
1420 |
1426 |
1427 |
1433 |
1434 |
1440 |
1441 |
1447 |
1448 |
1454 |
1455 |
1461 |
1462 |
1468 |
1469 |
1475 |
1476 |
1482 |
1483 |
1489 |
1490 |
1496 |
1497 |
1503 |
1504 |
1510 |
1511 |
1517 |
1518 |
1524 |
1525 |
1531 |
1532 |
1533 |
1534 |
1537 |
1538 |
1541 |
1542 |
1545 |
1546 |
1549 |
1550 |
1553 |
1554 |
1557 |
1558 |
1561 |
1562 |
1565 |
1566 |
1567 |
1568 |
1571 |
1572 |
1575 |
1576 |
1579 |
1580 |
1583 |
1584 |
1587 |
1588 |
1591 |
1592 |
1595 |
1596 |
1599 |
1600 |
1603 |
1604 |
1605 |
1606 |
1607 |
1608 |
1616 |
1617 |
1618 |
1619 |
1627 |
1628 |
1629 |
1630 |
1638 |
1639 |
1640 |
1641 |
--------------------------------------------------------------------------------
/accent_generator/src/main.rs:
--------------------------------------------------------------------------------
1 | use std::{
2 | fs::{self, File},
3 | io::Write,
4 | process::Command,
5 | };
6 |
7 | fn main() {
8 | create_master_themes();
9 |
10 | // Normal themes
11 | let normal_palettes = [
12 | Palette::new("latte", COLORS, LATTE_COLORS, None),
13 | Palette::new("frappe", COLORS, FRAPPE_COLORS, None),
14 | Palette::new("macchiato", COLORS, MACCHIATO_COLORS, None),
15 | Palette::new("mocha", COLORS, MOCHA_COLORS, None),
16 | ];
17 | for palette in normal_palettes {
18 | palette.create_themes("classic");
19 | }
20 |
21 | // Medium themes
22 | let normal_palettes = [
23 | Palette::new("latte", COLORS, LATTE_COLORS, None),
24 | Palette::new("frappe", COLORS, LATTE_COLORS, None),
25 | Palette::new("macchiato", COLORS, LATTE_COLORS, None),
26 | Palette::new("mocha", COLORS, LATTE_COLORS, None),
27 | ];
28 | for palette in normal_palettes {
29 | palette.create_themes("accent");
30 | }
31 |
32 | // Contrast themes
33 | let contrast_palettes = [
34 | Palette::new("latte", COLORS, LATTE_COLORS, Some(LATTE_COLORS)),
35 | Palette::new("frappe", COLORS, FRAPPE_COLORS, Some(LATTE_COLORS)),
36 | Palette::new("macchiato", COLORS, MACCHIATO_COLORS, Some(LATTE_COLORS)),
37 | Palette::new("mocha", COLORS, MOCHA_COLORS, Some(LATTE_COLORS)),
38 | ];
39 | for palette in contrast_palettes {
40 | palette.create_themes("saturated");
41 | }
42 |
43 | delete_master_themes();
44 | }
45 | static MASTER_PALLET: &str = "mocha_master.xml";
46 | static ACCENT_COLOR: &str = "#bada55";
47 |
48 | static COLORS: [&str; 15] = [
49 | "rosewater",
50 | "flamingo",
51 | "pink",
52 | "mauve",
53 | "red",
54 | "maroon",
55 | "peach",
56 | "yellow",
57 | "green",
58 | "teal",
59 | "sky",
60 | "sapphire",
61 | "blue",
62 | "lavender",
63 | "morado",
64 | ];
65 | static LATTE_COLORS: [&str; 15] = [
66 | "#dc8a78", "#dd7878", "#ea76cb", "#8839ef", "#d20f39", "#e64553", "#fe640b", "#df8e1d",
67 | "#40a02b", "#179299", "#04a5e5", "#209fb5", "#1e66f5", "#7287fd", "#aa8ed6",
68 | ];
69 | static FRAPPE_COLORS: [&str; 15] = [
70 | "#f2d5cf", "#eebebe", "#f4b8e4", "#ca9ee6", "#e78284", "#ea999c", "#ef9f76", "#e5c890",
71 | "#a6d189", "#81c8be", "#99d1db", "#85c1dc", "#8caaee", "#babbf1", "#aa8ed6",
72 | ];
73 | static MACCHIATO_COLORS: [&str; 15] = [
74 | "#f4dbd6", "#f0c6c6", "#f5bde6", "#c6a0f6", "#ed8796", "#ee99a0", "#f5a97f", "#eed49f",
75 | "#a6da95", "#8bd5ca", "#91d7e3", "#7dc4e4", "#8aadf4", "#b7bdf8", "#aa8ed6",
76 | ];
77 | static MOCHA_COLORS: [&str; 15] = [
78 | "#f5e0dc", "#f2cdcd", "#f5c2e7", "#cba6f7", "#f38ba8", "#eba0ac", "#fab387", "#f9e2af",
79 | "#a6e3a1", "#94e2d5", "#89dceb", "#74c7ec", "#89b4fa", "#b4befe", "#aa8ed6",
80 | ];
81 |
82 | #[derive(Default, Debug)]
83 | struct Color {
84 | name: String,
85 | hex: String,
86 | contrast: Option,
87 | }
88 |
89 | #[derive(Default, Debug)]
90 | struct Palette {
91 | name: String,
92 | colors: Vec,
93 | }
94 |
95 | impl Palette {
96 | fn new(
97 | name: &str,
98 | colors: [&str; 15],
99 | hexes: [&str; 15],
100 | contrast_colors: Option<[&str; 15]>,
101 | ) -> Self {
102 | let mut colors: Vec = colors
103 | .iter()
104 | .zip(hexes.iter())
105 | .map(|(&color, &hex)| Color {
106 | name: color.into(),
107 | hex: hex.into(),
108 | contrast: None,
109 | })
110 | .collect();
111 |
112 | if let Some(contrast_colors) = contrast_colors {
113 | colors
114 | .iter_mut()
115 | .zip(contrast_colors.iter())
116 | .for_each(|(color, &contrast)| color.contrast = Some(contrast.into()))
117 | }
118 | Self {
119 | name: name.into(),
120 | colors,
121 | }
122 | }
123 |
124 | fn create_themes(&self, folder_name: &str) {
125 | let file_name = format!("{}.xml", self.name);
126 | let file_content = fs::read_to_string(file_name).expect("Filed to read file.xml");
127 |
128 | for color in &self.colors {
129 | // file modifications
130 |
131 | // change accent_color
132 | let mut temp_file = file_content.replace(ACCENT_COLOR, &color.hex);
133 |
134 | // change colors to contrast colors
135 | for cycle in &self.colors {
136 | if let Some(contrast) = &cycle.contrast {
137 | temp_file = temp_file.replace(&cycle.hex, contrast);
138 | }
139 | }
140 |
141 | // create folders
142 | let path_folders = format!("../themes/{}/{}", folder_name, self.name);
143 | fs::create_dir_all(&path_folders).expect("failed to create folder");
144 |
145 | // create files
146 | let path_file = format!(
147 | "{}/{}_{}_{}.xml",
148 | path_folders, self.name, color.name, folder_name
149 | );
150 | let mut file = File::create(path_file).expect("Filed to create File");
151 | file.write_all(temp_file.as_bytes())
152 | .expect("Filed to write to File");
153 | }
154 | }
155 | }
156 |
157 | fn create_master_themes() {
158 | // delete themes folder
159 | let dir_path = "../themes";
160 | if fs::metadata(dir_path).is_ok() {
161 | fs::remove_dir_all(dir_path).expect("Failed to removed themes");
162 | }
163 | // create themes
164 | let mut child = Command::new("puccinier")
165 | .args([MASTER_PALLET])
166 | .args(["-s"])
167 | .args(["-o", "latte"])
168 | .args(["-o", "frappe"])
169 | .args(["-o", "macchiato"])
170 | .args(["-o", "mocha"])
171 | .spawn()
172 | .expect("Failed to generated master themes");
173 | child.wait().expect("failed to wait on child");
174 | }
175 |
176 | fn delete_master_themes() {
177 | fs::remove_file("latte.xml").expect("Error deleting generated latte theme");
178 | fs::remove_file("frappe.xml").expect("Error deleting generated frappe theme");
179 | fs::remove_file("macchiato.xml").expect("Error deleting generated macchiato theme");
180 | fs::remove_file("mocha.xml").expect("Error deleting generated mocha theme");
181 | }
182 |
--------------------------------------------------------------------------------
/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ameknite/blender/5a82af7d1b104431363ec7a19ec76c32aa281910/assets/.gitkeep
--------------------------------------------------------------------------------
/assets/Latte.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ameknite/blender/5a82af7d1b104431363ec7a19ec76c32aa281910/assets/Latte.png
--------------------------------------------------------------------------------
/assets/Macchiato.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ameknite/blender/5a82af7d1b104431363ec7a19ec76c32aa281910/assets/Macchiato.png
--------------------------------------------------------------------------------
/assets/Mocha.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ameknite/blender/5a82af7d1b104431363ec7a19ec76c32aa281910/assets/Mocha.png
--------------------------------------------------------------------------------
/assets/catwalk.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ameknite/blender/5a82af7d1b104431363ec7a19ec76c32aa281910/assets/catwalk.webp
--------------------------------------------------------------------------------
/assets/catwalk_accent.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ameknite/blender/5a82af7d1b104431363ec7a19ec76c32aa281910/assets/catwalk_accent.webp
--------------------------------------------------------------------------------
/assets/catwalk_contrast.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ameknite/blender/5a82af7d1b104431363ec7a19ec76c32aa281910/assets/catwalk_contrast.webp
--------------------------------------------------------------------------------
/assets/frappe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ameknite/blender/5a82af7d1b104431363ec7a19ec76c32aa281910/assets/frappe.png
--------------------------------------------------------------------------------
/assets/frappe_accent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ameknite/blender/5a82af7d1b104431363ec7a19ec76c32aa281910/assets/frappe_accent.png
--------------------------------------------------------------------------------
/assets/frappe_contrast.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ameknite/blender/5a82af7d1b104431363ec7a19ec76c32aa281910/assets/frappe_contrast.png
--------------------------------------------------------------------------------
/assets/latte_accent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ameknite/blender/5a82af7d1b104431363ec7a19ec76c32aa281910/assets/latte_accent.png
--------------------------------------------------------------------------------
/assets/latte_contrast.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ameknite/blender/5a82af7d1b104431363ec7a19ec76c32aa281910/assets/latte_contrast.png
--------------------------------------------------------------------------------
/assets/macchiato_accent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ameknite/blender/5a82af7d1b104431363ec7a19ec76c32aa281910/assets/macchiato_accent.png
--------------------------------------------------------------------------------
/assets/macchiato_contrast.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ameknite/blender/5a82af7d1b104431363ec7a19ec76c32aa281910/assets/macchiato_contrast.png
--------------------------------------------------------------------------------
/assets/moccha.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ameknite/blender/5a82af7d1b104431363ec7a19ec76c32aa281910/assets/moccha.png
--------------------------------------------------------------------------------
/assets/mocha_accent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ameknite/blender/5a82af7d1b104431363ec7a19ec76c32aa281910/assets/mocha_accent.png
--------------------------------------------------------------------------------
/assets/mocha_contrast.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ameknite/blender/5a82af7d1b104431363ec7a19ec76c32aa281910/assets/mocha_contrast.png
--------------------------------------------------------------------------------