From 7d5c3edc9998917d8bfbd9904fb64a7f41c298b9 Mon Sep 17 00:00:00 2001 From: Jay Logan Date: Fri, 19 Jun 2020 19:03:14 -0500 Subject: [PATCH] Last config used with KAO --- kobopatch.yaml | 4 +- src/libnickel.so.1.0.0.yaml | 259 ++++++++++++++++++++++++------------ src/librmsdk.so.1.0.0.yaml | 6 +- src/nickel.yaml | 113 ++++++++++++++-- 4 files changed, 282 insertions(+), 100 deletions(-) diff --git a/kobopatch.yaml b/kobopatch.yaml index 2048928..c6e14f1 100644 --- a/kobopatch.yaml +++ b/kobopatch.yaml @@ -1,7 +1,7 @@ ## Works with kobopatch v0.14.0 and later. ## You can update kobopatch by downloading the latest release from https://github.com/geek1011/kobopatch/releases. -version: 4.20.14622 -in: src/kobo-update-4.20.14622.zip +version: 4.21.15015 +in: src/kobo-update-4.21.15015.zip out: out/KoboRoot.tgz log: out/log.txt diff --git a/src/libnickel.so.1.0.0.yaml b/src/libnickel.so.1.0.0.yaml index 4538e4e..349361a 100644 --- a/src/libnickel.so.1.0.0.yaml +++ b/src/libnickel.so.1.0.0.yaml @@ -13,7 +13,7 @@ Both page turn sides go next: - Enabled: no - Description: Make both page turn sides go next in the reader. # In ReadingView::processTap(TapGesture*) where the page direction is checked: - - BaseAddress: {Sym: "ReadingView::processTap(TapGesture*)", Rel: 362} + - BaseAddress: {Sym: "ReadingView::processTap(TapGesture*)", Rel: 390} - ReplaceBytes: {Offset: 0, FindInstBLX: {SymPLT: "ReadingView::leftToRightPageProgressDirection() const"}, CheckOnly: true} # nop the branch for checking if left-to-right (so it always runs the swap of back/forward) - ReplaceBytes: {Offset: 4, FindH: 18 B9, ReplaceInstNOP: true} @@ -75,7 +75,7 @@ Hide browser from beta features: ReplaceH: 4F F0 01 00 - ReplaceBytes: Base: {Sym: "SelectionMenuController::setupMainOptions()"} - Offset: 474 + Offset: 396 FindInstBLX: {SymPLT: "Device::isParentalControlEnabled() const"} ReplaceH: 4F F0 01 00 @@ -140,8 +140,12 @@ Rename new home screen footer: # the keyboard uses a letter from one of these strings, and will type the letter # from the replacement. - FindReplaceString: {Find: "Find your next great read", Replace: "Find your next great read"} - - FindReplaceString: {Find: "Buy, borrow, or preview books", Replace: "Buy, borrow, or preview books"} - FindReplaceString: {Find: "Find your next book in Kobo Plus or our store", Replace: "Find your next book in Kobo Plus or our store"} + - ReplaceBytes: + Base: "HomePageView::setOverDriveUser(OverDriveUser const&)" + Offset: 60 + FindInstBLX: {SymPLT: "GenericHomeWidget::setTitleText(QString)"} + ReplaceInstNOP: true # You can enable the following replacement, but note that it might cause the o letter on the keyboard to change # - FindReplaceString: {Find: "Shop Kobo", Replace: "9char-str"} @@ -174,14 +178,24 @@ Change Browse Kobo home screen link target - Activity: - Description: See the comment above. - ReplaceBytes: Base: "BrowseKoboWidget::tapped()" - Offset: 14 + Offset: 22 FindInstBW: {SymPLTTail: "DiscoverNavMixin::storefront()"} # Store ReplaceInstBW: {SymPLTTail: "ReadingLifeNavMixin::chooseActivity()"} # Activity + - ReplaceBytes: + Base: "BrowseKoboWidget::tapped()" + Offset: 32 + FindInstBW: {SymPLTTail: "StoreNavMixin::overDriveFeaturedLists()"} # OverDrive + ReplaceInstBW: {SymPLTTail: "ReadingLifeNavMixin::chooseActivity()"} # Activity - ReplaceBytes: Base: "BrowseKoboWidget::BrowseKoboWidget(QWidget*)" - Offset: 190 + Offset: 196 FindInstBLX: {SymPLT: "N3DeviceCharm::shopName()"} # "Shop Kobo" or "Walmart" ReplaceInstBLX: {SymPLT: "N3DeviceCharm::extrasName()"} # "Activity" + - ReplaceBytes: + Base: "HomePageView::setOverDriveUser(OverDriveUser const&)" + Offset: 114 + FindInstBLX: {SymPLT: "GenericHomeWidget::setMetaText(QString)"} # "OverDrive" + ReplaceInstNOP: true Change Browse Kobo home screen link target - Articles: - Enabled: no @@ -189,14 +203,24 @@ Change Browse Kobo home screen link target - Articles: - Description: See the comment above. - ReplaceBytes: Base: "BrowseKoboWidget::tapped()" - Offset: 14 + Offset: 22 FindInstBW: {SymPLTTail: "DiscoverNavMixin::storefront()"} # Store ReplaceInstBW: {SymPLTTail: "LibraryNavMixin::showPocketLibrary()"} # My Articles + - ReplaceBytes: + Base: "BrowseKoboWidget::tapped()" + Offset: 32 + FindInstBW: {SymPLTTail: "StoreNavMixin::overDriveFeaturedLists()"} # OverDrive + ReplaceInstBW: {SymPLTTail: "LibraryNavMixin::showPocketLibrary()"} # My Articles - ReplaceBytes: Base: "BrowseKoboWidget::BrowseKoboWidget(QWidget*)" - Offset: 190 + Offset: 196 FindInstBLX: {SymPLT: "N3DeviceCharm::shopName()"} # "Shop Kobo" or "Walmart" ReplaceInstBLX: {SymPLT: "N3DeviceCharm::articlesSearchName()"} # "My Articles" + - ReplaceBytes: + Base: "HomePageView::setOverDriveUser(OverDriveUser const&)" + Offset: 114 + FindInstBLX: {SymPLT: "GenericHomeWidget::setMetaText(QString)"} # "OverDrive" + ReplaceInstNOP: true ### @@ -210,24 +234,25 @@ Set visible SmartLink: # # - internal name - default condition - what - action # PRIORITY MESSAGES (shown first up to 3 times each): (SmartLinkWidget::showPriorityMessage, ActivityManager::smartLinkPriorityMessage, SmartLinkWidget::tapped) # 5 - ReleaseNotes - whats new available from Activity - RELEASE NOTES: Find out what's new in this software update - whats new (from Activity) - # 6 - OverdriveFTE - overdrive enabled && not signed in - OVERDRIVE: Learn how to borrow eBooks from your public library - overdrive about + # 6 - OverDriveFTE - overdrive enabled && not signed in - OVERDRIVE: Learn how to borrow eBooks from your public library - overdrive about # 7 - KoboPlusFTE - kobo plus enabled && not subscribed - KOBO PLUS: Browse Kobo Plus books - kobo store -> kobo plus + # 8 - OverDrive - overdrive enabled && signed in && have hold - OVERDRIVE: View your public library holds - overdrive holds list # ROTATION MESSAGES (randomly chosen): (SmartLinkWidget::showRotationMessage, ActivityManager::smartLinkGeneralMessage, SmartLinkWidget::tapped) # 1 - Pocket - pocket not signed in - POCKET: Read articles from the web on your eReader - pocket about # 2 - KoboPlus - kobo plus enabled && not subscribed - KOBO PLUS: Get unlimited access to books in all genres - kobo store -> kobo plus # 2 - KoboPlus - kobo plus enabled && not subscribed - KOBO PLUS: Read as much as you want with a Kobo Plus subscription- kobo store -> kobo plus # 3 - Overdrive - overdrive enabled && not signed in - OVERDRIVE: Borrow eBooks from your public library - overdrive about # 4 - Categories - always - CATEGORIES: Browse fiction, romance, biography and more - kobo store -> categories - # 8 - NaturalLight - has light sensor && not viewed tutorial - DEVICE NAME: Learn about the Natural Light feature - rgb front light about - # 9 - QuickTour - quick tour not shown && quick turn tile not visible - GETTING STARTED: Get to know your %0 - quick tour - # 10 - ReadingTour - read a book tour not showed - READING A BOOK: Get quick tips about reading on your eReader - read a book tutorial - # 11 - UserGuide - user guide present && not opened - USER GUIDE: Read the user guide for your %0 - read -> user guide - # 12 - RelatedReads - recent book available from Activity - RELATED READS: Discover books related to the ones you're reading - browse -> similar books - # 13 - Wishlist - no wishlist items || something else - WISHLIST: Create a Wishlist of books you're interested in - browse -> wishlist - # 14 - ReadingSettings - reading settings not changed - READING SETTINGS: Customize the way you read a book - settings -> reading settings - # 15 - ReadingStats - books finished > 0 && hours read rounded to .5 > 0 - READING STATS: You've finished %n books and read for %n hours - reading life -> stats - # 16 - SuperPoints - participating in super points && points > 2400 - KOBO SUPER POINTS: You have %0 Super Points to redeem - kobo store - # 17 - PocketUser - unread pocket articles > 0 - POCKET: Catch up on the %n article(s) you added recently - library -> pocket + # 9 - NaturalLight - has light sensor && not viewed tutorial - DEVICE NAME: Learn about the Natural Light feature - rgb front light about + # 10 - QuickTour - quick tour not shown && quick turn tile not visible - GETTING STARTED: Get to know your %0 - quick tour + # 11 - ReadingTour - read a book tour not showed - READING A BOOK: Get quick tips about reading on your eReader - read a book tutorial + # 12 - UserGuide - user guide present && not opened - USER GUIDE: Read the user guide for your %0 - read -> user guide + # 13 - RelatedReads - recent book available from Activity - RELATED READS: Discover books related to the ones you're reading - browse -> similar books + # 14 - Wishlist - no wishlist items || something else - WISHLIST: Create a Wishlist of books you're interested in - browse -> wishlist + # 15 - ReadingSettings - reading settings not changed - READING SETTINGS: Customize the way you read a book - settings -> reading settings + # 16 - ReadingStats - books finished > 0 && hours read rounded to .5 > 0 - READING STATS: You've finished %n books and read for %n hours - reading life -> stats + # 17 - SuperPoints - participating in super points && points > 2400 - KOBO SUPER POINTS: You have %0 Super Points to redeem - kobo store + # 18 - PocketUser - unread pocket articles > 0 - POCKET: Catch up on the %n article(s) you added recently - library -> pocket # - BaseAddress: {Sym: "SmartLinkWidget::showRotationMessage(Device const&)", Rel: 20} - ReplaceBytes: {FindInstBLX: {SymPLT: "ActivityManager::smartLinkGeneralMessage(Device const&)"}, ReplaceH: 4F F0 04 00} # MOV.W r0, #4 @@ -244,7 +269,7 @@ Only show Pocket SmartLink: Base: "SmartLinkWidget::showRotationMessage(Device const&)" Offset: 20 FindInstBLX: {SymPLT: "ActivityManager::smartLinkGeneralMessage(Device const&)"} - ReplaceH: 4F F0 11 00 + ReplaceH: 4F F0 12 00 # replace the text (choose one, or remove both): - FindReplaceString: {Find: "Catch up on the %n article(s) you added recently", Replace: "My Articles"} # - FindReplaceString: {Find: "Catch up on the %n article(s) you added recently", Replace: "My Articles (%n unread)"} @@ -257,7 +282,7 @@ Only show stats SmartLink: Base: "SmartLinkWidget::showRotationMessage(Device const&)" Offset: 20 FindInstBLX: {SymPLT: "ActivityManager::smartLinkGeneralMessage(Device const&)"} - ReplaceH: 4F F0 0F 00 + ReplaceH: 4F F0 10 00 Never show Kobo Plus, wishlist, and points SmartLinks: - Enabled: no @@ -265,13 +290,13 @@ Never show Kobo Plus, wishlist, and points SmartLinks: - Description: Removes Kobo Plus, wishlist, and points SmartLinks from the rotation. - BaseAddress: "ActivityManager::smartLinkGeneralMessage(Device const&)" # NOP Kobo Plus (2): - - ReplaceBytes: {Offset: 292, FindH: 02 23, CheckOnly: true} # MOVS r3, #2 - - ReplaceBytes: {Offset: 302, FindInstBLX: {SymPLT: "QVector::append(SmartLinkType const&)"}, ReplaceInstNOP: true} - # NOP wishlist (13): - - ReplaceBytes: {Offset: 266, FindH: 0D 23, CheckOnly: true} # MOVS r3, #13 - - ReplaceBytes: {Offset: 276, FindInstBLX: {SymPLT: "QVector::append(SmartLinkType const&)"}, ReplaceInstNOP: true} - # NOP super points (16): - - ReplaceBytes: {Offset: 1540, FindH: 10 23, CheckOnly: true} # MOVS r3, #16 + - ReplaceBytes: {Offset: 292, FindH: 02 23, CheckOnly: true} # MOVS r3, #2 + - ReplaceBytes: {Offset: 302, FindInstBLX: {SymPLT: "QVector::append(SmartLinkType const&)"}, ReplaceInstNOP: true} + # NOP wishlist (14): + - ReplaceBytes: {Offset: 266, FindH: 0E 23, CheckOnly: true} # MOVS r3, #14 + - ReplaceBytes: {Offset: 276, FindInstBLX: {SymPLT: "QVector::append(SmartLinkType const&)"}, ReplaceInstNOP: true} + # NOP super points (17): + - ReplaceBytes: {Offset: 1540, FindH: 11 23, CheckOnly: true} # MOVS r3, #17 - ReplaceBytes: {Offset: 1552, FindInstBLX: {SymPLT: "QVector::append(SmartLinkType const&)"}, ReplaceInstNOP: true} ### @@ -292,37 +317,41 @@ Hide top-left menu item - Dropbox: - Enabled: no - Description: See the comment above. - BaseAddress: {Sym: "StatusBarMenuController::updateParentControlSensitiveMenuItems()", Rel: 182} - - ReplaceBytes: {Offset: 0, FindH: 51 46, ReplaceH: 00 21} # DropboxSeparator (sl=51) (sl:sb&r5) - - ReplaceBytes: {Offset: 22, FindH: 51 46, ReplaceH: 00 21} # DropboxSeparator (sl=51) - - ReplaceBytes: {Offset: 124, FindH: 41 46, ReplaceH: 00 21} # DropboxWidget (r8=41) (r8:r8&r5) - - ReplaceBytes: {Offset: 146, FindH: 41 46, ReplaceH: 00 21} # DropboxWidget (r8=41) + - ReplaceBytes: {Offset: 0, FindH: 51 46, ReplaceH: 00 21} # DropboxSeparator (sl=51) (sl:sb&r5) + - ReplaceBytes: {Offset: 22, FindH: 51 46, ReplaceH: 00 21} # DropboxSeparator (sl=51) + - BaseAddress: {Sym: "StatusBarMenuController::updateParentControlSensitiveMenuItems()", Rel: 366} + - ReplaceBytes: {Offset: 0, FindH: 49 46, ReplaceH: 00 21} # DropboxWidget (sb=41) (sb:sb&r5) + - ReplaceBytes: {Offset: 22, FindH: 49 46, ReplaceH: 00 21} # DropboxWidget (sb=41) Hide top-left menu item - Pocket: - Enabled: no - Description: See the comment above. - - BaseAddress: {Sym: "StatusBarMenuController::updateParentControlSensitiveMenuItems()", Rel: 484} - - ReplaceBytes: {Offset: 0, FindH: 29 46, ReplaceH: 00 21} # PocketSeparator (r5=29) - - ReplaceBytes: {Offset: 22, FindH: 29 46, ReplaceH: 00 21} # PocketSeparator (r5=29) - - ReplaceBytes: {Offset: 112, FindH: 29 46, ReplaceH: 00 21} # PocketWidget (r5=29) - - ReplaceBytes: {Offset: 134, FindH: 29 46, ReplaceH: 00 21} # PocketWidget (r5=29) + - BaseAddress: {Sym: "StatusBarMenuController::updateParentControlSensitiveMenuItems()", Rel: 544} + - ReplaceBytes: {Offset: 0, FindH: 29 46, ReplaceH: 00 21} # PocketSeparator (r5=29) + - ReplaceBytes: {Offset: 22, FindH: 29 46, ReplaceH: 00 21} # PocketSeparator (r5=29) + - BaseAddress: {Sym: "StatusBarMenuController::updateParentControlSensitiveMenuItems()", Rel: 722} + - ReplaceBytes: {Offset: 0, FindH: 29 46, ReplaceH: 00 21} # PocketWidget (r5=29) + - ReplaceBytes: {Offset: 22, FindH: 29 46, ReplaceH: 00 21} # PocketWidget (r5=29) Hide top-left menu item - Store: - Enabled: no - Description: See the comment above. - - BaseAddress: {Sym: "StatusBarMenuController::updateParentControlSensitiveMenuItems()", Rel: 774} - - ReplaceBytes: {Offset: 0, FindH: 29 46, ReplaceH: 00 21} # StoreSeparator (r5=29) - - ReplaceBytes: {Offset: 22, FindH: 29 46, ReplaceH: 00 21} # StoreSeparator (r5=29) - - ReplaceBytes: {Offset: 178, FindH: 29 46, ReplaceH: 00 21} # StoreWidget (r5=29) - - ReplaceBytes: {Offset: 200, FindH: 29 46, ReplaceH: 00 21} # StoreWidget (r5=29) + - BaseAddress: {Sym: "StatusBarMenuController::updateParentControlSensitiveMenuItems()", Rel: 900} + - ReplaceBytes: {Offset: 0, FindH: 29 46, ReplaceH: 00 21} # StoreSeparator (r5=29) + - ReplaceBytes: {Offset: 22, FindH: 29 46, ReplaceH: 00 21} # StoreSeparator (r5=29) + - BaseAddress: {Sym: "StatusBarMenuController::updateParentControlSensitiveMenuItems()", Rel: 1078} + - ReplaceBytes: {Offset: 0, FindH: 29 46, ReplaceH: 00 21} # StoreWidget (r5=29) + - ReplaceBytes: {Offset: 22, FindH: 29 46, ReplaceH: 00 21} # StoreWidget (r5=29) Hide top-left menu item - Recommended: - Enabled: no - Description: See the comment above. - - BaseAddress: {Sym: "StatusBarMenuController::updateParentControlSensitiveMenuItems()", Rel: 1130} + - BaseAddress: {Sym: "StatusBarMenuController::updateParentControlSensitiveMenuItems()", Rel: 1256} - ReplaceBytes: {Offset: 0, FindH: 29 46, ReplaceH: 00 21} # RecommendedSeparator (r5=29) - ReplaceBytes: {Offset: 22, FindH: 29 46, ReplaceH: 00 21} # RecommendedSeparator (r5=29) - - ReplaceBytes: {Offset: 178, FindH: 29 46, ReplaceH: 00 21} # RecommendedWidget (r5=29) - - ReplaceBytes: {Offset: 200, FindH: 29 46, ReplaceH: 00 21} # RecommendedWidget (r5=29) + - BaseAddress: {Sym: "StatusBarMenuController::updateParentControlSensitiveMenuItems()", Rel: 1434} + - ReplaceBytes: {Offset: 0, FindH: 29 46, ReplaceH: 00 21} # RecommendedWidget (r5=29) + - ReplaceBytes: {Offset: 22, FindH: 29 46, ReplaceH: 00 21} # RecommendedWidget (r5=29) # Note about updating: the following ones were mistakenly detected as outside # the procedure by Hopper, but this can be fixed by NOPing the DDs between and @@ -331,20 +360,22 @@ Hide top-left menu item - Recommended: Hide top-left menu item - Wishlist: - Enabled: no - Description: See the comment above. - - BaseAddress: {Sym: "StatusBarMenuController::updateParentControlSensitiveMenuItems()", Rel: 4664} - - ReplaceBytes: {Offset: 0, FindH: 51 46, ReplaceH: 00 21} # WishlistSeparator (sl=51) (sl:sb&r5) - - ReplaceBytes: {Offset: 22, FindH: 51 46, ReplaceH: 00 21} # WishlistSeparator (sl=51) - - ReplaceBytes: {Offset: 398, FindH: 49 46, ReplaceH: 00 21} # WishlistWidget (sb=49) (sb:sb&r5) - - ReplaceBytes: {Offset: 420, FindH: 49 46, ReplaceH: 00 21} # WishlistWidget (sb=49) + - BaseAddress: {Sym: "StatusBarMenuController::updateParentControlSensitiveMenuItems()", Rel: 4680} + - ReplaceBytes: {Offset: 0, FindH: 59 46, ReplaceH: 00 21} # WishlistSeparator (fp=51) (fp:sb&r5) + - ReplaceBytes: {Offset: 22, FindH: 59 46, ReplaceH: 00 21} # WishlistSeparator (fp=51) + - BaseAddress: {Sym: "StatusBarMenuController::updateParentControlSensitiveMenuItems()", Rel: 5158} + - ReplaceBytes: {Offset: 0, FindH: 41 46, ReplaceH: 00 21} # WishlistWidget (r8=49) (r8:r8&r5) + - ReplaceBytes: {Offset: 22, FindH: 41 46, ReplaceH: 00 21} # WishlistWidget (r8=49) Hide top-left menu item - Activity: - Enabled: no - Description: See the comment above. - - BaseAddress: {Sym: "StatusBarMenuController::updateParentControlSensitiveMenuItems()", Rel: 5574} + - BaseAddress: {Sym: "StatusBarMenuController::updateParentControlSensitiveMenuItems()", Rel: 5276} - ReplaceBytes: {Offset: 0, FindH: 29 46, ReplaceH: 00 21} # ActivitySeparator (r5=29) - ReplaceBytes: {Offset: 22, FindH: 29 46, ReplaceH: 00 21} # ActivitySeparator (r5=29) - - ReplaceBytes: {Offset: 380, FindH: 29 46, ReplaceH: 00 21} # ActivityWidget (r5=29) - - ReplaceBytes: {Offset: 402, FindH: 29 46, ReplaceH: 00 21} # ActivityWidget (r5=29) + - BaseAddress: {Sym: "StatusBarMenuController::updateParentControlSensitiveMenuItems()", Rel: 5656} + - ReplaceBytes: {Offset: 0, FindH: 29 46, ReplaceH: 00 21} # ActivityWidget (r5=29) + - ReplaceBytes: {Offset: 22, FindH: 29 46, ReplaceH: 00 21} # ActivityWidget (r5=29) ### @@ -411,7 +442,7 @@ Remove title from reading header/footer: # easy-to-update way by replacing the first QString::append (the dash) with a # QString::resize to zero (I would have done a QString::clear, but that symbol # isn't imported): - - BaseAddress: {Sym: "ReadingFooter::update(QString const&, QString const&, QString const&, bool)", Rel: 304} + - BaseAddress: {Sym: "ReadingFooter::update(QString const&, QString const&, QString const&, bool)", Rel: 298} - ReplaceBytes: {Offset: 0, FindH: F9 68, ReplaceH: 00 21} # replace LDR r1, [...] with MOV r1, #0 (the LDR doesn't matter, but may to be updated to match) - ReplaceBytes: {Offset: 4, FindInstBLX: {SymPLT: "QString::append(QString const&)"}, ReplaceInstBLX: {SymPLT: "QString::resize(int)"}} @@ -479,13 +510,13 @@ Allow rotation on all devices: Unlike only the DeveloperSettings ForceAllowLandscape option, this patch also makes the rotation icon show on the new reader as well. # Always return true for ForceAllowLandscape: - - ReplaceBytes: {Offset: 0x72A5AE, FindInstBLX: {SymPLT: "QVariant::toBool() const"}, ReplaceH: 4F F0 01 00} + - ReplaceBytes: {Offset: 0x75AB56, FindInstBLX: {SymPLT: "QVariant::toBool() const"}, ReplaceH: 4F F0 01 00} # In ReadingMenuView::ReadingMenuView, replace the value of Device::hasOrientationSensor, # which is passed to a function to hide/show the rotate icon: - - ReplaceBytes: {Offset: 0xB38C6C, FindInstBLX: {SymPLT: "Device::hasOrientationSensor() const"}, ReplaceH: 4F F0 01 00} + - ReplaceBytes: {Offset: 0xB874CA, FindInstBLX: {SymPLT: "Device::hasOrientationSensor() const"}, ReplaceH: 4F F0 01 00} # Also fix sizing of popup by doing the same in RotatePopup::RotatePopup, but # note that this will make the Automatic option show too (and do nothing): - - ReplaceBytes: {Offset: 0xB54A86, FindInstBLX: {SymPLT: "Device::hasOrientationSensor() const"}, ReplaceH: 4F F0 01 00} + - ReplaceBytes: {Offset: 0xBA36CE, FindInstBLX: {SymPLT: "Device::hasOrientationSensor() const"}, ReplaceH: 4F F0 01 00} Don't uppercase header/footer text: - Enabled: no @@ -595,48 +626,50 @@ Customize ComfortLight settings: # In an unnamed subroutine two layers into FrontLightPopupController::loadView # (find it by going back from QTime::addSecs), the times for the dropdown are # generated into a QVector> with a simple loop. + - BaseAddress: 0xACABF8 # find by the x-ref to _ZN5QTimeC1Eiiii from an unnamed sub # # Change the initial hour / first bedtime dropdown item passed to the QTime # constructor (mov r1, #21): - - ReplaceInt: {Offset: 0xA91E2E, Find: 21, Replace: 17} # 21:00 (9PM) -> 17:00 (5PM) + - ReplaceInt: {Offset: 22, Find: 21, Replace: 17} # 21:00 (9PM) -> 17:00 (5PM) # # Optional: Change the increment passed to QTime::addSecs (you need to use an # ARM assembler to change this value): - - ReplaceBytes: {Offset: 0xA91E92, FindH: 4F F4 E1 61, ReplaceH: 4F F4 E1 61} # mov.w r1, #1800: 30m + - ReplaceBytes: {Offset: 122, FindH: 4F F4 E1 61, ReplaceH: 4F F4 E1 61} # mov.w r1, #1800: 30m # # Change the number of increments / bedtime dropdown options (start at the # initial time, add this number -1 more items with the above increment each # time) (movs r5, #13): - - ReplaceInt: {Offset: 0xA91E66, Find: 13, Replace: 21} # 13 [9PM..3AM]+30m -> 21 [5PM..3AM]+30m + - ReplaceInt: {Offset: 78, Find: 13, Replace: 21} # 13 [9PM..3AM]+30m -> 21 [5PM..3AM]+30m # # Change the number of pre-allocated elements (I don't think this is actually # required, as Qt will realloc as necessary, but we might as well do this just # in case) (mov r1, #21): - - ReplaceInt: {Offset: 0xA920D0, Find: 13, Replace: 21} # same as prev replacement + - ReplaceInt: {Offset: 696, Find: 13, Replace: 21} # same as prev replacement ## # The actual color adjustment is done in BedtimeManager::adjustTemperature. # The color temperature is based on the current time, the bedtime, the hardcoded # sunset, the hardcoded sunrise start, the hardcoded sunrise end, the daytime # temperature, and the nighttime temperature. + - BaseAddress: "BedtimeManager::adjustTemperature()" # # Change the sunset time (the transition to a warmer temperature starts here # and transitions until the bedtime chosen) (this should be 1-3 hours before # the minimum bedtime from the first replacement above) (mov r1, #18): - - ReplaceInt: {Offset: 0xA8A922, Find: 18, Replace: 16} # 18:00 (9PM-3=6PM) -> 16:00 (5PM-1=4PM) + - ReplaceInt: {Offset: 158, Find: 18, Replace: 16} # 18:00 (9PM-3=6PM) -> 16:00 (5PM-1=4PM) # # Change the time for the sunset timer to fire at (this is passed to a QTime # constructor which is passed to PowerTime::fireAt) (mov r1, #18): - - ReplaceInt: {Offset: 0xA8AA3A, Find: 18, Replace: 16} # should match the sunset time above + - ReplaceInt: {Offset: 438, Find: 18, Replace: 16} # should match the sunset time above # # Optional: Change the sunrise start time (the transition back to a cooler # temperature starts here) (this should be sometime after the last bedtime, # but before the sunset time) (mov r1, #5): - - ReplaceInt: {Offset: 0xA8A944, Find: 5, Replace: 5} # 5AM + - ReplaceInt: {Offset: 192, Find: 5, Replace: 5} # 5AM # # Optional: Change the sunrise end time (the transition back to a cooler # temperature ends here) (this should be 1-3 hours after the sunrise start but # before the sunset time or bad things will happen with negative values) (mov r1, #7): - - ReplaceInt: {Offset: 0xA8A90E, Find: 7, Replace: 7} # 5AM+2=7AM + - ReplaceInt: {Offset: 138, Find: 7, Replace: 7} # 5AM+2=7AM # The following patches allow you to enable a config file option with a patch. @@ -668,13 +701,13 @@ FeatureSettings - ExportHighlights: DeveloperSettings - AutoUsbGadget: - Enabled: no - Description: Automatically enable USB Storage mode when connected. - - ReplaceBytes: {Offset: 0x72A64E, FindBLX: 0x4B685C, ReplaceH: 4F F0 01 00} + - ReplaceBytes: {Offset: 0x75ABF6, FindInstBLX: {SymPLT: "QVariant::toBool() const"}, ReplaceH: 4F F0 01 00} PowerSettings - UnlockEnabled: - Enabled: no - Description: Disables/enables the slide to unlock feature. - - ReplaceBytes: {Offset: 0x7344FE, FindBLX: 0x4B685C, ReplaceH: 4F F0 00 00} # disable -# - ReplaceBytes: {Offset: 0x7344FE, FindBLX: 0x4B685C, ReplaceH: 4F F0 01 00} # enable + - ReplaceBytes: {Base: "PowerSettings::getUnlockEnabled()", Offset: 62, FindInstBLX: {SymPLT: "QVariant::toBool() const"}, ReplaceH: 4F F0 00 00} # disable +# - ReplaceBytes: {Base: "PowerSettings::getUnlockEnabled()", Offset: 62, FindInstBLX: {SymPLT: "QVariant::toBool() const"}, ReplaceH: 4F F0 01 00} # enable # The following patch(es) were made by GeoffR, and most are updated by geek1011 # The next 2 patches are alternatives. @@ -865,20 +898,21 @@ Custom font sizes: # https://gist.github.com/geek1011/613b34c23f026f7c39c50ee32f5e167e and # the Device::is* calls. # + - BaseAddress: "N3FontTypeUtil::fontSizes()" # Initial font size: - - ReplaceInt: {Offset: 0x9345B4, Find: 18, Replace: 18} # AuraOne/Forma - - ReplaceInt: {Offset: 0x934448, Find: 14, Replace: 14} # GloHD/ClaraHD/Libra - - ReplaceInt: {Offset: 0x93459C, Find: 12, Replace: 12} # Others + - ReplaceInt: {Offset: 400, Find: 18, Replace: 18} # AuraOne/Forma + - ReplaceInt: {Offset: 36, Find: 14, Replace: 14} # GloHD/ClaraHD/Libra + - ReplaceInt: {Offset: 376, Find: 12, Replace: 12} # Others # Increment: - - ReplaceInt: {Offset: 0x934470, Find: 21, Replace: 43} # Add font sizes in increments of 1 until this size exceeded} - - ReplaceInt: {Offset: 0x934478, Find: 22, Replace: 44} # Continue from this font size} - - ReplaceInt: {Offset: 0x934518, Find: 49, Replace: 67} # Add font sizes in increments of 2 until this size exceeded} - - ReplaceInt: {Offset: 0x93451E, Find: 50, Replace: 68} # Continue from this font size} + - ReplaceInt: {Offset: 76, Find: 21, Replace: 43} # Add font sizes in increments of 1 until this size exceeded} + - ReplaceInt: {Offset: 84, Find: 22, Replace: 44} # Continue from this font size} + - ReplaceInt: {Offset: 244, Find: 49, Replace: 67} # Add font sizes in increments of 2 until this size exceeded} + - ReplaceInt: {Offset: 250, Find: 50, Replace: 68} # Continue from this font size} # Now increment by +4 until final font size: - - ReplaceInt: {Offset: 0x9345B8, Find: 195, Replace: 132} # AuraOne/Forma - - ReplaceInt: {Offset: 0x934458, Find: 150, Replace: 108} # AuraHD/H2O/GloHD/ClaraHD/Libra - - ReplaceInt: {Offset: 0x9345D6, Find: 122, Replace: 88} # Glo/Aura - - ReplaceInt: {Offset: 0x9345D2, Find: 90, Replace: 80} # Touch/Mini + - ReplaceInt: {Offset: 404, Find: 195, Replace: 132} # AuraOne/Forma + - ReplaceInt: {Offset: 52, Find: 150, Replace: 108} # AuraHD/H2O/GloHD/ClaraHD/Libra + - ReplaceInt: {Offset: 434, Find: 122, Replace: 88} # Glo/Aura + - ReplaceInt: {Offset: 430, Find: 90, Replace: 80} # Touch/Mini ePub fixed top/bottom margins: - Enabled: no @@ -993,8 +1027,8 @@ Set KePub hyphenation: will always be turned on, regardless of justification button setting. (The publisher can still turn hyphenation off/on in the book's stylesheet.) - - ReplaceBytes: {Offset: 0xB2216A, FindInstBLX: {SymPLT: "QString::operator==(QLatin1String) const"}, ReplaceH: 01 20 01 20} # Alternative 1: Always turn KePub hyphenation on -# - ReplaceBytes: {Offset: 0xB2216A, FindInstBLX: {SymPLT: "QString::operator==(QLatin1String) const"}, ReplaceH: 00 20 00 20} # Alternative 2: Never turn KePub hyphenation on + - ReplaceBytes: {Offset: 0xB70856, FindInstBLX: {SymPLT: "QString::operator==(QLatin1String) const"}, ReplaceH: 01 20 01 20} # Alternative 1: Always turn KePub hyphenation on +# - ReplaceBytes: {Offset: 0xB70856, FindInstBLX: {SymPLT: "QString::operator==(QLatin1String) const"}, ReplaceH: 00 20 00 20} # Alternative 2: Never turn KePub hyphenation on Force user line spacing in KePubs: - Enabled: no @@ -1209,8 +1243,8 @@ Set font scale factor: # Font scale factor is calculated as (font size slider) / (X+32) # Original value X=14, so original scale factor is (font size slider) / 46. # Allowed replacement values for X: 0-15 (smaller X --> larger scale factor) - - ReplaceInt: {Offset: 0x546926, Find: 14, Replace: 4} # ePub - - ReplaceInt: {Offset: 0xB21D4A, Find: 14, Replace: 4} # KePub + - ReplaceInt: {Offset: 0x56D56C, Find: 14, Replace: 4} # ePub + - ReplaceInt: {Offset: 0xB70436, Find: 14, Replace: 4} # KePub # The following patch(es) were made by jackie_w Dictionary text font-family/font-size/line-height: @@ -1428,6 +1462,65 @@ Greek Keyboard (GloHD/ClaraHD/AuraOne/H2O2): - ReplaceString: {Offset: 0x8C, Find: "ç\0", Replace: "ν"} - ReplaceString: {Offset: 0x90, Find: "đ\0", Replace: "μ"} - ReplaceString: {Offset: 0x94, Find: "ł\0", Replace: "."} + +Bulgarian Phonetic Keyboard (GloHD/ClaraHD/AuraOne/H2O2/Forma/Libra): + # Created by Svens (https://www.mobileread.com/forums/showpost.php?p=3977092&postcount=51) + - Enabled: no + - PatchGroup: Keyboard alternatives + - Description: | + Replaces keys on the Extended Latin keypad with Bulgarian alternatives. + + Note that after the device boots, the keypad might just show blank squares + until after the first book has been opened. + Also note that long-pressing keys on the base keypad will no longer show + the appropriate list of Extended Latin keys. + # Replace layout sign + - FindBaseAddressString: "ÉÀÇ" + - ReplaceString: {Offset: 0, Find: "ÉÀÇ", Replace: "АБВ"} + # Change keyboard layout + - FindBaseAddressString: "ý\0\0ÿ\0\0š\0\0ž\0\0" + # Top row, left to right (10 keys): + - ReplaceString: {Offset: 0x00, Find: "ý\0", Replace: "ч"} + - ReplaceString: {Offset: 0x04, Find: "ÿ\0", Replace: "э"} + - ReplaceString: {Offset: 0x08, Find: "š\0", Replace: "ё"} + - ReplaceString: {Offset: 0x0C, Find: "ž\0", Replace: "ы"} + - ReplaceString: {Offset: 0x10, Find: "æ\0", Replace: ","} + - ReplaceString: {Offset: 0x14, Find: "œ\0", Replace: ";"} + - ReplaceString: {Offset: 0x18, Find: "þ\0", Replace: "!"} + - ReplaceString: {Offset: -56, Find: "ß\0", Replace: "?"} + - ReplaceString: {Offset: 0x1C, Find: "ij\0", Replace: "ш"} + - ReplaceString: {Offset: 0x20, Find: "ŀ\0", Replace: "щ"} + # Second row, left to right (10 keys): + - ReplaceString: {Offset: 0x28, Find: "à\0", Replace: "я"} + - ReplaceString: {Offset: 0x2C, Find: "á\0", Replace: "в"} + - ReplaceString: {Offset: 0x30, Find: "â\0", Replace: "е"} + - ReplaceString: {Offset: 0x34, Find: "ä\0", Replace: "р"} + - ReplaceString: {Offset: 0x38, Find: "ã\0", Replace: "т"} + - ReplaceString: {Offset: 0x3C, Find: "å\0", Replace: "ъ"} + - ReplaceString: {Offset: 0x40, Find: "è\0", Replace: "у"} + - ReplaceString: {Offset: 0x44, Find: "é\0", Replace: "и"} + - ReplaceString: {Offset: 0x48, Find: "ê\0", Replace: "о"} + - ReplaceString: {Offset: 0x4C, Find: "ë\0", Replace: "п"} + # Third row, left to right (10 keys): + - ReplaceString: {Offset: 0x50, Find: "ò\0", Replace: "а"} + - ReplaceString: {Offset: 0x54, Find: "ó\0", Replace: "с"} + - ReplaceString: {Offset: 0x58, Find: "ô\0", Replace: "д"} + - ReplaceString: {Offset: 0x5C, Find: "ö\0", Replace: "ф"} + - ReplaceString: {Offset: 0x60, Find: "õ\0", Replace: "г"} + - ReplaceString: {Offset: 0x64, Find: "ø\0", Replace: "х"} + - ReplaceString: {Offset: 0x68, Find: "ì\0", Replace: "й"} + - ReplaceString: {Offset: 0x6C, Find: "í\0", Replace: "к"} + - ReplaceString: {Offset: 0x70, Find: "î\0", Replace: "л"} + - ReplaceString: {Offset: 0x74, Find: "ï\0", Replace: "ю"} + # Fourth row, left to right (8 keys): + - ReplaceString: {Offset: 0x78, Find: "ù\0", Replace: "з"} + - ReplaceString: {Offset: 0x7C, Find: "ú\0", Replace: "ь"} + - ReplaceString: {Offset: 0x80, Find: "û\0", Replace: "ц"} + - ReplaceString: {Offset: 0x84, Find: "ü\0", Replace: "ж"} + - ReplaceString: {Offset: 0x88, Find: "ñ\0", Replace: "б"} + - ReplaceString: {Offset: 0x8C, Find: "ç\0", Replace: "н"} + - ReplaceString: {Offset: 0x90, Find: "đ\0", Replace: "м"} + - ReplaceString: {Offset: 0x94, Find: "ł\0", Replace: "."} # The following patch(es) are maintained by NiLuJe # This is a simple conversion of @frostschutz MiniClock patch @@ -1437,4 +1530,4 @@ Greek Keyboard (GloHD/ClaraHD/AuraOne/H2O2): Don't grab exclusive access to event0: - Enabled: no - Description: Allows third-party tools to read the event0 input device - - FindReplaceString: {Find: "/dev/input/event0:keymap=keys/device.qmap:grab=1", Replace: "/dev/input/event0:keymap=keys/device.qmap:grab=0"} + - FindReplaceString: {Find: "%0:keymap=keys/device.qmap:grab=1", Replace: "%0:keymap=keys/device.qmap:grab=0"} diff --git a/src/librmsdk.so.1.0.0.yaml b/src/librmsdk.so.1.0.0.yaml index 72b8798..e1eed5e 100644 --- a/src/librmsdk.so.1.0.0.yaml +++ b/src/librmsdk.so.1.0.0.yaml @@ -11,7 +11,11 @@ Disable orphans/widows avoidance: # Beware that this patch might(?) intefere with related CSS properties such as # page-break-after:avoid; or page-break-inside:avoid;. A better solution would # be to edit the book's stylesheet to set orphans:1; widows:1;. - - ReplaceBytes: {Offset: 0x2972E4, FindH: E6 D0, ReplaceH: E6 E7} + - ReplaceBytes: + Base: "_ZN6layout13FlowProcessor17getPageBreakScoreEbbbbf" + Offset: 80 + FindH: E6 D0 + ReplaceH: E6 E7 Default ePub serif font (Amasis): - Enabled: no diff --git a/src/nickel.yaml b/src/nickel.yaml index 9680145..572d11a 100644 --- a/src/nickel.yaml +++ b/src/nickel.yaml @@ -15,11 +15,11 @@ Remove forgot pin button from lock screen: Removes the Forgot PIN -> Sign Out button from the lock screen. If this is enabled and you forget your pin, you will need to hard reset your Kobo. - - BaseAddress: 0x14405F3 + - BaseAddress: 0x143E22D - ReplaceZlib: Find: "#lblForgotPin[qApp_deviceIsDragon=true],\n#lblSignOut[qApp_deviceIsDragon=true] {\n font-size: 26px;\n}" Replace: "#lblForgotPin,#lblSignOut{qproperty-visible:false;}" - - BaseAddress: 0x14459B0 + - BaseAddress: 0x1447EB4 - ReplaceZlib: Find: "#lblForgotPin[qApp_deviceIsDragon=true],\n#lblSignOut[qApp_deviceIsDragon=true] {\n font-size: 26px;\n}" Replace: "#lblForgotPin,#lblSignOut{qproperty-visible:false;}" @@ -228,7 +228,6 @@ Increase library cover size: - Description: | Increase the cover thumbnail size in My Books main book list See screenshots - https://www.mobileread.com/forums/showpost.php?p=3241532&postcount=82 - N.B. Settings for LibraH2O are an initial guess. User testing required. fw 4.17 - rewritten by jackie_w to replace oren64's patch - FindZlib: "#coverPixmapView" - ReplaceZlibGroup: @@ -246,7 +245,7 @@ Increase library cover size: # AuraOne/Forma (Daylight) - {Find: "width: 140px;", Replace: "width: 190px;"} - {Find: "height: 218px;", Replace: "height: 255px;"} - # LibraH2O (Storm) *untested* + # LibraH2O (Storm) - {Find: "width: 126px;", Replace: "width: 165px;"} - {Find: "height: 196px;", Replace: "height: 225px;"} @@ -283,15 +282,6 @@ Custom collection/author header title font: - {Find: "font-size: 32px;", Replace: "font-size: 46px;"} # AuraOne/Forma (Daylight) - {Find: "font-size: 36px;", Replace: "font-size: 50px;"} - # Second set (do the same thing as above): - - FindZlib: "#header,\n#backButton {" - - ReplaceZlibGroup: - Replacements: - - {Find: "font-size: 16px;", Replace: "font-size: 28px;"} - - {Find: "font-size: 20px;", Replace: "font-size: 36px;"} - - {Find: "font-size: 28px;", Replace: "font-size: 42px;"} - - {Find: "font-size: 32px;", Replace: "font-size: 46px;"} - - {Find: "font-size: 36px;", Replace: "font-size: 50px;"} Reduce new header/footer height: - Enabled: no @@ -498,6 +488,86 @@ Customise Header back button: # 'Back to Home' button un-bolded - Find: "#backLabel #label {\n font-family: Avenir;\n font-style: normal;\n font-weight: bold;" Replace: "#backLabel #label {\n font-family:Avenir;\n font-style:normal;\n font-weight:normal;" + +Series list increase cover thumbnails: + - Enabled: no + - Description: | + Series list view (not cover view). Enlarge cover thumbnails. + NB: After enabling this patch, if you find that the + last Series thumbnail on each page is truncated along its bottom edge + then you should also enable the additional nickel patch: + 'Reduce height of page navigator arrows' + - FindZlib: "#seriesCoverPack" + - ReplaceZlibGroup: + Replacements: + # Part 1: #seriesWidgetContainer - Reduce top/bottom margins + # NB: The smaller the topMargin the closer the Series name + # will be to the horizontal gridline above it + # Touch/Mini + - {Find: "topMargin: 9px;", Replace: "topMargin: 3px;"} + - {Find: "bottomMargin: 9px;", Replace: "bottomMargin: 0px;"} + # Glo/Aura6"/Aurav2 + - {Find: "topMargin: 12px;", Replace: "topMargin: 4px;"} + - {Find: "bottomMargin: 12px;", Replace: "bottomMargin: 0px;"} + # AuraHD/H2O/H2Ov2/GloHD/ClaraHD + - {Find: "topMargin: 14px;", Replace: "topMargin: 5px;"} + - {Find: "bottomMargin: 14px;", Replace: "bottomMargin: 0px;"} + # AuraOne/Forma + - {Find: "topMargin: 21px;", Replace: "topMargin: 7px;"} + - {Find: "bottomMargin: 21px;", Replace: "bottomMargin: 0px;"} + # LibraH2O + - {Find: "topMargin: 17px;", Replace: "topMargin: 6px;"} + - {Find: "bottomMargin: 17px;", Replace: "bottomMargin: 0px;"} + # + # Part 2: #seriesCoverPack - Increase cover thumbnail size + # Touch/Mini + - {Find: "width: 60px;", Replace: "width: 85px;"} + - {Find: "height: 94px;", Replace: "height: 105px;"} + # Glo/Aura6"/Aurav2 + - {Find: "width: 70px;", Replace: "width: 100px;"} + - {Find: "height: 115px;", Replace: "height: 140px;"} + # AuraHD/H2O/H2Ov2/GloHD/ClaraHD + - {Find: "width: 108px;", Replace: "width: 141px;"} + - {Find: "height: 175px;", Replace: "height: 200px;"} + # AuraOne/Forma + - {Find: "width: 140px;", Replace: "width: 190px;"} + - {Find: "height: 222px;", Replace: "height: 265px;"} + # LibraH2O + - {Find: "width: 126px;", Replace: "width: 165px;"} + - {Find: "height: 205px;", Replace: "height: 234px;"} + # + # Part 3: All models: #hBooks - Move bookcount up & away from horizontal gridline + # Users of lower-res models (Touch/Mini/Glo/Aura6"/Aurav2) may prefer to + # decrease the Replace value of 20px for padding-bottom + - Find: "#hBooks {\n padding-left: 0px;\n padding-bottom: 0px;\n font-style: normal;\n}" + Replace: "#hBooks {\n padding-left: 0px;\n padding-bottom:20px;\n font-style: normal;\n}" + +Reduce height of page navigator arrows: + - Enabled: no + - Description: | + Reduce page navigator footer height (Book list, Series list) + This patch may be helpful to users who also enable the nickel patch + 'Series list increase cover thumbnails' + It should prevent the white background of the page footer/navigation arrow + overlapping the bottom edge of the last Series list thumbnail on each page. + - FindZlib: "QWidget[footerFixedHeight=true][qApp_deviceIsTrilogy=true]" + - ReplaceZlibGroup: + Replacements: + # Touch/Mini + - Find: "QWidget[footerFixedHeight=true][qApp_deviceIsTrilogy=true] {\n min-height: 70px;\n max-height: 70px;\n}" + Replace: "QWidget[footerFixedHeight=true][qApp_deviceIsTrilogy=true] {\n min-height: 54px;\n max-height: 54px;\n}" + # Glo/Aura6"/Aurav2 + - Find: "QWidget[footerFixedHeight=true][qApp_deviceIsPhoenix=true] {\n min-height: 82px;\n max-height: 82px;\n}" + Replace: "QWidget[footerFixedHeight=true][qApp_deviceIsPhoenix=true] {\n min-height: 70px;\n max-height: 70px;\n}" + # AuraHD/H20/H20v2/GloHD/ClaraHD + - Find: "QWidget[footerFixedHeight=true][qApp_deviceIsDragon=true] {\n min-height: 120px;\n max-height: 120px;\n}" + Replace: "QWidget[footerFixedHeight=true][qApp_deviceIsDragon=true] {\n min-height: 90px;\n max-height: 90px;\n}" + # AuraOne/Forma + - Find: "QWidget[footerFixedHeight=true][qApp_deviceIsDaylight=true] {\n min-height: 156px;\n max-height: 156px;\n}" + Replace: "QWidget[footerFixedHeight=true][qApp_deviceIsDaylight=true] {\n min-height: 120px;\n max-height: 120px;\n}" + # LibraH2O + - Find: "QWidget[footerFixedHeight=true][qApp_deviceIsStorm=true] {\n min-height: 138px;\n max-height: 138px;\n}" + Replace: "QWidget[footerFixedHeight=true][qApp_deviceIsStorm=true] {\n min-height: 105px;\n max-height: 105px;\n}" # The following patch(es) are ported from oren64's patches Increase headlines font: @@ -527,7 +597,22 @@ New home screen subtitle custom font: - Description: | Increase subtitle font size, font color black. Works best when used with with patch `New home screen increasing cover size` - - FindZlib: "MetaDataLabel {\n color: #666666;\n qproperty-indent: 0;\n}" + - BaseAddress: 0x1441EDC # FindZlib: "MetaDataLabel {\n color: #666666;\n qproperty-indent: 0;\n}" + - ReplaceZlib: {Find: "MetaDataLabel {\n color: #666666;\n qproperty-indent: 0;\n}", Replace: "MetaDataLabel {\n color: #000000;\n qproperty-indent: 0;\n}"} + - ReplaceZlib: + Find: "MetaDataLabel[qApp_deviceIsTrilogy=true] {\n font-size: 13px;\n}" + Replace: "MetaDataLabel[qApp_deviceIsTrilogy=true] {\n font-size: 14px;\n}" + - ReplaceZlib: + Find: "MetaDataLabel[qApp_deviceIsPhoenix=true] {\n font-size: 17px;\n}" + Replace: "MetaDataLabel[qApp_deviceIsPhoenix=true] {\n font-size: 18px;\n}" + - ReplaceZlib: + Find: "MetaDataLabel[qApp_deviceIsDragon=true] {\n font-size: 24px;\n}" + Replace: "MetaDataLabel[qApp_deviceIsDragon=true] {\n font-size: 26px;\n}" + - ReplaceZlib: + Find: "MetaDataLabel[qApp_deviceIsDaylight=true] {\n font-size: 31px;\n}" + Replace: "MetaDataLabel[qApp_deviceIsDaylight=true] {\n font-size: 34px;\n}" + # duplicate + - BaseAddress: 0x144B870 - ReplaceZlib: {Find: "MetaDataLabel {\n color: #666666;\n qproperty-indent: 0;\n}", Replace: "MetaDataLabel {\n color: #000000;\n qproperty-indent: 0;\n}"} - ReplaceZlib: Find: "MetaDataLabel[qApp_deviceIsTrilogy=true] {\n font-size: 13px;\n}"