├── .DS_Store ├── Palera1n GUI ├── .DS_Store ├── Preview Content │ └── Preview Assets.xcassets │ │ └── Contents.json ├── Assets.xcassets │ ├── Palera1n.imageset │ │ ├── Palera1n.png │ │ └── Contents.json │ ├── AppIcon.appiconset │ │ ├── Palera1n.png │ │ ├── Palera1n(1).png │ │ ├── Palera1n(1) 1.png │ │ └── Contents.json │ ├── Contents.json │ └── AccentColor.colorset │ │ └── Contents.json ├── Palera1n_GUI.entitlements ├── Device.py ├── Palera1n_GUIApp.swift ├── Palera1n.py ├── InstructionsView.swift ├── DeviceView.swift ├── ContentView.swift └── Localizable.xcstrings ├── Palera1n GUI.xcodeproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ │ ├── checkm8.xcuserdatad │ │ └── UserInterfaceState.xcuserstate │ │ └── timi2506.xcuserdatad │ │ └── UserInterfaceState.xcuserstate ├── xcuserdata │ ├── checkm8.xcuserdatad │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ └── timi2506.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist └── project.pbxproj └── README.md /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Checkm8ra1n/Palera1n-GUI/HEAD/.DS_Store -------------------------------------------------------------------------------- /Palera1n GUI/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Checkm8ra1n/Palera1n-GUI/HEAD/Palera1n GUI/.DS_Store -------------------------------------------------------------------------------- /Palera1n GUI/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Palera1n GUI/Assets.xcassets/Palera1n.imageset/Palera1n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Checkm8ra1n/Palera1n-GUI/HEAD/Palera1n GUI/Assets.xcassets/Palera1n.imageset/Palera1n.png -------------------------------------------------------------------------------- /Palera1n GUI/Assets.xcassets/AppIcon.appiconset/Palera1n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Checkm8ra1n/Palera1n-GUI/HEAD/Palera1n GUI/Assets.xcassets/AppIcon.appiconset/Palera1n.png -------------------------------------------------------------------------------- /Palera1n GUI/Assets.xcassets/AppIcon.appiconset/Palera1n(1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Checkm8ra1n/Palera1n-GUI/HEAD/Palera1n GUI/Assets.xcassets/AppIcon.appiconset/Palera1n(1).png -------------------------------------------------------------------------------- /Palera1n GUI/Assets.xcassets/AppIcon.appiconset/Palera1n(1) 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Checkm8ra1n/Palera1n-GUI/HEAD/Palera1n GUI/Assets.xcassets/AppIcon.appiconset/Palera1n(1) 1.png -------------------------------------------------------------------------------- /Palera1n GUI.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Palera1n GUI/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | }, 6 | "properties" : { 7 | "generate-swift-asset-symbol-extensions" : "disabled" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Palera1n GUI/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Palera1n GUI/Palera1n_GUI.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Palera1n GUI.xcodeproj/project.xcworkspace/xcuserdata/checkm8.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Checkm8ra1n/Palera1n-GUI/HEAD/Palera1n GUI.xcodeproj/project.xcworkspace/xcuserdata/checkm8.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Palera1n GUI.xcodeproj/project.xcworkspace/xcuserdata/timi2506.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Checkm8ra1n/Palera1n-GUI/HEAD/Palera1n GUI.xcodeproj/project.xcworkspace/xcuserdata/timi2506.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Palera1n GUI/Assets.xcassets/Palera1n.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Palera1n.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Palera1n GUI.xcodeproj/xcuserdata/checkm8.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Palera1n GUI.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Palera1n GUI.xcodeproj/xcuserdata/timi2506.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Palera1n GUI.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Palera1n GUI 2 | Palera1n GUI for MacOS and Linux [see unix branch](https://github.com/Checkm8ra1n/Palera1n-GUI/tree/unix) 3 | ## Changelog 4 | ## 1.3 5 | Added: 6 | 7 | - Italian Translations 8 | - Changed Icon 9 | - Added the instructions button 10 | ## 1.2 11 | UI and Icon Update by @timi2506 https://github.com/timi2506 https://twitter.com/timi2506 (Great Idea, thank you 😄) 12 | 13 | fixed minimum Requirements by lowering it to macOS 11 Big Sur 14 | ## 1.1 15 | Added device information and if is supported 16 | ## 1.0 17 | Initial Relase 18 | -------------------------------------------------------------------------------- /Palera1n GUI/Device.py: -------------------------------------------------------------------------------- 1 | import subprocess 2 | 3 | def get_device_info(): 4 | try: 5 | # Esegui il comando 'ideviceinfo' 6 | device_info_output = subprocess.check_output(["ideviceinfo"], universal_newlines=True) 7 | 8 | # Analizza l'output 9 | lines = device_info_output.strip().split("\n") 10 | device_model = None 11 | ios_version = None 12 | for line in lines: 13 | if line.startswith("ProductType:"): 14 | device_model = line.split(": ")[1] 15 | elif line.startswith("ProductVersion:"): 16 | ios_version = line.split(": ")[1] 17 | 18 | # Stampa per il debug 19 | print(f"Device Model: {device_model}, iOS Version: {ios_version}") 20 | 21 | return device_model, ios_version 22 | except Exception as e: 23 | print(f"Error: {e}") 24 | 25 | if __name__ == "__main__": 26 | get_device_info() 27 | -------------------------------------------------------------------------------- /Palera1n GUI/Palera1n_GUIApp.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Palera1n_GUIApp.swift 3 | // Palera1n GUI 4 | // 5 | // Created by Checkm8Croft on 27/09/24. 6 | // 7 | 8 | import SwiftUI 9 | 10 | @main 11 | struct Palera1n_GUIApp: App { 12 | // Use an AppDelegate to manage window configurations 13 | @NSApplicationDelegateAdaptor(AppDelegate.self) var appDelegate 14 | 15 | var body: some Scene { 16 | WindowGroup { 17 | ContentView() 18 | } 19 | } 20 | } 21 | 22 | class AppDelegate: NSObject, NSApplicationDelegate { 23 | var window: NSWindow? 24 | 25 | func applicationDidFinishLaunching(_ notification: Notification) { 26 | if let window = NSApplication.shared.windows.first { 27 | // Set the window size to 2024x1500 28 | window.setContentSize(NSSize(width: 700, height: 600)) 29 | window.styleMask.insert(.resizable) // Ensure the window is resizable 30 | window.center() // Center the window on the screen 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Palera1n GUI/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "mac", 5 | "scale" : "1x", 6 | "size" : "16x16" 7 | }, 8 | { 9 | "idiom" : "mac", 10 | "scale" : "2x", 11 | "size" : "16x16" 12 | }, 13 | { 14 | "idiom" : "mac", 15 | "scale" : "1x", 16 | "size" : "32x32" 17 | }, 18 | { 19 | "idiom" : "mac", 20 | "scale" : "2x", 21 | "size" : "32x32" 22 | }, 23 | { 24 | "idiom" : "mac", 25 | "scale" : "1x", 26 | "size" : "128x128" 27 | }, 28 | { 29 | "filename" : "Palera1n(1).png", 30 | "idiom" : "mac", 31 | "scale" : "2x", 32 | "size" : "128x128" 33 | }, 34 | { 35 | "filename" : "Palera1n(1) 1.png", 36 | "idiom" : "mac", 37 | "scale" : "1x", 38 | "size" : "256x256" 39 | }, 40 | { 41 | "idiom" : "mac", 42 | "scale" : "2x", 43 | "size" : "256x256" 44 | }, 45 | { 46 | "idiom" : "mac", 47 | "scale" : "1x", 48 | "size" : "512x512" 49 | }, 50 | { 51 | "idiom" : "mac", 52 | "scale" : "2x", 53 | "size" : "512x512" 54 | } 55 | ], 56 | "info" : { 57 | "author" : "xcode", 58 | "version" : 1 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /Palera1n GUI/Palera1n.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import subprocess 3 | import os 4 | 5 | def run_palera1n(arguments): 6 | command = ["palera1n"] + arguments 7 | terminal_command = f"tell application \"Terminal\" to do script \"{' '.join(command)}; exit\"" 8 | 9 | try: 10 | # Esegui il comando tramite AppleScript per aprire il Terminale esternamente 11 | subprocess.run(["osascript", "-e", terminal_command]) 12 | except subprocess.CalledProcessError as e: 13 | print(f"Errore nell'esecuzione del comando nel terminale: {e}") 14 | 15 | def main(): 16 | if len(sys.argv) < 2: 17 | print("Errore: Devi specificare gli argomenti.") 18 | return 19 | 20 | args = sys.argv[1:] 21 | 22 | if args == ["-f", "-c"]: 23 | run_palera1n(["-f", "-c"]) 24 | elif args == ["-f", "-B"]: 25 | run_palera1n(["-f", "-B"]) 26 | elif args == ["-f"]: 27 | run_palera1n(["-f"]) 28 | elif args == ["-l"]: 29 | run_palera1n(["-l"]) 30 | elif args == ["-f", "--force-revert"]: 31 | run_palera1n(["-f", "--force-revert"]) 32 | elif args == ["-l", "--force-revert"]: 33 | run_palera1n(["-l", "--force-revert"]) 34 | elif args == ["-n"]: 35 | run_palera1n(["-n"]) 36 | else: 37 | print("Errore: Argomenti non validi.") 38 | 39 | if __name__ == "__main__": 40 | main() 41 | -------------------------------------------------------------------------------- /Palera1n GUI/InstructionsView.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | 3 | struct InstructionsView: View { 4 | var body: some View { 5 | VStack(spacing: 30) { 6 | VStack(alignment: .leading, spacing: 10) { 7 | Text(NSLocalizedString("rootful_title", comment: "Rootful Title")) 8 | .font(.title2) 9 | .fontWeight(.bold) 10 | .foregroundColor(.blue) 11 | 12 | Text("• \(NSLocalizedString("rootful_1", comment: "Rootful instruction 1"))") 13 | Text("• \(NSLocalizedString("rootful_2", comment: "Rootful instruction 2"))") 14 | Text("• \(NSLocalizedString("rootful_3", comment: "Rootful instruction 3"))") 15 | } 16 | .padding() 17 | .background(Color.blue.opacity(0.1)) 18 | .cornerRadius(12) 19 | .frame(maxWidth: .infinity, alignment: .leading) 20 | 21 | VStack(alignment: .leading, spacing: 10) { 22 | Text(NSLocalizedString("rootless_title", comment: "Rootless Title")) 23 | .font(.title2) 24 | .fontWeight(.bold) 25 | .foregroundColor(.green) 26 | 27 | Text("• \(NSLocalizedString("rootless_1", comment: "Rootless instruction 1"))") 28 | Text("• \(NSLocalizedString("rootless_2", comment: "Rootless instruction 2"))") 29 | } 30 | .padding() 31 | .background(Color.green.opacity(0.1)) 32 | .cornerRadius(12) 33 | .frame(maxWidth: .infinity, alignment: .leading) 34 | } 35 | .padding() 36 | .frame(maxWidth: 600) 37 | } 38 | } 39 | 40 | #Preview { 41 | InstructionsView() 42 | } 43 | -------------------------------------------------------------------------------- /Palera1n GUI/DeviceView.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | 3 | struct DeviceView: View { 4 | @State private var deviceModel: String = "N/A" 5 | @State private var iosVersion: String = "N/A" 6 | @State private var isSupported: Bool = false 7 | @State private var statusColor: Color = .red 8 | 9 | var body: some View { 10 | VStack { 11 | Text("Model: \(deviceModel)") 12 | Text("iOS Version: \(iosVersion)") 13 | Text("Supported: \(isSupported ? "Yes" : "No")") 14 | .foregroundColor(isSupported ? .green : .red) 15 | 16 | Button("Check Device Info") { 17 | checkDeviceInfo() 18 | } 19 | } 20 | .padding() 21 | } 22 | 23 | func checkDeviceInfo() { 24 | let task = Process() 25 | task.launchPath = "/opt/local/bin/ideviceinfo" 26 | task.arguments = [] 27 | 28 | let pipe = Pipe() 29 | task.standardOutput = pipe 30 | 31 | task.terminationHandler = { _ in 32 | let data = pipe.fileHandleForReading.readDataToEndOfFile() 33 | if let output = String(data: data, encoding: .utf8) { 34 | parseDeviceInfo(output) 35 | } 36 | } 37 | 38 | task.launch() 39 | } 40 | 41 | func parseDeviceInfo(_ output: String) { 42 | let lines = output.split(separator: "\n").map { String($0) } 43 | var model: String? 44 | var version: String? 45 | 46 | for line in lines { 47 | if line.contains("ProductType:") { 48 | model = String(line.split(separator: ":")[1]).trimmingCharacters(in: .whitespaces) 49 | } 50 | if line.contains("ProductVersion:") { 51 | version = String(line.split(separator: ":")[1]).trimmingCharacters(in: .whitespaces) 52 | } 53 | } 54 | 55 | deviceModel = model ?? "N/A" 56 | iosVersion = version ?? "N/A" 57 | checkSupport() 58 | } 59 | 60 | func checkSupport() { 61 | let supportedModels = ["iPad6,11", "iPad6,12", "iPad7,5", "iPad7,6", "iPad7,12", "iPad7,11", "iPad5,3", "iPad5,4", "iPad5,1", "iPad5,2", "iPad6,7", "iPad6,8", "iPad6,4", "iPad6,3", "iPad7,1", "iPad7,2"] 62 | 63 | // Check for iPhone models in range 64 | if deviceModel.starts(with: "iPhone"), let modelNumber = deviceModel.components(separatedBy: ",").last, let majorVersion = Int(modelNumber) { 65 | let majorModel = deviceModel.components(separatedBy: ",")[0].dropFirst(6) // Extract the iPhone model number 66 | if let modelInt = Int(majorModel) { 67 | if modelInt >= 7 && modelInt <= 10 { // iPhone 7,2 to iPhone 10,6 range 68 | isSupported = true 69 | statusColor = .green 70 | return 71 | } 72 | } 73 | } 74 | 75 | // Check if the iPad is in the supported list 76 | if supportedModels.contains(deviceModel) { 77 | isSupported = true 78 | statusColor = .green 79 | } else { 80 | isSupported = false 81 | statusColor = .red 82 | } 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /Palera1n GUI/ContentView.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | 3 | struct ModeButtonStyle: ButtonStyle { 4 | var backgroundColor: Color 5 | var foregroundColor: Color = .white 6 | 7 | func makeBody(configuration: Configuration) -> some View { 8 | configuration.label 9 | .font(.headline) 10 | .frame(width: 120, height: 40) 11 | .foregroundColor(foregroundColor) 12 | .background(backgroundColor.opacity(configuration.isPressed ? 0.6 : 0.8)) 13 | .cornerRadius(10) 14 | .shadow(radius: 5) 15 | .opacity(configuration.isPressed ? 0.9 : 1) 16 | } 17 | } 18 | 19 | struct ContentView: View { 20 | @State private var showInstructions = false 21 | 22 | var body: some View { 23 | ZStack { 24 | LinearGradient(gradient: Gradient(colors: [.blue, .purple]), 25 | startPoint: .top, 26 | endPoint: .bottom) 27 | .ignoresSafeArea() 28 | 29 | VStack(spacing: 20) { 30 | Image("Palera1n") 31 | .resizable() 32 | .frame(width: 150, height: 150) 33 | .cornerRadius(15) 34 | .shadow(radius: 10) 35 | .padding(.top, 40) 36 | 37 | Text(NSLocalizedString("app_title", comment: "App Title")) 38 | .font(.system(size: 32, weight: .bold, design: .rounded)) 39 | .foregroundColor(.white) 40 | .padding(.bottom, 5) 41 | 42 | Text(NSLocalizedString("unofficial_project", comment: "Unofficial project text")) 43 | .font(.headline) 44 | .foregroundColor(.red) 45 | .padding(.bottom, 20) 46 | 47 | VStack(spacing: 10) { 48 | Text(NSLocalizedString("rootful_title", comment: "Rootful Title")) 49 | .font(.title2) 50 | .fontWeight(.semibold) 51 | .foregroundColor(.blue) 52 | 53 | HStack(spacing: 20) { 54 | Button(NSLocalizedString("create_fakefs", comment: "Create FakeFS")) { 55 | runScript(arguments: ["-f", "-c"]) 56 | } 57 | .buttonStyle(ModeButtonStyle(backgroundColor: .blue)) 58 | 59 | Button(NSLocalizedString("create_bindfs", comment: "Create BindFS")) { 60 | runScript(arguments: ["-f", "-B"]) 61 | } 62 | .buttonStyle(ModeButtonStyle(backgroundColor: .blue)) 63 | 64 | Button(NSLocalizedString("boot_only", comment: "Boot Only")) { 65 | runScript(arguments: ["-f"]) 66 | } 67 | .buttonStyle(ModeButtonStyle(backgroundColor: .blue)) 68 | 69 | Button(NSLocalizedString("force_revert", comment: "Force Revert")) { 70 | runScript(arguments: ["-f", "--force-revert"]) 71 | } 72 | .buttonStyle(ModeButtonStyle(backgroundColor: .blue)) 73 | } 74 | } 75 | .padding(.bottom, 20) 76 | 77 | VStack(spacing: 10) { 78 | Text(NSLocalizedString("rootless_title", comment: "Rootless Title")) 79 | .font(.title2) 80 | .fontWeight(.semibold) 81 | .foregroundColor(.green) 82 | 83 | HStack(spacing: 20) { 84 | Button(NSLocalizedString("boot", comment: "Boot")) { 85 | runScript(arguments: ["-l"]) 86 | } 87 | .buttonStyle(ModeButtonStyle(backgroundColor: .green)) 88 | 89 | Button(NSLocalizedString("force_revert", comment: "Force Revert")) { 90 | runScript(arguments: ["-l", "--force-revert"]) 91 | } 92 | .buttonStyle(ModeButtonStyle(backgroundColor: .green)) 93 | 94 | Button(NSLocalizedString("exit_recovery", comment: "Exit Recovery")) { 95 | runScript(arguments: ["-n"]) 96 | } 97 | .buttonStyle(ModeButtonStyle(backgroundColor: .green)) 98 | } 99 | } 100 | 101 | HStack { 102 | Button(NSLocalizedString("instruction_button", comment: "Show Instructions")) { 103 | showInstructions = true 104 | } 105 | .foregroundColor(.white) 106 | .padding(.top, 10) 107 | } 108 | .frame(maxWidth: .infinity, alignment: .trailing) 109 | .padding(.trailing) 110 | } 111 | .padding() 112 | .frame(width: 600) 113 | } 114 | .sheet(isPresented: $showInstructions) { 115 | InstructionsView() 116 | .background(Color.black) 117 | } 118 | } 119 | 120 | func runScript(arguments: [String]) { 121 | guard let scriptPath = Bundle.main.path(forResource: "Palera1n", ofType: "py") else { 122 | print("Script not found") 123 | return 124 | } 125 | 126 | let argsString = arguments.joined(separator: " ") 127 | let command = "python3 '\(scriptPath)' \(argsString)" 128 | 129 | let appleScript = """ 130 | tell application "Terminal" 131 | activate 132 | if (count of windows) is 0 then 133 | do script "\(command)" 134 | else 135 | do script "\(command)" in front window 136 | end if 137 | end tell 138 | """ 139 | 140 | let task = Process() 141 | task.launchPath = "/usr/bin/osascript" 142 | task.arguments = ["-e", appleScript] 143 | task.launch() 144 | } 145 | 146 | 147 | 148 | } 149 | 150 | #Preview { 151 | ContentView() 152 | } 153 | -------------------------------------------------------------------------------- /Palera1n GUI/Localizable.xcstrings: -------------------------------------------------------------------------------- 1 | { 2 | "sourceLanguage" : "en", 3 | "strings" : { 4 | "• %@" : { 5 | "localizations" : { 6 | "it" : { 7 | "stringUnit" : { 8 | "state" : "translated", 9 | "value" : "• %@" 10 | } 11 | } 12 | } 13 | }, 14 | "app_title" : { 15 | "comment" : "App Title", 16 | "localizations" : { 17 | "en" : { 18 | "stringUnit" : { 19 | "state" : "translated", 20 | "value" : "Palera1n GUI" 21 | } 22 | }, 23 | "it" : { 24 | "stringUnit" : { 25 | "state" : "translated", 26 | "value" : "Palera1n GUI" 27 | } 28 | } 29 | } 30 | }, 31 | "boot" : { 32 | "comment" : "Boot", 33 | "localizations" : { 34 | "en" : { 35 | "stringUnit" : { 36 | "state" : "translated", 37 | "value" : "Boot" 38 | } 39 | }, 40 | "it" : { 41 | "stringUnit" : { 42 | "state" : "translated", 43 | "value" : "Boot" 44 | } 45 | } 46 | } 47 | }, 48 | "boot_only" : { 49 | "comment" : "Boot Only", 50 | "localizations" : { 51 | "en" : { 52 | "stringUnit" : { 53 | "state" : "translated", 54 | "value" : "Boot Only" 55 | } 56 | }, 57 | "it" : { 58 | "stringUnit" : { 59 | "state" : "translated", 60 | "value" : "Solo Boot" 61 | } 62 | } 63 | } 64 | }, 65 | "Check Device Info" : { 66 | "localizations" : { 67 | "en" : { 68 | "stringUnit" : { 69 | "state" : "translated", 70 | "value" : "Check Device Info" 71 | } 72 | }, 73 | "it" : { 74 | "stringUnit" : { 75 | "state" : "translated", 76 | "value" : "Controlla Info Dispositivo" 77 | } 78 | } 79 | } 80 | }, 81 | "create_bindfs" : { 82 | "comment" : "Create BindFS", 83 | "localizations" : { 84 | "en" : { 85 | "stringUnit" : { 86 | "state" : "translated", 87 | "value" : "Create BindFS" 88 | } 89 | }, 90 | "it" : { 91 | "stringUnit" : { 92 | "state" : "translated", 93 | "value" : "Crea BindFS" 94 | } 95 | } 96 | } 97 | }, 98 | "create_fakefs" : { 99 | "comment" : "Create FakeFS", 100 | "localizations" : { 101 | "en" : { 102 | "stringUnit" : { 103 | "state" : "translated", 104 | "value" : "Create FakeFS" 105 | } 106 | }, 107 | "it" : { 108 | "stringUnit" : { 109 | "state" : "translated", 110 | "value" : "Crea FakeFS" 111 | } 112 | } 113 | } 114 | }, 115 | "exit_recovery" : { 116 | "comment" : "Exit Recovery", 117 | "localizations" : { 118 | "en" : { 119 | "stringUnit" : { 120 | "state" : "translated", 121 | "value" : "Exit Recovery" 122 | } 123 | }, 124 | "it" : { 125 | "stringUnit" : { 126 | "state" : "translated", 127 | "value" : "Esci da Recovery" 128 | } 129 | } 130 | } 131 | }, 132 | "force_revert" : { 133 | "comment" : "Force Revert", 134 | "localizations" : { 135 | "en" : { 136 | "stringUnit" : { 137 | "state" : "translated", 138 | "value" : "Force Revert" 139 | } 140 | }, 141 | "it" : { 142 | "stringUnit" : { 143 | "state" : "translated", 144 | "value" : "Elimina Jailbreak" 145 | } 146 | } 147 | } 148 | }, 149 | "instruction_button" : { 150 | "comment" : "Show Instructions", 151 | "localizations" : { 152 | "en" : { 153 | "stringUnit" : { 154 | "state" : "translated", 155 | "value" : "Don’t know which to use?" 156 | } 157 | }, 158 | "it" : { 159 | "stringUnit" : { 160 | "state" : "translated", 161 | "value" : "Non sai quale usare?" 162 | } 163 | } 164 | } 165 | }, 166 | "iOS Version: %@" : { 167 | "localizations" : { 168 | "en" : { 169 | "stringUnit" : { 170 | "state" : "translated", 171 | "value" : "iOS Version: %@" 172 | } 173 | }, 174 | "it" : { 175 | "stringUnit" : { 176 | "state" : "translated", 177 | "value" : "Versione di iOS: %@" 178 | } 179 | } 180 | } 181 | }, 182 | "Key" : { 183 | "extractionState" : "manual", 184 | "localizations" : { 185 | "en" : { 186 | "stringUnit" : { 187 | "state" : "translated", 188 | "value" : "Key" 189 | } 190 | }, 191 | "it" : { 192 | "stringUnit" : { 193 | "state" : "translated", 194 | "value" : "Chiave" 195 | } 196 | } 197 | } 198 | }, 199 | "Model: %@" : { 200 | "localizations" : { 201 | "en" : { 202 | "stringUnit" : { 203 | "state" : "translated", 204 | "value" : "Model: %@" 205 | } 206 | }, 207 | "it" : { 208 | "stringUnit" : { 209 | "state" : "translated", 210 | "value" : "Modello: %@" 211 | } 212 | } 213 | } 214 | }, 215 | "rootful_1" : { 216 | "comment" : "Rootful instruction 1", 217 | "localizations" : { 218 | "en" : { 219 | "stringUnit" : { 220 | "state" : "translated", 221 | "value" : "Deprecated mode, for older tweaks, better rootless to use" 222 | } 223 | }, 224 | "it" : { 225 | "stringUnit" : { 226 | "state" : "translated", 227 | "value" : "Modalità obsoleta, per i tweak più vecchi, meglio se usi rootless" 228 | } 229 | } 230 | } 231 | }, 232 | "rootful_2" : { 233 | "comment" : "Rootful instruction 2", 234 | "localizations" : { 235 | "en" : { 236 | "stringUnit" : { 237 | "state" : "translated", 238 | "value" : "First click on Create FakeFS, (or BindFS for 16GB devices) and follow the instructions on the terminal" 239 | } 240 | }, 241 | "it" : { 242 | "stringUnit" : { 243 | "state" : "translated", 244 | "value" : "Per prima cosa clicca su Crea FakeFS, (o BindFS se hai un dispositivo con 16GB) e segui le istruzioni nel terminale" 245 | } 246 | } 247 | } 248 | }, 249 | "rootful_3" : { 250 | "comment" : "Rootful instruction 3", 251 | "localizations" : { 252 | "en" : { 253 | "stringUnit" : { 254 | "state" : "translated", 255 | "value" : "Once finished, click on Boot Only, follow the instructions again and enjoy!" 256 | } 257 | }, 258 | "it" : { 259 | "stringUnit" : { 260 | "state" : "translated", 261 | "value" : "Una volta finito, clicca su Solo Boot, segui di nuovo le istruzioni e fine!" 262 | } 263 | } 264 | } 265 | }, 266 | "rootful_title" : { 267 | "comment" : "Rootful Title", 268 | "localizations" : { 269 | "en" : { 270 | "stringUnit" : { 271 | "state" : "translated", 272 | "value" : "Rootful" 273 | } 274 | }, 275 | "it" : { 276 | "stringUnit" : { 277 | "state" : "translated", 278 | "value" : "Rootful" 279 | } 280 | } 281 | } 282 | }, 283 | "rootless_1" : { 284 | "comment" : "Rootless instruction 1", 285 | "localizations" : { 286 | "en" : { 287 | "stringUnit" : { 288 | "state" : "translated", 289 | "value" : "Rootless is more simple and faster to use, " 290 | } 291 | }, 292 | "it" : { 293 | "stringUnit" : { 294 | "state" : "translated", 295 | "value" : "Rootless è più semplice e veloce da usare" 296 | } 297 | } 298 | } 299 | }, 300 | "rootless_2" : { 301 | "comment" : "Rootless instruction 2", 302 | "localizations" : { 303 | "en" : { 304 | "stringUnit" : { 305 | "state" : "translated", 306 | "value" : "Just click on Boot, follow the terminal instructions, once finished connect to wifi your iDevice and you should see Palera1n on your homescreen and enjoy!" 307 | } 308 | }, 309 | "it" : { 310 | "stringUnit" : { 311 | "state" : "translated", 312 | "value" : "Clicca su Boot, segui le istruzioni nel terminale, una volta finito, connetti al wifi il tuo dispositivo e dovresti vedere Palera1n nel tua schermata home, fine!" 313 | } 314 | } 315 | } 316 | }, 317 | "rootless_title" : { 318 | "comment" : "Rootless Title", 319 | "localizations" : { 320 | "en" : { 321 | "stringUnit" : { 322 | "state" : "translated", 323 | "value" : "Rootless" 324 | } 325 | }, 326 | "it" : { 327 | "stringUnit" : { 328 | "state" : "translated", 329 | "value" : "Rootless" 330 | } 331 | } 332 | } 333 | }, 334 | "Supported: %@" : { 335 | "localizations" : { 336 | "en" : { 337 | "stringUnit" : { 338 | "state" : "translated", 339 | "value" : "Supported: %@" 340 | } 341 | }, 342 | "it" : { 343 | "stringUnit" : { 344 | "state" : "translated", 345 | "value" : "Supportato: %@" 346 | } 347 | } 348 | } 349 | }, 350 | "unofficial_project" : { 351 | "comment" : "Unofficial project text", 352 | "localizations" : { 353 | "en" : { 354 | "stringUnit" : { 355 | "state" : "translated", 356 | "value" : "Unofficial Project" 357 | } 358 | }, 359 | "it" : { 360 | "stringUnit" : { 361 | "state" : "translated", 362 | "value" : "Progetto non ufficiale!" 363 | } 364 | } 365 | } 366 | } 367 | }, 368 | "version" : "1.0" 369 | } -------------------------------------------------------------------------------- /Palera1n GUI.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 77; 7 | objects = { 8 | 9 | /* Begin PBXFileReference section */ 10 | 0C2825CD2CA73F410058E6A8 /* Palera1n GUI.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Palera1n GUI.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 11 | /* End PBXFileReference section */ 12 | 13 | /* Begin PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet section */ 14 | 0C97FFD32CA8104C007AE200 /* Exceptions for "Palera1n GUI" folder in "Compile Sources" phase from "Palera1n GUI" target */ = { 15 | isa = PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet; 16 | buildPhase = 0C2825C92CA73F410058E6A8 /* Sources */; 17 | membershipExceptions = ( 18 | Palera1n.py, 19 | ); 20 | }; 21 | /* End PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet section */ 22 | 23 | /* Begin PBXFileSystemSynchronizedRootGroup section */ 24 | 0C2825CF2CA73F410058E6A8 /* Palera1n GUI */ = { 25 | isa = PBXFileSystemSynchronizedRootGroup; 26 | exceptions = ( 27 | 0C97FFD32CA8104C007AE200 /* Exceptions for "Palera1n GUI" folder in "Compile Sources" phase from "Palera1n GUI" target */, 28 | ); 29 | path = "Palera1n GUI"; 30 | sourceTree = ""; 31 | }; 32 | /* End PBXFileSystemSynchronizedRootGroup section */ 33 | 34 | /* Begin PBXFrameworksBuildPhase section */ 35 | 0C2825CA2CA73F410058E6A8 /* Frameworks */ = { 36 | isa = PBXFrameworksBuildPhase; 37 | buildActionMask = 2147483647; 38 | files = ( 39 | ); 40 | runOnlyForDeploymentPostprocessing = 0; 41 | }; 42 | /* End PBXFrameworksBuildPhase section */ 43 | 44 | /* Begin PBXGroup section */ 45 | 0C2825C42CA73F410058E6A8 = { 46 | isa = PBXGroup; 47 | children = ( 48 | 0C2825CF2CA73F410058E6A8 /* Palera1n GUI */, 49 | 0C2825CE2CA73F410058E6A8 /* Products */, 50 | ); 51 | sourceTree = ""; 52 | }; 53 | 0C2825CE2CA73F410058E6A8 /* Products */ = { 54 | isa = PBXGroup; 55 | children = ( 56 | 0C2825CD2CA73F410058E6A8 /* Palera1n GUI.app */, 57 | ); 58 | name = Products; 59 | sourceTree = ""; 60 | }; 61 | /* End PBXGroup section */ 62 | 63 | /* Begin PBXNativeTarget section */ 64 | 0C2825CC2CA73F410058E6A8 /* Palera1n GUI */ = { 65 | isa = PBXNativeTarget; 66 | buildConfigurationList = 0C2825DC2CA73F430058E6A8 /* Build configuration list for PBXNativeTarget "Palera1n GUI" */; 67 | buildPhases = ( 68 | 0C2825C92CA73F410058E6A8 /* Sources */, 69 | 0C2825CA2CA73F410058E6A8 /* Frameworks */, 70 | 0C2825CB2CA73F410058E6A8 /* Resources */, 71 | ); 72 | buildRules = ( 73 | ); 74 | dependencies = ( 75 | ); 76 | fileSystemSynchronizedGroups = ( 77 | 0C2825CF2CA73F410058E6A8 /* Palera1n GUI */, 78 | ); 79 | name = "Palera1n GUI"; 80 | packageProductDependencies = ( 81 | ); 82 | productName = "Palera1n GUI"; 83 | productReference = 0C2825CD2CA73F410058E6A8 /* Palera1n GUI.app */; 84 | productType = "com.apple.product-type.application"; 85 | }; 86 | /* End PBXNativeTarget section */ 87 | 88 | /* Begin PBXProject section */ 89 | 0C2825C52CA73F410058E6A8 /* Project object */ = { 90 | isa = PBXProject; 91 | attributes = { 92 | BuildIndependentTargetsInParallel = 1; 93 | LastSwiftUpdateCheck = 1600; 94 | LastUpgradeCheck = 1600; 95 | TargetAttributes = { 96 | 0C2825CC2CA73F410058E6A8 = { 97 | CreatedOnToolsVersion = 16.0; 98 | }; 99 | }; 100 | }; 101 | buildConfigurationList = 0C2825C82CA73F410058E6A8 /* Build configuration list for PBXProject "Palera1n GUI" */; 102 | developmentRegion = en; 103 | hasScannedForEncodings = 0; 104 | knownRegions = ( 105 | en, 106 | Base, 107 | it, 108 | ); 109 | mainGroup = 0C2825C42CA73F410058E6A8; 110 | minimizedProjectReferenceProxies = 1; 111 | preferredProjectObjectVersion = 77; 112 | productRefGroup = 0C2825CE2CA73F410058E6A8 /* Products */; 113 | projectDirPath = ""; 114 | projectRoot = ""; 115 | targets = ( 116 | 0C2825CC2CA73F410058E6A8 /* Palera1n GUI */, 117 | ); 118 | }; 119 | /* End PBXProject section */ 120 | 121 | /* Begin PBXResourcesBuildPhase section */ 122 | 0C2825CB2CA73F410058E6A8 /* Resources */ = { 123 | isa = PBXResourcesBuildPhase; 124 | buildActionMask = 2147483647; 125 | files = ( 126 | ); 127 | runOnlyForDeploymentPostprocessing = 0; 128 | }; 129 | /* End PBXResourcesBuildPhase section */ 130 | 131 | /* Begin PBXSourcesBuildPhase section */ 132 | 0C2825C92CA73F410058E6A8 /* Sources */ = { 133 | isa = PBXSourcesBuildPhase; 134 | buildActionMask = 2147483647; 135 | files = ( 136 | ); 137 | runOnlyForDeploymentPostprocessing = 0; 138 | }; 139 | /* End PBXSourcesBuildPhase section */ 140 | 141 | /* Begin XCBuildConfiguration section */ 142 | 0C2825DA2CA73F430058E6A8 /* Debug */ = { 143 | isa = XCBuildConfiguration; 144 | buildSettings = { 145 | ALWAYS_SEARCH_USER_PATHS = NO; 146 | ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; 147 | CLANG_ANALYZER_NONNULL = YES; 148 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 149 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; 150 | CLANG_ENABLE_MODULES = YES; 151 | CLANG_ENABLE_OBJC_ARC = YES; 152 | CLANG_ENABLE_OBJC_WEAK = YES; 153 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 154 | CLANG_WARN_BOOL_CONVERSION = YES; 155 | CLANG_WARN_COMMA = YES; 156 | CLANG_WARN_CONSTANT_CONVERSION = YES; 157 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 158 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 159 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 160 | CLANG_WARN_EMPTY_BODY = YES; 161 | CLANG_WARN_ENUM_CONVERSION = YES; 162 | CLANG_WARN_INFINITE_RECURSION = YES; 163 | CLANG_WARN_INT_CONVERSION = YES; 164 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 165 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 166 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 167 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 168 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 169 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 170 | CLANG_WARN_STRICT_PROTOTYPES = YES; 171 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 172 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 173 | CLANG_WARN_UNREACHABLE_CODE = YES; 174 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 175 | COPY_PHASE_STRIP = NO; 176 | DEBUG_INFORMATION_FORMAT = dwarf; 177 | ENABLE_STRICT_OBJC_MSGSEND = YES; 178 | ENABLE_TESTABILITY = YES; 179 | ENABLE_USER_SCRIPT_SANDBOXING = YES; 180 | GCC_C_LANGUAGE_STANDARD = gnu17; 181 | GCC_DYNAMIC_NO_PIC = NO; 182 | GCC_NO_COMMON_BLOCKS = YES; 183 | GCC_OPTIMIZATION_LEVEL = 0; 184 | GCC_PREPROCESSOR_DEFINITIONS = ( 185 | "DEBUG=1", 186 | "$(inherited)", 187 | ); 188 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 189 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 190 | GCC_WARN_UNDECLARED_SELECTOR = YES; 191 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 192 | GCC_WARN_UNUSED_FUNCTION = YES; 193 | GCC_WARN_UNUSED_VARIABLE = YES; 194 | LOCALIZATION_PREFERS_STRING_CATALOGS = YES; 195 | MACOSX_DEPLOYMENT_TARGET = 15.0; 196 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 197 | MTL_FAST_MATH = YES; 198 | ONLY_ACTIVE_ARCH = YES; 199 | SDKROOT = macosx; 200 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; 201 | SWIFT_EMIT_LOC_STRINGS = YES; 202 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 203 | }; 204 | name = Debug; 205 | }; 206 | 0C2825DB2CA73F430058E6A8 /* Release */ = { 207 | isa = XCBuildConfiguration; 208 | buildSettings = { 209 | ALWAYS_SEARCH_USER_PATHS = NO; 210 | ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; 211 | CLANG_ANALYZER_NONNULL = YES; 212 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 213 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; 214 | CLANG_ENABLE_MODULES = YES; 215 | CLANG_ENABLE_OBJC_ARC = YES; 216 | CLANG_ENABLE_OBJC_WEAK = YES; 217 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 218 | CLANG_WARN_BOOL_CONVERSION = YES; 219 | CLANG_WARN_COMMA = YES; 220 | CLANG_WARN_CONSTANT_CONVERSION = YES; 221 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 222 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 223 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 224 | CLANG_WARN_EMPTY_BODY = YES; 225 | CLANG_WARN_ENUM_CONVERSION = YES; 226 | CLANG_WARN_INFINITE_RECURSION = YES; 227 | CLANG_WARN_INT_CONVERSION = YES; 228 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 229 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 230 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 231 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 232 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 233 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 234 | CLANG_WARN_STRICT_PROTOTYPES = YES; 235 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 236 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 237 | CLANG_WARN_UNREACHABLE_CODE = YES; 238 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 239 | COPY_PHASE_STRIP = NO; 240 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 241 | ENABLE_NS_ASSERTIONS = NO; 242 | ENABLE_STRICT_OBJC_MSGSEND = YES; 243 | ENABLE_USER_SCRIPT_SANDBOXING = YES; 244 | GCC_C_LANGUAGE_STANDARD = gnu17; 245 | GCC_NO_COMMON_BLOCKS = YES; 246 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 247 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 248 | GCC_WARN_UNDECLARED_SELECTOR = YES; 249 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 250 | GCC_WARN_UNUSED_FUNCTION = YES; 251 | GCC_WARN_UNUSED_VARIABLE = YES; 252 | LOCALIZATION_PREFERS_STRING_CATALOGS = YES; 253 | MACOSX_DEPLOYMENT_TARGET = 15.0; 254 | MTL_ENABLE_DEBUG_INFO = NO; 255 | MTL_FAST_MATH = YES; 256 | SDKROOT = macosx; 257 | SWIFT_COMPILATION_MODE = wholemodule; 258 | SWIFT_EMIT_LOC_STRINGS = YES; 259 | }; 260 | name = Release; 261 | }; 262 | 0C2825DD2CA73F430058E6A8 /* Debug */ = { 263 | isa = XCBuildConfiguration; 264 | buildSettings = { 265 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 266 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 267 | CODE_SIGN_ENTITLEMENTS = "Palera1n GUI/Palera1n_GUI.entitlements"; 268 | CODE_SIGN_STYLE = Automatic; 269 | COMBINE_HIDPI_IMAGES = YES; 270 | CURRENT_PROJECT_VERSION = 1; 271 | DEVELOPMENT_ASSET_PATHS = "\"Palera1n GUI/Preview Content\""; 272 | ENABLE_PREVIEWS = YES; 273 | GENERATE_INFOPLIST_FILE = YES; 274 | INFOPLIST_KEY_NSHumanReadableCopyright = ""; 275 | LD_RUNPATH_SEARCH_PATHS = ( 276 | "$(inherited)", 277 | "@executable_path/../Frameworks", 278 | ); 279 | MACOSX_DEPLOYMENT_TARGET = 11; 280 | MARKETING_VERSION = 1.0; 281 | PRODUCT_BUNDLE_IDENTIFIER = "checkm8ra1n.Palera1n-GUI"; 282 | PRODUCT_NAME = "$(TARGET_NAME)"; 283 | SWIFT_EMIT_LOC_STRINGS = YES; 284 | SWIFT_VERSION = 5.0; 285 | }; 286 | name = Debug; 287 | }; 288 | 0C2825DE2CA73F430058E6A8 /* Release */ = { 289 | isa = XCBuildConfiguration; 290 | buildSettings = { 291 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 292 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 293 | CODE_SIGN_ENTITLEMENTS = "Palera1n GUI/Palera1n_GUI.entitlements"; 294 | CODE_SIGN_STYLE = Automatic; 295 | COMBINE_HIDPI_IMAGES = YES; 296 | CURRENT_PROJECT_VERSION = 1; 297 | DEVELOPMENT_ASSET_PATHS = "\"Palera1n GUI/Preview Content\""; 298 | ENABLE_PREVIEWS = YES; 299 | GENERATE_INFOPLIST_FILE = YES; 300 | INFOPLIST_KEY_NSHumanReadableCopyright = ""; 301 | LD_RUNPATH_SEARCH_PATHS = ( 302 | "$(inherited)", 303 | "@executable_path/../Frameworks", 304 | ); 305 | MACOSX_DEPLOYMENT_TARGET = 11; 306 | MARKETING_VERSION = 1.0; 307 | PRODUCT_BUNDLE_IDENTIFIER = "checkm8ra1n.Palera1n-GUI"; 308 | PRODUCT_NAME = "$(TARGET_NAME)"; 309 | SWIFT_EMIT_LOC_STRINGS = YES; 310 | SWIFT_VERSION = 5.0; 311 | }; 312 | name = Release; 313 | }; 314 | /* End XCBuildConfiguration section */ 315 | 316 | /* Begin XCConfigurationList section */ 317 | 0C2825C82CA73F410058E6A8 /* Build configuration list for PBXProject "Palera1n GUI" */ = { 318 | isa = XCConfigurationList; 319 | buildConfigurations = ( 320 | 0C2825DA2CA73F430058E6A8 /* Debug */, 321 | 0C2825DB2CA73F430058E6A8 /* Release */, 322 | ); 323 | defaultConfigurationIsVisible = 0; 324 | defaultConfigurationName = Release; 325 | }; 326 | 0C2825DC2CA73F430058E6A8 /* Build configuration list for PBXNativeTarget "Palera1n GUI" */ = { 327 | isa = XCConfigurationList; 328 | buildConfigurations = ( 329 | 0C2825DD2CA73F430058E6A8 /* Debug */, 330 | 0C2825DE2CA73F430058E6A8 /* Release */, 331 | ); 332 | defaultConfigurationIsVisible = 0; 333 | defaultConfigurationName = Release; 334 | }; 335 | /* End XCConfigurationList section */ 336 | }; 337 | rootObject = 0C2825C52CA73F410058E6A8 /* Project object */; 338 | } 339 | --------------------------------------------------------------------------------