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