├── .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 | Logo
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 --------------------------------------------------------------------------------