├── .editorconfig ├── .gitignore ├── LICENSE ├── README.md ├── assets ├── .gitkeep └── previews │ ├── frappe.webp │ ├── latte.webp │ ├── macchiato.webp │ ├── mocha.webp │ └── preview.webp ├── build.py └── properties.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 | output 2 | -------------------------------------------------------------------------------- /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 |
15 |
16 |
58 |
59 |
62 | Copyright © 2021-present Catppuccin Org 63 |
64 | 65 | 68 | -------------------------------------------------------------------------------- /assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/catppuccin/mixplorer/3f5e183f1d7c71596c42a834f9a3ec0c671d4a0c/assets/.gitkeep -------------------------------------------------------------------------------- /assets/previews/frappe.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/catppuccin/mixplorer/3f5e183f1d7c71596c42a834f9a3ec0c671d4a0c/assets/previews/frappe.webp -------------------------------------------------------------------------------- /assets/previews/latte.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/catppuccin/mixplorer/3f5e183f1d7c71596c42a834f9a3ec0c671d4a0c/assets/previews/latte.webp -------------------------------------------------------------------------------- /assets/previews/macchiato.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/catppuccin/mixplorer/3f5e183f1d7c71596c42a834f9a3ec0c671d4a0c/assets/previews/macchiato.webp -------------------------------------------------------------------------------- /assets/previews/mocha.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/catppuccin/mixplorer/3f5e183f1d7c71596c42a834f9a3ec0c671d4a0c/assets/previews/mocha.webp -------------------------------------------------------------------------------- /assets/previews/preview.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/catppuccin/mixplorer/3f5e183f1d7c71596c42a834f9a3ec0c671d4a0c/assets/previews/preview.webp -------------------------------------------------------------------------------- /build.py: -------------------------------------------------------------------------------- 1 | # libraries 2 | import os 3 | from zipfile import ZipFile 4 | from catppuccin import PALETTE 5 | import re 6 | 7 | # read properties.xml 8 | file = open('properties.xml', 'r') 9 | theme = file.read() 10 | file.close() 11 | 12 | # make output directory 13 | if not os.path.exists('output'): 14 | os.mkdir('output') 15 | 16 | # generate all flavors 17 | for flavor in PALETTE: 18 | with ZipFile('output/mixplorer-catppuccin-' + flavor.name + '.zip', 'w') as flavor_zip: 19 | print('generating ' + flavor.name) 20 | 21 | # get colors 22 | colors = {} 23 | for accent in flavor.colors: 24 | colors[accent.identifier] = re.sub(r'^#', '', accent.hex) 25 | 26 | # generate flavors 27 | for accent in flavor.colors: 28 | if accent.accent: 29 | def replaceValues(match): 30 | v = match.group(1) 31 | if v == 'flavorName': 32 | return flavor.name 33 | elif v == 'accentName': 34 | return accent.name 35 | elif v == 'accent': 36 | return colors[accent.identifier] 37 | elif colors.get(v): 38 | return colors[v] 39 | 40 | result = re.sub(r'{{([\w\s]+?)}}', replaceValues, theme) 41 | with ZipFile('output/temp.zip', 'w') as accentZip: 42 | accentZip.writestr('properties.xml', result) 43 | flavor_zip.write('output/temp.zip', 'mixplorer-catppuccin-' + flavor.name + '-' + accent.name + '.mit') 44 | 45 | # remove temporary file 46 | os.remove("output/temp.zip") 47 | -------------------------------------------------------------------------------- /properties.xml: -------------------------------------------------------------------------------- 1 | 2 |