mirror of
https://github.com/leminlimez/Nugget.git
synced 2025-04-08 04:23:05 +08:00
rdar/status bar fix
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
from Sparserestore.restore import restore_files, FileToRestore, restore_file
|
||||
from tweaks.tweaks import tweaks, TweakModifyType, FeatureFlagTweak, EligibilityTweak, AITweak, BasicPlistTweak
|
||||
from tweaks.tweaks import tweaks, TweakModifyType, FeatureFlagTweak, EligibilityTweak, AITweak, BasicPlistTweak, RdarFixTweak
|
||||
from tweaks.basic_plist_locations import FileLocation
|
||||
from devicemanagement.constants import Device
|
||||
|
||||
@@ -63,6 +63,7 @@ while running:
|
||||
ld = create_using_usbmux(serial=current_device.serial)
|
||||
vals = ld.all_values
|
||||
device = Device(uuid=current_device.serial, name=vals['DeviceName'], version=vals['ProductVersion'], model=vals['ProductType'], locale=ld.locale, ld=ld)
|
||||
tweaks["RdarFix"].get_rdar_mode()
|
||||
except Exception as e:
|
||||
print(traceback.format_exc())
|
||||
input("Press Enter to continue...")
|
||||
@@ -125,7 +126,7 @@ while running:
|
||||
eligibility_files = tweak.apply_tweak()
|
||||
elif isinstance(tweak, AITweak):
|
||||
ai_file = tweak.apply_tweak()
|
||||
elif isinstance(tweak, BasicPlistTweak):
|
||||
elif isinstance(tweak, BasicPlistTweak) or isinstance(tweak, RdarFixTweak):
|
||||
basic_plists = tweak.apply_tweak(basic_plists)
|
||||
else:
|
||||
gestalt_plist = tweak.apply_tweak(gestalt_plist)
|
||||
@@ -218,6 +219,7 @@ while running:
|
||||
picker_choice = int(input("Select option: "))
|
||||
if picker_choice > 0 and picker_choice <= len(values):
|
||||
tweak.set_selected_option(picker_choice-1)
|
||||
tweaks["RdarFix"].set_di_type(values[tweak.get_selected_option()])
|
||||
elif picker_choice == len(values)+1:
|
||||
tweak.set_enabled(False)
|
||||
else:
|
||||
|
||||
@@ -10,7 +10,7 @@ from pymobiledevice3.lockdown import create_using_usbmux
|
||||
from devicemanagement.constants import Device, Version
|
||||
from devicemanagement.data_singleton import DataSingleton
|
||||
|
||||
from tweaks.tweaks import tweaks, FeatureFlagTweak, EligibilityTweak, AITweak, BasicPlistTweak
|
||||
from tweaks.tweaks import tweaks, FeatureFlagTweak, EligibilityTweak, AITweak, BasicPlistTweak, RdarFixTweak
|
||||
from tweaks.basic_plist_locations import FileLocation
|
||||
from Sparserestore.restore import restore_files, FileToRestore
|
||||
|
||||
@@ -48,6 +48,7 @@ class DeviceManager:
|
||||
locale=ld.locale,
|
||||
ld=ld
|
||||
)
|
||||
tweaks["RdarFix"].get_rdar_mode(vals['ProductType'])
|
||||
self.devices.append(dev)
|
||||
except Exception as e:
|
||||
print(f"ERROR with lockdown device with UUID {device.serial}")
|
||||
@@ -124,7 +125,7 @@ class DeviceManager:
|
||||
eligibility_files = tweak.apply_tweak()
|
||||
elif isinstance(tweak, AITweak):
|
||||
ai_file = tweak.apply_tweak()
|
||||
elif isinstance(tweak, BasicPlistTweak):
|
||||
elif isinstance(tweak, BasicPlistTweak) or isinstance(tweak, RdarFixTweak):
|
||||
basic_plists = tweak.apply_tweak(basic_plists)
|
||||
else:
|
||||
if gestalt_plist != None:
|
||||
|
||||
@@ -116,6 +116,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
||||
|
||||
## MOBILE GESTALT PAGE ACTIONS
|
||||
self.ui.dynamicIslandDrp.activated.connect(self.on_dynamicIslandDrp_activated)
|
||||
self.ui.rdarFixChk.clicked.connect(self.on_rdarFixChk_clicked)
|
||||
self.ui.modelNameChk.toggled.connect(self.on_modelNameChk_clicked)
|
||||
self.ui.modelNameTxt.textEdited.connect(self.on_modelNameTxt_textEdited)
|
||||
|
||||
@@ -213,6 +214,12 @@ class MainWindow(QtWidgets.QMainWindow):
|
||||
self.ui.dynamicIslandDrp.removeItem(5)
|
||||
except:
|
||||
pass
|
||||
rdar_title = tweaks["RdarFix"].get_rdar_title()
|
||||
if rdar_title == "hide":
|
||||
self.ui.rdarFixChk.hide()
|
||||
else:
|
||||
self.ui.rdarFixChk.show()
|
||||
self.ui.rdarFixChk.setText(f"{rdar_title} (modifies resolution)")
|
||||
if Version(self.device_manager.data_singleton.current_device.version) >= Version("18.1"):
|
||||
self.ui.enableAIChk.show()
|
||||
self.ui.languageLbl.hide()
|
||||
@@ -348,6 +355,9 @@ class MainWindow(QtWidgets.QMainWindow):
|
||||
tweaks["DynamicIsland"].set_enabled(False)
|
||||
else:
|
||||
tweaks["DynamicIsland"].set_selected_option(index - 1)
|
||||
tweaks["RdarFix"].set_di_type(tweaks["DynamicIsland"].value[tweaks["DynamicIsland"].get_selected_option()])
|
||||
def on_rdarFixChk_clicked(self, checked: bool):
|
||||
tweaks["RdarFix"].set_enabled(checked)
|
||||
|
||||
def on_modelNameChk_clicked(self, checked: bool):
|
||||
tweaks["ModelName"].set_enabled(checked)
|
||||
|
||||
@@ -1566,7 +1566,7 @@ QToolButton:pressed {
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Nugget GUI - Version 3.0 (beta 1)</string>
|
||||
<string>Nugget GUI - Version 3.0 (beta 2)</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
@@ -1875,6 +1875,13 @@ QComboBox QAbstractItemView::item:hover {
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="rdarFixChk">
|
||||
<property name="text">
|
||||
<string>Fix RDAR (modifies resolution)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="modelNameChk">
|
||||
<property name="text">
|
||||
|
||||
@@ -1009,6 +1009,11 @@ class Ui_Nugget(object):
|
||||
|
||||
self.verticalLayout_8.addWidget(self.dynamicIslandDrp)
|
||||
|
||||
self.rdarFixChk = QCheckBox(self.gestaltPageContent)
|
||||
self.rdarFixChk.setObjectName(u"rdarFixChk")
|
||||
|
||||
self.verticalLayout_8.addWidget(self.rdarFixChk)
|
||||
|
||||
self.modelNameChk = QCheckBox(self.gestaltPageContent)
|
||||
self.modelNameChk.setObjectName(u"modelNameChk")
|
||||
|
||||
@@ -2549,7 +2554,7 @@ class Ui_Nugget(object):
|
||||
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 3.0 (beta 1)", None))
|
||||
self.label.setText(QCoreApplication.translate("Nugget", u"Nugget GUI - Version 3.0 (beta 2)", None))
|
||||
self.statusBarLbl.setText(QCoreApplication.translate("Nugget", u"Mobile Gestalt", None))
|
||||
self.label_9.setText(QCoreApplication.translate("Nugget", u"Device Subtype Preset", None))
|
||||
self.dynamicIslandDrp.setItemText(0, QCoreApplication.translate("Nugget", u"None", None))
|
||||
@@ -2561,6 +2566,7 @@ 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))
|
||||
self.rdarFixChk.setText(QCoreApplication.translate("Nugget", u"Fix RDAR (modifies resolution)", None))
|
||||
self.modelNameChk.setText(QCoreApplication.translate("Nugget", u"Change Device Model Name", None))
|
||||
self.modelNameTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"Model Name", None))
|
||||
self.bootChimeChk.setText(QCoreApplication.translate("Nugget", u"Enable Boot Chime", None))
|
||||
|
||||
@@ -1009,6 +1009,11 @@ class Ui_Nugget(object):
|
||||
|
||||
self.verticalLayout_8.addWidget(self.dynamicIslandDrp)
|
||||
|
||||
self.rdarFixChk = QCheckBox(self.gestaltPageContent)
|
||||
self.rdarFixChk.setObjectName(u"rdarFixChk")
|
||||
|
||||
self.verticalLayout_8.addWidget(self.rdarFixChk)
|
||||
|
||||
self.modelNameChk = QCheckBox(self.gestaltPageContent)
|
||||
self.modelNameChk.setObjectName(u"modelNameChk")
|
||||
|
||||
@@ -2549,7 +2554,7 @@ class Ui_Nugget(object):
|
||||
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 3.0 (beta 1)", None))
|
||||
self.label.setText(QCoreApplication.translate("Nugget", u"Nugget GUI - Version 3.0 (beta 2)", None))
|
||||
self.statusBarLbl.setText(QCoreApplication.translate("Nugget", u"Mobile Gestalt", None))
|
||||
self.label_9.setText(QCoreApplication.translate("Nugget", u"Device Subtype Preset", None))
|
||||
self.dynamicIslandDrp.setItemText(0, QCoreApplication.translate("Nugget", u"None", None))
|
||||
@@ -2561,6 +2566,7 @@ 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))
|
||||
self.rdarFixChk.setText(QCoreApplication.translate("Nugget", u"Fix RDAR (modifies resolution)", None))
|
||||
self.modelNameChk.setText(QCoreApplication.translate("Nugget", u"Change Device Model Name", None))
|
||||
self.modelNameTxt.setPlaceholderText(QCoreApplication.translate("Nugget", u"Model Name", None))
|
||||
self.bootChimeChk.setText(QCoreApplication.translate("Nugget", u"Enable Boot Chime", None))
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
from enum import Enum
|
||||
|
||||
class FileLocation(Enum):
|
||||
# Mobile Gestalt
|
||||
resolution = "/var/Managed Preferences/mobile/com.apple.iokit.IOMobileGraphicsFamily.plist"
|
||||
|
||||
# Springboard Options
|
||||
springboard = "/var/Managed Preferences/mobile/com.apple.springboard.plist"
|
||||
footnote = "/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles/Library/ConfigurationProfiles/SharedDeviceConfiguration.plist"
|
||||
|
||||
@@ -62,6 +62,66 @@ class BasicPlistTweak(Tweak):
|
||||
else:
|
||||
other_tweaks[self.file_location] = {self.key: self.value}
|
||||
return other_tweaks
|
||||
|
||||
|
||||
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)
|
||||
self.mode = 0
|
||||
|
||||
def get_rdar_mode(self, model: str) -> int:
|
||||
if (model == "iPhone11,2" or model == "iPhone11,4" or model == "iPhone11,6"
|
||||
or model == "iPhone11,8"
|
||||
or model == "iPhone12,1" or model == "iPhone12,3" or model == "iPhone12,5"):
|
||||
self.mode = 1
|
||||
elif (model == "iPhone13,1" or model == "iPhone13,2" or model == "iPhone13,3" or model == "iPhone13,4"
|
||||
or model == "iPhone14,4" or model == "iPhone14,5" or model == "iPhone14,2" or model == "iPhone14,3"
|
||||
or model == "iPhone14,7" or model == "iPhone14,8"):
|
||||
self.mode = 2
|
||||
elif (model == "iPhone12,8" or model == "iPhone14,6"):
|
||||
self.mode = 3
|
||||
return self.mode
|
||||
|
||||
def get_rdar_title(self) -> str:
|
||||
if self.mode == 1 or self.mode == 3:
|
||||
return "Fix RDAR"
|
||||
elif self.mode == 2:
|
||||
return "Dynamic Island Status Bar Fix"
|
||||
return "hide"
|
||||
|
||||
def set_di_type(self, type: int):
|
||||
self.di_type = type
|
||||
|
||||
def apply_tweak(self, other_tweaks: dict) -> dict:
|
||||
if not self.enabled:
|
||||
return other_tweaks
|
||||
if self.mode == 1 or self.mode == 3:
|
||||
plist = {
|
||||
"canvas_height": 1791,
|
||||
"canvas_width": 828
|
||||
}
|
||||
other_tweaks[self.file_location] = plist
|
||||
elif self.mode == 2:
|
||||
width = 2868
|
||||
height = 1320
|
||||
if self.di_type == 2556:
|
||||
width = 1179
|
||||
height = 2556
|
||||
elif self.di_type == 2796 or self.di_type == 2976:
|
||||
width = 1290
|
||||
height = 2796
|
||||
elif self.di_type == 2622:
|
||||
width = 1206
|
||||
height = 2622
|
||||
elif self.di_type == 2868:
|
||||
width = 1320
|
||||
height = 2868
|
||||
plist = {
|
||||
"canvas_height": height,
|
||||
"canvas_width": width
|
||||
}
|
||||
other_tweaks[self.file_location] = plist
|
||||
return other_tweaks
|
||||
|
||||
|
||||
class MobileGestaltTweak(Tweak):
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
from devicemanagement.constants import Version
|
||||
from .tweak_classes import MobileGestaltTweak, MobileGestaltMultiTweak, MobileGestaltPickerTweak, FeatureFlagTweak, TweakModifyType, BasicPlistTweak
|
||||
from .tweak_classes import MobileGestaltTweak, MobileGestaltMultiTweak, MobileGestaltPickerTweak, FeatureFlagTweak, TweakModifyType, BasicPlistTweak, RdarFixTweak
|
||||
from .eligibility_tweak import EligibilityTweak, AITweak
|
||||
from .basic_plist_locations import FileLocation
|
||||
|
||||
@@ -7,6 +7,7 @@ from .basic_plist_locations import FileLocation
|
||||
tweaks = {
|
||||
## MobileGestalt Tweaks
|
||||
"DynamicIsland": MobileGestaltPickerTweak("Toggle Dynamic Island", "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"),
|
||||
|
||||
Reference in New Issue
Block a user