rdar/status bar fix

This commit is contained in:
leminlimez
2024-09-27 22:21:12 -04:00
parent 165e76f552
commit 69169b9512
10 changed files with 104 additions and 8 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@@ -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:

View File

@@ -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:

View File

@@ -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)

View File

@@ -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">

View File

@@ -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))

View File

@@ -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))

View File

@@ -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"

View File

@@ -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):

View File

@@ -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"),