iOS 7のダイナミック壁紙について:iPhoneでもプロダクトレッド限定色を適応してみる

  • このエントリーをはてなブックマークに追加
  • feedly
    follow us in feedly

iOS 7から実装されたダイナミック壁紙。正式名称はProcedural Wallpaper。
実は、iPhoneとiPod touchで標準で入っている壁紙が違います。iPod touch 5th持ってないからスクリーンショット撮れないけども。。iPhoneでは以下のような感じです。

2014 03 16 23 58 04
iPod touchの中でプロダクトレッド(PRODUCT)REDには限定色として濃い赤色の壁紙が入っています。それをどうにかして、iPhoneで適応できないかなあと考えるついでに、ダイナミック壁紙で色々と遊んでみました。一応、これは未脱獄でも出来ます、本記事ではやり方は割愛してますが・・(記事後方参照)。

ダイナミック壁紙について

デフォルトのダイナミック壁紙は、
/System/Library/ProceduralWallpaper
の下のProceduralWallpapers.bundleに存在しています。ここはシステムの部分なので通常ユーザーが追加したり、書き換えたりは出来ないです。脱獄すれば作れるにしてもプログラミングの知識が多少必要となります。

以前、僕がPerfume Wallpaperを作りました:
Perfumeのあの時計とLEVEL 3のあのシルエットが動くiPhone向けの壁紙を作ってみた | きんちゃんぶろぐ


GitHub:
wakinchan/Perfume-Wallpaper


今回はそんな話はどうでも良くて、デフォルトで入っている壁紙について調べてみます。
メインのバイナリはProceduralWallpapers.bundle下のProceduralWallpapersで、こいつはローダ的存在で各色のダイナミック壁紙を読み出している模様。
また、そのbundleの中にbokehSceneと呼ばれるバイナリplistの存在が確認できる。
どうやら、これがカラーの本体のようでBokehSceneは全部で11種類ある。その中でiPhoneに設定.appから選択できるのは最初に示したスクリーンショットの通り7種類。他はiPhoneからは通常適応できないようになっています。

11種類という事は、iPhoneでもiPod touchなどに存在するカラーの壁紙が存在しているようだ。

iPhoneで使われているbokehScene
bokehSceneBokeh土台の画像設定.appのサムネイル
BokehGradient.bokehScenegradient.pngBokehGradient_thumb-568h\@2x~iphone.png
BokehGradientSilver.bokehScenegradientSilver.pngBokehGradientSilver_thumb-568h\@2x~iphone.png
Blue_v01.bokehSceneBlue_1k_v2.pngBokehBlue_thumb-568h\@2x~iphone.png
Green_v01.bokehSceneGreen_1k_v2.pngBokehGreen_thumb-568h\@2x~iphone.png
Red_v01.bokehSceneRed_1k_v2.pngBokehRed_thumb-568h\@2x~iphone.png
Silver_v01.bokehSceneSilver_1k_v2.pngBokehSilver_thumb-568h\@2x~iphone.png
Yellow_v03.bokehSceneYellow_1k_v4.pngBokehYellow_thumb-568h\@2x~iphone.png

iPod touchで使われているbokehScene
bokehSceneBokeh土台の画像設定.appのサムネイル
Blue_T_v01.bokehSceneBlue_T_v1_1k.pngBokehBlue_T_thumb-568h\@2x~iphone.png
Green_T_v01.bokehSceneGreen_T_v1_1k.pngBokehGreen_T_thumb-568h\@2x~iphone.png
Pink_T_v01.bokehScenePink_T_v1_1k.pngBokehPink_T_thumb-568h\@2x~iphone.png
Red_T_v01.bokehSceneRed_T_1k_v1.pngBokehRed_T_thumb-568h\@2x~iphone.png

// この辺は無視
// ゴミ・サムネイル: BokehSilver_T_thumb-568h\@2x~iphone.png
// hero: BokehBlue_hero-568h\@2x~iphone.png, BokehBlue_T_hero-568h\@2x~iphone.png

上記の表の一番下:Red_T_v01.bokehSceneはiPod touchのプロダクトレッド限定色です。では、iPhoneでプロダクトレッド色を適応してみよう。

プロダクトレッド限定色を適応してみる

ダイナミック壁紙か通常の壁紙かの設定の有無は全て
/var/mobile/Library/Preferences/com.apple.springboard.plist
に記録さている。

keyの解説

スクリーンショット 2014 03 17 01 17 28
以下のkeyがYESのときはダイナミック壁紙が有効となる。
ホーム画面の壁紙: kSBProceduralWallpaperHomeUserSetKey
ロック画面の壁紙: kSBProceduralWallpaperLockUserSetKey

また、OptionsKeyというものが存在しており、そこにどのカラーを適応されているかが記述されている。
上記の画像を見る限りkSBUIMagicWallpaperThumbnailNameKeythumbnailImageNameの値は一緒で、先ほど表にした“設定.appのサムネイル”の*******_thumbから後ろを取り除いた部分のようだ。

