├── .editorconfig ├── .gitignore ├── Catppuccin.plist ├── ColorHelper.h ├── LICENSE ├── Makefile ├── README.md ├── Tweak.h ├── Tweak.x ├── assets └── .gitkeep ├── control ├── custom_include.sh ├── generated.x ├── make └── prefs ├── Controllers ├── CatppuccinRootListController.h ├── CatppuccinRootListController.mm ├── CatppuccinThirdPartyListController.h └── CatppuccinThirdPartyListController.mm ├── Makefile ├── Resources ├── Root.plist ├── ThirdParty.plist ├── icon.png ├── icon@2x.png ├── icon@3x.png ├── reddit.png ├── reddit@2x.png ├── reddit@3x.png ├── youtube.png ├── youtube@2x.png └── youtube@3x.png └── layout └── Library └── PreferenceLoader └── Preferences └── CatppuccinPreferences.plist /.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 | .theos 2 | packages/ 3 | .gen_Tweak.x -------------------------------------------------------------------------------- /Catppuccin.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Filter 6 | 7 | Bundles 8 | 9 | com.apple.springboard 10 | com.apple.UIKit 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /ColorHelper.h: -------------------------------------------------------------------------------- 1 | // https://stackoverflow.com/a/3532264 2 | #define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0] 3 | 4 | #define ROSEWATER 0 5 | #define FLAMINGO 1 6 | #define PINK 2 7 | #define MAUVE 3 8 | #define RED 4 9 | #define MAROON 5 10 | #define PEACH 6 11 | #define YELLOW 7 12 | #define GREEN 8 13 | #define TEAL 9 14 | #define SKY 10 15 | #define SAPPHIRE 11 16 | #define BLUE 12 17 | #define LAVENDER 13 18 | 19 | #define TEXT 14 20 | #define SUBTEXT1 15 21 | #define SUBTEXT0 16 22 | #define OVERLAY2 17 23 | #define OVERLAY1 18 24 | #define OVERLAY0 19 25 | #define SURFACE2 20 26 | #define SURFACE1 21 27 | #define SURFACE0 22 28 | #define BASE 23 29 | #define MANTLE 24 30 | #define CRUST 25 31 | 32 | static NSArray *colors; 33 | static int ACCENT = BLUE; 34 | 35 | @interface ColorHelper : NSObject { } 36 | + (void)latte; 37 | + (void)frappe; 38 | + (void)macchiato; 39 | + (void)mocha; 40 | 41 | + (void)updateColors; 42 | @end 43 | 44 | @implementation ColorHelper 45 | + (void)latte { 46 | colors = [[NSArray alloc] initWithObjects: 47 | UIColorFromRGB(0xdc8a78), 48 | UIColorFromRGB(0xdd7878), 49 | UIColorFromRGB(0xea76cb), 50 | UIColorFromRGB(0x8839ef), 51 | UIColorFromRGB(0xd20f39), 52 | UIColorFromRGB(0xe64553), 53 | UIColorFromRGB(0xfe640b), 54 | UIColorFromRGB(0xdf8e1d), 55 | UIColorFromRGB(0x40a02b), 56 | UIColorFromRGB(0x179299), 57 | UIColorFromRGB(0x04a5e5), 58 | UIColorFromRGB(0x209fb5), 59 | UIColorFromRGB(0x1e66f5), 60 | UIColorFromRGB(0x7287fd), 61 | UIColorFromRGB(0x4c4f69), 62 | UIColorFromRGB(0x5c5f77), 63 | UIColorFromRGB(0x6c6f85), 64 | UIColorFromRGB(0x7c7f93), 65 | UIColorFromRGB(0x8c8fa1), 66 | UIColorFromRGB(0x9ca0b0), 67 | UIColorFromRGB(0xacb0be), 68 | UIColorFromRGB(0xbcc0cc), 69 | UIColorFromRGB(0xccd0da), 70 | UIColorFromRGB(0xeff1f5), 71 | UIColorFromRGB(0xe6e9ef), 72 | UIColorFromRGB(0xdce0e8), 73 | nil]; 74 | } 75 | 76 | + (void)frappe { 77 | colors = [[NSArray alloc] initWithObjects: 78 | UIColorFromRGB(0xf2d5cf), 79 | UIColorFromRGB(0xeebebe), 80 | UIColorFromRGB(0xf4b8e4), 81 | UIColorFromRGB(0xca9ee6), 82 | UIColorFromRGB(0xe78284), 83 | UIColorFromRGB(0xea999c), 84 | UIColorFromRGB(0xef9f76), 85 | UIColorFromRGB(0xe5c890), 86 | UIColorFromRGB(0xa6d189), 87 | UIColorFromRGB(0x81c8be), 88 | UIColorFromRGB(0x99d1db), 89 | UIColorFromRGB(0x85c1dc), 90 | UIColorFromRGB(0x8caaee), 91 | UIColorFromRGB(0xbabbf1), 92 | UIColorFromRGB(0xc6d0f5), 93 | UIColorFromRGB(0xb5bfe2), 94 | UIColorFromRGB(0xa5adce), 95 | UIColorFromRGB(0x949cbb), 96 | UIColorFromRGB(0x838ba7), 97 | UIColorFromRGB(0x737994), 98 | UIColorFromRGB(0x626880), 99 | UIColorFromRGB(0x51576d), 100 | UIColorFromRGB(0x414559), 101 | UIColorFromRGB(0x303446), 102 | UIColorFromRGB(0x292c3c), 103 | UIColorFromRGB(0x232634), 104 | nil]; 105 | } 106 | 107 | + (void)macchiato { 108 | colors = [[NSArray alloc] initWithObjects: 109 | UIColorFromRGB(0xf4dbd6), 110 | UIColorFromRGB(0xf0c6c6), 111 | UIColorFromRGB(0xf5bde6), 112 | UIColorFromRGB(0xc6a0f6), 113 | UIColorFromRGB(0xed8796), 114 | UIColorFromRGB(0xee99a0), 115 | UIColorFromRGB(0xf5a97f), 116 | UIColorFromRGB(0xeed49f), 117 | UIColorFromRGB(0xa6da95), 118 | UIColorFromRGB(0x8bd5ca), 119 | UIColorFromRGB(0x91d7e3), 120 | UIColorFromRGB(0x7dc4e4), 121 | UIColorFromRGB(0x8aadf4), 122 | UIColorFromRGB(0xb7bdf8), 123 | UIColorFromRGB(0xcad3f5), 124 | UIColorFromRGB(0xb8c0e0), 125 | UIColorFromRGB(0xa5adcb), 126 | UIColorFromRGB(0x939ab7), 127 | UIColorFromRGB(0x8087a2), 128 | UIColorFromRGB(0x6e738d), 129 | UIColorFromRGB(0x5b6078), 130 | UIColorFromRGB(0x494d64), 131 | UIColorFromRGB(0x363a4f), 132 | UIColorFromRGB(0x24273a), 133 | UIColorFromRGB(0x1e2030), 134 | UIColorFromRGB(0x181926), 135 | nil]; 136 | } 137 | 138 | + (void)mocha { 139 | colors = [[NSArray alloc] initWithObjects: 140 | UIColorFromRGB(0xf5e0dc), 141 | UIColorFromRGB(0xf2cdcd), 142 | UIColorFromRGB(0xf5c2e7), 143 | UIColorFromRGB(0xcba6f7), 144 | UIColorFromRGB(0xf38ba8), 145 | UIColorFromRGB(0xeba0ac), 146 | UIColorFromRGB(0xfab387), 147 | UIColorFromRGB(0xf9e2af), 148 | UIColorFromRGB(0xa6e3a1), 149 | UIColorFromRGB(0x94e2d5), 150 | UIColorFromRGB(0x89dceb), 151 | UIColorFromRGB(0x74c7ec), 152 | UIColorFromRGB(0x89b4fa), 153 | UIColorFromRGB(0xb4befe), 154 | UIColorFromRGB(0xcdd6f4), 155 | UIColorFromRGB(0xbac2de), 156 | UIColorFromRGB(0xa6adc8), 157 | UIColorFromRGB(0x9399b2), 158 | UIColorFromRGB(0x7f849c), 159 | UIColorFromRGB(0x6c7086), 160 | UIColorFromRGB(0x585b70), 161 | UIColorFromRGB(0x45475a), 162 | UIColorFromRGB(0x313244), 163 | UIColorFromRGB(0x1e1e2e), 164 | UIColorFromRGB(0x181825), 165 | UIColorFromRGB(0x11111b), 166 | nil]; 167 | } 168 | 169 | + (void)updateColors { 170 | NSArray *flavors = [[NSArray alloc] initWithObjects:@"latte", @"frappe", @"macchiato", @"mocha", nil]; 171 | NSArray *accents = [[NSArray alloc] initWithObjects:@"rosewater", @"flamingo", @"pink", @"mauve", @"red", @"maroon", @"peach", @"yellow", @"green", @"teal", @"sky", @"sapphire", @"blue", @"lavender", nil]; 172 | 173 | switch ([flavors indexOfObject:Flavor]) { 174 | case 0: 175 | [self latte]; 176 | break; 177 | case 1: 178 | [self frappe]; 179 | break; 180 | case 2: 181 | [self macchiato]; 182 | break; 183 | case 3: 184 | [self mocha]; 185 | break; 186 | default: 187 | break; 188 | } 189 | 190 | ACCENT = (int)[accents indexOfObject:Accent]; 191 | } 192 | @end 193 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # prevent running normal make, force the user to use ./make.sh 2 | ifneq ($(RAN_CODEGEN),1) 3 | $(error please use ./make instead of make) 4 | endif 5 | 6 | export TARGET := iphone:clang:latest:13.0 7 | ifeq ($(THEOS_PACKAGE_SCHEME),rootless) 8 | export ARCHS = arm64 arm64e 9 | endif 10 | 11 | INSTALL_TARGET_PROCESSES = SpringBoard 12 | 13 | TWEAK_NAME = Catppuccin 14 | $(TWEAK_NAME)_FILES = .gen_Tweak.x 15 | $(TWEAK_NAME)_CFLAGS = -fobjc-arc 16 | $(TWEAK_NAME)_PRIVATE_FRAMEWORKS = UIKitServices 17 | 18 | SUBPROJECTS += prefs 19 | 20 | include $(THEOS)/makefiles/common.mk 21 | include $(THEOS_MAKE_PATH)/tweak.mk 22 | include $(THEOS_MAKE_PATH)/aggregate.mk -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | Logo
3 | 4 | Catppuccin for iOS 5 | 6 |

7 | 8 |

9 | 10 | 11 | 12 |

13 | 14 |

15 | 16 |

17 | 18 | ## Previews 19 | 20 |
21 | 🌻 Latte 22 | 23 |
24 |
25 | 🪴 Frappé 26 | 27 |
28 |
29 | 🌺 Macchiato 30 | 31 |
32 |
33 | 🌿 Mocha 34 | 35 |
36 | 37 | ## Usage 38 | 39 | 1. Download the .deb from the releases tab 40 | 2. Install it using your package manager (Sileo, Zebra, etc) 41 | 3. Respring, go to settings and select your prefered flavor/accent 42 | 43 | 44 | ## 🙋 FAQ 45 | 46 | - Q: **_"How do i change the accent color and/or flavor?"_**\ 47 | A: In the Settings app, there should be a section labeled "Catppuccin". In there you can change both flavor and accent color. 48 | 49 | ## 💝 Thanks to 50 | 51 | - [rooot](https://github.com/RoootTheFox) 52 | - [Echo](https://github.com/CallMeEchoCodes) 53 | - [r58Playz](https://github.com/r58Playz) 54 | 55 |   56 | 57 |

58 | 59 |

60 | 61 |

62 | Copyright © 2021-present Catppuccin Org 63 |

64 | 65 |

