Merge pull request #271 from leminlimez/v4.2

v4.2
This commit is contained in:
leminlimez
2024-12-11 17:48:26 -05:00
committed by GitHub
17 changed files with 2525 additions and 892 deletions

View File

@@ -5,39 +5,68 @@ Sparserestore works on all versions iOS 17.0-17.7 and iOS 18.0-18.1 beta 4. Ther
**iOS 18.2 developer beta 3 (public beta 2) and newer is not supported.**
Make sure you have installed the [requirements](#requirements) if you are on Windows or Linux.
This uses the sparserestore exploit to write to files outside of the intended restore location, like mobilegestalt. Read the [Getting the File](#getting-the-file) section to learn how to get your mobilegestalt file.
Note: I am not responsible if your device bootloops. Please back up your data before using!
## Features
### iOS 17.0+
- Enable Dynamic Island on any device
- Enable iPhone X gestures on iPhone SEs
- Change Device Model Name (ie what shows in the Settings app)
- Enable Boot Chime
- Enable Charge Limit
- Enable Tap to Wake on unsupported devices (ie iPhone SEs)
- Enable iPhone 16 Settings
- Enable Collision SOS
- Enable Stage Manager
- Disable the Wallpaper Parallax
- Disable Region Restrictions (ie. Shutter Sound)
- Note: This does not include enabling EU sideloading outside the EU. That will come later.
- Enable AOD on any device
- Show the Apple Pencil options in Settings app
- Show the Action Button options in Settings app
- Show Internal Storage info (Might cause problems on some devices, use at your own risk)
- Enabling lock screen clock animation, lock screen page duplication button, and more!
- Disabling the new iOS 18 Photos UI
- EU Enabler
- AI Enabler
- Springboard Options (from Cowabunga Lite)
- Internal Options (from Cowabunga Lite)
- EU Enabler (iOS 17.6-)
- Springboard Options (from [Cowabunga Lite](https://github.com/leminlimez/CowabungaLite))
- Set Lock Screen Footnote
- Disable Lock After Respring
- Disable Screen Dimming While Charging
- Disable Low Battery Alerts
- Internal Options (from [Cowabunga Lite](https://github.com/leminlimez/CowabungaLite))
- Build Version in Status Bar
- Force Right to Left
- Force Metal HUD Debug
- iMessage Diagnostics
- IDS Diagnostics
- VC Diagnostics
- App Store Debug Gesture
- Notes App Debug Mode
- Disable Daemons:
- OTAd
- UsageTrackingAgent
- Game Center
- Screen Time Agent
- Logs, Dumps, and Crash Reports
- ATWAKEUP
- Tipsd
- VPN
- Chinese WLAN service
- HealthKit
- Risky (Hidden) Options:
- Disable thermalmonitord
- OTA Killer
- Custom Resolution
### iOS 18.0+
- Enable iPhone 16 camera button page in the Settings app
- Enable AOD & AOD Vibrancy on any device
- Feature Flags (iOS 18.1b4-):
- Enabling lock screen clock animation, lock screen page duplication button, and more!
- Disabling the new iOS 18 Photos UI (iOS 18.0 betas only, unknown which patched it)
### iOS 18.1+
- AI Enabler + Device Spoofing (fixed in iOS 18.2db3)
## Running the Program
**Requirements:**
## Requirements:
- **Windows:**
- Either [Apple Devices (from Microsoft Store)](https://apps.microsoft.com/detail/9np83lwlpz9k%3Fhl%3Den-US%26gl%3DUS&ved=2ahUKEwjE-svo7qyJAxWTlYkEHQpbH3oQFnoECBoQAQ&usg=AOvVaw0rZTXCFmRaHAifkEEu9tMI) app or [iTunes (from Apple website)](https://support.apple.com/en-us/106372)
- **Linux:**
@@ -48,6 +77,7 @@ Note: I am not responsible if your device bootloops. Please back up your data be
- PySide6
- Python 3.8 or newer
## Running the Python Program
Note: It is highly recommended to use a virtual environment:
```
python3 -m venv .env # only needed once
@@ -82,6 +112,7 @@ If you would like to read more about the inner workings of the exploit and iOS r
## Credits
- [JJTech](https://github.com/JJTech0130) for Sparserestore/[TrollRestore](https://github.com/JJTech0130/TrollRestore)
- [disfordottie](https://x.com/disfordottie) for some global flag features
- [Mikasa-san](https://github.com/Mikasa-san) for [Quiet Daemon](https://github.com/Mikasa-san/QuietDaemon)
- [sneakyf1shy](https://github.com/f1shy-dev) for [AI Eligibility](https://gist.github.com/f1shy-dev/23b4a78dc283edd30ae2b2e6429129b5) (iOS 18.1 beta 4 and below)
- [lrdsnow](https://github.com/Lrdsnow) for [EU Enabler](https://github.com/Lrdsnow/EUEnabler)
- [pymobiledevice3](https://github.com/doronz88/pymobiledevice3) for restoring and device algorithms.

View File

@@ -27,14 +27,14 @@ def concat_exploit_file(file: FileToRestore, files_list: list[FileToRestore], la
if last_domain != domain_path:
files_list.append(backup.Directory(
"",
f"{domain_path}/",
f"{domain_path}",
owner=file.owner,
group=file.group
))
new_last_domain = domain_path
files_list.append(backup.ConcreteFile(
"",
f"{domain_path}/{name}",
f"{domain_path}{name}",
owner=file.owner,
group=file.group,
contents=file.contents

View File

@@ -0,0 +1,40 @@
from requests import get, RequestException
from json import JSONDecodeError
from devicemanagement.constants import Version
Nugget_Repo = "leminlimez/Nugget/releases/latest"
last_fetched_version: str = None
def is_update_available(version: str, build: int) -> bool:
# check github for if version < tag (or == tag but build > 0)
latest_version = get_latest_version()
if latest_version != None:
if build > 0 and latest_version == version: # on beta version when there is a public release
return True
elif Version(latest_version) > Version(version):
return True
return False
def get_latest_version() -> str:
global last_fetched_version
# get the cached version
if last_fetched_version != None:
return last_fetched_version
# fetch with web requests
try:
response = get(f"https://api.github.com/repos/{Nugget_Repo}")
response.raise_for_status() # To raise an exception for 4xx/5xx responses
data = response.json() # Parse the JSON response
# Check if "tag_name" exists in the response and compare the version
tag_name = data.get("tag_name")
if tag_name:
last_fetched_version = tag_name.replace("v", "") # Remove 'v' from tag_name
return last_fetched_version
except RequestException as e:
print(f"Error fetching data: {e}")
except JSONDecodeError as e:
print(f"Error parsing JSON: {e}")
return None

View File

@@ -7,11 +7,12 @@ from PySide6.QtCore import QSettings
from pymobiledevice3 import usbmux
from pymobiledevice3.lockdown import create_using_usbmux
from pymobiledevice3.exceptions import MuxException, PasswordRequiredError
from devicemanagement.constants import Device, Version
from devicemanagement.data_singleton import DataSingleton
from tweaks.tweaks import tweaks, FeatureFlagTweak, EligibilityTweak, AITweak, BasicPlistTweak, AdvancedPlistTweak, RdarFixTweak
from tweaks.tweaks import tweaks, FeatureFlagTweak, EligibilityTweak, AITweak, BasicPlistTweak, AdvancedPlistTweak, RdarFixTweak, NullifyFileTweak
from tweaks.custom_gestalt_tweaks import CustomGestaltTweaks
from tweaks.basic_plist_locations import FileLocationsList, RiskyFileLocationsList
from Sparserestore.restore import restore_files, FileToRestore
@@ -34,7 +35,7 @@ def show_apply_error(e: Exception, update_label=lambda x: None):
detailed_txt="Your device is managed and MDM backup encryption is on. This must be turned off in order for Nugget to work. Please do not use Nugget on your school/work device!")
elif "SessionInactive" in str(e):
show_error_msg("The session was terminated. Refresh the device list and try again.")
elif "Password" in str(e):
elif isinstance(e, PasswordRequiredError):
show_error_msg("Device is password protected! You must trust the computer on your device.",
detailed_txt="Unlock your device. On the popup, click \"Trust\", enter your password, then try again.")
else:
@@ -50,9 +51,11 @@ class DeviceManager:
self.current_device_index = 0
# preferences
self.apply_over_wifi = True
# TODO: Move to its own class
self.apply_over_wifi = False
self.auto_reboot = True
self.allow_risky_tweaks = False
self.show_all_spoofable_models = False
self.skip_setup = True
self.supervised = False
self.organization_name = ""
@@ -116,14 +119,16 @@ class DeviceManager:
)
tweaks["RdarFix"].get_rdar_mode(model)
self.devices.append(dev)
except MuxException as e:
# there is probably a cable issue
print(f"MUX ERROR with lockdown device with UUID {device.serial}")
show_error_msg("MuxException: " + repr(e) + "\n\nIf you keep receiving this error, try using a different cable or port.",
detailed_txt=str(traceback.format_exc()))
except Exception as e:
print(f"ERROR with lockdown device with UUID {device.serial}")
show_error_msg(type(e).__name__ + ": " + repr(e), detailed_txt=str(traceback.format_exc()))
connected_devices.remove(device)
else:
connected_devices.remove(device)
if len(connected_devices) > 0:
if len(self.devices) > 0:
self.set_current_device(index=0)
else:
self.set_current_device(index=None)
@@ -203,8 +208,8 @@ class DeviceManager:
QMessageBox.information(None, "Pairing Reset", "Your device's pairing was successfully reset. Refresh the device list before applying.")
def add_skip_setup(self, files_to_restore: list[FileToRestore]):
if self.skip_setup and not self.get_current_device_supported():
def add_skip_setup(self, files_to_restore: list[FileToRestore], restoring_domains: bool):
if self.skip_setup and (not self.get_current_device_supported() or restoring_domains):
# add the 2 skip setup files
cloud_config_plist: dict = {
"SkipSetup": ["WiFi", "Location", "Restore", "SIMSetup", "Android", "AppleID", "IntendedUser", "TOS", "Siri", "ScreenTime", "Diagnostics", "SoftwareUpdate", "Passcode", "Biometric", "Payment", "Zoom", "DisplayTone", "MessagingActivationUsingPhoneNumber", "HomeButtonSensitivity", "CloudStorage", "ScreenSaver", "TapToSetup", "Keyboard", "PreferredLanguage", "SpokenLanguage", "WatchMigration", "OnBoarding", "TVProviderSignIn", "TVHomeScreenSync", "Privacy", "TVRoom", "iMessageAndFaceTime", "AppStore", "Safety", "Multitasking", "ActionButton", "TermsOfAddress", "AccessibilityAppearance", "Welcome", "Appearance", "RestoreCompleted", "UpdateCompleted"],
@@ -220,8 +225,8 @@ class DeviceManager:
cloud_config_plist["OrganizationName"] = self.organization_name
files_to_restore.append(FileToRestore(
contents=plistlib.dumps(cloud_config_plist),
restore_path="systemgroup.com.apple.configurationprofiles/Library/ConfigurationProfiles/CloudConfigurationDetails.plist",
domain="SysSharedContainerDomain-."
restore_path="Library/ConfigurationProfiles/CloudConfigurationDetails.plist",
domain="SysSharedContainerDomain-systemgroup.com.apple.configurationprofiles"
))
purplebuddy_plist: dict = {
"SetupDone": True,
@@ -234,7 +239,12 @@ class DeviceManager:
domain="ManagedPreferencesDomain"
))
def get_domain_for_path(self, path: str, fully_patched: bool = False) -> str:
def get_domain_for_path(self, path: str, owner: int = 501) -> str:
# returns Domain: str?, Path: str
if self.get_current_device_supported() and not path.startswith("/var/mobile/") and not owner == 0:
# don't do anything on sparserestore versions
return path, None
fully_patched = self.get_current_device_patched()
# just make the Sys Containers to use the regular way (won't work for mga)
sysSharedContainer = "SysSharedContainerDomain-"
sysContainer = "SysContainerDomain-"
@@ -260,22 +270,18 @@ class DeviceManager:
parts = new_path.split("/")
new_domain += parts[0]
new_path = new_path.replace(parts[0] + "/", "")
return new_domain, new_path
return None, path
return new_path, new_domain
return path, None
def concat_file(self, contents: str, path: str, files_to_restore: list[FileToRestore]):
if self.get_current_device_supported():
files_to_restore.append(FileToRestore(
contents=contents,
restore_path=path
))
else:
domain, file_path = self.get_domain_for_path(path, fully_patched=self.get_current_device_patched())
files_to_restore.append(FileToRestore(
contents=contents,
restore_path=file_path,
domain=domain
))
def concat_file(self, contents: str, path: str, files_to_restore: list[FileToRestore], owner: int = 501, group: int = 501):
# TODO: try using inodes here instead
file_path, domain = self.get_domain_for_path(path, owner=owner)
files_to_restore.append(FileToRestore(
contents=contents,
restore_path=file_path,
domain=domain,
owner=owner, group=group
))
## APPLYING OR REMOVING TWEAKS AND RESTORING
def apply_changes(self, resetting: bool = False, update_label=lambda x: None):
@@ -291,6 +297,9 @@ class DeviceManager:
eligibility_files = None
ai_file = None
basic_plists: dict = {}
basic_plists_ownership: dict = {}
files_data: dict = {}
uses_domains: bool = False
# set the plist keys
if not resetting:
@@ -304,6 +313,13 @@ class DeviceManager:
ai_file = tweak.apply_tweak()
elif isinstance(tweak, BasicPlistTweak) or isinstance(tweak, RdarFixTweak) or isinstance(tweak, AdvancedPlistTweak):
basic_plists = tweak.apply_tweak(basic_plists, self.allow_risky_tweaks)
basic_plists_ownership[tweak.file_location] = tweak.owner
if tweak.owner == 0:
uses_domains = True
elif isinstance(tweak, NullifyFileTweak):
tweak.apply_tweak(files_data)
if tweak.enabled and tweak.file_location.value.startswith("/var/mobile/"):
uses_domains = True
else:
if gestalt_plist != None:
gestalt_plist = tweak.apply_tweak(gestalt_plist)
@@ -327,7 +343,7 @@ class DeviceManager:
path="/var/preferences/FeatureFlags/Global.plist",
files_to_restore=files_to_restore
)
self.add_skip_setup(files_to_restore)
self.add_skip_setup(files_to_restore, uses_domains)
if gestalt_data != None:
self.concat_file(
contents=gestalt_data,
@@ -354,10 +370,19 @@ class DeviceManager:
files_to_restore=files_to_restore
)
for location, plist in basic_plists.items():
ownership = basic_plists_ownership[location]
self.concat_file(
contents=plistlib.dumps(plist),
path=location.value,
files_to_restore=files_to_restore
files_to_restore=files_to_restore,
owner=ownership, group=ownership
)
for location, data in files_data.items():
self.concat_file(
contents=data,
path=location.value,
files_to_restore=files_to_restore,
owner=ownership, group=ownership
)
# reset basic tweaks
if resetting:
@@ -397,9 +422,9 @@ class DeviceManager:
settings.setValue(self.data_singleton.current_device.uuid + "_model", "")
settings.setValue(self.data_singleton.current_device.uuid + "_hardware", "")
settings.setValue(self.data_singleton.current_device.uuid + "_cpu", "")
domain, file_path = self.get_domain_for_path(
"/var/containers/Shared/SystemGroup/systemgroup.com.apple.mobilegestaltcache/Library/Caches/com.apple.MobileGestalt.plist",
fully_patched=self.get_current_device_patched())
file_path, domain = self.get_domain_for_path(
"/var/containers/Shared/SystemGroup/systemgroup.com.apple.mobilegestaltcache/Library/Caches/com.apple.MobileGestalt.plist"
)
restore_files(files=[FileToRestore(
contents=b"",
restore_path=file_path,

68
gui/dialogs.py Normal file
View File

@@ -0,0 +1,68 @@
from PySide6.QtWidgets import QDialog, QDialogButtonBox, QLabel, QVBoxLayout
from PySide6.QtGui import QFont
from webbrowser import open_new_tab
from controllers.web_request_handler import Nugget_Repo, get_latest_version
class GestaltDialog(QDialog):
def __init__(self, device_manager, gestalt_label, selected_file, parent=None):
super().__init__(parent)
self.device_manager = device_manager
self.gestalt_label = gestalt_label
self.selected_file = selected_file
QBtn = (
QDialogButtonBox.Ok | QDialogButtonBox.Cancel
)
self.buttonBox = QDialogButtonBox(QBtn)
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject)
layout = QVBoxLayout()
message = QLabel("The gestalt file looks like it was made for a different device.\nAre you sure you want to use this one?")
layout.addWidget(message)
layout.addWidget(self.buttonBox)
self.setLayout(layout)
def accept(self):
self.device_manager.data_singleton.gestalt_path = self.selected_file
self.gestalt_label.setText(self.selected_file)
super().accept()
class UpdateAppDialog(QDialog):
def __init__(self, parent=None):
super().__init__(parent)
QBtn = (
QDialogButtonBox.Ok | QDialogButtonBox.Cancel
)
self.buttonBox = QDialogButtonBox(QBtn)
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject)
layout = QVBoxLayout()
title = QLabel("Update Available")
title_font = QFont()
title_font.setBold(True)
title.setFont(title_font)
message_text = ""
latest_version = get_latest_version()
if latest_version != None:
message_text += f"Nugget v{latest_version} is available. "
message_text += "Would you like to go to the download on GitHub?"
message = QLabel(message_text)
layout.addWidget(title)
layout.addWidget(message)
layout.addWidget(self.buttonBox)
self.setLayout(layout)
def accept(self):
# open up the repo page
open_new_tab(f"https://github.com/{Nugget_Repo}")
super().accept()

View File

@@ -1,27 +0,0 @@
from PySide6.QtWidgets import QDialog, QDialogButtonBox, QLabel, QVBoxLayout
class GestaltDialog(QDialog):
def __init__(self, device_manager, gestalt_label, selected_file, parent=None):
super().__init__(parent)
self.device_manager = device_manager
self.gestalt_label = gestalt_label
self.selected_file = selected_file
QBtn = (
QDialogButtonBox.Ok | QDialogButtonBox.Cancel
)
self.buttonBox = QDialogButtonBox(QBtn)
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject)
layout = QVBoxLayout()
message = QLabel("The gestalt file looks like it was made for a different device.\nAre you sure you want to use this one?")
layout.addWidget(message)
layout.addWidget(self.buttonBox)
self.setLayout(layout)
def accept(self):
self.device_manager.data_singleton.gestalt_path = self.selected_file
self.gestalt_label.setText(self.selected_file)
super().accept()

View File

@@ -7,13 +7,19 @@ from pymobiledevice3.lockdown import create_using_usbmux
from qt.ui_mainwindow import Ui_Nugget
from controllers.web_request_handler import is_update_available
from devicemanagement.constants import Version
from devicemanagement.device_manager import DeviceManager
from gui.gestalt_dialog import GestaltDialog
from gui.dialogs import GestaltDialog, UpdateAppDialog
from tweaks.tweaks import tweaks
from tweaks.custom_gestalt_tweaks import CustomGestaltTweaks, ValueTypeStrings
from tweaks.daemons_tweak import Daemon
App_Version = "4.2"
App_Build = 0
class Page(Enum):
Home = 0
@@ -22,9 +28,10 @@ class Page(Enum):
EUEnabler = 3
Springboard = 4
InternalOptions = 5
RiskyTweaks = 6
Apply = 7
Settings = 8
Daemons = 6
RiskyTweaks = 7
Apply = 8
Settings = 9
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, device_manager: DeviceManager):
@@ -35,6 +42,13 @@ class MainWindow(QtWidgets.QMainWindow):
self.show_uuid = False
self.loadSettings()
# Check for an update
if is_update_available(App_Version, App_Build):
# notify with prompt to download the new version from github
UpdateAppDialog().exec()
# Update the app version/build number label
self.updateAppVersionLabel()
## DEVICE BAR
self.refresh_devices()
@@ -48,6 +62,7 @@ class MainWindow(QtWidgets.QMainWindow):
self.ui.euEnablerPageBtn.clicked.connect(self.on_euEnablerPageBtn_clicked)
self.ui.springboardOptionsPageBtn.clicked.connect(self.on_springboardOptionsPageBtn_clicked)
self.ui.internalOptionsPageBtn.clicked.connect(self.on_internalOptionsPageBtn_clicked)
self.ui.daemonsPageBtn.clicked.connect(self.on_daemonsPageBtn_clicked)
self.ui.advancedPageBtn.clicked.connect(self.on_advancedPageBtn_clicked)
self.ui.applyPageBtn.clicked.connect(self.on_applyPageBtn_clicked)
self.ui.settingsPageBtn.clicked.connect(self.on_settingsPageBtn_clicked)
@@ -65,7 +80,7 @@ class MainWindow(QtWidgets.QMainWindow):
self.ui.jjtechBtn.clicked.connect(self.on_jjtechBtn_clicked)
self.ui.disfordottieBtn.clicked.connect(self.on_disfordottieBtn_clicked)
self.ui.lrdsnowBtn.clicked.connect(self.on_lrdsnowBtn_clicked)
self.ui.mikasaBtn.clicked.connect(self.on_mikasaBtn_clicked)
self.ui.libiBtn.clicked.connect(self.on_libiBtn_clicked)
self.ui.qtBtn.clicked.connect(self.on_qtBtn_clicked)
@@ -83,6 +98,8 @@ class MainWindow(QtWidgets.QMainWindow):
self.ui.languageLbl.hide() # to be removed later
self.ui.languageTxt.textEdited.connect(self.on_languageTxt_textEdited)
self.ui.spoofedModelDrp.activated.connect(self.on_spoofedModelDrp_activated)
self.ui.spoofHardwareChk.toggled.connect(self.on_spoofHardwareChk_toggled)
self.ui.spoofCPUChk.toggled.connect(self.on_spoofCPUChk_toggled)
## FEATURE FLAGS PAGE
self.ui.clockAnimChk.toggled.connect(self.on_clockAnimChk_toggled)
@@ -114,6 +131,21 @@ class MainWindow(QtWidgets.QMainWindow):
self.ui.pasteSoundChk.toggled.connect(self.on_pasteSoundChk_clicked)
self.ui.notifyPastesChk.toggled.connect(self.on_notifyPastesChk_clicked)
## DAEMONS PAGE ACTIONS
self.ui.modifyDaemonsChk.toggled.connect(self.on_modifyDaemonsChk_clicked)
self.ui.thermalmonitordChk.toggled.connect(self.on_thermalmonitordChk_clicked)
self.ui.otadChk.toggled.connect(self.on_otadChk_clicked)
self.ui.usageTrackingAgentChk.toggled.connect(self.on_usageTrackingAgentChk_clicked)
self.ui.gameCenterChk.toggled.connect(self.on_gameCenterChk_clicked)
self.ui.screenTimeChk.toggled.connect(self.on_screenTimeChk_clicked)
self.ui.clearScreenTimeAgentChk.toggled.connect(self.on_clearScreenTimeAgentChk_clicked)
self.ui.crashReportsChk.toggled.connect(self.on_crashReportsChk_clicked)
self.ui.atwakeupChk.toggled.connect(self.on_atwakeupChk_clicked)
self.ui.tipsChk.toggled.connect(self.on_tipsChk_clicked)
self.ui.vpndChk.toggled.connect(self.on_vpndChk_clicked)
self.ui.wapicChk.toggled.connect(self.on_wapicChk_clicked)
self.ui.healthdChk.toggled.connect(self.on_healthdChk_clicked)
## RISKY OPTIONS PAGE ACTIONS
self.ui.disableOTAChk.toggled.connect(self.on_disableOTAChk_clicked)
self.ui.enableResolutionChk.toggled.connect(self.on_enableResolutionChk_clicked)
@@ -130,6 +162,7 @@ class MainWindow(QtWidgets.QMainWindow):
self.ui.allowWifiApplyingChk.toggled.connect(self.on_allowWifiApplyingChk_toggled)
self.ui.autoRebootChk.toggled.connect(self.on_autoRebootChk_toggled)
self.ui.showRiskyChk.toggled.connect(self.on_showRiskyChk_toggled)
self.ui.showAllSpoofableChk.toggled.connect(self.on_showAllSpoofableChk_toggled)
self.ui.skipSetupChk.toggled.connect(self.on_skipSetupChk_toggled)
self.ui.supervisionChk.toggled.connect(self.on_supervisionChk_toggled)
@@ -159,6 +192,7 @@ class MainWindow(QtWidgets.QMainWindow):
self.ui.internalStorageChk.clicked.connect(self.on_internalStorageChk_clicked)
self.ui.collisionSOSChk.clicked.connect(self.on_collisionSOSChk_clicked)
self.ui.aodChk.clicked.connect(self.on_aodChk_clicked)
self.ui.aodVibrancyChk.clicked.connect(self.on_aodVibrancyChk_clicked)
self.ui.addGestaltKeyBtn.clicked.connect(self.on_addGestaltKeyBtn_clicked)
self.ui.aiEnablerContent.hide()
@@ -171,6 +205,15 @@ class MainWindow(QtWidgets.QMainWindow):
def updateInterfaceForNewDevice(self):
# update the home page
self.updatePhoneInfo()
def updateAppVersionLabel(self):
new_text: str = self.ui.appVersionLbl.text()
new_text = new_text.replace("%VERSION", App_Version)
if App_Build > 0:
new_text = new_text.replace("%BETATAG", f"(beta {App_Build})")
else:
new_text = new_text.replace("%BETATAG", "")
self.ui.appVersionLbl.setText(new_text)
## DEVICE BAR FUNCTIONS
@@ -188,7 +231,6 @@ class MainWindow(QtWidgets.QMainWindow):
self.ui.homePageBtn.setChecked(True)
# hide all pages
self.ui.explorePageBtn.hide()
self.ui.sidebarDiv1.hide()
self.ui.gestaltPageBtn.hide()
@@ -196,12 +238,14 @@ class MainWindow(QtWidgets.QMainWindow):
self.ui.euEnablerPageBtn.hide()
self.ui.springboardOptionsPageBtn.hide()
self.ui.internalOptionsPageBtn.hide()
self.ui.daemonsPageBtn.hide()
self.ui.advancedPageBtn.hide()
self.ui.sidebarDiv2.hide()
self.ui.applyPageBtn.hide()
self.ui.resetPairBtn.hide()
self.ui.showRiskyChk.hide()
else:
self.ui.devicePicker.setEnabled(True)
# populate the ComboBox with device names
@@ -209,10 +253,10 @@ class MainWindow(QtWidgets.QMainWindow):
self.ui.devicePicker.addItem(device.name)
# show all pages
self.ui.explorePageBtn.hide()
self.ui.sidebarDiv1.show()
self.ui.springboardOptionsPageBtn.show()
self.ui.internalOptionsPageBtn.show()
self.ui.daemonsPageBtn.show()
if self.device_manager.allow_risky_tweaks:
self.ui.advancedPageBtn.show()
@@ -230,6 +274,7 @@ class MainWindow(QtWidgets.QMainWindow):
self.ui.advancedOptionsPageContent.setDisabled(False)
self.ui.resetPairBtn.show()
self.ui.showRiskyChk.show()
# update the selected device
self.ui.devicePicker.setCurrentIndex(0)
@@ -245,26 +290,28 @@ class MainWindow(QtWidgets.QMainWindow):
# indexes 1-6 for iPhones, 7-(len(values) - 1) for iPads
# TODO: Make this get fetched from the gui on app startup
spoof_drp_options = ["iPhone 15 Pro (iPhone16,1)", "iPhone 15 Pro Max (iPhone16,2)", "iPhone 16 (iPhone17,3)", "iPhone 16 Plus (iPhone17,4)", "iPhone 16 Pro (iPhone17,1)", "iPhone 16 Pro Max (iPhone17,2)", "iPad Mini (A17 Pro) (W) (iPad16,1)", "iPad Mini (A17 Pro) (C) (iPad16,2)", "iPad Pro (13-inch) (M4) (W) (iPad16,5)", "iPad Pro (13-inch) (M4) (C) (iPad16,6)", "iPad Pro (11-inch) (M4) (W) (iPad16,3)", "iPad Pro (11-inch) (M4) (C) (iPad16,4)", "iPad Pro (12.9-inch) (M2) (W) (iPad14,5)", "iPad Pro (12.9-inch) (M2) (C) (iPad14,6)", "iPad Pro (11-inch) (M2) (W) (iPad14,3)", "iPad Pro (11-inch) (M2) (C) (iPad14,4)", "iPad Air (13-inch) (M2) (W) (iPad14,10)", "iPad Air (13-inch) (M2) (C) (iPad14,11)", "iPad Air (11-inch) (M2) (W) (iPad14,8)", "iPad Air (11-inch) (M2) (C) (iPad14,9)", "iPad Pro (11-inch) (M1) (W) (iPad13,4)", "iPad Pro (11-inch) (M1) (C) (iPad13,5)", "iPad Pro (12.9-inch) (M1) (W) (iPad13,8)", "iPad Pro (12.9-inch) (M1) (C) (iPad13,9)", "iPad Air (M1) (W) (iPad13,16)", "iPad Air (M1) (C) (iPad13,17)"]
if self.device_manager.get_current_device_model().startswith("iPhone"):
if self.device_manager.show_all_spoofable_models or self.device_manager.get_current_device_model().startswith("iPhone"):
# re-enable iPhone spoof models
self.ui.spoofedModelDrp.addItems(spoof_drp_options[:6])
else:
if self.device_manager.show_all_spoofable_models or self.device_manager.get_current_device_model().startswith("iPad"):
# re-enable iPad spoof models
self.ui.spoofedModelDrp.addItems(spoof_drp_options[6:])
def change_selected_device(self, index):
self.ui.showAllSpoofableChk.hide()
if len(self.device_manager.devices) > 0:
self.device_manager.set_current_device(index=index)
# hide options that are for newer versions
# remove the new dynamic island options
MinTweakVersions = {
"no_patch": [self.ui.chooseGestaltBtn, self.ui.gestaltPageBtn, self.ui.resetGestaltBtn, self.ui.gestaltLocationLbl],
"exploit": [("18.0", self.ui.featureFlagsPageBtn), ("18.1", self.ui.eligFileChk)],
"no_patch": [self.ui.chooseGestaltBtn, self.ui.gestaltPageBtn, self.ui.resetGestaltBtn, self.ui.gestaltLocationLbl, self.ui.showAllSpoofableChk],
"exploit": [("18.0", self.ui.featureFlagsPageBtn), ("18.1", self.ui.eligFileChk), ("1.0", self.ui.regularDomainsLbl)],
"18.1": [self.ui.enableAIChk, self.ui.aiEnablerContent],
"18.0": [self.ui.aodChk, self.ui.iphone16SettingsChk]
"18.0": [self.ui.aodChk, self.ui.aodVibrancyChk, self.ui.iphone16SettingsChk]
}
MaxTweakVersions = {
"17.7": [self.ui.euEnablerContent]
"17.7": [self.ui.euEnablerContent],
"18.0": [self.ui.photosChk, self.ui.aiChk]
}
try:
@@ -331,9 +378,10 @@ class MainWindow(QtWidgets.QMainWindow):
self.settings = QtCore.QSettings()
try:
# load the settings
apply_over_wifi = self.settings.value("apply_over_wifi", True, type=bool)
apply_over_wifi = self.settings.value("apply_over_wifi", False, type=bool)
auto_reboot = self.settings.value("auto_reboot", True, type=bool)
risky_tweaks = self.settings.value("show_risky_tweaks", False, type=bool)
show_all_spoofable = self.settings.value("show_all_spoofable_models", False, type=bool)
skip_setup = self.settings.value("skip_setup", True, type=bool)
supervised = self.settings.value("supervised", False, type=bool)
organization_name = self.settings.value("organization_name", "", type=str)
@@ -341,13 +389,21 @@ class MainWindow(QtWidgets.QMainWindow):
self.ui.allowWifiApplyingChk.setChecked(apply_over_wifi)
self.ui.autoRebootChk.setChecked(auto_reboot)
self.ui.showRiskyChk.setChecked(risky_tweaks)
self.ui.showAllSpoofableChk.setChecked(show_all_spoofable)
self.ui.skipSetupChk.setChecked(skip_setup)
self.ui.supervisionChk.setChecked(supervised)
self.ui.supervisionOrganization.setText(organization_name)
# hide/show the warning label
if skip_setup:
self.ui.skipSetupOnLbl.show()
else:
self.ui.skipSetupOnLbl.hide()
self.device_manager.apply_over_wifi = apply_over_wifi
self.device_manager.auto_reboot = auto_reboot
self.device_manager.allow_risky_tweaks = risky_tweaks
self.device_manager.show_all_spoofable_models = show_all_spoofable
self.device_manager.skip_setup = skip_setup
self.device_manager.supervised = supervised
self.device_manager.organization_name = organization_name
@@ -374,6 +430,9 @@ class MainWindow(QtWidgets.QMainWindow):
def on_internalOptionsPageBtn_clicked(self):
self.ui.pages.setCurrentIndex(Page.InternalOptions.value)
def on_daemonsPageBtn_clicked(self):
self.ui.pages.setCurrentIndex(Page.Daemons.value)
def on_advancedPageBtn_clicked(self):
self.ui.pages.setCurrentIndex(Page.RiskyTweaks.value)
@@ -418,11 +477,11 @@ class MainWindow(QtWidgets.QMainWindow):
def show_version_text(self, version: str, build: str):
support_str: str = "<span style=\"color: #32d74b;\">Supported!</span></a>"
if Version(version) < Version("17.0") or self.device_manager.get_current_device_patched():
if Version(version) < Version("17.0"):
support_str = "<span style=\"color: #ff0000;\">Not Supported.</span></a>"
elif not self.device_manager.get_current_device_supported():
# sparserestore partially patched
support_str = "<span style=\"color: #ffff00;\">Supported, YMMV.</span></a>"
elif self.device_manager.get_current_device_patched():
# sparserestore fully patched
support_str = "<span style=\"color: #ffff00;\">Partially Supported.</span></a>"
self.ui.phoneVersionLbl.setText(f"<a style=\"text-decoration:none; color: white;\" href=\"#\">iOS {version} ({build}) {support_str}")
## HOME PAGE LINKS
@@ -440,8 +499,8 @@ class MainWindow(QtWidgets.QMainWindow):
webbrowser.open_new_tab("https://github.com/JJTech0130/TrollRestore")
def on_disfordottieBtn_clicked(self):
webbrowser.open_new_tab("https://twitter.com/disfordottie")
def on_lrdsnowBtn_clicked(self):
webbrowser.open_new_tab("https://github.com/Lrdsnow/EUEnabler")
def on_mikasaBtn_clicked(self):
webbrowser.open_new_tab("https://github.com/Mikasa-san/QuietDaemon")
def on_libiBtn_clicked(self):
webbrowser.open_new_tab("https://github.com/doronz88/pymobiledevice3")
@@ -523,6 +582,8 @@ class MainWindow(QtWidgets.QMainWindow):
tweaks["CollisionSOS"].set_enabled(checked)
def on_aodChk_clicked(self, checked: bool):
tweaks["AOD"].set_enabled(checked)
def on_aodVibrancyChk_clicked(self, checked: bool):
tweaks["AODVibrancy"].set_enabled(checked)
def update_custom_gestalt_value_type(self, id, idx, valueField: QtWidgets.QLineEdit):
new_str = CustomGestaltTweaks.set_tweak_value_type(id, idx)
@@ -628,16 +689,16 @@ class MainWindow(QtWidgets.QMainWindow):
def on_spoofedModelDrp_activated(self, index: int):
idx_to_apply = index
if index > 0 and not self.device_manager.get_current_device_model().startswith("iPhone"):
if not self.device_manager.show_all_spoofable_models and not self.device_manager.get_current_device_model().startswith("iPhone"):
# offset the index for ipads
idx_to_apply += 6
tweaks["SpoofModel"].set_selected_option(idx_to_apply)
tweaks["SpoofHardware"].set_selected_option(idx_to_apply)
tweaks["SpoofCPU"].set_selected_option(idx_to_apply)
if idx_to_apply == 0:
tweaks["SpoofModel"].set_enabled(False)
tweaks["SpoofHardware"].set_enabled(False)
tweaks["SpoofCPU"].set_enabled(False)
tweaks["SpoofModel"].set_selected_option(idx_to_apply, is_enabled=(index != 0))
tweaks["SpoofHardware"].set_selected_option(idx_to_apply, is_enabled=(index != 0 and self.ui.spoofHardwareChk.isChecked()))
tweaks["SpoofCPU"].set_selected_option(idx_to_apply, is_enabled=(index != 0 and self.ui.spoofCPUChk.isChecked()))
def on_spoofHardwareChk_toggled(self, checked: bool):
tweaks["SpoofHardware"].set_enabled(checked and tweaks["SpoofHardware"].selected_option != 0)
def on_spoofCPUChk_toggled(self, checked: bool):
tweaks["SpoofCPU"].set_enabled(checked and tweaks["SpoofCPU"].selected_option != 0)
## SPRINGBOARD OPTIONS PAGE
@@ -688,9 +749,39 @@ class MainWindow(QtWidgets.QMainWindow):
def on_notifyPastesChk_clicked(self, checked: bool):
tweaks["AnnounceAllPastes"].set_enabled(checked)
## DAEMONS PAGE
def on_modifyDaemonsChk_clicked(self, checked: bool):
tweaks["Daemons"].set_enabled(checked)
self.ui.daemonsPageContent.setDisabled(not checked)
def on_thermalmonitordChk_clicked(self, checked: bool):
tweaks["Daemons"].set_multiple_values(Daemon.thermalmonitord.value, value=checked)
def on_otadChk_clicked(self, checked: bool):
tweaks["Daemons"].set_multiple_values(Daemon.OTA.value, value=checked)
def on_usageTrackingAgentChk_clicked(self, checked: bool):
tweaks["Daemons"].set_multiple_values(Daemon.UsageTrackingAgent.value, value=checked)
def on_gameCenterChk_clicked(self, checked: bool):
tweaks["Daemons"].set_multiple_values(Daemon.GameCenter.value, value=checked)
def on_screenTimeChk_clicked(self, checked: bool):
tweaks["Daemons"].set_multiple_values(Daemon.ScreenTime.value, value=checked)
def on_clearScreenTimeAgentChk_clicked(self, checked: bool):
tweaks["ClearScreenTimeAgentPlist"].set_enabled(checked)
def on_crashReportsChk_clicked(self, checked: bool):
tweaks["Daemons"].set_multiple_values(Daemon.CrashReports.value, value=checked)
def on_atwakeupChk_clicked(self, checked: bool):
tweaks["Daemons"].set_multiple_values(Daemon.ATWAKEUP.value, value=checked)
def on_tipsChk_clicked(self, checked: bool):
tweaks["Daemons"].set_multiple_values(Daemon.Tips.value, value=checked)
def on_vpndChk_clicked(self, checked: bool):
tweaks["Daemons"].set_multiple_values(Daemon.VPN.value, value=checked)
def on_wapicChk_clicked(self, checked: bool):
tweaks["Daemons"].set_multiple_values(Daemon.ChineseLAN.value, value=checked)
def on_healthdChk_clicked(self, checked: bool):
tweaks["Daemons"].set_multiple_values(Daemon.HealthKit.value, value=checked)
## Risky Options Page
def on_disableOTAChk_clicked(self, checked: bool):
tweaks["DisableOTA"].set_enabled(checked)
tweaks["DisableOTAFile"].set_enabled(checked)
def on_enableResolutionChk_clicked(self, checked: bool):
tweaks["CustomResolution"].set_enabled(checked)
@@ -739,6 +830,12 @@ class MainWindow(QtWidgets.QMainWindow):
self.ui.advancedPageBtn.show()
else:
self.ui.advancedPageBtn.hide()
def on_showAllSpoofableChk_toggled(self, checked: bool):
self.device_manager.show_all_spoofable_models = checked
# save the setting
self.settings.setValue("show_all_spoofable_models", checked)
# refresh the list of spoofable models
self.setup_spoofedModelDrp_models()
def on_autoRebootChk_toggled(self, checked: bool):
self.device_manager.auto_reboot = checked
# save the setting
@@ -747,6 +844,11 @@ class MainWindow(QtWidgets.QMainWindow):
self.device_manager.skip_setup = checked
# save the setting
self.settings.setValue("skip_setup", checked)
# hide/show the warning label
if checked:
self.ui.skipSetupOnLbl.show()
else:
self.ui.skipSetupOnLbl.hide()
def on_supervisionOrgTxt_textEdited(self, text: str):
self.device_manager.organization_name = text
self.settings.setValue("organization_name", text)
@@ -782,9 +884,9 @@ class MainWindow(QtWidgets.QMainWindow):
return
if (
not "qNNddlUK+B/YlooNoymwgA" in gestalt_plist["CacheExtra"]
or not "0+nc/Udy4WNG8S+Q7a/s1A" in gestalt_plist["CacheExtra"]
or gestalt_plist["CacheExtra"]["qNNddlUK+B/YlooNoymwgA"] != self.device_manager.data_singleton.current_device.version
or gestalt_plist["CacheExtra"]["0+nc/Udy4WNG8S+Q7a/s1A"] != self.device_manager.data_singleton.current_device.model
or not "0+nc/Udy4WNG8S+Q7a/s1A" in gestalt_plist["CacheExtra"]
):
dialog = GestaltDialog(
device_manager=self.device_manager,
@@ -792,8 +894,9 @@ class MainWindow(QtWidgets.QMainWindow):
selected_file=selected_file
)
dialog.exec()
self.device_manager.data_singleton.gestalt_path = selected_file
self.ui.gestaltLocationLbl.setText(selected_file)
else:
self.device_manager.data_singleton.gestalt_path = selected_file
self.ui.gestaltLocationLbl.setText(selected_file)
# hide the warning labels
self.ui.mgaWarningLbl.hide()
self.ui.mgaWarningLbl2.hide()

View File

@@ -306,20 +306,6 @@ class Ui_Nugget(object):
self.verticalLayout.addWidget(self.homePageBtn)
self.explorePageBtn = QToolButton(self.sidebar)
self.explorePageBtn.setObjectName(u"explorePageBtn")
self.explorePageBtn.setEnabled(True)
sizePolicy2.setHeightForWidth(self.explorePageBtn.sizePolicy().hasHeightForWidth())
self.explorePageBtn.setSizePolicy(sizePolicy2)
icon3 = QIcon()
icon3.addFile(u":/icon/compass.svg", QSize(), QIcon.Normal, QIcon.Off)
self.explorePageBtn.setIcon(icon3)
self.explorePageBtn.setCheckable(True)
self.explorePageBtn.setAutoExclusive(True)
self.explorePageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.verticalLayout.addWidget(self.explorePageBtn)
self.sidebarDiv1 = QFrame(self.sidebar)
self.sidebarDiv1.setObjectName(u"sidebarDiv1")
self.sidebarDiv1.setStyleSheet(u"QFrame {\n"
@@ -334,9 +320,9 @@ class Ui_Nugget(object):
self.gestaltPageBtn.setObjectName(u"gestaltPageBtn")
sizePolicy2.setHeightForWidth(self.gestaltPageBtn.sizePolicy().hasHeightForWidth())
self.gestaltPageBtn.setSizePolicy(sizePolicy2)
icon4 = QIcon()
icon4.addFile(u":/icon/iphone-island.svg", QSize(), QIcon.Normal, QIcon.Off)
self.gestaltPageBtn.setIcon(icon4)
icon3 = QIcon()
icon3.addFile(u":/icon/iphone-island.svg", QSize(), QIcon.Normal, QIcon.Off)
self.gestaltPageBtn.setIcon(icon3)
self.gestaltPageBtn.setIconSize(QSize(24, 28))
self.gestaltPageBtn.setCheckable(True)
self.gestaltPageBtn.setAutoExclusive(True)
@@ -352,9 +338,9 @@ class Ui_Nugget(object):
font = QFont()
font.setFamilies([u".AppleSystemUIFont"])
self.featureFlagsPageBtn.setFont(font)
icon5 = QIcon()
icon5.addFile(u":/icon/flag.svg", QSize(), QIcon.Normal, QIcon.Off)
self.featureFlagsPageBtn.setIcon(icon5)
icon4 = QIcon()
icon4.addFile(u":/icon/flag.svg", QSize(), QIcon.Normal, QIcon.Off)
self.featureFlagsPageBtn.setIcon(icon4)
self.featureFlagsPageBtn.setCheckable(True)
self.featureFlagsPageBtn.setAutoExclusive(True)
self.featureFlagsPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
@@ -365,9 +351,9 @@ class Ui_Nugget(object):
self.euEnablerPageBtn.setObjectName(u"euEnablerPageBtn")
sizePolicy2.setHeightForWidth(self.euEnablerPageBtn.sizePolicy().hasHeightForWidth())
self.euEnablerPageBtn.setSizePolicy(sizePolicy2)
icon6 = QIcon()
icon6.addFile(u":/icon/geo-alt.svg", QSize(), QIcon.Normal, QIcon.Off)
self.euEnablerPageBtn.setIcon(icon6)
icon5 = QIcon()
icon5.addFile(u":/icon/geo-alt.svg", QSize(), QIcon.Normal, QIcon.Off)
self.euEnablerPageBtn.setIcon(icon5)
self.euEnablerPageBtn.setCheckable(True)
self.euEnablerPageBtn.setAutoExclusive(True)
self.euEnablerPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
@@ -378,9 +364,9 @@ class Ui_Nugget(object):
self.springboardOptionsPageBtn.setObjectName(u"springboardOptionsPageBtn")
sizePolicy2.setHeightForWidth(self.springboardOptionsPageBtn.sizePolicy().hasHeightForWidth())
self.springboardOptionsPageBtn.setSizePolicy(sizePolicy2)
icon7 = QIcon()
icon7.addFile(u":/icon/app-indicator.svg", QSize(), QIcon.Normal, QIcon.Off)
self.springboardOptionsPageBtn.setIcon(icon7)
icon6 = QIcon()
icon6.addFile(u":/icon/app-indicator.svg", QSize(), QIcon.Normal, QIcon.Off)
self.springboardOptionsPageBtn.setIcon(icon6)
self.springboardOptionsPageBtn.setCheckable(True)
self.springboardOptionsPageBtn.setAutoExclusive(True)
self.springboardOptionsPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
@@ -391,15 +377,29 @@ class Ui_Nugget(object):
self.internalOptionsPageBtn.setObjectName(u"internalOptionsPageBtn")
sizePolicy2.setHeightForWidth(self.internalOptionsPageBtn.sizePolicy().hasHeightForWidth())
self.internalOptionsPageBtn.setSizePolicy(sizePolicy2)
icon8 = QIcon()
icon8.addFile(u":/icon/hdd.svg", QSize(), QIcon.Normal, QIcon.Off)
self.internalOptionsPageBtn.setIcon(icon8)
icon7 = QIcon()
icon7.addFile(u":/icon/hdd.svg", QSize(), QIcon.Normal, QIcon.Off)
self.internalOptionsPageBtn.setIcon(icon7)
self.internalOptionsPageBtn.setCheckable(True)
self.internalOptionsPageBtn.setAutoExclusive(True)
self.internalOptionsPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.verticalLayout.addWidget(self.internalOptionsPageBtn)
self.daemonsPageBtn = QToolButton(self.sidebar)
self.daemonsPageBtn.setObjectName(u"daemonsPageBtn")
self.daemonsPageBtn.setEnabled(True)
sizePolicy2.setHeightForWidth(self.daemonsPageBtn.sizePolicy().hasHeightForWidth())
self.daemonsPageBtn.setSizePolicy(sizePolicy2)
icon8 = QIcon()
icon8.addFile(u":/icon/toggles.svg", QSize(), QIcon.Normal, QIcon.Off)
self.daemonsPageBtn.setIcon(icon8)
self.daemonsPageBtn.setCheckable(True)
self.daemonsPageBtn.setAutoExclusive(True)
self.daemonsPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.verticalLayout.addWidget(self.daemonsPageBtn)
self.advancedPageBtn = QToolButton(self.sidebar)
self.advancedPageBtn.setObjectName(u"advancedPageBtn")
sizePolicy2.setHeightForWidth(self.advancedPageBtn.sizePolicy().hasHeightForWidth())
@@ -787,12 +787,12 @@ class Ui_Nugget(object):
self.horizontalLayout_2.addWidget(self.disfordottieBtn)
self.lrdsnowBtn = QToolButton(self.horizontalWidget_21)
self.lrdsnowBtn.setObjectName(u"lrdsnowBtn")
sizePolicy2.setHeightForWidth(self.lrdsnowBtn.sizePolicy().hasHeightForWidth())
self.lrdsnowBtn.setSizePolicy(sizePolicy2)
self.lrdsnowBtn.setMinimumSize(QSize(0, 37))
self.lrdsnowBtn.setStyleSheet(u"QToolButton {\n"
self.mikasaBtn = QToolButton(self.horizontalWidget_21)
self.mikasaBtn.setObjectName(u"mikasaBtn")
sizePolicy2.setHeightForWidth(self.mikasaBtn.sizePolicy().hasHeightForWidth())
self.mikasaBtn.setSizePolicy(sizePolicy2)
self.mikasaBtn.setMinimumSize(QSize(0, 37))
self.mikasaBtn.setStyleSheet(u"QToolButton {\n"
" border-top-left-radius: 0px;\n"
" border-bottom-left-radius: 0px;\n"
" background: none;\n"
@@ -805,7 +805,7 @@ class Ui_Nugget(object):
" color: #FFFFFF;\n"
"}")
self.horizontalLayout_2.addWidget(self.lrdsnowBtn)
self.horizontalLayout_2.addWidget(self.mikasaBtn)
self.verticalLayout_25.addWidget(self.horizontalWidget_21)
@@ -897,7 +897,7 @@ class Ui_Nugget(object):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.toolButton_8.setIcon(icon4)
self.toolButton_8.setIcon(icon3)
self.toolButton_8.setIconSize(QSize(30, 30))
self.horizontalLayout_5.addWidget(self.toolButton_8)
@@ -1235,7 +1235,7 @@ class Ui_Nugget(object):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.toolButton_10.setIcon(icon5)
self.toolButton_10.setIcon(icon4)
self.horizontalLayout_20.addWidget(self.toolButton_10)
@@ -1341,7 +1341,7 @@ class Ui_Nugget(object):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.toolButton_11.setIcon(icon6)
self.toolButton_11.setIcon(icon5)
self.horizontalLayout_21.addWidget(self.toolButton_11)
@@ -1619,7 +1619,7 @@ class Ui_Nugget(object):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.toolButton_7.setIcon(icon7)
self.toolButton_7.setIcon(icon6)
self.horizontalLayout_13.addWidget(self.toolButton_7)
@@ -1745,7 +1745,7 @@ class Ui_Nugget(object):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.toolButton_101.setIcon(icon8)
self.toolButton_101.setIcon(icon7)
self.horizontalLayout_201.addWidget(self.toolButton_101)
@@ -1905,12 +1905,12 @@ class Ui_Nugget(object):
self.verticalLayout_141.addWidget(self.internalOptionsPageContent)
self.pages.addWidget(self.internalOptionsPage)
self.advancedOptionsPage = QWidget()
self.advancedOptionsPage.setObjectName(u"advancedOptionsPage")
self.verticalLayout_142 = QVBoxLayout(self.advancedOptionsPage)
self.daemonsPage = QWidget()
self.daemonsPage.setObjectName(u"daemonsPage")
self.verticalLayout_142 = QVBoxLayout(self.daemonsPage)
self.verticalLayout_142.setObjectName(u"verticalLayout_142")
self.verticalLayout_142.setContentsMargins(0, 0, 0, 0)
self.horizontalWidget_52 = QWidget(self.advancedOptionsPage)
self.horizontalWidget_52 = QWidget(self.daemonsPage)
self.horizontalWidget_52.setObjectName(u"horizontalWidget_52")
self.horizontalLayout_202 = QHBoxLayout(self.horizontalWidget_52)
self.horizontalLayout_202.setSpacing(10)
@@ -1918,7 +1918,7 @@ class Ui_Nugget(object):
self.horizontalLayout_202.setContentsMargins(0, 9, 0, 9)
self.toolButton_102 = QToolButton(self.horizontalWidget_52)
self.toolButton_102.setObjectName(u"toolButton_102")
self.toolButton_102.setEnabled(False)
self.toolButton_102.setEnabled(True)
self.toolButton_102.setStyleSheet(u"QToolButton {\n"
" icon-size: 24px;\n"
" background-color: transparent;\n"
@@ -1926,7 +1926,7 @@ class Ui_Nugget(object):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.toolButton_102.setIcon(icon9)
self.toolButton_102.setIcon(icon8)
self.horizontalLayout_202.addWidget(self.toolButton_102)
@@ -1936,11 +1936,11 @@ class Ui_Nugget(object):
self.verticalLayout_122.setSpacing(6)
self.verticalLayout_122.setObjectName(u"verticalLayout_122")
self.verticalLayout_122.setContentsMargins(0, 0, 0, 0)
self.advancedOptionsLbl = QLabel(self.verticalWidget_42)
self.advancedOptionsLbl.setObjectName(u"advancedOptionsLbl")
self.advancedOptionsLbl.setFont(font1)
self.daemonsLbl = QLabel(self.verticalWidget_42)
self.daemonsLbl.setObjectName(u"daemonsLbl")
self.daemonsLbl.setFont(font1)
self.verticalLayout_122.addWidget(self.advancedOptionsLbl)
self.verticalLayout_122.addWidget(self.daemonsLbl)
self.verticalSpacer_181 = QSpacerItem(20, 16, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
@@ -1956,7 +1956,7 @@ class Ui_Nugget(object):
self.verticalLayout_142.addWidget(self.horizontalWidget_52)
self.line_122 = QFrame(self.advancedOptionsPage)
self.line_122 = QFrame(self.daemonsPage)
self.line_122.setObjectName(u"line_122")
self.line_122.setStyleSheet(u"QFrame {\n"
" color: #414141;\n"
@@ -1966,16 +1966,126 @@ class Ui_Nugget(object):
self.verticalLayout_142.addWidget(self.line_122)
self.advancedOptionsPageContent = QWidget(self.advancedOptionsPage)
self.advancedOptionsPageContent.setObjectName(u"advancedOptionsPageContent")
self.advancedOptionsPageContent.setEnabled(False)
self.verticalLayout_132 = QVBoxLayout(self.advancedOptionsPageContent)
self.daemonsPageContent = QWidget(self.daemonsPage)
self.daemonsPageContent.setObjectName(u"daemonsPageContent")
self.daemonsPageContent.setEnabled(True)
self.verticalLayout_132 = QVBoxLayout(self.daemonsPageContent)
self.verticalLayout_132.setObjectName(u"verticalLayout_132")
self.verticalLayout_132.setContentsMargins(0, 0, 0, 0)
self.thermalmonitordChk = QCheckBox(self.daemonsPageContent)
self.thermalmonitordChk.setObjectName(u"thermalmonitordChk")
self.verticalLayout_132.addWidget(self.thermalmonitordChk)
self.otadChk = QCheckBox(self.daemonsPageContent)
self.otadChk.setObjectName(u"otadChk")
self.verticalLayout_132.addWidget(self.otadChk)
self.usageTrackingAgentChk = QCheckBox(self.daemonsPageContent)
self.usageTrackingAgentChk.setObjectName(u"usageTrackingAgentChk")
self.verticalLayout_132.addWidget(self.usageTrackingAgentChk)
self.gameCenterChk = QCheckBox(self.daemonsPageContent)
self.gameCenterChk.setObjectName(u"gameCenterChk")
self.verticalLayout_132.addWidget(self.gameCenterChk)
self.screenTimeChk = QCheckBox(self.daemonsPageContent)
self.screenTimeChk.setObjectName(u"screenTimeChk")
self.verticalLayout_132.addWidget(self.screenTimeChk)
self.crashReportsChk = QCheckBox(self.daemonsPageContent)
self.crashReportsChk.setObjectName(u"crashReportsChk")
self.verticalLayout_132.addWidget(self.crashReportsChk)
self.tipsChk = QCheckBox(self.daemonsPageContent)
self.tipsChk.setObjectName(u"tipsChk")
self.verticalLayout_132.addWidget(self.tipsChk)
self.verticalSpacer_62 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.verticalLayout_132.addItem(self.verticalSpacer_62)
self.verticalLayout_142.addWidget(self.daemonsPageContent)
self.pages.addWidget(self.daemonsPage)
self.advancedOptionsPage = QWidget()
self.advancedOptionsPage.setObjectName(u"advancedOptionsPage")
self.verticalLayout_143 = QVBoxLayout(self.advancedOptionsPage)
self.verticalLayout_143.setObjectName(u"verticalLayout_143")
self.verticalLayout_143.setContentsMargins(0, 0, 0, 0)
self.horizontalWidget_53 = QWidget(self.advancedOptionsPage)
self.horizontalWidget_53.setObjectName(u"horizontalWidget_53")
self.horizontalLayout_203 = QHBoxLayout(self.horizontalWidget_53)
self.horizontalLayout_203.setSpacing(10)
self.horizontalLayout_203.setObjectName(u"horizontalLayout_203")
self.horizontalLayout_203.setContentsMargins(0, 9, 0, 9)
self.toolButton_103 = QToolButton(self.horizontalWidget_53)
self.toolButton_103.setObjectName(u"toolButton_103")
self.toolButton_103.setEnabled(False)
self.toolButton_103.setStyleSheet(u"QToolButton {\n"
" icon-size: 24px;\n"
" background-color: transparent;\n"
" padding-left: 0px;\n"
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.toolButton_103.setIcon(icon9)
self.horizontalLayout_203.addWidget(self.toolButton_103)
self.verticalWidget_43 = QWidget(self.horizontalWidget_53)
self.verticalWidget_43.setObjectName(u"verticalWidget_43")
self.verticalLayout_123 = QVBoxLayout(self.verticalWidget_43)
self.verticalLayout_123.setSpacing(6)
self.verticalLayout_123.setObjectName(u"verticalLayout_123")
self.verticalLayout_123.setContentsMargins(0, 0, 0, 0)
self.advancedOptionsLbl = QLabel(self.verticalWidget_43)
self.advancedOptionsLbl.setObjectName(u"advancedOptionsLbl")
self.advancedOptionsLbl.setFont(font1)
self.verticalLayout_123.addWidget(self.advancedOptionsLbl)
self.verticalSpacer_182 = QSpacerItem(20, 16, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
self.verticalLayout_123.addItem(self.verticalSpacer_182)
self.horizontalLayout_203.addWidget(self.verticalWidget_43)
self.horizontalSpacer_73 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
self.horizontalLayout_203.addItem(self.horizontalSpacer_73)
self.verticalLayout_143.addWidget(self.horizontalWidget_53)
self.line_123 = QFrame(self.advancedOptionsPage)
self.line_123.setObjectName(u"line_123")
self.line_123.setStyleSheet(u"QFrame {\n"
" color: #414141;\n"
"}")
self.line_123.setFrameShadow(QFrame.Plain)
self.line_123.setFrameShape(QFrame.HLine)
self.verticalLayout_143.addWidget(self.line_123)
self.advancedOptionsPageContent = QWidget(self.advancedOptionsPage)
self.advancedOptionsPageContent.setObjectName(u"advancedOptionsPageContent")
self.advancedOptionsPageContent.setEnabled(True)
self.verticalLayout_133 = QVBoxLayout(self.advancedOptionsPageContent)
self.verticalLayout_133.setObjectName(u"verticalLayout_133")
self.verticalLayout_133.setContentsMargins(0, 0, 0, 0)
self.label_17 = QLabel(self.advancedOptionsPageContent)
self.label_17.setObjectName(u"label_17")
self.verticalLayout_132.addWidget(self.label_17)
self.verticalLayout_133.addWidget(self.label_17)
self.line_191 = QFrame(self.advancedOptionsPageContent)
self.line_191.setObjectName(u"line_191")
@@ -1985,12 +2095,12 @@ class Ui_Nugget(object):
self.line_191.setFrameShadow(QFrame.Plain)
self.line_191.setFrameShape(QFrame.HLine)
self.verticalLayout_132.addWidget(self.line_191)
self.verticalLayout_133.addWidget(self.line_191)
self.disableOTAChk = QCheckBox(self.advancedOptionsPageContent)
self.disableOTAChk.setObjectName(u"disableOTAChk")
self.verticalLayout_132.addWidget(self.disableOTAChk)
self.verticalLayout_133.addWidget(self.disableOTAChk)
self.line_181 = QFrame(self.advancedOptionsPageContent)
self.line_181.setObjectName(u"line_181")
@@ -2000,47 +2110,95 @@ class Ui_Nugget(object):
self.line_181.setFrameShadow(QFrame.Plain)
self.line_181.setFrameShape(QFrame.HLine)
self.verticalLayout_132.addWidget(self.line_181)
self.verticalLayout_133.addWidget(self.line_181)
self.enableResolutionChk = QCheckBox(self.advancedOptionsPageContent)
self.enableResolutionChk.setObjectName(u"enableResolutionChk")
self.verticalLayout_132.addWidget(self.enableResolutionChk)
self.verticalLayout_133.addWidget(self.enableResolutionChk)
self.resolutionContent = QVBoxLayout()
self.resolutionContent.setObjectName(u"resolutionContent")
self.resolutionContent.setContentsMargins(-1, -1, -1, 10)
self.resHeightLbl = QLabel(self.advancedOptionsPageContent)
self.resChangerContent = QWidget(self.advancedOptionsPageContent)
self.resChangerContent.setObjectName(u"resChangerContent")
self.resChangerContent.setEnabled(True)
self.verticalLayout_35 = QVBoxLayout(self.resChangerContent)
self.verticalLayout_35.setObjectName(u"verticalLayout_35")
self.verticalLayout_35.setContentsMargins(0, 0, 0, 0)
self.resHeightLbl = QLabel(self.resChangerContent)
self.resHeightLbl.setObjectName(u"resHeightLbl")
self.resHeightLbl.setEnabled(False)
self.resolutionContent.addWidget(self.resHeightLbl)
self.verticalLayout_35.addWidget(self.resHeightLbl)
self.resHeightTxt = QLineEdit(self.advancedOptionsPageContent)
self.horizontalLayout_9 = QHBoxLayout()
self.horizontalLayout_9.setObjectName(u"horizontalLayout_9")
self.horizontalLayout_9.setContentsMargins(-1, -1, -1, 5)
self.resHeightTxt = QLineEdit(self.resChangerContent)
self.resHeightTxt.setObjectName(u"resHeightTxt")
self.resHeightTxt.setEnabled(False)
self.resHeightTxt.setEnabled(True)
self.resolutionContent.addWidget(self.resHeightTxt)
self.horizontalLayout_9.addWidget(self.resHeightTxt)
self.resWidthLbl = QLabel(self.advancedOptionsPageContent)
self.resHeightWarningLbl = QLabel(self.resChangerContent)
self.resHeightWarningLbl.setObjectName(u"resHeightWarningLbl")
self.resHeightWarningLbl.setMinimumSize(QSize(22, 0))
self.resHeightWarningLbl.setStyleSheet(u"QLabel {\n"
" border: 2px solid red;\n"
" border-radius: 25px;\n"
" color: red;\n"
"}")
self.resHeightWarningLbl.setFrameShape(QFrame.NoFrame)
self.resHeightWarningLbl.setFrameShadow(QFrame.Plain)
self.resHeightWarningLbl.setScaledContents(False)
self.resHeightWarningLbl.setAlignment(Qt.AlignCenter)
self.horizontalLayout_9.addWidget(self.resHeightWarningLbl)
self.verticalLayout_35.addLayout(self.horizontalLayout_9)
self.resWidthLbl = QLabel(self.resChangerContent)
self.resWidthLbl.setObjectName(u"resWidthLbl")
self.resolutionContent.addWidget(self.resWidthLbl)
self.verticalLayout_35.addWidget(self.resWidthLbl)
self.resWidthTxt = QLineEdit(self.advancedOptionsPageContent)
self.resolutionContent = QVBoxLayout()
self.resolutionContent.setObjectName(u"resolutionContent")
self.resolutionContent.setContentsMargins(-1, -1, -1, 0)
self.horizontalLayout_10 = QHBoxLayout()
self.horizontalLayout_10.setObjectName(u"horizontalLayout_10")
self.horizontalLayout_10.setContentsMargins(-1, -1, -1, 5)
self.resWidthTxt = QLineEdit(self.resChangerContent)
self.resWidthTxt.setObjectName(u"resWidthTxt")
self.resolutionContent.addWidget(self.resWidthTxt)
self.horizontalLayout_10.addWidget(self.resWidthTxt)
self.resWidthWarningLbl = QLabel(self.resChangerContent)
self.resWidthWarningLbl.setObjectName(u"resWidthWarningLbl")
self.resWidthWarningLbl.setMinimumSize(QSize(22, 0))
self.resWidthWarningLbl.setStyleSheet(u"QLabel {\n"
" border: 2px solid red;\n"
" border-radius: 25px;\n"
" color: red;\n"
"}")
self.resWidthWarningLbl.setAlignment(Qt.AlignCenter)
self.horizontalLayout_10.addWidget(self.resWidthWarningLbl)
self.verticalLayout_132.addLayout(self.resolutionContent)
self.verticalSpacer_62 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.verticalLayout_132.addItem(self.verticalSpacer_62)
self.resolutionContent.addLayout(self.horizontalLayout_10)
self.verticalLayout_142.addWidget(self.advancedOptionsPageContent)
self.verticalLayout_35.addLayout(self.resolutionContent)
self.verticalLayout_133.addWidget(self.resChangerContent)
self.verticalSpacer_63 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.verticalLayout_133.addItem(self.verticalSpacer_63)
self.verticalLayout_143.addWidget(self.advancedOptionsPageContent)
self.pages.addWidget(self.advancedOptionsPage)
self.applyPage = QWidget()
@@ -2378,7 +2536,7 @@ class Ui_Nugget(object):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.toolButton_13.setIcon(icon6)
self.toolButton_13.setIcon(icon5)
self.horizontalLayout_28.addWidget(self.toolButton_13)
@@ -2644,7 +2802,9 @@ class Ui_Nugget(object):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.toolButton_16.setIcon(icon3)
icon22 = QIcon()
icon22.addFile(u":/icon/compass.svg", QSize(), QIcon.Normal, QIcon.Off)
self.toolButton_16.setIcon(icon22)
self.horizontalLayout_31.addWidget(self.toolButton_16)
@@ -2714,7 +2874,7 @@ class Ui_Nugget(object):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.themesBtn.setIcon(icon4)
self.themesBtn.setIcon(icon3)
self.themesBtn.setIconSize(QSize(30, 30))
self.horizontalLayout_23.addWidget(self.themesBtn)
@@ -2760,9 +2920,9 @@ class Ui_Nugget(object):
self.importThemeZipBtn = QToolButton(self.horizontalWidget7)
self.importThemeZipBtn.setObjectName(u"importThemeZipBtn")
icon22 = QIcon()
icon22.addFile(u":/icon/file-earmark-zip.svg", QSize(), QIcon.Normal, QIcon.Off)
self.importThemeZipBtn.setIcon(icon22)
icon23 = QIcon()
icon23.addFile(u":/icon/file-earmark-zip.svg", QSize(), QIcon.Normal, QIcon.Off)
self.importThemeZipBtn.setIcon(icon23)
self.horizontalLayout_26.addWidget(self.importThemeZipBtn)
@@ -2864,7 +3024,7 @@ class Ui_Nugget(object):
self.retranslateUi(Nugget)
self.devicePicker.setCurrentIndex(-1)
self.pages.setCurrentIndex(8)
self.pages.setCurrentIndex(0)
self.dynamicIslandDrp.setCurrentIndex(0)
self.spoofedModelDrp.setCurrentIndex(0)
@@ -2880,8 +3040,6 @@ class Ui_Nugget(object):
self.titleBar.setText(QCoreApplication.translate("Nugget", u"Nugget", None))
self.homePageBtn.setText(QCoreApplication.translate("Nugget", u" Home", None))
self.homePageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.explorePageBtn.setText(QCoreApplication.translate("Nugget", u" Explore", None))
self.explorePageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.gestaltPageBtn.setText(QCoreApplication.translate("Nugget", u" Mobile Gestalt", None))
self.gestaltPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.featureFlagsPageBtn.setText(QCoreApplication.translate("Nugget", u" Feature Flags", None))
@@ -2892,7 +3050,9 @@ class Ui_Nugget(object):
self.springboardOptionsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.internalOptionsPageBtn.setText(QCoreApplication.translate("Nugget", u" Internal Options", None))
self.internalOptionsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.advancedPageBtn.setText(QCoreApplication.translate("Nugget", u" Advanced Options", None))
self.daemonsPageBtn.setText(QCoreApplication.translate("Nugget", u" Daemons", None))
self.daemonsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.advancedPageBtn.setText(QCoreApplication.translate("Nugget", u" Risky Options", None))
self.advancedPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.applyPageBtn.setText(QCoreApplication.translate("Nugget", u" Apply", None))
self.applyPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
@@ -2914,12 +3074,12 @@ class Ui_Nugget(object):
"Sparserestore", None))
self.disfordottieBtn.setText(QCoreApplication.translate("Nugget", u"disfordottie\n"
"Clock Anim, Photos UI", None))
self.lrdsnowBtn.setText(QCoreApplication.translate("Nugget", u"lrdsnow\n"
"EU Enabler", None))
self.mikasaBtn.setText(QCoreApplication.translate("Nugget", u"Mikasa\n"
"Quiet Daemon", None))
self.toolButton_15.setText(QCoreApplication.translate("Nugget", u"Additional Thanks", None))
self.libiBtn.setText(QCoreApplication.translate("Nugget", u"pymobiledevice3", None))
self.qtBtn.setText(QCoreApplication.translate("Nugget", u"Qt Creator", None))
self.label.setText(QCoreApplication.translate("Nugget", u"Nugget GUI - Version 4.1 (beta 2)", None))
self.label.setText(QCoreApplication.translate("Nugget", u"Nugget GUI - Version 4.2 (beta 1)", None))
self.statusBarLbl.setText(QCoreApplication.translate("Nugget", u"Mobile Gestalt", None))
self.mgaWarningLbl.setText(QCoreApplication.translate("Nugget", u"! You will need a MobileGestalt file for this feature. Please select it in the Apply page !", None))
self.label_9.setText(QCoreApplication.translate("Nugget", u"Device Subtype Preset", None))
@@ -3035,7 +3195,15 @@ class Ui_Nugget(object):
self.enableWakeVibrateChk.setText(QCoreApplication.translate("Nugget", u"Vibrate on Raise-to-Wake", None))
self.pasteSoundChk.setText(QCoreApplication.translate("Nugget", u"Play Sound on Paste", None))
self.notifyPastesChk.setText(QCoreApplication.translate("Nugget", u"Show Notifications for System Pastes", None))
self.advancedOptionsLbl.setText(QCoreApplication.translate("Nugget", u"Advanced Options", None))
self.daemonsLbl.setText(QCoreApplication.translate("Nugget", u"Daemons", None))
self.thermalmonitordChk.setText(QCoreApplication.translate("Nugget", u"Disable thermalmonitord", None))
self.otadChk.setText(QCoreApplication.translate("Nugget", u"Disable OTA", None))
self.usageTrackingAgentChk.setText(QCoreApplication.translate("Nugget", u"Disable UsageTrackingAgent", None))
self.gameCenterChk.setText(QCoreApplication.translate("Nugget", u"Disable Game Center", None))
self.screenTimeChk.setText(QCoreApplication.translate("Nugget", u"Disable Screen Time Agent", None))
self.crashReportsChk.setText(QCoreApplication.translate("Nugget", u"Disable Logs, Dumps, and Crash Reports", None))
self.tipsChk.setText(QCoreApplication.translate("Nugget", u"Disable Tips Services", None))
self.advancedOptionsLbl.setText(QCoreApplication.translate("Nugget", u"Risky Options", None))
self.label_17.setText(QCoreApplication.translate("Nugget", u"Disclaimer:\n"
"\n"
"The options on this page may be unsafe for your device. Use these options at your own risk. Changing\n"
@@ -3046,8 +3214,10 @@ class Ui_Nugget(object):
self.enableResolutionChk.setText(QCoreApplication.translate("Nugget", u"Set a Custom Device Resolution", None))
self.resHeightLbl.setText(QCoreApplication.translate("Nugget", u"Height:", None))
self.resHeightTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"Resolution Height", None))
self.resHeightWarningLbl.setText(QCoreApplication.translate("Nugget", u"!", None))
self.resWidthLbl.setText(QCoreApplication.translate("Nugget", u"Width:", None))
self.resWidthTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"Resolution Width", None))
self.resWidthWarningLbl.setText(QCoreApplication.translate("Nugget", u"!", None))
self.statusBarLbl_5.setText(QCoreApplication.translate("Nugget", u"Apply", None))
self.label_16.setText("")
self.modifiedTweaksLbl.setText(QCoreApplication.translate("Nugget", u"Current gestalt file location:", None))

File diff suppressed because it is too large Load Diff

View File

@@ -15,10 +15,11 @@ from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
QFont, QFontDatabase, QGradient, QIcon,
QImage, QKeySequence, QLinearGradient, QPainter,
QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QApplication, QCheckBox, QComboBox, QFrame,
QHBoxLayout, QLabel, QLineEdit, QMainWindow,
QProgressBar, QScrollArea, QSizePolicy, QSpacerItem,
QStackedWidget, QToolButton, QVBoxLayout, QWidget)
from PySide6.QtWidgets import (QAbstractScrollArea, QApplication, QCheckBox, QComboBox,
QFrame, QHBoxLayout, QLabel, QLineEdit,
QMainWindow, QProgressBar, QScrollArea, QSizePolicy,
QSpacerItem, QStackedWidget, QToolButton, QVBoxLayout,
QWidget)
import resources_rc
class Ui_Nugget(object):
@@ -306,20 +307,6 @@ class Ui_Nugget(object):
self.verticalLayout.addWidget(self.homePageBtn)
self.explorePageBtn = QToolButton(self.sidebar)
self.explorePageBtn.setObjectName(u"explorePageBtn")
self.explorePageBtn.setEnabled(True)
sizePolicy2.setHeightForWidth(self.explorePageBtn.sizePolicy().hasHeightForWidth())
self.explorePageBtn.setSizePolicy(sizePolicy2)
icon3 = QIcon()
icon3.addFile(u":/icon/compass.svg", QSize(), QIcon.Normal, QIcon.Off)
self.explorePageBtn.setIcon(icon3)
self.explorePageBtn.setCheckable(True)
self.explorePageBtn.setAutoExclusive(True)
self.explorePageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.verticalLayout.addWidget(self.explorePageBtn)
self.sidebarDiv1 = QFrame(self.sidebar)
self.sidebarDiv1.setObjectName(u"sidebarDiv1")
self.sidebarDiv1.setStyleSheet(u"QFrame {\n"
@@ -334,9 +321,9 @@ class Ui_Nugget(object):
self.gestaltPageBtn.setObjectName(u"gestaltPageBtn")
sizePolicy2.setHeightForWidth(self.gestaltPageBtn.sizePolicy().hasHeightForWidth())
self.gestaltPageBtn.setSizePolicy(sizePolicy2)
icon4 = QIcon()
icon4.addFile(u":/icon/iphone-island.svg", QSize(), QIcon.Normal, QIcon.Off)
self.gestaltPageBtn.setIcon(icon4)
icon3 = QIcon()
icon3.addFile(u":/icon/iphone-island.svg", QSize(), QIcon.Normal, QIcon.Off)
self.gestaltPageBtn.setIcon(icon3)
self.gestaltPageBtn.setIconSize(QSize(24, 28))
self.gestaltPageBtn.setCheckable(True)
self.gestaltPageBtn.setAutoExclusive(True)
@@ -352,9 +339,9 @@ class Ui_Nugget(object):
font = QFont()
font.setFamilies([u".AppleSystemUIFont"])
self.featureFlagsPageBtn.setFont(font)
icon5 = QIcon()
icon5.addFile(u":/icon/flag.svg", QSize(), QIcon.Normal, QIcon.Off)
self.featureFlagsPageBtn.setIcon(icon5)
icon4 = QIcon()
icon4.addFile(u":/icon/flag.svg", QSize(), QIcon.Normal, QIcon.Off)
self.featureFlagsPageBtn.setIcon(icon4)
self.featureFlagsPageBtn.setCheckable(True)
self.featureFlagsPageBtn.setAutoExclusive(True)
self.featureFlagsPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
@@ -365,9 +352,9 @@ class Ui_Nugget(object):
self.euEnablerPageBtn.setObjectName(u"euEnablerPageBtn")
sizePolicy2.setHeightForWidth(self.euEnablerPageBtn.sizePolicy().hasHeightForWidth())
self.euEnablerPageBtn.setSizePolicy(sizePolicy2)
icon6 = QIcon()
icon6.addFile(u":/icon/geo-alt.svg", QSize(), QIcon.Normal, QIcon.Off)
self.euEnablerPageBtn.setIcon(icon6)
icon5 = QIcon()
icon5.addFile(u":/icon/geo-alt.svg", QSize(), QIcon.Normal, QIcon.Off)
self.euEnablerPageBtn.setIcon(icon5)
self.euEnablerPageBtn.setCheckable(True)
self.euEnablerPageBtn.setAutoExclusive(True)
self.euEnablerPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
@@ -378,9 +365,9 @@ class Ui_Nugget(object):
self.springboardOptionsPageBtn.setObjectName(u"springboardOptionsPageBtn")
sizePolicy2.setHeightForWidth(self.springboardOptionsPageBtn.sizePolicy().hasHeightForWidth())
self.springboardOptionsPageBtn.setSizePolicy(sizePolicy2)
icon7 = QIcon()
icon7.addFile(u":/icon/app-indicator.svg", QSize(), QIcon.Normal, QIcon.Off)
self.springboardOptionsPageBtn.setIcon(icon7)
icon6 = QIcon()
icon6.addFile(u":/icon/app-indicator.svg", QSize(), QIcon.Normal, QIcon.Off)
self.springboardOptionsPageBtn.setIcon(icon6)
self.springboardOptionsPageBtn.setCheckable(True)
self.springboardOptionsPageBtn.setAutoExclusive(True)
self.springboardOptionsPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
@@ -391,15 +378,29 @@ class Ui_Nugget(object):
self.internalOptionsPageBtn.setObjectName(u"internalOptionsPageBtn")
sizePolicy2.setHeightForWidth(self.internalOptionsPageBtn.sizePolicy().hasHeightForWidth())
self.internalOptionsPageBtn.setSizePolicy(sizePolicy2)
icon8 = QIcon()
icon8.addFile(u":/icon/hdd.svg", QSize(), QIcon.Normal, QIcon.Off)
self.internalOptionsPageBtn.setIcon(icon8)
icon7 = QIcon()
icon7.addFile(u":/icon/hdd.svg", QSize(), QIcon.Normal, QIcon.Off)
self.internalOptionsPageBtn.setIcon(icon7)
self.internalOptionsPageBtn.setCheckable(True)
self.internalOptionsPageBtn.setAutoExclusive(True)
self.internalOptionsPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.verticalLayout.addWidget(self.internalOptionsPageBtn)
self.daemonsPageBtn = QToolButton(self.sidebar)
self.daemonsPageBtn.setObjectName(u"daemonsPageBtn")
self.daemonsPageBtn.setEnabled(True)
sizePolicy2.setHeightForWidth(self.daemonsPageBtn.sizePolicy().hasHeightForWidth())
self.daemonsPageBtn.setSizePolicy(sizePolicy2)
icon8 = QIcon()
icon8.addFile(u":/icon/toggles.svg", QSize(), QIcon.Normal, QIcon.Off)
self.daemonsPageBtn.setIcon(icon8)
self.daemonsPageBtn.setCheckable(True)
self.daemonsPageBtn.setAutoExclusive(True)
self.daemonsPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.verticalLayout.addWidget(self.daemonsPageBtn)
self.advancedPageBtn = QToolButton(self.sidebar)
self.advancedPageBtn.setObjectName(u"advancedPageBtn")
sizePolicy2.setHeightForWidth(self.advancedPageBtn.sizePolicy().hasHeightForWidth())
@@ -787,12 +788,12 @@ class Ui_Nugget(object):
self.horizontalLayout_2.addWidget(self.disfordottieBtn)
self.lrdsnowBtn = QToolButton(self.horizontalWidget_21)
self.lrdsnowBtn.setObjectName(u"lrdsnowBtn")
sizePolicy2.setHeightForWidth(self.lrdsnowBtn.sizePolicy().hasHeightForWidth())
self.lrdsnowBtn.setSizePolicy(sizePolicy2)
self.lrdsnowBtn.setMinimumSize(QSize(0, 37))
self.lrdsnowBtn.setStyleSheet(u"QToolButton {\n"
self.mikasaBtn = QToolButton(self.horizontalWidget_21)
self.mikasaBtn.setObjectName(u"mikasaBtn")
sizePolicy2.setHeightForWidth(self.mikasaBtn.sizePolicy().hasHeightForWidth())
self.mikasaBtn.setSizePolicy(sizePolicy2)
self.mikasaBtn.setMinimumSize(QSize(0, 37))
self.mikasaBtn.setStyleSheet(u"QToolButton {\n"
" border-top-left-radius: 0px;\n"
" border-bottom-left-radius: 0px;\n"
" background: none;\n"
@@ -805,7 +806,7 @@ class Ui_Nugget(object):
" color: #FFFFFF;\n"
"}")
self.horizontalLayout_2.addWidget(self.lrdsnowBtn)
self.horizontalLayout_2.addWidget(self.mikasaBtn)
self.verticalLayout_25.addWidget(self.horizontalWidget_21)
@@ -869,11 +870,11 @@ class Ui_Nugget(object):
self.verticalLayout_2.addWidget(self.verticalWidget_2)
self.label = QLabel(self.homePage)
self.label.setObjectName(u"label")
self.label.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
self.appVersionLbl = QLabel(self.homePage)
self.appVersionLbl.setObjectName(u"appVersionLbl")
self.appVersionLbl.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
self.verticalLayout_2.addWidget(self.label)
self.verticalLayout_2.addWidget(self.appVersionLbl)
self.pages.addWidget(self.homePage)
self.gestaltPage = QWidget()
@@ -897,7 +898,7 @@ class Ui_Nugget(object):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.toolButton_8.setIcon(icon4)
self.toolButton_8.setIcon(icon3)
self.toolButton_8.setIconSize(QSize(30, 30))
self.horizontalLayout_5.addWidget(self.toolButton_8)
@@ -1141,6 +1142,11 @@ class Ui_Nugget(object):
self.verticalLayout_8.addWidget(self.aodChk)
self.aodVibrancyChk = QCheckBox(self.gestaltPageContent)
self.aodVibrancyChk.setObjectName(u"aodVibrancyChk")
self.verticalLayout_8.addWidget(self.aodVibrancyChk)
self.line_22 = QFrame(self.gestaltPageContent)
self.line_22.setObjectName(u"line_22")
self.line_22.setStyleSheet(u"QFrame {\n"
@@ -1235,7 +1241,7 @@ class Ui_Nugget(object):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.toolButton_10.setIcon(icon5)
self.toolButton_10.setIcon(icon4)
self.horizontalLayout_20.addWidget(self.toolButton_10)
@@ -1341,7 +1347,7 @@ class Ui_Nugget(object):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.toolButton_11.setIcon(icon6)
self.toolButton_11.setIcon(icon5)
self.horizontalLayout_21.addWidget(self.toolButton_11)
@@ -1381,7 +1387,18 @@ class Ui_Nugget(object):
self.verticalLayout_17.addWidget(self.line_13)
self.euEnablerPageContent = QWidget(self.euEnablerPage)
self.scrollArea_2 = QScrollArea(self.euEnablerPage)
self.scrollArea_2.setObjectName(u"scrollArea_2")
self.scrollArea_2.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
self.scrollArea_2.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.scrollArea_2.setSizeAdjustPolicy(QAbstractScrollArea.AdjustIgnored)
self.scrollArea_2.setWidgetResizable(True)
self.scrollAreaWidgetContents_2 = QWidget()
self.scrollAreaWidgetContents_2.setObjectName(u"scrollAreaWidgetContents_2")
self.scrollAreaWidgetContents_2.setGeometry(QRect(0, 0, 660, 573))
self.verticalLayout_37 = QVBoxLayout(self.scrollAreaWidgetContents_2)
self.verticalLayout_37.setObjectName(u"verticalLayout_37")
self.euEnablerPageContent = QWidget(self.scrollAreaWidgetContents_2)
self.euEnablerPageContent.setObjectName(u"euEnablerPageContent")
self.euEnablerPageContent.setEnabled(False)
self.verticalLayout_16 = QVBoxLayout(self.euEnablerPageContent)
@@ -1587,6 +1604,18 @@ class Ui_Nugget(object):
self.verticalLayout_34.addWidget(self.spoofedModelDrp)
self.spoofHardwareChk = QCheckBox(self.aiEnablerContent)
self.spoofHardwareChk.setObjectName(u"spoofHardwareChk")
self.spoofHardwareChk.setChecked(True)
self.verticalLayout_34.addWidget(self.spoofHardwareChk)
self.spoofCPUChk = QCheckBox(self.aiEnablerContent)
self.spoofCPUChk.setObjectName(u"spoofCPUChk")
self.spoofCPUChk.setChecked(True)
self.verticalLayout_34.addWidget(self.spoofCPUChk)
self.verticalLayout_16.addWidget(self.aiEnablerContent)
@@ -1595,7 +1624,11 @@ class Ui_Nugget(object):
self.verticalLayout_16.addItem(self.verticalSpacer_7)
self.verticalLayout_17.addWidget(self.euEnablerPageContent)
self.verticalLayout_37.addWidget(self.euEnablerPageContent)
self.scrollArea_2.setWidget(self.scrollAreaWidgetContents_2)
self.verticalLayout_17.addWidget(self.scrollArea_2)
self.pages.addWidget(self.euEnablerPage)
self.springboardOptionsPage = QWidget()
@@ -1619,7 +1652,7 @@ class Ui_Nugget(object):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.toolButton_7.setIcon(icon7)
self.toolButton_7.setIcon(icon6)
self.horizontalLayout_13.addWidget(self.toolButton_7)
@@ -1745,7 +1778,7 @@ class Ui_Nugget(object):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.toolButton_101.setIcon(icon8)
self.toolButton_101.setIcon(icon7)
self.horizontalLayout_201.addWidget(self.toolButton_101)
@@ -1905,12 +1938,12 @@ class Ui_Nugget(object):
self.verticalLayout_141.addWidget(self.internalOptionsPageContent)
self.pages.addWidget(self.internalOptionsPage)
self.advancedOptionsPage = QWidget()
self.advancedOptionsPage.setObjectName(u"advancedOptionsPage")
self.verticalLayout_142 = QVBoxLayout(self.advancedOptionsPage)
self.daemonsPage = QWidget()
self.daemonsPage.setObjectName(u"daemonsPage")
self.verticalLayout_142 = QVBoxLayout(self.daemonsPage)
self.verticalLayout_142.setObjectName(u"verticalLayout_142")
self.verticalLayout_142.setContentsMargins(0, 0, 0, 0)
self.horizontalWidget_52 = QWidget(self.advancedOptionsPage)
self.horizontalWidget_52 = QWidget(self.daemonsPage)
self.horizontalWidget_52.setObjectName(u"horizontalWidget_52")
self.horizontalLayout_202 = QHBoxLayout(self.horizontalWidget_52)
self.horizontalLayout_202.setSpacing(10)
@@ -1918,7 +1951,7 @@ class Ui_Nugget(object):
self.horizontalLayout_202.setContentsMargins(0, 9, 0, 9)
self.toolButton_102 = QToolButton(self.horizontalWidget_52)
self.toolButton_102.setObjectName(u"toolButton_102")
self.toolButton_102.setEnabled(False)
self.toolButton_102.setEnabled(True)
self.toolButton_102.setStyleSheet(u"QToolButton {\n"
" icon-size: 24px;\n"
" background-color: transparent;\n"
@@ -1926,7 +1959,7 @@ class Ui_Nugget(object):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.toolButton_102.setIcon(icon9)
self.toolButton_102.setIcon(icon8)
self.horizontalLayout_202.addWidget(self.toolButton_102)
@@ -1936,15 +1969,16 @@ class Ui_Nugget(object):
self.verticalLayout_122.setSpacing(6)
self.verticalLayout_122.setObjectName(u"verticalLayout_122")
self.verticalLayout_122.setContentsMargins(0, 0, 0, 0)
self.advancedOptionsLbl = QLabel(self.verticalWidget_42)
self.advancedOptionsLbl.setObjectName(u"advancedOptionsLbl")
self.advancedOptionsLbl.setFont(font1)
self.daemonsLbl = QLabel(self.verticalWidget_42)
self.daemonsLbl.setObjectName(u"daemonsLbl")
self.daemonsLbl.setFont(font1)
self.verticalLayout_122.addWidget(self.advancedOptionsLbl)
self.verticalLayout_122.addWidget(self.daemonsLbl)
self.verticalSpacer_181 = QSpacerItem(20, 16, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
self.modifyDaemonsChk = QCheckBox(self.verticalWidget_42)
self.modifyDaemonsChk.setObjectName(u"modifyDaemonsChk")
self.verticalLayout_122.addItem(self.verticalSpacer_181)
self.verticalLayout_122.addWidget(self.modifyDaemonsChk)
self.horizontalLayout_202.addWidget(self.verticalWidget_42)
@@ -1956,7 +1990,7 @@ class Ui_Nugget(object):
self.verticalLayout_142.addWidget(self.horizontalWidget_52)
self.line_122 = QFrame(self.advancedOptionsPage)
self.line_122 = QFrame(self.daemonsPage)
self.line_122.setObjectName(u"line_122")
self.line_122.setStyleSheet(u"QFrame {\n"
" color: #414141;\n"
@@ -1966,16 +2000,161 @@ class Ui_Nugget(object):
self.verticalLayout_142.addWidget(self.line_122)
self.regularDomainsLbl = QLabel(self.daemonsPage)
self.regularDomainsLbl.setObjectName(u"regularDomainsLbl")
self.verticalLayout_142.addWidget(self.regularDomainsLbl)
self.daemonsPageContent = QWidget(self.daemonsPage)
self.daemonsPageContent.setObjectName(u"daemonsPageContent")
self.daemonsPageContent.setEnabled(False)
self.verticalLayout_132 = QVBoxLayout(self.daemonsPageContent)
self.verticalLayout_132.setObjectName(u"verticalLayout_132")
self.verticalLayout_132.setContentsMargins(0, 0, 0, 0)
self.otadChk = QCheckBox(self.daemonsPageContent)
self.otadChk.setObjectName(u"otadChk")
self.verticalLayout_132.addWidget(self.otadChk)
self.usageTrackingAgentChk = QCheckBox(self.daemonsPageContent)
self.usageTrackingAgentChk.setObjectName(u"usageTrackingAgentChk")
self.verticalLayout_132.addWidget(self.usageTrackingAgentChk)
self.screenTimeChk = QCheckBox(self.daemonsPageContent)
self.screenTimeChk.setObjectName(u"screenTimeChk")
self.verticalLayout_132.addWidget(self.screenTimeChk)
self.clearScreenTimeAgentChk = QCheckBox(self.daemonsPageContent)
self.clearScreenTimeAgentChk.setObjectName(u"clearScreenTimeAgentChk")
self.verticalLayout_132.addWidget(self.clearScreenTimeAgentChk)
self.crashReportsChk = QCheckBox(self.daemonsPageContent)
self.crashReportsChk.setObjectName(u"crashReportsChk")
self.verticalLayout_132.addWidget(self.crashReportsChk)
self.atwakeupChk = QCheckBox(self.daemonsPageContent)
self.atwakeupChk.setObjectName(u"atwakeupChk")
self.verticalLayout_132.addWidget(self.atwakeupChk)
self.line_25 = QFrame(self.daemonsPageContent)
self.line_25.setObjectName(u"line_25")
self.line_25.setStyleSheet(u"QFrame {\n"
" color: #414141;\n"
"}")
self.line_25.setFrameShadow(QFrame.Plain)
self.line_25.setFrameShape(QFrame.HLine)
self.verticalLayout_132.addWidget(self.line_25)
self.gameCenterChk = QCheckBox(self.daemonsPageContent)
self.gameCenterChk.setObjectName(u"gameCenterChk")
self.verticalLayout_132.addWidget(self.gameCenterChk)
self.tipsChk = QCheckBox(self.daemonsPageContent)
self.tipsChk.setObjectName(u"tipsChk")
self.verticalLayout_132.addWidget(self.tipsChk)
self.vpndChk = QCheckBox(self.daemonsPageContent)
self.vpndChk.setObjectName(u"vpndChk")
self.verticalLayout_132.addWidget(self.vpndChk)
self.wapicChk = QCheckBox(self.daemonsPageContent)
self.wapicChk.setObjectName(u"wapicChk")
self.verticalLayout_132.addWidget(self.wapicChk)
self.healthdChk = QCheckBox(self.daemonsPageContent)
self.healthdChk.setObjectName(u"healthdChk")
self.verticalLayout_132.addWidget(self.healthdChk)
self.verticalSpacer_62 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.verticalLayout_132.addItem(self.verticalSpacer_62)
self.verticalLayout_142.addWidget(self.daemonsPageContent)
self.pages.addWidget(self.daemonsPage)
self.advancedOptionsPage = QWidget()
self.advancedOptionsPage.setObjectName(u"advancedOptionsPage")
self.verticalLayout_143 = QVBoxLayout(self.advancedOptionsPage)
self.verticalLayout_143.setObjectName(u"verticalLayout_143")
self.verticalLayout_143.setContentsMargins(0, 0, 0, 0)
self.horizontalWidget_53 = QWidget(self.advancedOptionsPage)
self.horizontalWidget_53.setObjectName(u"horizontalWidget_53")
self.horizontalLayout_203 = QHBoxLayout(self.horizontalWidget_53)
self.horizontalLayout_203.setSpacing(10)
self.horizontalLayout_203.setObjectName(u"horizontalLayout_203")
self.horizontalLayout_203.setContentsMargins(0, 9, 0, 9)
self.toolButton_103 = QToolButton(self.horizontalWidget_53)
self.toolButton_103.setObjectName(u"toolButton_103")
self.toolButton_103.setEnabled(False)
self.toolButton_103.setStyleSheet(u"QToolButton {\n"
" icon-size: 24px;\n"
" background-color: transparent;\n"
" padding-left: 0px;\n"
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.toolButton_103.setIcon(icon9)
self.horizontalLayout_203.addWidget(self.toolButton_103)
self.verticalWidget_43 = QWidget(self.horizontalWidget_53)
self.verticalWidget_43.setObjectName(u"verticalWidget_43")
self.verticalLayout_123 = QVBoxLayout(self.verticalWidget_43)
self.verticalLayout_123.setSpacing(6)
self.verticalLayout_123.setObjectName(u"verticalLayout_123")
self.verticalLayout_123.setContentsMargins(0, 0, 0, 0)
self.advancedOptionsLbl = QLabel(self.verticalWidget_43)
self.advancedOptionsLbl.setObjectName(u"advancedOptionsLbl")
self.advancedOptionsLbl.setFont(font1)
self.verticalLayout_123.addWidget(self.advancedOptionsLbl)
self.verticalSpacer_181 = QSpacerItem(20, 16, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
self.verticalLayout_123.addItem(self.verticalSpacer_181)
self.horizontalLayout_203.addWidget(self.verticalWidget_43)
self.horizontalSpacer_73 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
self.horizontalLayout_203.addItem(self.horizontalSpacer_73)
self.verticalLayout_143.addWidget(self.horizontalWidget_53)
self.line_123 = QFrame(self.advancedOptionsPage)
self.line_123.setObjectName(u"line_123")
self.line_123.setStyleSheet(u"QFrame {\n"
" color: #414141;\n"
"}")
self.line_123.setFrameShadow(QFrame.Plain)
self.line_123.setFrameShape(QFrame.HLine)
self.verticalLayout_143.addWidget(self.line_123)
self.advancedOptionsPageContent = QWidget(self.advancedOptionsPage)
self.advancedOptionsPageContent.setObjectName(u"advancedOptionsPageContent")
self.advancedOptionsPageContent.setEnabled(True)
self.verticalLayout_132 = QVBoxLayout(self.advancedOptionsPageContent)
self.verticalLayout_132.setObjectName(u"verticalLayout_132")
self.verticalLayout_132.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_133 = QVBoxLayout(self.advancedOptionsPageContent)
self.verticalLayout_133.setObjectName(u"verticalLayout_133")
self.verticalLayout_133.setContentsMargins(0, 0, 0, 0)
self.label_17 = QLabel(self.advancedOptionsPageContent)
self.label_17.setObjectName(u"label_17")
self.verticalLayout_132.addWidget(self.label_17)
self.verticalLayout_133.addWidget(self.label_17)
self.line_191 = QFrame(self.advancedOptionsPageContent)
self.line_191.setObjectName(u"line_191")
@@ -1985,12 +2164,17 @@ class Ui_Nugget(object):
self.line_191.setFrameShadow(QFrame.Plain)
self.line_191.setFrameShape(QFrame.HLine)
self.verticalLayout_132.addWidget(self.line_191)
self.verticalLayout_133.addWidget(self.line_191)
self.disableOTAChk = QCheckBox(self.advancedOptionsPageContent)
self.disableOTAChk.setObjectName(u"disableOTAChk")
self.verticalLayout_132.addWidget(self.disableOTAChk)
self.verticalLayout_133.addWidget(self.disableOTAChk)
self.thermalmonitordChk = QCheckBox(self.advancedOptionsPageContent)
self.thermalmonitordChk.setObjectName(u"thermalmonitordChk")
self.verticalLayout_133.addWidget(self.thermalmonitordChk)
self.line_181 = QFrame(self.advancedOptionsPageContent)
self.line_181.setObjectName(u"line_181")
@@ -2000,12 +2184,12 @@ class Ui_Nugget(object):
self.line_181.setFrameShadow(QFrame.Plain)
self.line_181.setFrameShape(QFrame.HLine)
self.verticalLayout_132.addWidget(self.line_181)
self.verticalLayout_133.addWidget(self.line_181)
self.enableResolutionChk = QCheckBox(self.advancedOptionsPageContent)
self.enableResolutionChk.setObjectName(u"enableResolutionChk")
self.verticalLayout_132.addWidget(self.enableResolutionChk)
self.verticalLayout_133.addWidget(self.enableResolutionChk)
self.resChangerContent = QWidget(self.advancedOptionsPageContent)
self.resChangerContent.setObjectName(u"resChangerContent")
@@ -2081,14 +2265,14 @@ class Ui_Nugget(object):
self.verticalLayout_35.addLayout(self.resolutionContent)
self.verticalLayout_132.addWidget(self.resChangerContent)
self.verticalLayout_133.addWidget(self.resChangerContent)
self.verticalSpacer_62 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.verticalSpacer_63 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.verticalLayout_132.addItem(self.verticalSpacer_62)
self.verticalLayout_133.addItem(self.verticalSpacer_63)
self.verticalLayout_142.addWidget(self.advancedOptionsPageContent)
self.verticalLayout_143.addWidget(self.advancedOptionsPageContent)
self.pages.addWidget(self.advancedOptionsPage)
self.applyPage = QWidget()
@@ -2220,6 +2404,13 @@ class Ui_Nugget(object):
self.verticalLayout_24.addWidget(self.restoreProgressBar, 0, Qt.AlignHCenter)
self.skipSetupOnLbl = QLabel(self.verticalWidget2)
self.skipSetupOnLbl.setObjectName(u"skipSetupOnLbl")
self.skipSetupOnLbl.setFont(font1)
self.skipSetupOnLbl.setAlignment(Qt.AlignCenter)
self.verticalLayout_24.addWidget(self.skipSetupOnLbl)
self.verticalSpacer_2 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.verticalLayout_24.addItem(self.verticalSpacer_2)
@@ -2324,7 +2515,7 @@ class Ui_Nugget(object):
self._21.setContentsMargins(0, 0, 0, 0)
self.allowWifiApplyingChk = QCheckBox(self.settingsPageContent)
self.allowWifiApplyingChk.setObjectName(u"allowWifiApplyingChk")
self.allowWifiApplyingChk.setChecked(True)
self.allowWifiApplyingChk.setChecked(False)
self._21.addWidget(self.allowWifiApplyingChk)
@@ -2339,6 +2530,11 @@ class Ui_Nugget(object):
self._21.addWidget(self.showRiskyChk)
self.showAllSpoofableChk = QCheckBox(self.settingsPageContent)
self.showAllSpoofableChk.setObjectName(u"showAllSpoofableChk")
self._21.addWidget(self.showAllSpoofableChk)
self.line_24 = QFrame(self.settingsPageContent)
self.line_24.setObjectName(u"line_24")
self.line_24.setStyleSheet(u"QFrame {\n"
@@ -2426,7 +2622,7 @@ class Ui_Nugget(object):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.toolButton_13.setIcon(icon6)
self.toolButton_13.setIcon(icon5)
self.horizontalLayout_28.addWidget(self.toolButton_13)
@@ -2692,7 +2888,9 @@ class Ui_Nugget(object):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.toolButton_16.setIcon(icon3)
icon22 = QIcon()
icon22.addFile(u":/icon/compass.svg", QSize(), QIcon.Normal, QIcon.Off)
self.toolButton_16.setIcon(icon22)
self.horizontalLayout_31.addWidget(self.toolButton_16)
@@ -2762,7 +2960,7 @@ class Ui_Nugget(object):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.themesBtn.setIcon(icon4)
self.themesBtn.setIcon(icon3)
self.themesBtn.setIconSize(QSize(30, 30))
self.horizontalLayout_23.addWidget(self.themesBtn)
@@ -2808,9 +3006,9 @@ class Ui_Nugget(object):
self.importThemeZipBtn = QToolButton(self.horizontalWidget7)
self.importThemeZipBtn.setObjectName(u"importThemeZipBtn")
icon22 = QIcon()
icon22.addFile(u":/icon/file-earmark-zip.svg", QSize(), QIcon.Normal, QIcon.Off)
self.importThemeZipBtn.setIcon(icon22)
icon23 = QIcon()
icon23.addFile(u":/icon/file-earmark-zip.svg", QSize(), QIcon.Normal, QIcon.Off)
self.importThemeZipBtn.setIcon(icon23)
self.horizontalLayout_26.addWidget(self.importThemeZipBtn)
@@ -2928,8 +3126,6 @@ class Ui_Nugget(object):
self.titleBar.setText(QCoreApplication.translate("Nugget", u"Nugget", None))
self.homePageBtn.setText(QCoreApplication.translate("Nugget", u" Home", None))
self.homePageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.explorePageBtn.setText(QCoreApplication.translate("Nugget", u" Explore", None))
self.explorePageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.gestaltPageBtn.setText(QCoreApplication.translate("Nugget", u" Mobile Gestalt", None))
self.gestaltPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.featureFlagsPageBtn.setText(QCoreApplication.translate("Nugget", u" Feature Flags", None))
@@ -2940,6 +3136,8 @@ class Ui_Nugget(object):
self.springboardOptionsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.internalOptionsPageBtn.setText(QCoreApplication.translate("Nugget", u" Internal Options", None))
self.internalOptionsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.daemonsPageBtn.setText(QCoreApplication.translate("Nugget", u" Daemons", None))
self.daemonsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.advancedPageBtn.setText(QCoreApplication.translate("Nugget", u" Risky Options", None))
self.advancedPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.applyPageBtn.setText(QCoreApplication.translate("Nugget", u" Apply", None))
@@ -2951,7 +3149,10 @@ class Ui_Nugget(object):
self.bigNuggetBtn.setText(QCoreApplication.translate("Nugget", u"...", None))
self.label_2.setText(QCoreApplication.translate("Nugget", u"Nugget", None))
self.discordBtn.setText(QCoreApplication.translate("Nugget", u" Join the Discord", None))
self.starOnGithubBtn.setText(QCoreApplication.translate("Nugget", u"Star on Github", None))
self.starOnGithubBtn.setText(QCoreApplication.translate("Nugget", u" Star on Github", None))
#if QT_CONFIG(tooltip)
self.leminBtn.setToolTip("")
#endif // QT_CONFIG(tooltip)
self.leminBtn.setText(QCoreApplication.translate("Nugget", u" LeminLimez", None))
self.leminTwitterBtn.setText(QCoreApplication.translate("Nugget", u"...", None))
self.leminGithubBtn.setText(QCoreApplication.translate("Nugget", u"...", None))
@@ -2962,12 +3163,12 @@ class Ui_Nugget(object):
"Sparserestore", None))
self.disfordottieBtn.setText(QCoreApplication.translate("Nugget", u"disfordottie\n"
"Clock Anim, Photos UI", None))
self.lrdsnowBtn.setText(QCoreApplication.translate("Nugget", u"lrdsnow\n"
"EU Enabler", None))
self.mikasaBtn.setText(QCoreApplication.translate("Nugget", u"Mikasa\n"
"Quiet Daemon", None))
self.toolButton_15.setText(QCoreApplication.translate("Nugget", u"Additional Thanks", None))
self.libiBtn.setText(QCoreApplication.translate("Nugget", u"pymobiledevice3", None))
self.qtBtn.setText(QCoreApplication.translate("Nugget", u"Qt Creator", None))
self.label.setText(QCoreApplication.translate("Nugget", u"Nugget GUI - Version 4.1", None))
self.appVersionLbl.setText(QCoreApplication.translate("Nugget", u"Nugget GUI - Version %VERSION %BETATAG", None))
self.statusBarLbl.setText(QCoreApplication.translate("Nugget", u"Mobile Gestalt", None))
self.mgaWarningLbl.setText(QCoreApplication.translate("Nugget", u"! You will need a MobileGestalt file for this feature. Please select it in the Apply page !", None))
self.label_9.setText(QCoreApplication.translate("Nugget", u"Device Subtype Preset", None))
@@ -2980,33 +3181,93 @@ class Ui_Nugget(object):
self.dynamicIslandDrp.setItemText(6, QCoreApplication.translate("Nugget", u"2868 (iPhone 16 Pro Max Dynamic Island)", None))
self.dynamicIslandDrp.setCurrentText(QCoreApplication.translate("Nugget", u"None", None))
#if QT_CONFIG(tooltip)
self.rdarFixChk.setToolTip(QCoreApplication.translate("Nugget", u"Modifies the resolution to improve functionality of the changed device subtype. May cause weird visual bugs.", None))
#endif // QT_CONFIG(tooltip)
self.rdarFixChk.setText(QCoreApplication.translate("Nugget", u"Fix RDAR (modifies resolution)", None))
#if QT_CONFIG(tooltip)
self.modelNameChk.setToolTip(QCoreApplication.translate("Nugget", u"Changes the model name in the 'About' page in the Settings app.", None))
#endif // QT_CONFIG(tooltip)
self.modelNameChk.setText(QCoreApplication.translate("Nugget", u"Change Device Model Name", None))
self.modelNameTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"Model Name", None))
#if QT_CONFIG(tooltip)
self.bootChimeChk.setToolTip(QCoreApplication.translate("Nugget", u"Plays a sound when the device shuts down.\n"
"\n"
"After enabling, you can find the option to enable it in 'Accessibility' settings.", None))
#endif // QT_CONFIG(tooltip)
self.bootChimeChk.setText(QCoreApplication.translate("Nugget", u"Enable Boot Chime", None))
#if QT_CONFIG(tooltip)
self.chargeLimitChk.setToolTip(QCoreApplication.translate("Nugget", u"Shows the charge limit menu in Settings. Actual limiting may not be functional.", None))
#endif // QT_CONFIG(tooltip)
self.chargeLimitChk.setText(QCoreApplication.translate("Nugget", u"Enable Charge Limit", None))
self.tapToWakeChk.setText(QCoreApplication.translate("Nugget", u"Enable Tap to Wake (for iPhone SEs)", None))
#if QT_CONFIG(tooltip)
self.iphone16SettingsChk.setToolTip(QCoreApplication.translate("Nugget", u"Enables Camera Control menu in Settings app and allows for downloading A17 Pro-exclusive apps (when spoofed).", None))
#endif // QT_CONFIG(tooltip)
self.iphone16SettingsChk.setText(QCoreApplication.translate("Nugget", u"Enable iPhone 16 Settings", None))
#if QT_CONFIG(tooltip)
self.parallaxChk.setToolTip(QCoreApplication.translate("Nugget", u"Disables the motion of the wallpaper.", None))
#endif // QT_CONFIG(tooltip)
self.parallaxChk.setText(QCoreApplication.translate("Nugget", u"Disable Wallpaper Parallax", None))
self.stageManagerChk.setText(QCoreApplication.translate("Nugget", u"Enable Stage Manager Supported (WARNING: risky on some devices, mainly phones)", None))
self.enableMedusaChk.setText(QCoreApplication.translate("Nugget", u"Enable Medusa (iPad Multitasking) (WARNING: may be risky on some phones)", None))
self.stageManagerChk.setText(QCoreApplication.translate("Nugget", u"Enable Stage Manager Supported", None))
self.enableMedusaChk.setText(QCoreApplication.translate("Nugget", u"Enable Medusa (iPad Multitasking)", None))
self.ipadAppsChk.setText(QCoreApplication.translate("Nugget", u"Allow iPad Apps on iPhone", None))
#if QT_CONFIG(tooltip)
self.shutterChk.setToolTip(QCoreApplication.translate("Nugget", u"Sets the device's region to LL/A to bypass certain region restrictions like the forced shutter sound.", None))
#endif // QT_CONFIG(tooltip)
self.shutterChk.setText(QCoreApplication.translate("Nugget", u"Disable Region Restrictions (ie. Shutter Sound)", None))
self.findMyFriendsChk.setText(QCoreApplication.translate("Nugget", u"Enable Find My Friends", None))
self.pencilChk.setText(QCoreApplication.translate("Nugget", u"Enable Apple Pencil Settings Tab", None))
self.actionButtonChk.setText(QCoreApplication.translate("Nugget", u"Enable Action Button Settings Tab", None))
#if QT_CONFIG(tooltip)
self.internalInstallChk.setToolTip(QCoreApplication.translate("Nugget", u"Use the Metal HUD in any app. Enable Metal HUD through Springboard Options.\n"
"\n"
"Note: OTA updates will be broken until this is disabled.", None))
#endif // QT_CONFIG(tooltip)
self.internalInstallChk.setText(QCoreApplication.translate("Nugget", u"Set as Apple Internal Install (ie Metal HUD in any app)", None))
#if QT_CONFIG(tooltip)
self.internalStorageChk.setToolTip(QCoreApplication.translate("Nugget", u"Shows internal files in storage settings.\n"
"\n"
"Note: OTA updates will be broken until this is disabled.", None))
#endif // QT_CONFIG(tooltip)
self.internalStorageChk.setText(QCoreApplication.translate("Nugget", u"Enable Internal Storage (WARNING: risky for some devices, mainly iPads)", None))
#if QT_CONFIG(tooltip)
self.collisionSOSChk.setToolTip(QCoreApplication.translate("Nugget", u"Shows collision detection in the SOS page in Settings.", None))
#endif // QT_CONFIG(tooltip)
self.collisionSOSChk.setText(QCoreApplication.translate("Nugget", u"Enable Collision SOS", None))
#if QT_CONFIG(tooltip)
self.aodChk.setToolTip(QCoreApplication.translate("Nugget", u"Enable AOD on unsupported devices. May cause burn in, use with caution.", None))
#endif // QT_CONFIG(tooltip)
self.aodChk.setText(QCoreApplication.translate("Nugget", u"Enable Always On Display", None))
#if QT_CONFIG(tooltip)
self.aodVibrancyChk.setToolTip(QCoreApplication.translate("Nugget", u"Enable this if something is wonky when using the above toggle.", None))
#endif // QT_CONFIG(tooltip)
self.aodVibrancyChk.setText(QCoreApplication.translate("Nugget", u"Enable AOD Vibrancy", None))
self.label_10.setText(QCoreApplication.translate("Nugget", u"Custom Gestalt Keys", None))
self.addGestaltKeyBtn.setText(QCoreApplication.translate("Nugget", u" Add Key", None))
self.label_12.setText(QCoreApplication.translate("Nugget", u"Warning: Using this feature incorrectly can lead to bootloops and data loss. Only use if you know\n"
"what you are doing.", None))
self.internalOptionsLbl.setText(QCoreApplication.translate("Nugget", u"Feature Flags", None))
#if QT_CONFIG(tooltip)
self.clockAnimChk.setToolTip(QCoreApplication.translate("Nugget", u"Enables an animation when the lock screen clock changes time or style.", None))
#endif // QT_CONFIG(tooltip)
self.clockAnimChk.setText(QCoreApplication.translate("Nugget", u"Enable Lockscreen Clock Animation", None))
#if QT_CONFIG(tooltip)
self.lockscreenChk.setToolTip(QCoreApplication.translate("Nugget", u"Enables a button to duplicate the lock screen page in edit mode.\n"
"Enables quickly switching lock screens by holding down and swiping.", None))
#endif // QT_CONFIG(tooltip)
self.lockscreenChk.setText(QCoreApplication.translate("Nugget", u"Enable Duplicate Lockscreen Button and Lockscreen Quickswitch", None))
#if QT_CONFIG(tooltip)
self.photosChk.setToolTip(QCoreApplication.translate("Nugget", u"Revert the photos app to the iOS 17 style.\n"
"\n"
"Does not work on iOS 18.0 RC.", None))
#endif // QT_CONFIG(tooltip)
self.photosChk.setText(QCoreApplication.translate("Nugget", u"Enable Old Photo UI", None))
#if QT_CONFIG(tooltip)
self.aiChk.setToolTip(QCoreApplication.translate("Nugget", u"Enable the new Siri UI.\n"
"\n"
"Only works on iOS 18.0 beta 1-2.", None))
#endif // QT_CONFIG(tooltip)
self.aiChk.setText(QCoreApplication.translate("Nugget", u"Enable Apple Intelligence", None))
self.eligibilityLbl.setText(QCoreApplication.translate("Nugget", u"Eligibility Tweaks", None))
self.euEnablerEnabledChk.setText(QCoreApplication.translate("Nugget", u"Enable EU Enabler", None))
@@ -3060,13 +3321,27 @@ class Ui_Nugget(object):
self.spoofedModelDrp.setItemText(26, QCoreApplication.translate("Nugget", u"iPad Air (M1) (C) (iPad13,17)", None))
self.spoofedModelDrp.setCurrentText(QCoreApplication.translate("Nugget", u"Original", None))
#if QT_CONFIG(tooltip)
self.spoofHardwareChk.setToolTip(QCoreApplication.translate("Nugget", u"Spoofs the device hardware model (ie D83AP)", None))
#endif // QT_CONFIG(tooltip)
self.spoofHardwareChk.setText(QCoreApplication.translate("Nugget", u"Spoof Hardware Model", None))
#if QT_CONFIG(tooltip)
self.spoofCPUChk.setToolTip(QCoreApplication.translate("Nugget", u"Spoofs the device CPU model (ie t8130)", None))
#endif // QT_CONFIG(tooltip)
self.spoofCPUChk.setText(QCoreApplication.translate("Nugget", u"Spoof CPU Model", None))
self.springboardOptionsLbl.setText(QCoreApplication.translate("Nugget", u"Springboard Options", None))
self.label_13.setText(QCoreApplication.translate("Nugget", u"Lock Screen Footnote Text", None))
self.footnoteTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"Footnote Text", None))
self.disableLockRespringChk.setText(QCoreApplication.translate("Nugget", u"Disable Lock After Respring", None))
self.disableDimmingChk.setText(QCoreApplication.translate("Nugget", u"Disable Screen Dimming While Charging", None))
self.disableBatteryAlertsChk.setText(QCoreApplication.translate("Nugget", u"Disable Low Battery Alerts", None))
#if QT_CONFIG(tooltip)
self.disableCrumbChk.setToolTip(QCoreApplication.translate("Nugget", u"Removes '< PreviousAppName' glyph in Status Bar when being forwarded to another app.", None))
#endif // QT_CONFIG(tooltip)
self.disableCrumbChk.setText(QCoreApplication.translate("Nugget", u"Disable Breadcrumbs", None))
#if QT_CONFIG(tooltip)
self.enableSupervisionTextChk.setToolTip(QCoreApplication.translate("Nugget", u"Shows info about the device supervision status and organization at the bottom of the lock screen.", None))
#endif // QT_CONFIG(tooltip)
self.enableSupervisionTextChk.setText(QCoreApplication.translate("Nugget", u"Show Supervision Text on Lock Screen", None))
self.enableAirPlayChk.setText(QCoreApplication.translate("Nugget", u"Enable AirPlay support for Stage Manager", None))
self.internalOptionsLbl1.setText(QCoreApplication.translate("Nugget", u"Internal Options", None))
@@ -3083,6 +3358,56 @@ class Ui_Nugget(object):
self.enableWakeVibrateChk.setText(QCoreApplication.translate("Nugget", u"Vibrate on Raise-to-Wake", None))
self.pasteSoundChk.setText(QCoreApplication.translate("Nugget", u"Play Sound on Paste", None))
self.notifyPastesChk.setText(QCoreApplication.translate("Nugget", u"Show Notifications for System Pastes", None))
self.daemonsLbl.setText(QCoreApplication.translate("Nugget", u"Daemons", None))
self.modifyDaemonsChk.setText(QCoreApplication.translate("Nugget", u"Modify", None))
self.regularDomainsLbl.setText(QCoreApplication.translate("Nugget", u"Note: Even on Sparserestore versions, this uses regular domains. Skip Setup will be applied if you have\n"
"it enabled.", None))
#if QT_CONFIG(tooltip)
self.otadChk.setToolTip(QCoreApplication.translate("Nugget", u"Stops over-the-air updates to prevent auto-downloads.", None))
#endif // QT_CONFIG(tooltip)
self.otadChk.setText(QCoreApplication.translate("Nugget", u"Disable OTA", None))
#if QT_CONFIG(tooltip)
self.usageTrackingAgentChk.setToolTip(QCoreApplication.translate("Nugget", u"Disables usage tracking for improved privacy.", None))
#endif // QT_CONFIG(tooltip)
self.usageTrackingAgentChk.setText(QCoreApplication.translate("Nugget", u"Disable UsageTrackingAgent", None))
#if QT_CONFIG(tooltip)
self.screenTimeChk.setToolTip(QCoreApplication.translate("Nugget", u"Disables Screen Time monitoring features.", None))
#endif // QT_CONFIG(tooltip)
self.screenTimeChk.setText(QCoreApplication.translate("Nugget", u"Disable Screen Time Agent", None))
#if QT_CONFIG(tooltip)
self.clearScreenTimeAgentChk.setToolTip(QCoreApplication.translate("Nugget", u"Deletes the Screen Time Agent preferences file to prevent app lockout set via iCloud.\n"
"\n"
"To work properly, also disable the daemon using the toggle above.", None))
#endif // QT_CONFIG(tooltip)
self.clearScreenTimeAgentChk.setText(QCoreApplication.translate("Nugget", u"Clear ScreenTimeAgent.plist file", None))
#if QT_CONFIG(tooltip)
self.crashReportsChk.setToolTip(QCoreApplication.translate("Nugget", u"Stops logs, dumps, and crash reports collection.", None))
#endif // QT_CONFIG(tooltip)
self.crashReportsChk.setText(QCoreApplication.translate("Nugget", u"Disable Logs, Dumps, and Crash Reports", None))
#if QT_CONFIG(tooltip)
self.atwakeupChk.setToolTip(QCoreApplication.translate("Nugget", u"Disables pinging to sleeping bluetooth devices for improved battery life.", None))
#endif // QT_CONFIG(tooltip)
self.atwakeupChk.setText(QCoreApplication.translate("Nugget", u"Disable ATWAKEUP", None))
#if QT_CONFIG(tooltip)
self.gameCenterChk.setToolTip(QCoreApplication.translate("Nugget", u"Turns off Game Center background services.", None))
#endif // QT_CONFIG(tooltip)
self.gameCenterChk.setText(QCoreApplication.translate("Nugget", u"Disable Game Center", None))
#if QT_CONFIG(tooltip)
self.tipsChk.setToolTip(QCoreApplication.translate("Nugget", u"Disables the Tips service and notifications.", None))
#endif // QT_CONFIG(tooltip)
self.tipsChk.setText(QCoreApplication.translate("Nugget", u"Disable Tips Services", None))
#if QT_CONFIG(tooltip)
self.vpndChk.setToolTip(QCoreApplication.translate("Nugget", u"Disables the Virtual Private Network service.", None))
#endif // QT_CONFIG(tooltip)
self.vpndChk.setText(QCoreApplication.translate("Nugget", u"Disable VPN Service", None))
#if QT_CONFIG(tooltip)
self.wapicChk.setToolTip(QCoreApplication.translate("Nugget", u"Disables the service that deals with errors with WiFi networks with Chinese characters in the name.", None))
#endif // QT_CONFIG(tooltip)
self.wapicChk.setText(QCoreApplication.translate("Nugget", u"Disable Chinese WLAN Service", None))
#if QT_CONFIG(tooltip)
self.healthdChk.setToolTip(QCoreApplication.translate("Nugget", u"Disables HealthKit services used by the health app.", None))
#endif // QT_CONFIG(tooltip)
self.healthdChk.setText(QCoreApplication.translate("Nugget", u"Disable HealthKit", None))
self.advancedOptionsLbl.setText(QCoreApplication.translate("Nugget", u"Risky Options", None))
self.label_17.setText(QCoreApplication.translate("Nugget", u"Disclaimer:\n"
"\n"
@@ -3090,7 +3415,19 @@ class Ui_Nugget(object):
"your device resolution has the potential to brick your device when used improperly.\n"
"\n"
"Nugget is not responsible if you mess up your device, especially with resolution changer.", None))
self.disableOTAChk.setText(QCoreApplication.translate("Nugget", u"Disable OTA Updates", None))
#if QT_CONFIG(tooltip)
self.disableOTAChk.setToolTip(QCoreApplication.translate("Nugget", u"Uses the file method. Recommended to disable the daemon instead in the Daemons tab.", None))
#endif // QT_CONFIG(tooltip)
self.disableOTAChk.setText(QCoreApplication.translate("Nugget", u"Disable OTA Updates (file)", None))
#if QT_CONFIG(tooltip)
self.thermalmonitordChk.setToolTip(QCoreApplication.translate("Nugget", u"Disables temperature monitoring daemon to reduce system checks.\n"
"\n"
"Warning: Disabling will cause the battery to show \"Unknown Part\" or \"Unverified\" in Settings.", None))
#endif // QT_CONFIG(tooltip)
self.thermalmonitordChk.setText(QCoreApplication.translate("Nugget", u"Disable thermalmonitord", None))
#if QT_CONFIG(tooltip)
self.enableResolutionChk.setToolTip(QCoreApplication.translate("Nugget", u"Set a custom device screen resolution.", None))
#endif // QT_CONFIG(tooltip)
self.enableResolutionChk.setText(QCoreApplication.translate("Nugget", u"Set a Custom Device Resolution", None))
self.resHeightLbl.setText(QCoreApplication.translate("Nugget", u"Height:", None))
self.resHeightTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"Resolution Height", None))
@@ -3105,12 +3442,23 @@ class Ui_Nugget(object):
self.chooseGestaltBtn.setText(QCoreApplication.translate("Nugget", u" Choose Gestalt File", None))
self.applyTweaksBtn.setText(QCoreApplication.translate("Nugget", u" Apply Changes", None))
self.statusLbl.setText(QCoreApplication.translate("Nugget", u"Ready!", None))
self.skipSetupOnLbl.setText(QCoreApplication.translate("Nugget", u"Note: Skip Setup is currently turned on.", None))
self.removeTweaksBtn.setText(QCoreApplication.translate("Nugget", u"Remove All Tweaks", None))
self.resetGestaltBtn.setText(QCoreApplication.translate("Nugget", u"Reset Mobile Gestalt", None))
self.springboardOptionsLbl1.setText(QCoreApplication.translate("Nugget", u"Nugget Settings", None))
self.allowWifiApplyingChk.setText(QCoreApplication.translate("Nugget", u"Allow Applying Over WiFi", None))
self.autoRebootChk.setText(QCoreApplication.translate("Nugget", u"Auto Reboot After Applying", None))
self.showRiskyChk.setText(QCoreApplication.translate("Nugget", u"Show Risky Tweak Options", None))
#if QT_CONFIG(tooltip)
self.showAllSpoofableChk.setToolTip(QCoreApplication.translate("Nugget", u"Show models for other device types in the AI device spoofing tab.", None))
#endif // QT_CONFIG(tooltip)
#if QT_CONFIG(statustip)
self.showAllSpoofableChk.setStatusTip("")
#endif // QT_CONFIG(statustip)
#if QT_CONFIG(whatsthis)
self.showAllSpoofableChk.setWhatsThis("")
#endif // QT_CONFIG(whatsthis)
self.showAllSpoofableChk.setText(QCoreApplication.translate("Nugget", u"Show All Spoofable Models", None))
self.skipSetupChk.setText(QCoreApplication.translate("Nugget", u"Skip Setup * (non-exploit files only)", None))
self.supervisionChk.setText(QCoreApplication.translate("Nugget", u"Enable Supervision * (requires Skip Setup)", None))
self.supervisionOrganization.setPlaceholderText(QCoreApplication.translate("Nugget", u"Enter Organization Name", None))

View File

@@ -3,7 +3,7 @@
################################################################################
## Form generated from reading UI file 'mainwindow.ui'
##
## Created by: Qt User Interface Compiler version 6.7.2
## Created by: Qt User Interface Compiler version 6.8.1
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
@@ -15,10 +15,11 @@ from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
QFont, QFontDatabase, QGradient, QIcon,
QImage, QKeySequence, QLinearGradient, QPainter,
QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QApplication, QCheckBox, QComboBox, QFrame,
QHBoxLayout, QLabel, QLineEdit, QMainWindow,
QProgressBar, QScrollArea, QSizePolicy, QSpacerItem,
QStackedWidget, QToolButton, QVBoxLayout, QWidget)
from PySide6.QtWidgets import (QAbstractScrollArea, QApplication, QCheckBox, QComboBox,
QFrame, QHBoxLayout, QLabel, QLineEdit,
QMainWindow, QProgressBar, QScrollArea, QSizePolicy,
QSpacerItem, QStackedWidget, QToolButton, QVBoxLayout,
QWidget)
import resources_rc
class Ui_Nugget(object):
@@ -306,20 +307,6 @@ class Ui_Nugget(object):
self.verticalLayout.addWidget(self.homePageBtn)
self.explorePageBtn = QToolButton(self.sidebar)
self.explorePageBtn.setObjectName(u"explorePageBtn")
self.explorePageBtn.setEnabled(True)
sizePolicy2.setHeightForWidth(self.explorePageBtn.sizePolicy().hasHeightForWidth())
self.explorePageBtn.setSizePolicy(sizePolicy2)
icon3 = QIcon()
icon3.addFile(u":/icon/compass.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.explorePageBtn.setIcon(icon3)
self.explorePageBtn.setCheckable(True)
self.explorePageBtn.setAutoExclusive(True)
self.explorePageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.verticalLayout.addWidget(self.explorePageBtn)
self.sidebarDiv1 = QFrame(self.sidebar)
self.sidebarDiv1.setObjectName(u"sidebarDiv1")
self.sidebarDiv1.setStyleSheet(u"QFrame {\n"
@@ -334,9 +321,9 @@ class Ui_Nugget(object):
self.gestaltPageBtn.setObjectName(u"gestaltPageBtn")
sizePolicy2.setHeightForWidth(self.gestaltPageBtn.sizePolicy().hasHeightForWidth())
self.gestaltPageBtn.setSizePolicy(sizePolicy2)
icon4 = QIcon()
icon4.addFile(u":/icon/iphone-island.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.gestaltPageBtn.setIcon(icon4)
icon3 = QIcon()
icon3.addFile(u":/icon/iphone-island.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.gestaltPageBtn.setIcon(icon3)
self.gestaltPageBtn.setIconSize(QSize(24, 28))
self.gestaltPageBtn.setCheckable(True)
self.gestaltPageBtn.setAutoExclusive(True)
@@ -352,9 +339,9 @@ class Ui_Nugget(object):
font = QFont()
font.setFamilies([u".AppleSystemUIFont"])
self.featureFlagsPageBtn.setFont(font)
icon5 = QIcon()
icon5.addFile(u":/icon/flag.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.featureFlagsPageBtn.setIcon(icon5)
icon4 = QIcon()
icon4.addFile(u":/icon/flag.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.featureFlagsPageBtn.setIcon(icon4)
self.featureFlagsPageBtn.setCheckable(True)
self.featureFlagsPageBtn.setAutoExclusive(True)
self.featureFlagsPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
@@ -365,9 +352,9 @@ class Ui_Nugget(object):
self.euEnablerPageBtn.setObjectName(u"euEnablerPageBtn")
sizePolicy2.setHeightForWidth(self.euEnablerPageBtn.sizePolicy().hasHeightForWidth())
self.euEnablerPageBtn.setSizePolicy(sizePolicy2)
icon6 = QIcon()
icon6.addFile(u":/icon/geo-alt.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.euEnablerPageBtn.setIcon(icon6)
icon5 = QIcon()
icon5.addFile(u":/icon/geo-alt.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.euEnablerPageBtn.setIcon(icon5)
self.euEnablerPageBtn.setCheckable(True)
self.euEnablerPageBtn.setAutoExclusive(True)
self.euEnablerPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
@@ -378,9 +365,9 @@ class Ui_Nugget(object):
self.springboardOptionsPageBtn.setObjectName(u"springboardOptionsPageBtn")
sizePolicy2.setHeightForWidth(self.springboardOptionsPageBtn.sizePolicy().hasHeightForWidth())
self.springboardOptionsPageBtn.setSizePolicy(sizePolicy2)
icon7 = QIcon()
icon7.addFile(u":/icon/app-indicator.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.springboardOptionsPageBtn.setIcon(icon7)
icon6 = QIcon()
icon6.addFile(u":/icon/app-indicator.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.springboardOptionsPageBtn.setIcon(icon6)
self.springboardOptionsPageBtn.setCheckable(True)
self.springboardOptionsPageBtn.setAutoExclusive(True)
self.springboardOptionsPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
@@ -391,15 +378,29 @@ class Ui_Nugget(object):
self.internalOptionsPageBtn.setObjectName(u"internalOptionsPageBtn")
sizePolicy2.setHeightForWidth(self.internalOptionsPageBtn.sizePolicy().hasHeightForWidth())
self.internalOptionsPageBtn.setSizePolicy(sizePolicy2)
icon8 = QIcon()
icon8.addFile(u":/icon/hdd.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.internalOptionsPageBtn.setIcon(icon8)
icon7 = QIcon()
icon7.addFile(u":/icon/hdd.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.internalOptionsPageBtn.setIcon(icon7)
self.internalOptionsPageBtn.setCheckable(True)
self.internalOptionsPageBtn.setAutoExclusive(True)
self.internalOptionsPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.verticalLayout.addWidget(self.internalOptionsPageBtn)
self.daemonsPageBtn = QToolButton(self.sidebar)
self.daemonsPageBtn.setObjectName(u"daemonsPageBtn")
self.daemonsPageBtn.setEnabled(True)
sizePolicy2.setHeightForWidth(self.daemonsPageBtn.sizePolicy().hasHeightForWidth())
self.daemonsPageBtn.setSizePolicy(sizePolicy2)
icon8 = QIcon()
icon8.addFile(u":/icon/toggles.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.daemonsPageBtn.setIcon(icon8)
self.daemonsPageBtn.setCheckable(True)
self.daemonsPageBtn.setAutoExclusive(True)
self.daemonsPageBtn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.verticalLayout.addWidget(self.daemonsPageBtn)
self.advancedPageBtn = QToolButton(self.sidebar)
self.advancedPageBtn.setObjectName(u"advancedPageBtn")
sizePolicy2.setHeightForWidth(self.advancedPageBtn.sizePolicy().hasHeightForWidth())
@@ -787,12 +788,12 @@ class Ui_Nugget(object):
self.horizontalLayout_2.addWidget(self.disfordottieBtn)
self.lrdsnowBtn = QToolButton(self.horizontalWidget_21)
self.lrdsnowBtn.setObjectName(u"lrdsnowBtn")
sizePolicy2.setHeightForWidth(self.lrdsnowBtn.sizePolicy().hasHeightForWidth())
self.lrdsnowBtn.setSizePolicy(sizePolicy2)
self.lrdsnowBtn.setMinimumSize(QSize(0, 37))
self.lrdsnowBtn.setStyleSheet(u"QToolButton {\n"
self.mikasaBtn = QToolButton(self.horizontalWidget_21)
self.mikasaBtn.setObjectName(u"mikasaBtn")
sizePolicy2.setHeightForWidth(self.mikasaBtn.sizePolicy().hasHeightForWidth())
self.mikasaBtn.setSizePolicy(sizePolicy2)
self.mikasaBtn.setMinimumSize(QSize(0, 37))
self.mikasaBtn.setStyleSheet(u"QToolButton {\n"
" border-top-left-radius: 0px;\n"
" border-bottom-left-radius: 0px;\n"
" background: none;\n"
@@ -805,7 +806,7 @@ class Ui_Nugget(object):
" color: #FFFFFF;\n"
"}")
self.horizontalLayout_2.addWidget(self.lrdsnowBtn)
self.horizontalLayout_2.addWidget(self.mikasaBtn)
self.verticalLayout_25.addWidget(self.horizontalWidget_21)
@@ -869,11 +870,11 @@ class Ui_Nugget(object):
self.verticalLayout_2.addWidget(self.verticalWidget_2)
self.label = QLabel(self.homePage)
self.label.setObjectName(u"label")
self.label.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
self.appVersionLbl = QLabel(self.homePage)
self.appVersionLbl.setObjectName(u"appVersionLbl")
self.appVersionLbl.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
self.verticalLayout_2.addWidget(self.label)
self.verticalLayout_2.addWidget(self.appVersionLbl)
self.pages.addWidget(self.homePage)
self.gestaltPage = QWidget()
@@ -897,7 +898,7 @@ class Ui_Nugget(object):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.toolButton_8.setIcon(icon4)
self.toolButton_8.setIcon(icon3)
self.toolButton_8.setIconSize(QSize(30, 30))
self.horizontalLayout_5.addWidget(self.toolButton_8)
@@ -1141,6 +1142,11 @@ class Ui_Nugget(object):
self.verticalLayout_8.addWidget(self.aodChk)
self.aodVibrancyChk = QCheckBox(self.gestaltPageContent)
self.aodVibrancyChk.setObjectName(u"aodVibrancyChk")
self.verticalLayout_8.addWidget(self.aodVibrancyChk)
self.line_22 = QFrame(self.gestaltPageContent)
self.line_22.setObjectName(u"line_22")
self.line_22.setStyleSheet(u"QFrame {\n"
@@ -1235,7 +1241,7 @@ class Ui_Nugget(object):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.toolButton_10.setIcon(icon5)
self.toolButton_10.setIcon(icon4)
self.horizontalLayout_20.addWidget(self.toolButton_10)
@@ -1341,7 +1347,7 @@ class Ui_Nugget(object):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.toolButton_11.setIcon(icon6)
self.toolButton_11.setIcon(icon5)
self.horizontalLayout_21.addWidget(self.toolButton_11)
@@ -1381,7 +1387,18 @@ class Ui_Nugget(object):
self.verticalLayout_17.addWidget(self.line_13)
self.euEnablerPageContent = QWidget(self.euEnablerPage)
self.scrollArea_2 = QScrollArea(self.euEnablerPage)
self.scrollArea_2.setObjectName(u"scrollArea_2")
self.scrollArea_2.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
self.scrollArea_2.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.scrollArea_2.setSizeAdjustPolicy(QAbstractScrollArea.AdjustIgnored)
self.scrollArea_2.setWidgetResizable(True)
self.scrollAreaWidgetContents_2 = QWidget()
self.scrollAreaWidgetContents_2.setObjectName(u"scrollAreaWidgetContents_2")
self.scrollAreaWidgetContents_2.setGeometry(QRect(0, 0, 660, 573))
self.verticalLayout_37 = QVBoxLayout(self.scrollAreaWidgetContents_2)
self.verticalLayout_37.setObjectName(u"verticalLayout_37")
self.euEnablerPageContent = QWidget(self.scrollAreaWidgetContents_2)
self.euEnablerPageContent.setObjectName(u"euEnablerPageContent")
self.euEnablerPageContent.setEnabled(False)
self.verticalLayout_16 = QVBoxLayout(self.euEnablerPageContent)
@@ -1587,6 +1604,18 @@ class Ui_Nugget(object):
self.verticalLayout_34.addWidget(self.spoofedModelDrp)
self.spoofHardwareChk = QCheckBox(self.aiEnablerContent)
self.spoofHardwareChk.setObjectName(u"spoofHardwareChk")
self.spoofHardwareChk.setChecked(True)
self.verticalLayout_34.addWidget(self.spoofHardwareChk)
self.spoofCPUChk = QCheckBox(self.aiEnablerContent)
self.spoofCPUChk.setObjectName(u"spoofCPUChk")
self.spoofCPUChk.setChecked(True)
self.verticalLayout_34.addWidget(self.spoofCPUChk)
self.verticalLayout_16.addWidget(self.aiEnablerContent)
@@ -1595,7 +1624,11 @@ class Ui_Nugget(object):
self.verticalLayout_16.addItem(self.verticalSpacer_7)
self.verticalLayout_17.addWidget(self.euEnablerPageContent)
self.verticalLayout_37.addWidget(self.euEnablerPageContent)
self.scrollArea_2.setWidget(self.scrollAreaWidgetContents_2)
self.verticalLayout_17.addWidget(self.scrollArea_2)
self.pages.addWidget(self.euEnablerPage)
self.springboardOptionsPage = QWidget()
@@ -1619,7 +1652,7 @@ class Ui_Nugget(object):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.toolButton_7.setIcon(icon7)
self.toolButton_7.setIcon(icon6)
self.horizontalLayout_13.addWidget(self.toolButton_7)
@@ -1745,7 +1778,7 @@ class Ui_Nugget(object):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.toolButton_101.setIcon(icon8)
self.toolButton_101.setIcon(icon7)
self.horizontalLayout_201.addWidget(self.toolButton_101)
@@ -1905,12 +1938,12 @@ class Ui_Nugget(object):
self.verticalLayout_141.addWidget(self.internalOptionsPageContent)
self.pages.addWidget(self.internalOptionsPage)
self.advancedOptionsPage = QWidget()
self.advancedOptionsPage.setObjectName(u"advancedOptionsPage")
self.verticalLayout_142 = QVBoxLayout(self.advancedOptionsPage)
self.daemonsPage = QWidget()
self.daemonsPage.setObjectName(u"daemonsPage")
self.verticalLayout_142 = QVBoxLayout(self.daemonsPage)
self.verticalLayout_142.setObjectName(u"verticalLayout_142")
self.verticalLayout_142.setContentsMargins(0, 0, 0, 0)
self.horizontalWidget_52 = QWidget(self.advancedOptionsPage)
self.horizontalWidget_52 = QWidget(self.daemonsPage)
self.horizontalWidget_52.setObjectName(u"horizontalWidget_52")
self.horizontalLayout_202 = QHBoxLayout(self.horizontalWidget_52)
self.horizontalLayout_202.setSpacing(10)
@@ -1918,7 +1951,7 @@ class Ui_Nugget(object):
self.horizontalLayout_202.setContentsMargins(0, 9, 0, 9)
self.toolButton_102 = QToolButton(self.horizontalWidget_52)
self.toolButton_102.setObjectName(u"toolButton_102")
self.toolButton_102.setEnabled(False)
self.toolButton_102.setEnabled(True)
self.toolButton_102.setStyleSheet(u"QToolButton {\n"
" icon-size: 24px;\n"
" background-color: transparent;\n"
@@ -1926,7 +1959,7 @@ class Ui_Nugget(object):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.toolButton_102.setIcon(icon9)
self.toolButton_102.setIcon(icon8)
self.horizontalLayout_202.addWidget(self.toolButton_102)
@@ -1936,15 +1969,16 @@ class Ui_Nugget(object):
self.verticalLayout_122.setSpacing(6)
self.verticalLayout_122.setObjectName(u"verticalLayout_122")
self.verticalLayout_122.setContentsMargins(0, 0, 0, 0)
self.advancedOptionsLbl = QLabel(self.verticalWidget_42)
self.advancedOptionsLbl.setObjectName(u"advancedOptionsLbl")
self.advancedOptionsLbl.setFont(font1)
self.daemonsLbl = QLabel(self.verticalWidget_42)
self.daemonsLbl.setObjectName(u"daemonsLbl")
self.daemonsLbl.setFont(font1)
self.verticalLayout_122.addWidget(self.advancedOptionsLbl)
self.verticalLayout_122.addWidget(self.daemonsLbl)
self.verticalSpacer_181 = QSpacerItem(20, 16, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
self.modifyDaemonsChk = QCheckBox(self.verticalWidget_42)
self.modifyDaemonsChk.setObjectName(u"modifyDaemonsChk")
self.verticalLayout_122.addItem(self.verticalSpacer_181)
self.verticalLayout_122.addWidget(self.modifyDaemonsChk)
self.horizontalLayout_202.addWidget(self.verticalWidget_42)
@@ -1956,7 +1990,7 @@ class Ui_Nugget(object):
self.verticalLayout_142.addWidget(self.horizontalWidget_52)
self.line_122 = QFrame(self.advancedOptionsPage)
self.line_122 = QFrame(self.daemonsPage)
self.line_122.setObjectName(u"line_122")
self.line_122.setStyleSheet(u"QFrame {\n"
" color: #414141;\n"
@@ -1966,16 +2000,161 @@ class Ui_Nugget(object):
self.verticalLayout_142.addWidget(self.line_122)
self.regularDomainsLbl = QLabel(self.daemonsPage)
self.regularDomainsLbl.setObjectName(u"regularDomainsLbl")
self.verticalLayout_142.addWidget(self.regularDomainsLbl)
self.daemonsPageContent = QWidget(self.daemonsPage)
self.daemonsPageContent.setObjectName(u"daemonsPageContent")
self.daemonsPageContent.setEnabled(False)
self.verticalLayout_132 = QVBoxLayout(self.daemonsPageContent)
self.verticalLayout_132.setObjectName(u"verticalLayout_132")
self.verticalLayout_132.setContentsMargins(0, 0, 0, 0)
self.otadChk = QCheckBox(self.daemonsPageContent)
self.otadChk.setObjectName(u"otadChk")
self.verticalLayout_132.addWidget(self.otadChk)
self.usageTrackingAgentChk = QCheckBox(self.daemonsPageContent)
self.usageTrackingAgentChk.setObjectName(u"usageTrackingAgentChk")
self.verticalLayout_132.addWidget(self.usageTrackingAgentChk)
self.screenTimeChk = QCheckBox(self.daemonsPageContent)
self.screenTimeChk.setObjectName(u"screenTimeChk")
self.verticalLayout_132.addWidget(self.screenTimeChk)
self.clearScreenTimeAgentChk = QCheckBox(self.daemonsPageContent)
self.clearScreenTimeAgentChk.setObjectName(u"clearScreenTimeAgentChk")
self.verticalLayout_132.addWidget(self.clearScreenTimeAgentChk)
self.crashReportsChk = QCheckBox(self.daemonsPageContent)
self.crashReportsChk.setObjectName(u"crashReportsChk")
self.verticalLayout_132.addWidget(self.crashReportsChk)
self.atwakeupChk = QCheckBox(self.daemonsPageContent)
self.atwakeupChk.setObjectName(u"atwakeupChk")
self.verticalLayout_132.addWidget(self.atwakeupChk)
self.line_25 = QFrame(self.daemonsPageContent)
self.line_25.setObjectName(u"line_25")
self.line_25.setStyleSheet(u"QFrame {\n"
" color: #414141;\n"
"}")
self.line_25.setFrameShadow(QFrame.Plain)
self.line_25.setFrameShape(QFrame.Shape.HLine)
self.verticalLayout_132.addWidget(self.line_25)
self.gameCenterChk = QCheckBox(self.daemonsPageContent)
self.gameCenterChk.setObjectName(u"gameCenterChk")
self.verticalLayout_132.addWidget(self.gameCenterChk)
self.tipsChk = QCheckBox(self.daemonsPageContent)
self.tipsChk.setObjectName(u"tipsChk")
self.verticalLayout_132.addWidget(self.tipsChk)
self.vpndChk = QCheckBox(self.daemonsPageContent)
self.vpndChk.setObjectName(u"vpndChk")
self.verticalLayout_132.addWidget(self.vpndChk)
self.wapicChk = QCheckBox(self.daemonsPageContent)
self.wapicChk.setObjectName(u"wapicChk")
self.verticalLayout_132.addWidget(self.wapicChk)
self.healthdChk = QCheckBox(self.daemonsPageContent)
self.healthdChk.setObjectName(u"healthdChk")
self.verticalLayout_132.addWidget(self.healthdChk)
self.verticalSpacer_62 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.verticalLayout_132.addItem(self.verticalSpacer_62)
self.verticalLayout_142.addWidget(self.daemonsPageContent)
self.pages.addWidget(self.daemonsPage)
self.advancedOptionsPage = QWidget()
self.advancedOptionsPage.setObjectName(u"advancedOptionsPage")
self.verticalLayout_143 = QVBoxLayout(self.advancedOptionsPage)
self.verticalLayout_143.setObjectName(u"verticalLayout_143")
self.verticalLayout_143.setContentsMargins(0, 0, 0, 0)
self.horizontalWidget_53 = QWidget(self.advancedOptionsPage)
self.horizontalWidget_53.setObjectName(u"horizontalWidget_53")
self.horizontalLayout_203 = QHBoxLayout(self.horizontalWidget_53)
self.horizontalLayout_203.setSpacing(10)
self.horizontalLayout_203.setObjectName(u"horizontalLayout_203")
self.horizontalLayout_203.setContentsMargins(0, 9, 0, 9)
self.toolButton_103 = QToolButton(self.horizontalWidget_53)
self.toolButton_103.setObjectName(u"toolButton_103")
self.toolButton_103.setEnabled(False)
self.toolButton_103.setStyleSheet(u"QToolButton {\n"
" icon-size: 24px;\n"
" background-color: transparent;\n"
" padding-left: 0px;\n"
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.toolButton_103.setIcon(icon9)
self.horizontalLayout_203.addWidget(self.toolButton_103)
self.verticalWidget_43 = QWidget(self.horizontalWidget_53)
self.verticalWidget_43.setObjectName(u"verticalWidget_43")
self.verticalLayout_123 = QVBoxLayout(self.verticalWidget_43)
self.verticalLayout_123.setSpacing(6)
self.verticalLayout_123.setObjectName(u"verticalLayout_123")
self.verticalLayout_123.setContentsMargins(0, 0, 0, 0)
self.advancedOptionsLbl = QLabel(self.verticalWidget_43)
self.advancedOptionsLbl.setObjectName(u"advancedOptionsLbl")
self.advancedOptionsLbl.setFont(font1)
self.verticalLayout_123.addWidget(self.advancedOptionsLbl)
self.verticalSpacer_181 = QSpacerItem(20, 16, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
self.verticalLayout_123.addItem(self.verticalSpacer_181)
self.horizontalLayout_203.addWidget(self.verticalWidget_43)
self.horizontalSpacer_73 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
self.horizontalLayout_203.addItem(self.horizontalSpacer_73)
self.verticalLayout_143.addWidget(self.horizontalWidget_53)
self.line_123 = QFrame(self.advancedOptionsPage)
self.line_123.setObjectName(u"line_123")
self.line_123.setStyleSheet(u"QFrame {\n"
" color: #414141;\n"
"}")
self.line_123.setFrameShadow(QFrame.Plain)
self.line_123.setFrameShape(QFrame.Shape.HLine)
self.verticalLayout_143.addWidget(self.line_123)
self.advancedOptionsPageContent = QWidget(self.advancedOptionsPage)
self.advancedOptionsPageContent.setObjectName(u"advancedOptionsPageContent")
self.advancedOptionsPageContent.setEnabled(True)
self.verticalLayout_132 = QVBoxLayout(self.advancedOptionsPageContent)
self.verticalLayout_132.setObjectName(u"verticalLayout_132")
self.verticalLayout_132.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_133 = QVBoxLayout(self.advancedOptionsPageContent)
self.verticalLayout_133.setObjectName(u"verticalLayout_133")
self.verticalLayout_133.setContentsMargins(0, 0, 0, 0)
self.label_17 = QLabel(self.advancedOptionsPageContent)
self.label_17.setObjectName(u"label_17")
self.verticalLayout_132.addWidget(self.label_17)
self.verticalLayout_133.addWidget(self.label_17)
self.line_191 = QFrame(self.advancedOptionsPageContent)
self.line_191.setObjectName(u"line_191")
@@ -1985,12 +2164,17 @@ class Ui_Nugget(object):
self.line_191.setFrameShadow(QFrame.Plain)
self.line_191.setFrameShape(QFrame.Shape.HLine)
self.verticalLayout_132.addWidget(self.line_191)
self.verticalLayout_133.addWidget(self.line_191)
self.disableOTAChk = QCheckBox(self.advancedOptionsPageContent)
self.disableOTAChk.setObjectName(u"disableOTAChk")
self.verticalLayout_132.addWidget(self.disableOTAChk)
self.verticalLayout_133.addWidget(self.disableOTAChk)
self.thermalmonitordChk = QCheckBox(self.advancedOptionsPageContent)
self.thermalmonitordChk.setObjectName(u"thermalmonitordChk")
self.verticalLayout_133.addWidget(self.thermalmonitordChk)
self.line_181 = QFrame(self.advancedOptionsPageContent)
self.line_181.setObjectName(u"line_181")
@@ -2000,12 +2184,12 @@ class Ui_Nugget(object):
self.line_181.setFrameShadow(QFrame.Plain)
self.line_181.setFrameShape(QFrame.Shape.HLine)
self.verticalLayout_132.addWidget(self.line_181)
self.verticalLayout_133.addWidget(self.line_181)
self.enableResolutionChk = QCheckBox(self.advancedOptionsPageContent)
self.enableResolutionChk.setObjectName(u"enableResolutionChk")
self.verticalLayout_132.addWidget(self.enableResolutionChk)
self.verticalLayout_133.addWidget(self.enableResolutionChk)
self.resChangerContent = QWidget(self.advancedOptionsPageContent)
self.resChangerContent.setObjectName(u"resChangerContent")
@@ -2081,14 +2265,14 @@ class Ui_Nugget(object):
self.verticalLayout_35.addLayout(self.resolutionContent)
self.verticalLayout_132.addWidget(self.resChangerContent)
self.verticalLayout_133.addWidget(self.resChangerContent)
self.verticalSpacer_62 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.verticalSpacer_63 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.verticalLayout_132.addItem(self.verticalSpacer_62)
self.verticalLayout_133.addItem(self.verticalSpacer_63)
self.verticalLayout_142.addWidget(self.advancedOptionsPageContent)
self.verticalLayout_143.addWidget(self.advancedOptionsPageContent)
self.pages.addWidget(self.advancedOptionsPage)
self.applyPage = QWidget()
@@ -2220,6 +2404,13 @@ class Ui_Nugget(object):
self.verticalLayout_24.addWidget(self.restoreProgressBar, 0, Qt.AlignHCenter)
self.skipSetupOnLbl = QLabel(self.verticalWidget2)
self.skipSetupOnLbl.setObjectName(u"skipSetupOnLbl")
self.skipSetupOnLbl.setFont(font1)
self.skipSetupOnLbl.setAlignment(Qt.AlignCenter)
self.verticalLayout_24.addWidget(self.skipSetupOnLbl)
self.verticalSpacer_2 = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
self.verticalLayout_24.addItem(self.verticalSpacer_2)
@@ -2324,7 +2515,7 @@ class Ui_Nugget(object):
self._21.setContentsMargins(0, 0, 0, 0)
self.allowWifiApplyingChk = QCheckBox(self.settingsPageContent)
self.allowWifiApplyingChk.setObjectName(u"allowWifiApplyingChk")
self.allowWifiApplyingChk.setChecked(True)
self.allowWifiApplyingChk.setChecked(False)
self._21.addWidget(self.allowWifiApplyingChk)
@@ -2339,6 +2530,11 @@ class Ui_Nugget(object):
self._21.addWidget(self.showRiskyChk)
self.showAllSpoofableChk = QCheckBox(self.settingsPageContent)
self.showAllSpoofableChk.setObjectName(u"showAllSpoofableChk")
self._21.addWidget(self.showAllSpoofableChk)
self.line_24 = QFrame(self.settingsPageContent)
self.line_24.setObjectName(u"line_24")
self.line_24.setStyleSheet(u"QFrame {\n"
@@ -2426,7 +2622,7 @@ class Ui_Nugget(object):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.toolButton_13.setIcon(icon6)
self.toolButton_13.setIcon(icon5)
self.horizontalLayout_28.addWidget(self.toolButton_13)
@@ -2692,7 +2888,9 @@ class Ui_Nugget(object):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.toolButton_16.setIcon(icon3)
icon22 = QIcon()
icon22.addFile(u":/icon/compass.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.toolButton_16.setIcon(icon22)
self.horizontalLayout_31.addWidget(self.toolButton_16)
@@ -2762,7 +2960,7 @@ class Ui_Nugget(object):
" padding-right: 5px;\n"
" border-radius: 0px;\n"
"}")
self.themesBtn.setIcon(icon4)
self.themesBtn.setIcon(icon3)
self.themesBtn.setIconSize(QSize(30, 30))
self.horizontalLayout_23.addWidget(self.themesBtn)
@@ -2808,9 +3006,9 @@ class Ui_Nugget(object):
self.importThemeZipBtn = QToolButton(self.horizontalWidget7)
self.importThemeZipBtn.setObjectName(u"importThemeZipBtn")
icon22 = QIcon()
icon22.addFile(u":/icon/file-earmark-zip.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.importThemeZipBtn.setIcon(icon22)
icon23 = QIcon()
icon23.addFile(u":/icon/file-earmark-zip.svg", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
self.importThemeZipBtn.setIcon(icon23)
self.horizontalLayout_26.addWidget(self.importThemeZipBtn)
@@ -2922,36 +3120,39 @@ class Ui_Nugget(object):
def retranslateUi(self, Nugget):
Nugget.setWindowTitle(QCoreApplication.translate("Nugget", u"Nugget", None))
self.centralwidget.setProperty("cls", QCoreApplication.translate("Nugget", u"central", None))
self.centralwidget.setProperty(u"cls", QCoreApplication.translate("Nugget", u"central", None))
self.devicePicker.setPlaceholderText(QCoreApplication.translate("Nugget", u"None", None))
self.refreshBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"btn", None))
self.refreshBtn.setProperty(u"cls", QCoreApplication.translate("Nugget", u"btn", None))
self.titleBar.setText(QCoreApplication.translate("Nugget", u"Nugget", None))
self.homePageBtn.setText(QCoreApplication.translate("Nugget", u" Home", None))
self.homePageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.explorePageBtn.setText(QCoreApplication.translate("Nugget", u" Explore", None))
self.explorePageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.homePageBtn.setProperty(u"cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.gestaltPageBtn.setText(QCoreApplication.translate("Nugget", u" Mobile Gestalt", None))
self.gestaltPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.gestaltPageBtn.setProperty(u"cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.featureFlagsPageBtn.setText(QCoreApplication.translate("Nugget", u" Feature Flags", None))
self.featureFlagsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.featureFlagsPageBtn.setProperty(u"cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.euEnablerPageBtn.setText(QCoreApplication.translate("Nugget", u" Eligibility", None))
self.euEnablerPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.euEnablerPageBtn.setProperty(u"cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.springboardOptionsPageBtn.setText(QCoreApplication.translate("Nugget", u" Springboard Options", None))
self.springboardOptionsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.springboardOptionsPageBtn.setProperty(u"cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.internalOptionsPageBtn.setText(QCoreApplication.translate("Nugget", u" Internal Options", None))
self.internalOptionsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.internalOptionsPageBtn.setProperty(u"cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.daemonsPageBtn.setText(QCoreApplication.translate("Nugget", u" Daemons", None))
self.daemonsPageBtn.setProperty(u"cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.advancedPageBtn.setText(QCoreApplication.translate("Nugget", u" Risky Options", None))
self.advancedPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.advancedPageBtn.setProperty(u"cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.applyPageBtn.setText(QCoreApplication.translate("Nugget", u" Apply", None))
self.applyPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.applyPageBtn.setProperty(u"cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.settingsPageBtn.setText(QCoreApplication.translate("Nugget", u" Settings", None))
self.settingsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.settingsPageBtn.setProperty(u"cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
self.phoneNameLbl.setText(QCoreApplication.translate("Nugget", u"Phone", None))
self.phoneVersionLbl.setText(QCoreApplication.translate("Nugget", u"<a style=\"text-decoration:none; color: white\" href=\"#\">Version</a>", None))
self.bigNuggetBtn.setText(QCoreApplication.translate("Nugget", u"...", None))
self.label_2.setText(QCoreApplication.translate("Nugget", u"Nugget", None))
self.discordBtn.setText(QCoreApplication.translate("Nugget", u" Join the Discord", None))
self.starOnGithubBtn.setText(QCoreApplication.translate("Nugget", u"Star on Github", None))
self.starOnGithubBtn.setText(QCoreApplication.translate("Nugget", u" Star on Github", None))
#if QT_CONFIG(tooltip)
self.leminBtn.setToolTip("")
#endif // QT_CONFIG(tooltip)
self.leminBtn.setText(QCoreApplication.translate("Nugget", u" LeminLimez", None))
self.leminTwitterBtn.setText(QCoreApplication.translate("Nugget", u"...", None))
self.leminGithubBtn.setText(QCoreApplication.translate("Nugget", u"...", None))
@@ -2962,12 +3163,12 @@ class Ui_Nugget(object):
"Sparserestore", None))
self.disfordottieBtn.setText(QCoreApplication.translate("Nugget", u"disfordottie\n"
"Clock Anim, Photos UI", None))
self.lrdsnowBtn.setText(QCoreApplication.translate("Nugget", u"lrdsnow\n"
"EU Enabler", None))
self.mikasaBtn.setText(QCoreApplication.translate("Nugget", u"Mikasa\n"
"Quiet Daemon", None))
self.toolButton_15.setText(QCoreApplication.translate("Nugget", u"Additional Thanks", None))
self.libiBtn.setText(QCoreApplication.translate("Nugget", u"pymobiledevice3", None))
self.qtBtn.setText(QCoreApplication.translate("Nugget", u"Qt Creator", None))
self.label.setText(QCoreApplication.translate("Nugget", u"Nugget GUI - Version 4.1", None))
self.appVersionLbl.setText(QCoreApplication.translate("Nugget", u"Nugget GUI - Version %VERSION %BETATAG", None))
self.statusBarLbl.setText(QCoreApplication.translate("Nugget", u"Mobile Gestalt", None))
self.mgaWarningLbl.setText(QCoreApplication.translate("Nugget", u"! You will need a MobileGestalt file for this feature. Please select it in the Apply page !", None))
self.label_9.setText(QCoreApplication.translate("Nugget", u"Device Subtype Preset", None))
@@ -2980,33 +3181,93 @@ class Ui_Nugget(object):
self.dynamicIslandDrp.setItemText(6, QCoreApplication.translate("Nugget", u"2868 (iPhone 16 Pro Max Dynamic Island)", None))
self.dynamicIslandDrp.setCurrentText(QCoreApplication.translate("Nugget", u"None", None))
#if QT_CONFIG(tooltip)
self.rdarFixChk.setToolTip(QCoreApplication.translate("Nugget", u"Modifies the resolution to improve functionality of the changed device subtype. May cause weird visual bugs.", None))
#endif // QT_CONFIG(tooltip)
self.rdarFixChk.setText(QCoreApplication.translate("Nugget", u"Fix RDAR (modifies resolution)", None))
#if QT_CONFIG(tooltip)
self.modelNameChk.setToolTip(QCoreApplication.translate("Nugget", u"Changes the model name in the 'About' page in the Settings app.", None))
#endif // QT_CONFIG(tooltip)
self.modelNameChk.setText(QCoreApplication.translate("Nugget", u"Change Device Model Name", None))
self.modelNameTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"Model Name", None))
#if QT_CONFIG(tooltip)
self.bootChimeChk.setToolTip(QCoreApplication.translate("Nugget", u"Plays a sound when the device shuts down.\n"
"\n"
"After enabling, you can find the option to enable it in 'Accessibility' settings.", None))
#endif // QT_CONFIG(tooltip)
self.bootChimeChk.setText(QCoreApplication.translate("Nugget", u"Enable Boot Chime", None))
#if QT_CONFIG(tooltip)
self.chargeLimitChk.setToolTip(QCoreApplication.translate("Nugget", u"Shows the charge limit menu in Settings. Actual limiting may not be functional.", None))
#endif // QT_CONFIG(tooltip)
self.chargeLimitChk.setText(QCoreApplication.translate("Nugget", u"Enable Charge Limit", None))
self.tapToWakeChk.setText(QCoreApplication.translate("Nugget", u"Enable Tap to Wake (for iPhone SEs)", None))
#if QT_CONFIG(tooltip)
self.iphone16SettingsChk.setToolTip(QCoreApplication.translate("Nugget", u"Enables Camera Control menu in Settings app and allows for downloading A17 Pro-exclusive apps (when spoofed).", None))
#endif // QT_CONFIG(tooltip)
self.iphone16SettingsChk.setText(QCoreApplication.translate("Nugget", u"Enable iPhone 16 Settings", None))
#if QT_CONFIG(tooltip)
self.parallaxChk.setToolTip(QCoreApplication.translate("Nugget", u"Disables the motion of the wallpaper.", None))
#endif // QT_CONFIG(tooltip)
self.parallaxChk.setText(QCoreApplication.translate("Nugget", u"Disable Wallpaper Parallax", None))
self.stageManagerChk.setText(QCoreApplication.translate("Nugget", u"Enable Stage Manager Supported (WARNING: risky on some devices, mainly phones)", None))
self.enableMedusaChk.setText(QCoreApplication.translate("Nugget", u"Enable Medusa (iPad Multitasking) (WARNING: may be risky on some phones)", None))
self.stageManagerChk.setText(QCoreApplication.translate("Nugget", u"Enable Stage Manager Supported", None))
self.enableMedusaChk.setText(QCoreApplication.translate("Nugget", u"Enable Medusa (iPad Multitasking)", None))
self.ipadAppsChk.setText(QCoreApplication.translate("Nugget", u"Allow iPad Apps on iPhone", None))
#if QT_CONFIG(tooltip)
self.shutterChk.setToolTip(QCoreApplication.translate("Nugget", u"Sets the device's region to LL/A to bypass certain region restrictions like the forced shutter sound.", None))
#endif // QT_CONFIG(tooltip)
self.shutterChk.setText(QCoreApplication.translate("Nugget", u"Disable Region Restrictions (ie. Shutter Sound)", None))
self.findMyFriendsChk.setText(QCoreApplication.translate("Nugget", u"Enable Find My Friends", None))
self.pencilChk.setText(QCoreApplication.translate("Nugget", u"Enable Apple Pencil Settings Tab", None))
self.actionButtonChk.setText(QCoreApplication.translate("Nugget", u"Enable Action Button Settings Tab", None))
#if QT_CONFIG(tooltip)
self.internalInstallChk.setToolTip(QCoreApplication.translate("Nugget", u"Use the Metal HUD in any app. Enable Metal HUD through Springboard Options.\n"
"\n"
"Note: OTA updates will be broken until this is disabled.", None))
#endif // QT_CONFIG(tooltip)
self.internalInstallChk.setText(QCoreApplication.translate("Nugget", u"Set as Apple Internal Install (ie Metal HUD in any app)", None))
#if QT_CONFIG(tooltip)
self.internalStorageChk.setToolTip(QCoreApplication.translate("Nugget", u"Shows internal files in storage settings.\n"
"\n"
"Note: OTA updates will be broken until this is disabled.", None))
#endif // QT_CONFIG(tooltip)
self.internalStorageChk.setText(QCoreApplication.translate("Nugget", u"Enable Internal Storage (WARNING: risky for some devices, mainly iPads)", None))
#if QT_CONFIG(tooltip)
self.collisionSOSChk.setToolTip(QCoreApplication.translate("Nugget", u"Shows collision detection in the SOS page in Settings.", None))
#endif // QT_CONFIG(tooltip)
self.collisionSOSChk.setText(QCoreApplication.translate("Nugget", u"Enable Collision SOS", None))
#if QT_CONFIG(tooltip)
self.aodChk.setToolTip(QCoreApplication.translate("Nugget", u"Enable AOD on unsupported devices. May cause burn in, use with caution.", None))
#endif // QT_CONFIG(tooltip)
self.aodChk.setText(QCoreApplication.translate("Nugget", u"Enable Always On Display", None))
#if QT_CONFIG(tooltip)
self.aodVibrancyChk.setToolTip(QCoreApplication.translate("Nugget", u"Enable this if something is wonky when using the above toggle.", None))
#endif // QT_CONFIG(tooltip)
self.aodVibrancyChk.setText(QCoreApplication.translate("Nugget", u"Enable AOD Vibrancy", None))
self.label_10.setText(QCoreApplication.translate("Nugget", u"Custom Gestalt Keys", None))
self.addGestaltKeyBtn.setText(QCoreApplication.translate("Nugget", u" Add Key", None))
self.label_12.setText(QCoreApplication.translate("Nugget", u"Warning: Using this feature incorrectly can lead to bootloops and data loss. Only use if you know\n"
"what you are doing.", None))
self.internalOptionsLbl.setText(QCoreApplication.translate("Nugget", u"Feature Flags", None))
#if QT_CONFIG(tooltip)
self.clockAnimChk.setToolTip(QCoreApplication.translate("Nugget", u"Enables an animation when the lock screen clock changes time or style.", None))
#endif // QT_CONFIG(tooltip)
self.clockAnimChk.setText(QCoreApplication.translate("Nugget", u"Enable Lockscreen Clock Animation", None))
#if QT_CONFIG(tooltip)
self.lockscreenChk.setToolTip(QCoreApplication.translate("Nugget", u"Enables a button to duplicate the lock screen page in edit mode.\n"
"Enables quickly switching lock screens by holding down and swiping.", None))
#endif // QT_CONFIG(tooltip)
self.lockscreenChk.setText(QCoreApplication.translate("Nugget", u"Enable Duplicate Lockscreen Button and Lockscreen Quickswitch", None))
#if QT_CONFIG(tooltip)
self.photosChk.setToolTip(QCoreApplication.translate("Nugget", u"Revert the photos app to the iOS 17 style.\n"
"\n"
"Does not work on iOS 18.0 RC.", None))
#endif // QT_CONFIG(tooltip)
self.photosChk.setText(QCoreApplication.translate("Nugget", u"Enable Old Photo UI", None))
#if QT_CONFIG(tooltip)
self.aiChk.setToolTip(QCoreApplication.translate("Nugget", u"Enable the new Siri UI.\n"
"\n"
"Only works on iOS 18.0 beta 1-2.", None))
#endif // QT_CONFIG(tooltip)
self.aiChk.setText(QCoreApplication.translate("Nugget", u"Enable Apple Intelligence", None))
self.eligibilityLbl.setText(QCoreApplication.translate("Nugget", u"Eligibility Tweaks", None))
self.euEnablerEnabledChk.setText(QCoreApplication.translate("Nugget", u"Enable EU Enabler", None))
@@ -3060,13 +3321,27 @@ class Ui_Nugget(object):
self.spoofedModelDrp.setItemText(26, QCoreApplication.translate("Nugget", u"iPad Air (M1) (C) (iPad13,17)", None))
self.spoofedModelDrp.setCurrentText(QCoreApplication.translate("Nugget", u"Original", None))
#if QT_CONFIG(tooltip)
self.spoofHardwareChk.setToolTip(QCoreApplication.translate("Nugget", u"Spoofs the device hardware model (ie D83AP)", None))
#endif // QT_CONFIG(tooltip)
self.spoofHardwareChk.setText(QCoreApplication.translate("Nugget", u"Spoof Hardware Model", None))
#if QT_CONFIG(tooltip)
self.spoofCPUChk.setToolTip(QCoreApplication.translate("Nugget", u"Spoofs the device CPU model (ie t8130)", None))
#endif // QT_CONFIG(tooltip)
self.spoofCPUChk.setText(QCoreApplication.translate("Nugget", u"Spoof CPU Model", None))
self.springboardOptionsLbl.setText(QCoreApplication.translate("Nugget", u"Springboard Options", None))
self.label_13.setText(QCoreApplication.translate("Nugget", u"Lock Screen Footnote Text", None))
self.footnoteTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"Footnote Text", None))
self.disableLockRespringChk.setText(QCoreApplication.translate("Nugget", u"Disable Lock After Respring", None))
self.disableDimmingChk.setText(QCoreApplication.translate("Nugget", u"Disable Screen Dimming While Charging", None))
self.disableBatteryAlertsChk.setText(QCoreApplication.translate("Nugget", u"Disable Low Battery Alerts", None))
#if QT_CONFIG(tooltip)
self.disableCrumbChk.setToolTip(QCoreApplication.translate("Nugget", u"Removes '< PreviousAppName' glyph in Status Bar when being forwarded to another app.", None))
#endif // QT_CONFIG(tooltip)
self.disableCrumbChk.setText(QCoreApplication.translate("Nugget", u"Disable Breadcrumbs", None))
#if QT_CONFIG(tooltip)
self.enableSupervisionTextChk.setToolTip(QCoreApplication.translate("Nugget", u"Shows info about the device supervision status and organization at the bottom of the lock screen.", None))
#endif // QT_CONFIG(tooltip)
self.enableSupervisionTextChk.setText(QCoreApplication.translate("Nugget", u"Show Supervision Text on Lock Screen", None))
self.enableAirPlayChk.setText(QCoreApplication.translate("Nugget", u"Enable AirPlay support for Stage Manager", None))
self.internalOptionsLbl1.setText(QCoreApplication.translate("Nugget", u"Internal Options", None))
@@ -3083,6 +3358,56 @@ class Ui_Nugget(object):
self.enableWakeVibrateChk.setText(QCoreApplication.translate("Nugget", u"Vibrate on Raise-to-Wake", None))
self.pasteSoundChk.setText(QCoreApplication.translate("Nugget", u"Play Sound on Paste", None))
self.notifyPastesChk.setText(QCoreApplication.translate("Nugget", u"Show Notifications for System Pastes", None))
self.daemonsLbl.setText(QCoreApplication.translate("Nugget", u"Daemons", None))
self.modifyDaemonsChk.setText(QCoreApplication.translate("Nugget", u"Modify", None))
self.regularDomainsLbl.setText(QCoreApplication.translate("Nugget", u"Note: Even on Sparserestore versions, this uses regular domains. Skip Setup will be applied if you have\n"
"it enabled.", None))
#if QT_CONFIG(tooltip)
self.otadChk.setToolTip(QCoreApplication.translate("Nugget", u"Stops over-the-air updates to prevent auto-downloads.", None))
#endif // QT_CONFIG(tooltip)
self.otadChk.setText(QCoreApplication.translate("Nugget", u"Disable OTA", None))
#if QT_CONFIG(tooltip)
self.usageTrackingAgentChk.setToolTip(QCoreApplication.translate("Nugget", u"Disables usage tracking for improved privacy.", None))
#endif // QT_CONFIG(tooltip)
self.usageTrackingAgentChk.setText(QCoreApplication.translate("Nugget", u"Disable UsageTrackingAgent", None))
#if QT_CONFIG(tooltip)
self.screenTimeChk.setToolTip(QCoreApplication.translate("Nugget", u"Disables Screen Time monitoring features.", None))
#endif // QT_CONFIG(tooltip)
self.screenTimeChk.setText(QCoreApplication.translate("Nugget", u"Disable Screen Time Agent", None))
#if QT_CONFIG(tooltip)
self.clearScreenTimeAgentChk.setToolTip(QCoreApplication.translate("Nugget", u"Deletes the Screen Time Agent preferences file to prevent app lockout set via iCloud.\n"
"\n"
"To work properly, also disable the daemon using the toggle above.", None))
#endif // QT_CONFIG(tooltip)
self.clearScreenTimeAgentChk.setText(QCoreApplication.translate("Nugget", u"Clear ScreenTimeAgent.plist file", None))
#if QT_CONFIG(tooltip)
self.crashReportsChk.setToolTip(QCoreApplication.translate("Nugget", u"Stops logs, dumps, and crash reports collection.", None))
#endif // QT_CONFIG(tooltip)
self.crashReportsChk.setText(QCoreApplication.translate("Nugget", u"Disable Logs, Dumps, and Crash Reports", None))
#if QT_CONFIG(tooltip)
self.atwakeupChk.setToolTip(QCoreApplication.translate("Nugget", u"Disables pinging to sleeping bluetooth devices for improved battery life.", None))
#endif // QT_CONFIG(tooltip)
self.atwakeupChk.setText(QCoreApplication.translate("Nugget", u"Disable ATWAKEUP", None))
#if QT_CONFIG(tooltip)
self.gameCenterChk.setToolTip(QCoreApplication.translate("Nugget", u"Turns off Game Center background services.", None))
#endif // QT_CONFIG(tooltip)
self.gameCenterChk.setText(QCoreApplication.translate("Nugget", u"Disable Game Center", None))
#if QT_CONFIG(tooltip)
self.tipsChk.setToolTip(QCoreApplication.translate("Nugget", u"Disables the Tips service and notifications.", None))
#endif // QT_CONFIG(tooltip)
self.tipsChk.setText(QCoreApplication.translate("Nugget", u"Disable Tips Services", None))
#if QT_CONFIG(tooltip)
self.vpndChk.setToolTip(QCoreApplication.translate("Nugget", u"Disables the Virtual Private Network service.", None))
#endif // QT_CONFIG(tooltip)
self.vpndChk.setText(QCoreApplication.translate("Nugget", u"Disable VPN Service", None))
#if QT_CONFIG(tooltip)
self.wapicChk.setToolTip(QCoreApplication.translate("Nugget", u"Disables the service that deals with errors with WiFi networks with Chinese characters in the name.", None))
#endif // QT_CONFIG(tooltip)
self.wapicChk.setText(QCoreApplication.translate("Nugget", u"Disable Chinese WLAN Service", None))
#if QT_CONFIG(tooltip)
self.healthdChk.setToolTip(QCoreApplication.translate("Nugget", u"Disables HealthKit services used by the health app.", None))
#endif // QT_CONFIG(tooltip)
self.healthdChk.setText(QCoreApplication.translate("Nugget", u"Disable HealthKit", None))
self.advancedOptionsLbl.setText(QCoreApplication.translate("Nugget", u"Risky Options", None))
self.label_17.setText(QCoreApplication.translate("Nugget", u"Disclaimer:\n"
"\n"
@@ -3090,7 +3415,19 @@ class Ui_Nugget(object):
"your device resolution has the potential to brick your device when used improperly.\n"
"\n"
"Nugget is not responsible if you mess up your device, especially with resolution changer.", None))
self.disableOTAChk.setText(QCoreApplication.translate("Nugget", u"Disable OTA Updates", None))
#if QT_CONFIG(tooltip)
self.disableOTAChk.setToolTip(QCoreApplication.translate("Nugget", u"Uses the file method. Recommended to disable the daemon instead in the Daemons tab.", None))
#endif // QT_CONFIG(tooltip)
self.disableOTAChk.setText(QCoreApplication.translate("Nugget", u"Disable OTA Updates (file)", None))
#if QT_CONFIG(tooltip)
self.thermalmonitordChk.setToolTip(QCoreApplication.translate("Nugget", u"Disables temperature monitoring daemon to reduce system checks.\n"
"\n"
"Warning: Disabling will cause the battery to show \"Unknown Part\" or \"Unverified\" in Settings.", None))
#endif // QT_CONFIG(tooltip)
self.thermalmonitordChk.setText(QCoreApplication.translate("Nugget", u"Disable thermalmonitord", None))
#if QT_CONFIG(tooltip)
self.enableResolutionChk.setToolTip(QCoreApplication.translate("Nugget", u"Set a custom device screen resolution.", None))
#endif // QT_CONFIG(tooltip)
self.enableResolutionChk.setText(QCoreApplication.translate("Nugget", u"Set a Custom Device Resolution", None))
self.resHeightLbl.setText(QCoreApplication.translate("Nugget", u"Height:", None))
self.resHeightTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"Resolution Height", None))
@@ -3105,12 +3442,23 @@ class Ui_Nugget(object):
self.chooseGestaltBtn.setText(QCoreApplication.translate("Nugget", u" Choose Gestalt File", None))
self.applyTweaksBtn.setText(QCoreApplication.translate("Nugget", u" Apply Changes", None))
self.statusLbl.setText(QCoreApplication.translate("Nugget", u"Ready!", None))
self.skipSetupOnLbl.setText(QCoreApplication.translate("Nugget", u"Note: Skip Setup is currently turned on.", None))
self.removeTweaksBtn.setText(QCoreApplication.translate("Nugget", u"Remove All Tweaks", None))
self.resetGestaltBtn.setText(QCoreApplication.translate("Nugget", u"Reset Mobile Gestalt", None))
self.springboardOptionsLbl1.setText(QCoreApplication.translate("Nugget", u"Nugget Settings", None))
self.allowWifiApplyingChk.setText(QCoreApplication.translate("Nugget", u"Allow Applying Over WiFi", None))
self.autoRebootChk.setText(QCoreApplication.translate("Nugget", u"Auto Reboot After Applying", None))
self.showRiskyChk.setText(QCoreApplication.translate("Nugget", u"Show Risky Tweak Options", None))
#if QT_CONFIG(tooltip)
self.showAllSpoofableChk.setToolTip(QCoreApplication.translate("Nugget", u"Show models for other device types in the AI device spoofing tab.", None))
#endif // QT_CONFIG(tooltip)
#if QT_CONFIG(statustip)
self.showAllSpoofableChk.setStatusTip("")
#endif // QT_CONFIG(statustip)
#if QT_CONFIG(whatsthis)
self.showAllSpoofableChk.setWhatsThis("")
#endif // QT_CONFIG(whatsthis)
self.showAllSpoofableChk.setText(QCoreApplication.translate("Nugget", u"Show All Spoofable Models", None))
self.skipSetupChk.setText(QCoreApplication.translate("Nugget", u"Skip Setup * (non-exploit files only)", None))
self.supervisionChk.setText(QCoreApplication.translate("Nugget", u"Enable Supervision * (requires Skip Setup)", None))
self.supervisionOrganization.setPlaceholderText(QCoreApplication.translate("Nugget", u"Enter Organization Name", None))

View File

@@ -1,3 +1,3 @@
pymobiledevice3
pyside6
PySide6-Essentials
PyInstaller

View File

@@ -16,6 +16,10 @@ class FileLocation(Enum):
pasteboard = "/var/Managed Preferences/mobile/com.apple.Pasteboard.plist"
notes = "/var/Managed Preferences/mobile/com.apple.mobilenotes.plist"
# Daemons
disabledDaemons = "/var/db/com.apple.xpc.launchd/disabled.plist"
screentime = "/var/mobile/Library/Preferences/ScreenTimeAgent.plist"
# Risky Options
ota = "/var/Managed Preferences/mobile/com.apple.MobileAsset.plist"

42
tweaks/daemons_tweak.py Normal file
View File

@@ -0,0 +1,42 @@
from enum import Enum
class Daemon(Enum):
thermalmonitord = ["com.apple.thermalmonitord"]
OTA = [
"com.apple.mobile.softwareupdated",
"com.apple.OTATaskingAgent",
"com.apple.softwareupdateservicesd"
]
UsageTrackingAgent = ["com.apple.UsageTrackingAgent"]
GameCenter = ["com.apple.gamed"]
ScreenTime = [
"com.apple.ScreenTimeAgent",
"com.apple.homed",
"com.apple.familycircled"
]
CrashReports = [
"com.apple.ReportCrash",
"com.apple.ReportCrash.Jetsam",
"com.apple.ReportMemoryException",
"com.apple.OTACrashCopier",
"com.apple.analyticsd",
"com.apple.aslmanager",
"com.apple.coresymbolicationd",
"com.apple.crash_mover",
"com.apple.crashreportcopymobile",
"com.apple.DumpBasebandCrash",
"com.apple.DumpPanic",
"com.apple.logd",
"com.apple.logd.admin",
"com.apple.logd.events",
"com.apple.logd.watchdog",
"com.apple.logd_reporter",
"com.apple.logd_reporter.report_statistics",
"com.apple.system.logger",
"com.apple.syslogd"
]
ATWAKEUP = ["com.apple.atc.atwakeup"]
Tips = ["com.apple.tipsd"]
VPN = ["com.apple.racoon"]
ChineseLAN = ["com.apple.wapic"]
HealthKit = ["com.apple.healthd"]

View File

@@ -23,11 +23,10 @@ def replace_region_code(plist_path: str, original_code: str = "US", new_code: st
class EligibilityTweak(Tweak):
def __init__(
self, label: str,
min_version: Version = Version("1.0"),
divider_below: bool = False
self,
min_version: Version = Version("1.0")
):
super().__init__(label=label, key=None, value=["Method 1", "Method 2"], edit_type=TweakModifyType.PICKER, min_version=min_version, divider_below=divider_below)
super().__init__(key=None, value=["Method 1", "Method 2"], edit_type=TweakModifyType.PICKER, min_version=min_version)
self.code = "US"
self.method = 0 # between 0 and 1
@@ -90,7 +89,7 @@ class EligibilityTweak(Tweak):
class AITweak(Tweak):
def __init__(self):
super().__init__(label="Enable Apple Intelligence (for Unsupported Devices) (Eligibility)", key=None, value="", min_version=Version("18.1"))
super().__init__(key=None, value="", min_version=Version("18.1"))
def set_language_code(self, lang: str):
self.value = lang

View File

@@ -9,20 +9,19 @@ class TweakModifyType(Enum):
class Tweak:
def __init__(
self, label: str,
key: str, subkey: str = None,
self,
key: str,
value: any = 1,
edit_type: TweakModifyType = TweakModifyType.TOGGLE,
min_version: Version = Version("1.0"),
divider_below: bool = False
owner: int = 501, group: int = 501
):
self.label = label
self.key = key
self.subkey = subkey
self.value = value
self.min_version = min_version
self.edit_type = edit_type
self.divider_below = divider_below
self.owner = owner
self.group = group
self.enabled = False
def set_enabled(self, value: bool):
@@ -40,19 +39,33 @@ class Tweak:
def apply_tweak(self):
raise NotImplementedError
class NullifyFileTweak(Tweak):
def __init__(
self,
file_location: FileLocation,
min_version: Version = Version("1.0"),
owner: int = 501, group: int = 501
):
super().__init__(key=None, value=None, min_version=min_version, owner=owner, group=group)
self.file_location = file_location
def apply_tweak(self, other_tweaks: dict):
if self.enabled:
other_tweaks[self.file_location] = b""
class BasicPlistTweak(Tweak):
def __init__(
self, label: str,
self,
file_location: FileLocation,
key: str,
value: any = True,
edit_type: TweakModifyType = TweakModifyType.TOGGLE,
min_version: Version = Version("1.0"),
is_risky: bool = False,
divider_below: bool = False
owner: int = 501, group: int = 501,
is_risky: bool = False
):
super().__init__(label=label, key=key, subkey=None, value=value, edit_type=edit_type, min_version=min_version, divider_below=divider_below)
super().__init__(key=key, value=value, edit_type=edit_type, min_version=min_version, owner=owner, group=group)
self.file_location = file_location
self.is_risky = is_risky
@@ -67,15 +80,19 @@ class BasicPlistTweak(Tweak):
class AdvancedPlistTweak(BasicPlistTweak):
def __init__(
self, label: str,
self,
file_location: FileLocation,
keyValues: dict,
edit_type: TweakModifyType = TweakModifyType.TOGGLE,
min_version: Version = Version("1.0"),
is_risky: bool = False,
divider_below: bool = False
owner: int = 501, group: int = 501,
is_risky: bool = False
):
super().__init__(label=label, file_location=file_location, key=None, value=keyValues, edit_type=edit_type, min_version=min_version, is_risky=is_risky, divider_below=divider_below)
super().__init__(file_location=file_location, key=None, value=keyValues, edit_type=edit_type, min_version=min_version, owner=owner, group=group, is_risky=is_risky)
def set_multiple_values(self, keys: list[str], value: any):
for key in keys:
self.value[key] = value
def apply_tweak(self, other_tweaks: dict, risky_allowed: bool = False) -> dict:
if not self.enabled or (self.is_risky and not risky_allowed):
@@ -88,8 +105,8 @@ class AdvancedPlistTweak(BasicPlistTweak):
class RdarFixTweak(BasicPlistTweak):
def __init__(self, divider_below: bool = False):
super().__init__(label="Fix RDAR (modifies resolution)", file_location=FileLocation.resolution, key=None, divider_below=divider_below)
def __init__(self):
super().__init__(file_location=FileLocation.resolution, key=None)
self.mode = 0
self.di_type = -1
@@ -177,13 +194,13 @@ class MobileGestaltTweak(Tweak):
class MobileGestaltPickerTweak(Tweak):
def __init__(
self, label: str,
self,
key: str, subkey: str = None,
values: list = [1],
min_version: Version = Version("1.0"),
divider_below: bool = False
min_version: Version = Version("1.0")
):
super().__init__(label=label, key=key, subkey=subkey, value=values, edit_type=TweakModifyType.PICKER, min_version=min_version, divider_below=divider_below)
super().__init__(key=key, value=values, edit_type=TweakModifyType.PICKER, min_version=min_version)
self.subkey = subkey
self.selected_option = 0 # index of the selected option
def apply_tweak(self, plist: dict):
@@ -196,16 +213,16 @@ class MobileGestaltPickerTweak(Tweak):
plist["CacheExtra"][self.key][self.subkey] = new_value
return plist
def set_selected_option(self, new_option: int):
def set_selected_option(self, new_option: int, is_enabled: bool = True):
self.selected_option = new_option
self.enabled = True
self.enabled = is_enabled
def get_selected_option(self) -> int:
return self.selected_option
class MobileGestaltMultiTweak(Tweak):
def __init__(self, label: str, keyValues: dict, min_version: Version = Version("1.0"), divider_below: bool = False):
super().__init__(label=label, key=None, min_version=min_version, divider_below=divider_below)
def __init__(self, keyValues: dict, min_version: Version = Version("1.0")):
super().__init__(key=None, min_version=min_version)
self.keyValues = keyValues
# key values looks like ["key name" = value]
@@ -218,13 +235,12 @@ class MobileGestaltMultiTweak(Tweak):
class FeatureFlagTweak(Tweak):
def __init__(
self, label: str,
self,
flag_category: str, flag_names: list,
is_list: bool=True, inverted: bool=False,
min_version: Version = Version("1.0"),
divider_below: bool = False
min_version: Version = Version("1.0")
):
super().__init__(label=label, key=None, min_version=min_version, divider_below=divider_below)
super().__init__(key=None, min_version=min_version)
self.flag_category = flag_category
self.flag_names = flag_names
self.is_list = is_list

View File

@@ -1,48 +1,48 @@
from devicemanagement.constants import Version
from .tweak_classes import MobileGestaltTweak, MobileGestaltMultiTweak, MobileGestaltPickerTweak, FeatureFlagTweak, TweakModifyType, BasicPlistTweak, AdvancedPlistTweak, RdarFixTweak
from .tweak_classes import MobileGestaltTweak, MobileGestaltMultiTweak, MobileGestaltPickerTweak, FeatureFlagTweak, TweakModifyType, BasicPlistTweak, AdvancedPlistTweak, RdarFixTweak, NullifyFileTweak
from .eligibility_tweak import EligibilityTweak, AITweak
from .basic_plist_locations import FileLocation
tweaks = {
## MobileGestalt Tweaks
"DynamicIsland": MobileGestaltPickerTweak("Toggle Dynamic Island", "oPeik/9e8lQWMszEjbPzng", "ArtworkDeviceSubType", [2436, 2556, 2796, 2976, 2622, 2868]),
"DynamicIsland": MobileGestaltPickerTweak("oPeik/9e8lQWMszEjbPzng", "ArtworkDeviceSubType", [2436, 2556, 2796, 2976, 2622, 2868]),
"RdarFix": RdarFixTweak(),
"ModelName": MobileGestaltTweak("Set Device Model Name", "oPeik/9e8lQWMszEjbPzng", "ArtworkDeviceProductDescription", "", TweakModifyType.TEXT),
"BootChime": MobileGestaltTweak("Toggle Boot Chime", "QHxt+hGLaBPbQJbXiUJX3w"),
"ChargeLimit": MobileGestaltTweak("Toggle Charge Limit", "37NVydb//GP/GrhuTN+exg"),
"CollisionSOS": MobileGestaltTweak("Toggle Collision SOS", "HCzWusHQwZDea6nNhaKndw"),
"TapToWake": MobileGestaltTweak("Toggle Tap To Wake (iPhone SE)", "yZf3GTRMGTuwSV/lD7Cagw"),
"CameraButton": MobileGestaltMultiTweak("Toggle iPhone 16 Settings", {"CwvKxM2cEogD3p+HYgaW0Q": 1, "oOV1jhJbdV3AddkcCg0AEA": 1}, min_version=Version("18.0")),
"Parallax": MobileGestaltTweak("Disable Wallpaper Parallax", "UIParallaxCapability", value=0),
"StageManager": MobileGestaltTweak("Toggle Stage Manager Supported (WARNING: risky on some devices, mainly phones)", "qeaj75wk3HF4DwQ8qbIi7g", value=1),
"Medusa": MobileGestaltMultiTweak("Toggle Medusa (iPad Multitasking) (WARNING: may be risky on some phones)", {"mG0AnH/Vy1veoqoLRAIgTA": 1, "UCG5MkVahJxG1YULbbd5Bg": 1, "ZYqko/XM5zD3XBfN5RmaXA": 1, "nVh/gwNpy7Jv1NOk00CMrw": 1, "uKc7FPnEO++lVhHWHFlGbQ": 1}),
"iPadApps": MobileGestaltTweak("Allow iPad Apps on iPhone", "9MZ5AdH43csAUajl/dU+IQ", value=[1, 2]),
"Shutter": MobileGestaltMultiTweak("Disable Region Restrictions (ie. Shutter Sound)", {"h63QSdBCiT/z0WU6rdQv6Q": "US", "zHeENZu+wbg7PUprwNwBWg": "LL/A"}),
"FindMyFriends": MobileGestaltTweak("Toggle Find My Friends", "Y2Y67z0Nq/XdDXgW2EeaVg"),
"Pencil": MobileGestaltTweak("Toggle Apple Pencil", "yhHcB0iH0d1XzPO/CFd3ow"),
"ActionButton": MobileGestaltTweak("Toggle Action Button", "cT44WE1EohiwRzhsZ8xEsw"),
"InternalStorage": MobileGestaltTweak("Toggle Internal Storage (WARNING: risky for some devices, mainly iPads)", "LBJfwOEzExRxzlAnSuI7eg"),
"InternalInstall": MobileGestaltTweak("Set as Apple Internal Install (ie Metal HUD in any app)", "EqrsVvjcYDdxHBiQmGhAWw", divider_below=True),
"EUEnabler": EligibilityTweak("EU Enabler", divider_below=True),
"AOD": MobileGestaltMultiTweak("Always On Display",
"ModelName": MobileGestaltTweak("oPeik/9e8lQWMszEjbPzng", "ArtworkDeviceProductDescription", "", TweakModifyType.TEXT),
"BootChime": MobileGestaltTweak("QHxt+hGLaBPbQJbXiUJX3w"),
"ChargeLimit": MobileGestaltTweak("37NVydb//GP/GrhuTN+exg"),
"CollisionSOS": MobileGestaltTweak("HCzWusHQwZDea6nNhaKndw"),
"TapToWake": MobileGestaltTweak("yZf3GTRMGTuwSV/lD7Cagw"),
"CameraButton": MobileGestaltMultiTweak({"CwvKxM2cEogD3p+HYgaW0Q": 1, "oOV1jhJbdV3AddkcCg0AEA": 1}, min_version=Version("18.0")),
"Parallax": MobileGestaltTweak("UIParallaxCapability", value=0),
"StageManager": MobileGestaltTweak("qeaj75wk3HF4DwQ8qbIi7g", value=1),
"Medusa": MobileGestaltMultiTweak({"mG0AnH/Vy1veoqoLRAIgTA": 1, "UCG5MkVahJxG1YULbbd5Bg": 1, "ZYqko/XM5zD3XBfN5RmaXA": 1, "nVh/gwNpy7Jv1NOk00CMrw": 1, "uKc7FPnEO++lVhHWHFlGbQ": 1}),
"iPadApps": MobileGestaltTweak("9MZ5AdH43csAUajl/dU+IQ", value=[1, 2]),
"Shutter": MobileGestaltMultiTweak({"h63QSdBCiT/z0WU6rdQv6Q": "US", "zHeENZu+wbg7PUprwNwBWg": "LL/A"}),
"FindMyFriends": MobileGestaltTweak("Y2Y67z0Nq/XdDXgW2EeaVg"),
"Pencil": MobileGestaltTweak("yhHcB0iH0d1XzPO/CFd3ow"),
"ActionButton": MobileGestaltTweak("cT44WE1EohiwRzhsZ8xEsw"),
"InternalStorage": MobileGestaltTweak("LBJfwOEzExRxzlAnSuI7eg"),
"InternalInstall": MobileGestaltTweak("EqrsVvjcYDdxHBiQmGhAWw"),
"EUEnabler": EligibilityTweak(),
"AOD": MobileGestaltMultiTweak(
{"2OOJf1VhaM7NxfRok3HbWQ": 1, "j8/Omm6s1lsmTDFsXjsBfA": 1},
min_version=Version("18.0")),
"AODVibrancy": MobileGestaltTweak("ykpu7qyhqFweVMKtxNylWA", min_version=Version("18.0")),
## Feature Flag Tweaks
"ClockAnim": FeatureFlagTweak("Toggle Lockscreen Clock Animation", flag_category='SpringBoard',
"ClockAnim": FeatureFlagTweak(flag_category='SpringBoard',
flag_names=['SwiftUITimeAnimation'],
min_version=Version("18.0")),
"Lockscreen": FeatureFlagTweak("Toggle Duplicate Lockscreen Button and Lockscreen Quickswitch", flag_category="SpringBoard",
"Lockscreen": FeatureFlagTweak(flag_category="SpringBoard",
flag_names=['AutobahnQuickSwitchTransition', 'SlipSwitch', 'PosterEditorKashida'],
min_version=Version("18.0")),
"PhotoUI": FeatureFlagTweak("Enable Old Photo UI", flag_category='Photos', flag_names=['Lemonade'], is_list=False, inverted=True, min_version=Version("18.0")),
"AI": FeatureFlagTweak("Enable Apple Intelligence", flag_category='SpringBoard', flag_names=['Domino', 'SuperDomino'], min_version=Version("18.1"), divider_below=True),
"PhotoUI": FeatureFlagTweak(flag_category='Photos', flag_names=['Lemonade'], is_list=False, inverted=True, min_version=Version("18.0")),
"AI": FeatureFlagTweak(flag_category='SpringBoard', flag_names=['Domino', 'SuperDomino'], min_version=Version("18.1")),
## AI Enabler
"AIEligibility": AITweak(),
"AIGestalt": MobileGestaltTweak("Enable Apple Intelligence (for Unsupported Devices) (Gestalt)", "A62OafQ85EJAiiqKn4agtg", min_version=Version("18.1")),
"SpoofModel": MobileGestaltPickerTweak("Spoofed Device Model", "h9jDsbgj7xIVeIQ8S3/X3Q", values=[
"AIGestalt": MobileGestaltTweak("A62OafQ85EJAiiqKn4agtg", min_version=Version("18.1")),
"SpoofModel": MobileGestaltPickerTweak("h9jDsbgj7xIVeIQ8S3/X3Q", values=[
# Default
"Placeholder", # 0 | Original
@@ -82,7 +82,7 @@ tweaks = {
"iPad13,16", # 25 | iPad Air (M1) (W)
"iPad13,17", # 26 | iPad Air (M1) (C)
], min_version=Version("18.1")),
"SpoofHardware": MobileGestaltPickerTweak("Spoof Hardware Model", "oYicEKzVTz4/CxxE05pEgQ", values=[
"SpoofHardware": MobileGestaltPickerTweak("oYicEKzVTz4/CxxE05pEgQ", values=[
# Default
"Placeholder", # 0 | Original
@@ -122,7 +122,7 @@ tweaks = {
"J407AP", # 25 | iPad Air (M1) (W)
"J408AP", # 26 | iPad Air (M1) (C)
], min_version=Version("18.1")),
"SpoofCPU": MobileGestaltPickerTweak("Spoof CPU Model", "5pYKlGnYYBzGvAlIU8RjEQ", values=[
"SpoofCPU": MobileGestaltPickerTweak("5pYKlGnYYBzGvAlIU8RjEQ", values=[
# Default
"Placeholder", # 0 | Original
@@ -161,117 +161,110 @@ tweaks = {
"t8103", # 24 | iPad Pro (12.9-inch) (M1) (C)
"t8103", # 25 | iPad Air (M1) (W)
"t8103", # 26 | iPad Air (M1) (C)
], min_version=Version("18.1"), divider_below=True),
], min_version=Version("18.1")),
## Springboard Tweaks
"LockScreenFootnote": BasicPlistTweak(
"Set Lock Screen Footnote Text",
FileLocation.footnote,
key="LockScreenFootnote", value="",
edit_type=TweakModifyType.TEXT
),
"SBDontLockAfterCrash": BasicPlistTweak(
"Disable Lock After Respring",
FileLocation.springboard,
"SBDontLockAfterCrash"
),
"SBDontDimOrLockOnAC": BasicPlistTweak(
"Disable Screen Dimming While Charging",
FileLocation.springboard,
"SBDontDimOrLockOnAC"
),
"SBHideLowPowerAlerts": BasicPlistTweak(
"Disable Low Battery Alerts",
FileLocation.springboard,
"SBHideLowPowerAlerts"
),
"SBNeverBreadcrumb": BasicPlistTweak(
"Disable Breadcrumb",
FileLocation.springboard,
"SBNeverBreadcrumb"
),
"SBShowSupervisionTextOnLockScreen": BasicPlistTweak(
"Show Supervision Text on Lock Screen",
FileLocation.springboard,
"SBShowSupervisionTextOnLockScreen"
),
"AirplaySupport": BasicPlistTweak(
"Enable AirPlay support for Stage Manager",
FileLocation.springboard,
"SBExtendedDisplayOverrideSupportForAirPlayAndDontFileRadars",
divider_below=True
"SBExtendedDisplayOverrideSupportForAirPlayAndDontFileRadars"
),
## Internal Options
"SBBuildNumber": BasicPlistTweak(
"Show Build Version in Status Bar",
FileLocation.globalPreferences,
"UIStatusBarShowBuildVersion"
),
"RTL": BasicPlistTweak(
"Force Right-to-Left Layout",
FileLocation.globalPreferences,
"NSForceRightToLeftWritingDirection"
),
"MetalForceHudEnabled": BasicPlistTweak(
"Enable Metal HUD Debug",
FileLocation.globalPreferences,
"MetalForceHudEnabled"
),
"iMessageDiagnosticsEnabled": BasicPlistTweak(
"Enable iMessage Debugging",
FileLocation.globalPreferences,
"iMessageDiagnosticsEnabled"
),
"IDSDiagnosticsEnabled": BasicPlistTweak(
"Enable Continuity Debugging",
FileLocation.globalPreferences,
"IDSDiagnosticsEnabled"
),
"VCDiagnosticsEnabled": BasicPlistTweak(
"Enable FaceTime Debugging",
FileLocation.globalPreferences,
"VCDiagnosticsEnabled"
),
"AppStoreDebug": BasicPlistTweak(
"Enable App Store Debug Gesture",
FileLocation.appStore,
"debugGestureEnabled"
),
"NotesDebugMode": BasicPlistTweak(
"Enable Notes App Debug Mode",
FileLocation.notes,
"DebugModeEnabled"
),
"BKDigitizerVisualizeTouches": BasicPlistTweak(
"Show Touches With Debug Info",
FileLocation.backboardd,
"BKDigitizerVisualizeTouches"
),
"BKHideAppleLogoOnLaunch": BasicPlistTweak(
"Hide Respring Icon",
FileLocation.backboardd,
"BKHideAppleLogoOnLaunch"
),
"EnableWakeGestureHaptic": BasicPlistTweak(
"Vibrate on Raise-to-Wake",
FileLocation.coreMotion,
"EnableWakeGestureHaptic"
),
"PlaySoundOnPaste": BasicPlistTweak(
"Play Sound on Paste",
FileLocation.pasteboard,
"PlaySoundOnPaste"
),
"AnnounceAllPastes": BasicPlistTweak(
"Show Notifications for System Pastes",
FileLocation.pasteboard,
"AnnounceAllPastes"
),
## Daemons
"Daemons": AdvancedPlistTweak(
FileLocation.disabledDaemons,
{
"com.apple.magicswitchd.companion": True,
"com.apple.security.otpaird": True,
"com.apple.dhcp6d": True,
"com.apple.bootpd": True,
"com.apple.ftp-proxy-embedded": False,
"com.apple.relevanced": True
},
owner=0, group=0
),
"ClearScreenTimeAgentPlist": NullifyFileTweak(FileLocation.screentime),
## Risky Options
"DisableOTA": AdvancedPlistTweak(
"Disable OTA Updates",
"DisableOTAFile": AdvancedPlistTweak(
FileLocation.ota,
{
"MobileAssetServerURL-com.apple.MobileAsset.MobileSoftwareUpdate.UpdateBrain": "https://mesu.apple.com/assets/tvOS16DeveloperSeed",
@@ -284,7 +277,6 @@ tweaks = {
}, is_risky=True
),
"CustomResolution": AdvancedPlistTweak(
"Set Custom Resolution real",
FileLocation.resolution,
{}, # empty as to not cause issues when only 1 value is inputted
is_risky=True