ホーム画面: kSBProceduralWallpaperHomeOptionsKey
- kSBUIMagicWallpaperThumbnailNameKey (サムネイルのkey)
- thumbnailImageName (サムネイルの画像名)
- bokehVariant (BokehScene名)

ロック画面: kSBProceduralWallpaperLockOptionsKey
- kSBUIMagicWallpaperThumbnailNameKey (サムネイルのkey)
- thumbnailImageName (サムネイルの画像名)
- bokehVariant (BokehScene名)

適応するコマンド

以上で大体構造は分かったので、実際にcom.apple.springboard.plistを書き換えて適応してみる。

// あらかじめErica Utiltiesを入れておいてください、入れてない方は打たなくていいです
apt-get install com.ericasadun.utilties

// ホーム画面をプロダクトレッド限定色に
plutil -kSBProceduralWallpaperHomeUserSetKey -true /var/mobile/Library/Preferences/com.apple.springboard.plist

plutil -kSBProceduralWallpaperHomeOptionsKey -dict /var/mobile/Library/Preferences/com.apple.springboard.plist
plutil -kSBProceduralWallpaperHomeOptionsKey -dict /var/mobile/Library/Preferences/com.apple.springboard.plist
plutil -kSBProceduralWallpaperHomeOptionsKey -kSBUIMagicWallpaperThumbnailNameKey -string BokehRed_T_thumb /var/mobile/Library/Preferences/com.apple.springboard.plist
plutil -kSBProceduralWallpaperHomeOptionsKey -thumbnailImageName -string BokehRed_T_thumb /var/mobile/Library/Preferences/com.apple.springboard.plist
plutil -kSBProceduralWallpaperHomeOptionsKey -bokehVariant -string Red_T_v01 /var/mobile/Library/Preferences/com.apple.springboard.plist

// ロック画面をプロダクトレッド限定色に
plutil -kSBProceduralWallpaperLockUserSetKey -true /var/mobile/Library/Preferences/com.apple.springboard.plist

plutil -kSBProceduralWallpaperLockOptionsKey -dict /var/mobile/Library/Preferences/com.apple.springboard.plist
plutil -kSBProceduralWallpaperLockOptionsKey -kSBUIMagicWallpaperThumbnailNameKey -string BokehRed_T_thumb /var/mobile/Library/Preferences/com.apple.springboard.plist
plutil -kSBProceduralWallpaperLockOptionsKey -thumbnailImageName -string BokehRed_T_thumb /var/mobile/Library/Preferences/com.apple.springboard.plist
plutil -kSBProceduralWallpaperLockOptionsKey -bokehVariant -string Red_T_v01 /var/mobile/Library/Preferences/com.apple.springboard.plist

killall -9 SpringBoard

まとめ

これで見事iPhoneでもプロダクトレッド色に!

2014 03 17 01 38 05
因みに、com.apple.springboard.plistはiPhoneのバックアップファイルに入る部分なので未脱獄でも書き換えれます。ここでは割愛しますが、やり方は以下と同じです。

【脱獄不要】iPhone、iPadであの煩わしいバッテリー残量アラートを無効、ControlCenterをデモモードにする方法などを見つけました | きんちゃんぶろぐ


設定.appから全てのBokehSceneを表示して選択できるTweakを作ろうと思ったのですが、なかなか手強くて、邪道では出来る物の動作が不安定のため公開は断念しました。笑

では、きんちゃん( @wa_kinchan )でした。
最後まで読んで頂きありがとうございます。良かったら、RSS購読、シェアして下さいね(≧∀≦)!





4 Thoughts on “iOS 7のダイナミック壁紙について:iPhoneでもプロダクトレッド限定色を適応してみる

  1. Kouichi on 2014年3月25日 at 11:00 PM said:

    iBackupBotでやる際には、
    どこにそのキーを追加すればいいのですか?

  2. きんちゃん。(@wa_kinchan) Blog Administrator on 2014年3月26日 at 10:40 PM said:

    リストア手順はこれと一緒です。 http://kindadev.com/blog/?p=1616
    同じように
    [最新のバックアップファイル]/System Files/HomeDomain/Library/Preferences/com.apple.springboard.plist
    を書き換えます。

    一度、任意のダイナミック壁紙を適応してバックアップをとり、com.apple.springboard.plistの
    kSBProceduralWallpaperHomeOptionsKey、kSBProceduralWallpaperLockOptionsKey
    の中身を書き換えれば簡単できます。

  3. iOS8.1では反映されませんでした、なにか方法はありますか?

    • きんちゃん。(@wa_kinchan) Blog Administrator on 2014年11月22日 at 9:02 AM said:

      脱獄されているのでしたら、HiddenWallapersをCydiaから入れていただけば全色使えるようになります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Post Navigation