66 | 67 |

68 | -------------------------------------------------------------------------------- /Tweak.h: -------------------------------------------------------------------------------- 1 | static NSString *Flavor = @"mocha"; 2 | static NSString *Accent = @"mauve"; 3 | 4 | @interface _UIVisualEffectFilterEntry : NSObject { 5 | NSString *_filterType; 6 | } 7 | @property(nonatomic, copy) NSString *filterType; 8 | @end 9 | @interface _UIVisualEffectSubview : UIView 10 | @end 11 | @interface _UIVisualEffectBackdropView : _UIVisualEffectSubview 12 | @end -------------------------------------------------------------------------------- /Tweak.x: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import 4 | 5 | #import 6 | #import 7 | #import 8 | 9 | // ColorHelper is shamelessly stolen from Echo <3 10 | #import "ColorHelper.h" 11 | 12 | // include generated hooks file 13 | %group SystemUI 14 | @custom_include "generated.x" 15 | 16 | %hook UIColor 17 | + (id)_systemBlueColor2 { return colors[ACCENT]; } 18 | + (id)_systemInteractionTintColor { return colors[ACCENT]; } 19 | %end 20 | 21 | %hook _UIVisualEffectBackdropView 22 | -(void)setFilters:(NSArray *)arg1 { 23 | NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(id object, NSDictionary *bindings) { 24 | return [[object filterType] isEqualToString:@"gaussianBlur"]; 25 | }]; 26 | NSArray *filtered = [arg1 filteredArrayUsingPredicate:predicate]; 27 | self.backgroundColor = [colors[BASE] colorWithAlphaComponent:0.5]; 28 | %orig(filtered); 29 | } 30 | %end 31 | 32 | %hook UIButton 33 | -(id)_setupBackgroundView { 34 | id res = %orig; 35 | [self setTitleColor:colors[CRUST] forState:UIControlStateNormal]; 36 | return res; 37 | } 38 | %end 39 | %end 40 | 41 | static void loadPreferences() { 42 | BOOL isSystem = [NSHomeDirectory() isEqualToString:@"/var/mobile"]; 43 | 44 | NSDictionary *preferences = nil; 45 | 46 | if (isSystem) { 47 | CFArrayRef keyList = CFPreferencesCopyKeyList((CFSTR("com.catppuccin.ios.preferences")), kCFPreferencesCurrentUser, kCFPreferencesAnyHost); 48 | if (keyList) { 49 | preferences = CFBridgingRelease(CFPreferencesCopyMultiple(keyList, CFSTR("com.catppuccin.ios.preferences"), kCFPreferencesCurrentUser, kCFPreferencesAnyHost)); 50 | if (!preferences) preferences = [NSDictionary new]; 51 | CFRelease(keyList); 52 | } 53 | } 54 | 55 | if (!preferences) preferences = [NSDictionary dictionaryWithContentsOfFile:ROOT_PATH_NS(@"/var/mobile/Library/Preferences/com.catppuccin.ios.preferences.plist")]; 56 | 57 | if (preferences) { 58 | Flavor = [preferences objectForKey:@"flavor"]; 59 | Accent = [preferences objectForKey:@"accent"]; 60 | //BOOL YouTube = [[preferences objectForKey:@"youtube"] boolValue]; 61 | //BOOL Reddit = [[preferences objectForKey:@"reddit"] boolValue]; 62 | } 63 | 64 | [ColorHelper updateColors]; 65 | } 66 | 67 | %ctor { 68 | CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, (CFNotificationCallback)loadPreferences, CFSTR("com.catppuccin.ios.preferences/reload"), NULL, CFNotificationSuspensionBehaviorCoalesce); 69 | loadPreferences(); 70 | 71 | %init(SystemUI); 72 | } 73 | -------------------------------------------------------------------------------- /assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoootTheFox/catppuccin-ios/bf8b22bbf9e8f29fb7422d41537ddb1d246e05d4/assets/.gitkeep -------------------------------------------------------------------------------- /control: -------------------------------------------------------------------------------- 1 | Package: com.catppuccin.ios 2 | Name: Catppuccin 3 | Version: 0.0.1 4 | Architecture: iphoneos-arm 5 | Description: Soothing pastel theme for iOS 6 | Maintainer: rooot 7 | Author: rooot 8 | Section: Tweaks 9 | Depends: mobilesubstrate, preferenceloader 10 | -------------------------------------------------------------------------------- /custom_include.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # this is to parse the @custom_include statements in Tweak.x 4 | # in order to achieve hooks spread up into multiple files. 5 | 6 | # read the file line by line and save everything back to Tweak.x 7 | # except for the @custom_include statements, which will be replaced 8 | 9 | echo "generating code ..." 10 | 11 | read -r -d '' fileheader << MEOW 12 | /* 13 | * !! THIS FILE IS AUTOGENERATED !! 14 | * DO NOT EDIT, YOUR CHANGES WILL BE OVERWRITTEN 15 | */ 16 | MEOW 17 | 18 | function codegen { 19 | echo "running codegen for $1" 20 | echo "$fileheader" > ".gen_$1" 21 | 22 | while read line; do 23 | if [[ $line == @custom_include* ]]; then 24 | file=${line#*@custom_include } 25 | file=${file%\"*} 26 | file=${file#\"*} 27 | 28 | echo "found custom include for $file" 29 | if [ -f "$file" ]; then 30 | echo "including $file" 31 | line=$(cat "$file") 32 | else 33 | echo "file $file not found" 34 | exit 1 35 | fi 36 | fi 37 | 38 | echo "$line" >> ".gen_$1" 39 | done < "$1" 40 | } 41 | 42 | codegen Tweak.x -------------------------------------------------------------------------------- /generated.x: -------------------------------------------------------------------------------- 1 | %hook UIColor 2 | +(id)selectionGrabberColor { return colors[ACCENT]; } 3 | +(id)systemExtraLightGrayColor { return colors[TEXT]; } 4 | +(id)systemDarkMidGrayColor { return colors[OVERLAY1]; } 5 | +(id)tablePlainHeaderFooterBackgroundColor { return colors[SURFACE1]; } 6 | +(id)tablePlainHeaderFooterFloatingBackgroundColor { return colors[SURFACE1]; } 7 | +(id)tableSelectionColor { return colors[SKY]; } 8 | +(id)systemExtraLightGrayTintColor { return colors[BLUE]; } 9 | +(id)sectionHeaderOpaqueBackgroundColor { return colors[TEXT]; } 10 | +(id)systemGreenColor { return colors[GREEN]; } 11 | +(id)scrollViewTexturedBackgroundColor { return colors[SURFACE2]; } 12 | +(id)systemDarkExtraLightGrayTintColor { return colors[BASE]; } 13 | +(id)brownColor { return colors[PEACH]; } 14 | +(id)systemDarkGreenColor { return colors[GREEN]; } 15 | +(id)systemDarkLightGrayColor { return colors[SUBTEXT0]; } 16 | +(id)textFieldAtomPurpleColor { return colors[MAUVE]; } 17 | +(id)systemDarkYellowColor { return colors[PEACH]; } 18 | +(id)externalSystemGreenColor { return colors[GREEN]; } 19 | +(id)systemIndigoColor { return colors[BLUE]; } 20 | +(id)systemDarkPurpleColor { return colors[LAVENDER]; } 21 | +(id)linkColor { return colors[ACCENT]; } 22 | +(id)selectionHighlightColor { return [colors[ACCENT] colorWithAlphaComponent:0.2]; } 23 | +(id)sectionListBorderColor { return colors[OVERLAY1]; } 24 | +(id)systemGrayColor { return colors[OVERLAY1]; } 25 | +(id)tableBackgroundColor { return colors[BASE]; } 26 | +(id)tableGroupedTopShadowColor { return colors[BASE]; } 27 | +(id)keyboardFocusIndicatorColor { return colors[BASE]; } 28 | +(id)systemGroupedBackgroundColor { return colors[BASE]; } 29 | +(id)systemBackgroundColor { return colors[BASE]; } 30 | +(id)blackColor { return colors[BASE]; } 31 | +(id)systemBlackColor { return colors[BASE]; } 32 | +(id)tableCellbackgroundColorCarPlay { return colors[BASE]; } 33 | +(id)tableCellPlainBackgroundColor { return colors[BASE]; } 34 | +(id)groupTableViewBackgroundColor { return colors[BASE]; } 35 | +(id)darkTextColor { return colors[BASE]; } 36 | +(id)systemLightMidGrayColor { return colors[SUBTEXT1]; } 37 | +(id)systemGray4Color { return colors[SURFACE1]; } 38 | +(id)tableCellPlainSelectedBackgroundColor { return colors[SURFACE1]; } 39 | +(id)tableCellDefaultSelectionTintColor { return colors[SURFACE1]; } 40 | +(id)tableCellGroupedSelectedBackgroundColor { return colors[SURFACE1]; } 41 | +(id)quaternarySystemFillColor { return colors[BASE]; } 42 | +(id)tertiarySystemFillColor { return colors[BASE]; } 43 | +(id)lightGrayColor { return colors[OVERLAY2]; } 44 | +(id)tableGroupedSeparatorLightColor { return colors[SUBTEXT0]; } 45 | +(id)opaqueSeparatorColor { return colors[SURFACE1]; } 46 | +(id)cyanColor { return colors[SKY]; } 47 | +(id)blueColor { return colors[BLUE]; } 48 | +(id)magentaColor { return colors[MAUVE]; } 49 | +(id)systemBrownColor { return colors[PEACH]; } 50 | +(id)systemDarkTealColor { return colors[BLUE]; } 51 | +(id)systemGray2Color { return colors[SURFACE2]; } 52 | +(id)systemDarkGrayColor { return colors[SURFACE2]; } 53 | +(id)systemDarkPinkColor { return colors[RED]; } 54 | +(id)systemDarkBlueColor { return colors[ACCENT]; } 55 | +(id)yellowColor { return colors[YELLOW]; } 56 | +(id)systemMidGrayColor { return colors[SUBTEXT0]; } 57 | +(id)systemFillColor { return colors[BASE]; } 58 | +(id)secondarySystemFillColor { return colors[BASE]; } 59 | +(id)systemDarkLightGrayTintColor { return colors[BASE]; } 60 | +(id)systemYellowColor { return colors[YELLOW]; } 61 | +(id)tableSelectionGradientStartColor { return colors[ACCENT]; } 62 | +(id)systemLightGrayTintColor { return colors[BLUE]; } 63 | +(id)systemLightMidGrayTintColor { return colors[BLUE]; } 64 | +(id)darkGrayColor { return colors[SURFACE2]; } 65 | +(id)redColor { return colors[RED]; } 66 | +(id)noContentDarkGradientBackgroundColor { return colors[RED]; } 67 | +(id)externalSystemTealColor { return colors[TEAL]; } 68 | +(id)systemDarkLightMidGrayColor { return colors[OVERLAY2]; } 69 | +(id)systemRedColor { return colors[RED]; } 70 | +(id)tableCellValue2BlueColor { return colors[LAVENDER]; } 71 | +(id)placeholderTextColor { return colors[OVERLAY2]; } 72 | +(id)quaternaryLabelColor { return colors[OVERLAY2]; } 73 | +(id)secondaryLabelColor { return colors[OVERLAY2]; } 74 | +(id)tertiaryLabelColor { return colors[OVERLAY2]; } 75 | +(id)labelColor { return colors[TEXT]; } 76 | +(id)lightTextColor { return colors[TEXT]; } 77 | +(id)tableCellBackgroundColor { return colors[TEXT]; } 78 | +(id)tableCellGroupedBackgroundColorLegacyWhite { return colors[TEXT]; } 79 | +(id)systemWhiteColor { return colors[TEXT]; } 80 | +(id)tableCellHighlightedBackgroundColor { return colors[TEXT]; } 81 | +(id)tableCellFocusedBackgroundColor { return colors[TEXT]; } 82 | +(id)tableCellDisabledBackgroundColor { return colors[TEXT]; } 83 | +(id)tableShadowColor { return colors[TEXT]; } 84 | +(id)systemBlueColor { return colors[ACCENT]; } 85 | +(id)textFieldAtomBlueColor { return colors[ACCENT]; } 86 | +(id)tableCellBlueTextColor { return colors[ACCENT]; } 87 | +(id)orangeColor { return colors[PEACH]; } 88 | +(id)underPageBackgroundColor { return colors[OVERLAY2]; } 89 | +(id)greenColor { return colors[GREEN]; } 90 | +(id)grayColor { return colors[OVERLAY1]; } 91 | +(id)tableCellGrayTextColor { return colors[OVERLAY1]; } 92 | +(id)tertiarySystemBackgroundColor { return colors[SURFACE1]; } 93 | +(id)tertiarySystemGroupedBackgroundColor { return colors[SURFACE1]; } 94 | +(id)systemGray5Color { return colors[SURFACE1]; } 95 | +(id)systemOrangeColor { return colors[PEACH]; } 96 | +(id)sectionHeaderBorderColor { return colors[SUBTEXT1]; } 97 | +(id)systemMidGrayTintColor { return colors[BASE]; } 98 | +(id)systemDarkMidGrayTintColor { return colors[BASE]; } 99 | +(id)systemPinkColor { return colors[PINK]; } 100 | +(id)insertionPointColor { return colors[BLUE]; } 101 | +(id)systemDarkOrangeColor { return colors[PEACH]; } 102 | +(id)tableSelectionGradientEndColor { return colors[BLUE]; } 103 | +(id)systemDarkRedColor { return colors[RED]; } 104 | +(id)externalSystemRedColor { return colors[RED]; } 105 | +(id)systemTealColor { return colors[TEAL]; } 106 | +(id)systemGrayTintColor { return colors[BASE]; } 107 | +(id)systemDarkGrayTintColor { return colors[BASE]; } 108 | +(id)viewFlipsideBackgroundColor { return colors[MANTLE]; } 109 | +(id)purpleColor { return colors[MAUVE]; } 110 | +(id)sectionHeaderBackgroundColor { return colors[TEXT]; } 111 | +(id)tableCellValue1BlueColor { return colors[LAVENDER]; } 112 | +(id)tableCellGroupedBackgroundColor { return colors[MANTLE]; } 113 | +(id)secondarySystemBackgroundColor { return colors[MANTLE]; } 114 | +(id)secondarySystemGroupedBackgroundColor { return colors[MANTLE]; } 115 | +(id)systemGray6Color { return colors[MANTLE]; } 116 | +(id)systemLightGrayColor { return colors[SUBTEXT1]; } 117 | +(id)systemGray3Color { return colors[SURFACE2]; } 118 | +(id)systemDarkLightMidGrayTintColor { return colors[BASE]; } 119 | +(id)tableSeparatorColor { return colors[SURFACE2]; } 120 | +(id)tableSeparatorDarkColor { return colors[SURFACE2]; } 121 | +(id)separatorColor { return colors[SURFACE2]; } 122 | +(id)tableSeparatorLightColor { return colors[SURFACE2]; } 123 | +(id)systemPurpleColor { return colors[MAUVE]; } 124 | +(id)systemDarkExtraLightGrayColor { return colors[SUBTEXT1]; } 125 | %end 126 | -------------------------------------------------------------------------------- /make: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # this is a wrapper for make, because for some reason i can't get normal make to run 3 | # the codegen only once and not end up in a race condition 4 | # IF YOU KNOW HOW TO FIX THIS PLEASE MAKE A PR 5 | 6 | ./custom_include.sh && RAN_CODEGEN=1 make $@ -------------------------------------------------------------------------------- /prefs/Controllers/CatppuccinRootListController.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface CatppuccinRootListController : PSListController 4 | @end 5 | -------------------------------------------------------------------------------- /prefs/Controllers/CatppuccinRootListController.mm: -------------------------------------------------------------------------------- 1 | #import "CatppuccinRootListController.h" 2 | 3 | #import 4 | #import 5 | #import 6 | 7 | @implementation CatppuccinRootListController 8 | - (NSArray *)specifiers { 9 | if (!_specifiers) _specifiers = [self loadSpecifiersFromPlistName:@"Root" target:self]; 10 | return _specifiers; 11 | } 12 | 13 | - (instancetype)init { 14 | self = [super init]; 15 | if (!self) return self; 16 | 17 | UIButton *respringButton = [UIButton buttonWithType:UIButtonTypeCustom]; 18 | [respringButton setTitle:@"Respring" forState:UIControlStateNormal]; 19 | [respringButton setTitleColor:[UIColor systemBlueColor] forState:UIControlStateNormal]; 20 | [respringButton addTarget:self action:@selector(respring:) forControlEvents:UIControlEventTouchUpInside]; 21 | 22 | self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:respringButton]; 23 | 24 | return self; 25 | } 26 | 27 | - (void)respring:(UIButton *)sender { 28 | Class FBSSystemService = objc_getClass("FBSSystemService"); 29 | Class SBSRelaunchAction = objc_getClass("SBSRelaunchAction"); 30 | 31 | id restartAction = [SBSRelaunchAction actionWithReason:@"RestartRenderServer" options:4 targetURL:nil]; 32 | [[FBSSystemService sharedService] sendActions:[NSSet setWithObject:restartAction] withResult:nil]; 33 | } 34 | @end 35 | -------------------------------------------------------------------------------- /prefs/Controllers/CatppuccinThirdPartyListController.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface CatppuccinThirdPartyListController : PSListController 4 | @end 5 | -------------------------------------------------------------------------------- /prefs/Controllers/CatppuccinThirdPartyListController.mm: -------------------------------------------------------------------------------- 1 | #import "CatppuccinThirdPartyListController.h" 2 | 3 | #import 4 | #import 5 | #import 6 | 7 | 8 | @implementation CatppuccinThirdPartyListController 9 | - (NSArray *)specifiers { 10 | if (!_specifiers) _specifiers = [self loadSpecifiersFromPlistName:@"ThirdParty" target:self]; 11 | return _specifiers; 12 | } 13 | 14 | - (instancetype)init { 15 | self = [super init]; 16 | if (!self) return self; 17 | 18 | UIButton *respringButton = [UIButton buttonWithType:UIButtonTypeCustom]; 19 | [respringButton setTitle:@"Respring" forState:UIControlStateNormal]; 20 | [respringButton setTitleColor:[UIColor systemBlueColor] forState:UIControlStateNormal]; 21 | [respringButton addTarget:self action:@selector(respring:) forControlEvents:UIControlEventTouchUpInside]; 22 | 23 | self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:respringButton]; 24 | 25 | return self; 26 | } 27 | 28 | - (void)respring:(UIButton *)sender { 29 | Class FBSSystemService = objc_getClass("FBSSystemService"); 30 | Class SBSRelaunchAction = objc_getClass("SBSRelaunchAction"); 31 | 32 | id restartAction = [SBSRelaunchAction actionWithReason:@"RestartRenderServer" options:4 targetURL:nil]; 33 | [[FBSSystemService sharedService] sendActions:[NSSet setWithObject:restartAction] withResult:nil]; 34 | } 35 | @end 36 | -------------------------------------------------------------------------------- /prefs/Makefile: -------------------------------------------------------------------------------- 1 | BUNDLE_NAME = CatppuccinPreferences 2 | 3 | $(BUNDLE_NAME)_FILES = $(wildcard Controllers/*.mm) $(wildcard Cells/*.mm) 4 | $(BUNDLE_NAME)_INSTALL_PATH = /Library/PreferenceBundles 5 | $(BUNDLE_NAME)_CFLAGS = -fobjc-arc 6 | $(BUNDLE_NAME)_PRIVATE_FRAMEWORKS = Preferences 7 | 8 | include $(THEOS)/makefiles/common.mk 9 | include $(THEOS_MAKE_PATH)/bundle.mk 10 | -------------------------------------------------------------------------------- /prefs/Resources/Root.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | items 6 | 7 | 8 | cell 9 | PSGroupCell 10 | label 11 | Flavor 12 | 13 | 14 | cell 15 | PSSegmentCell 16 | default 17 | mocha 18 | defaults 19 | com.catppuccin.ios.preferences 20 | key 21 | flavor 22 | validValues 23 | 24 | latte 25 | frappe 26 | macchiato 27 | mocha 28 | 29 | validTitles 30 | 31 | Latte 32 | Frappé 33 | Macchiato 34 | Mocha 35 | 36 | alignment 37 | 1 38 | PostNotification 39 | com.catppuccin.ios.preferences/reload 40 | 41 | 42 | 43 | cell 44 | PSGroupCell 45 | label 46 | 47 | 48 | 49 | 50 | cell 51 | PSLinkListCell 52 | detail 53 | PSListItemsController 54 | label 55 | Accent color 56 | default 57 | blue 58 | defaults 59 | com.catppuccin.ios.preferences 60 | key 61 | accent 62 | validValues 63 | 64 | rosewater 65 | flamingo 66 | pink 67 | mauve 68 | red 69 | maroon 70 | peach 71 | yellow 72 | green 73 | teal 74 | sky 75 | sapphire 76 | blue 77 | lavender 78 | 79 | validTitles 80 | 81 | Rosewater 82 | Flamingo 83 | Pink 84 | Mauve 85 | Red 86 | Maroon 87 | Peach 88 | Yellow 89 | Green 90 | Teal 91 | Sky 92 | Sapphire 93 | Blue 94 | Lavender 95 | 96 | PostNotification 97 | com.catppuccin.ios.preferences/reload 98 | 99 | 100 | 101 | cell 102 | PSGroupCell 103 | label 104 | 105 | 106 | 107 | 108 | cell 109 | PSLinkCell 110 | label 111 | Third Party Apps 112 | isController 113 | 114 | detail 115 | CatppuccinThirdPartyListController 116 | 117 | 118 | 119 | cell 120 | PSGroupCell 121 | footerText 122 | Made with ❤️ by rooot, Echo and r58Playz 123 | footerAlignment 124 | 1 125 | 126 | 127 | 128 | title 129 | Catppuccin 130 | 131 | 132 | -------------------------------------------------------------------------------- /prefs/Resources/ThirdParty.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | items 6 | 7 | 8 | cell 9 | PSSwitchCell 10 | label 11 | YouTube 12 | default 13 | 14 | defaults 15 | com.catppuccin.ios.preferences 16 | key 17 | youtube 18 | icon 19 | youtube.png 20 | PostNotification 21 | com.catppuccin.ios.preferences/reload 22 | 23 | 24 | 25 | cell 26 | PSSwitchCell 27 | label 28 | Reddit 29 | default 30 | 31 | defaults 32 | com.catppuccin.ios.preferences 33 | key 34 | reddit 35 | icon 36 | reddit.png 37 | PostNotification 38 | com.catppuccin.ios.preferences/reload 39 | 40 | 41 | 42 | cell 43 | PSGroupCell 44 | footerText 45 | Made with ❤️ by Echo and Rooot 46 | footerAlignment 47 | 1 48 | 49 | 50 | 51 | title 52 | Third Party Apps 53 | 54 | 55 | -------------------------------------------------------------------------------- /prefs/Resources/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoootTheFox/catppuccin-ios/bf8b22bbf9e8f29fb7422d41537ddb1d246e05d4/prefs/Resources/icon.png -------------------------------------------------------------------------------- /prefs/Resources/icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoootTheFox/catppuccin-ios/bf8b22bbf9e8f29fb7422d41537ddb1d246e05d4/prefs/Resources/icon@2x.png -------------------------------------------------------------------------------- /prefs/Resources/icon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoootTheFox/catppuccin-ios/bf8b22bbf9e8f29fb7422d41537ddb1d246e05d4/prefs/Resources/icon@3x.png -------------------------------------------------------------------------------- /prefs/Resources/reddit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoootTheFox/catppuccin-ios/bf8b22bbf9e8f29fb7422d41537ddb1d246e05d4/prefs/Resources/reddit.png -------------------------------------------------------------------------------- /prefs/Resources/reddit@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoootTheFox/catppuccin-ios/bf8b22bbf9e8f29fb7422d41537ddb1d246e05d4/prefs/Resources/reddit@2x.png -------------------------------------------------------------------------------- /prefs/Resources/reddit@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoootTheFox/catppuccin-ios/bf8b22bbf9e8f29fb7422d41537ddb1d246e05d4/prefs/Resources/reddit@3x.png -------------------------------------------------------------------------------- /prefs/Resources/youtube.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoootTheFox/catppuccin-ios/bf8b22bbf9e8f29fb7422d41537ddb1d246e05d4/prefs/Resources/youtube.png -------------------------------------------------------------------------------- /prefs/Resources/youtube@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoootTheFox/catppuccin-ios/bf8b22bbf9e8f29fb7422d41537ddb1d246e05d4/prefs/Resources/youtube@2x.png -------------------------------------------------------------------------------- /prefs/Resources/youtube@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RoootTheFox/catppuccin-ios/bf8b22bbf9e8f29fb7422d41537ddb1d246e05d4/prefs/Resources/youtube@3x.png -------------------------------------------------------------------------------- /prefs/layout/Library/PreferenceLoader/Preferences/CatppuccinPreferences.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | entry 6 | 7 | bundle 8 | CatppuccinPreferences 9 | cell 10 | PSLinkCell 11 | detail 12 | CatppuccinRootListController 13 | isController 14 | 15 | label 16 | Catppuccin 17 | icon 18 | icon.png 19 | 20 | 21 | 22 | --------------------------------------------------------------------------------