2008/02/02

HOWTO: Modify the iPhone's Main Menu

HOWTO: Modify the iPhone's Main Menu


Here are some step by step instructions on how to modify the graphics on your iPhone to put in your own carrier logo, add additional buttons to the main menu, and change the graphics for your application shortcuts.

Getting Started

Warning: It's pretty hard to brick an iphone beyond repair, however we should warn you that you are doing things that were not meant to be done to your phone and must accept responsibility for your actions. If you screw up your phone, it is your own fault.

First if you have not read the tutorials on how to add your own ringtones, I suggest you start there. These guys have done a great job explaining how to access the iPhone's Filesystem and upload your own files, which is key to getting this mod to work..

There are 2 tutorials for doing this: Windows Tutorial Mac Tutorial

The software you need can be downloaded from the author's website:
http://www.wotan.org/jailbreak11.zip

007 Replacement Graphics

These are the PNG files I used, just right click and 'save as' keeping the name intact. Save them to the folder where your iPhoneInterface app is located. You can use any standard PNG. Nothing special needs to be done to the files just needs the correct name to overwrite the default image.

icon.png

Default_CARRIER_ATT.png

FSO_CARRIER_ATT.png

I hope Sony won't mind that I'm borrowing their 007 graphic, they've got enough PR problems as it is.
007 is a trademark of Sony Pictures. I like these movies. Visitors, go buy the Casino Royale DVD!


Transfer the files

Follow the ringtone tutorial up until the part that you putfile yourringtone.mp3

Now run the following commands within iPhoneInterface to upload your new carrier logos:

cd /System/Library/CoreServices/SpringBoard.app/

putfile FSO_CARRIER_ATT.png

putfile Default_CARRIER_ATT.png

Editing The Main Menu Positioning

Next we need to edit the DisplayOrder.plist file. You can use the command 'getfile' in iPhoneInterface to get the version off your phone, or you can do it the easy way and just use my version. My version adds a shortcut to DemoApp in position 1 and FieldTest in position 9. DemoApp does not do anything yet, but once the toolchain is working, we will compile and app and put it in there.

Tips for Editing Your own DisplayOrder.plist
On a mac you can just double click on this file and edit in the Property List Editor tree view. I'm not sure how to edit it on a PC, it's not just ascii... Once you are inside the file, It's pretty self explanatory, but you can basically put any app in any position from 0-11 by changing the displayIdentifier variable. The rest of the icons just get shifted down. If you add more than 16 icons, the list does not scroll, however it has been reported that the SpringBoard.app has the ability to scroll more icons, perhaps just not enabled in this version.

The displayIdentifier property under each item in iconList needs to be a string with a value of something like: 'com.apple.mobilesafari' or 'com.apple.DemoApp', or 'com.apple.fieldtest'

Once your happy with your DisplayOrder.plist file put it into the same folder as your iPhoneInterface app, and type these commands in the iphone terminal:

cd /System/Library/CoreServices/SpringBoard.app/
putfile DisplayOrder.plist


Changing the icons on your main menu

To upload a new icon for the DemoApp:

cd /Applications/DemoApp.app/

putfile icon.png

You can do this for any app, just upload a standard 60x60 png file named icon.png to an app directory.

Skinners get cracking on this!! Lets see if we can create some sweet iPhone icons/skins



All Done

Once you have all of your new logos uploaded to your phone, follow the instructions at the end of the this tutorial to upload the Services.plist file so your iPhone will work with iTunes again. Then power down your iPhone and reboot and you should now have the new logos.
If you screwed up run jailbreak and iPhoneTool again and try it again, or if all else fails do a restore from iTunes.



What's Next?

Several people are trying to come up with a way to launch Safari to a specific url from the main menu. If you have any ideas on how this can be achieved, please come on the IRC channel and share.

Thanks!

This was made possible by the hard work of many devs on irc #iphone-dev, including ziel, natetrue, gh, iPhonedHome, and others. Thanks guys!

If this makes it's way to Apple, hear me out.. please consider leaving this open, as it is now. As in, do not try to purposely lock people from doing these customizations. Community support will truly make your device a winner, and with such a clever restore mechanism, it's fairly hard to break your phone beyond recovery. Legions of Open source developers will pick up where you left off and build apps to manage all of these customizations.

Nessun commento: