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