iPhoneSoft : forum iPhone, iPad, Apple Watch, Apple TV et Mac

application iSoft pour le forum iPhoneSoft (iPhone, iPod, iPad, Apple Watch, Apple TV, Mac et services Apple

Forum iPhone, iPod et iPad, Apple TV, Apple Watch et Mac en français par iPhoneSoft pour les systèmes iOS, macOS, tvOS et watchOS

Vous n'êtes pas identifié(e).



#1 10-07-2012 22:26:09

iSeven
Membre

[Tuto] Créer un thème indépendant de WinterBoard

Salut à tous,

Voici un petit tutoriel pour

faire un thème qui s'installera sans WinterBoard


  _____________
/
INTRODUCTION \__________________________________________________________________________________________
\________________________________________________________________________________________________________/


Cette manipulation comporte des avantages et des inconvénients:

Avantages : -> Plus de problème de ralentissement dû à WinterBoard.
                 -> Vous approfondirez vos connaissances sur l'architecture d'iOS et vous apprendrez à vous servir des scripts (dans le cas présent, ce sera seulement pour renommer des fichiers).

Inconvénients : -> Certaines images ne pourront pas être modifiées (tant que je ne connais pas la technique, donc Neo'.. tongue).
                      -> Plus votre thème est important, plus les manipulations seront longues.
                      -> Pour appliquer/retirer votre thème vous serez obligé de passer par la case Cydia.


Ne vous inquiétez pas, une fois le travail terminé vous pourrez profiter pleinement de votre thème sans ralentissement smile

Pour l'instant il va falloir vous armer de patience hmm

Pour ce tutoriel, je vais prendre comme exemple un thème très bête que j'ai déjà créé. Vous pourrez donc le télécharger pour voir le résultat.

Bon allons-y !


Pré-requis :
-> iFile
-> MobileTerminal
-> Un client SSH si vous souhaitez réaliser les manipulations sur ordinateur


J'ai la flemme de faire un sommaire, donc je vais avancer petit à petit tongue



  ___________
/
I) : RAPPELS \____________________________________________________________________________________________
\________________________________________________________________________________________________________/


a) : Architecture d'iOS


Lorsque vous êtes dans le dossier racine (noté par un slash "/") voici les dossiers présents :

Applications
bin
boot
cores
dev
Developer
etc
lib
Library
mnt
private
sbin
System
tmp
User
usr
var

Nous nous intéresserons seulement aux dossiers Applications, Library, System et User.

Applications : les applications systèmes comme Messages, Météo, Rappels... ont chacune leur principal dossier ici.
Library : les fonds d'écran et sonneries du système sont localisés dans ce dossier.

Fonds d'écran => /Library/Wallpaper
Sonneries => /Library/Ringtones

System : les images de l'écran d'accueil, écran verrouillé et les sons sont situées dans cette partie de l'architecture dans plusieurs dossiers que j'indiquerai.
User : les applications dites de "l'utilisateur" ont chacune leur dossier dans cette partie. (Angry Birds, Whats App...)


b) : Les scripts


Présentation

Je vais faire un mini tuto pour ceux qui ne connaissent pas.
Les scripts sont des fichiers contenant des instructions dites "in shell" : elles s'exécutent comme dans un terminal.

Voici les principaux scripts (leurs noms sont en gras) utilisés pour les paquets de Cydia :

preinst : Il s'exécute avant l'installation du paquet.
postinst : Il s'exécute après l'installation du paquet.
prerm : Lui s'exécute avant la suppression du paquet.
postrm : Enfin celui là s'exécute après la suppression du paquet.

Vous pouvez également créer d'autres scripts si vous avez un paquet d'instructions à exécuter.
Son extension devra être .sh et vous pourrez utiliser l'instruction sh nomDeVotreScript.sh pour l'exécuter (vous pouvez mettre ce type d'instruction dans les scripts présentés ci-dessus).

Attention, les scripts principaux n'ont pas d'extension !

Ces fichiers sont dans le dossier DEBIAN avec le fichier control (si vous ne savez pas ce que c'est lisez ce tutoriel).

Structure d'un script bash

Un fichier script commence et se termine de la façon suivante :

#!/bin/sh

// Instructions
// ...
// ..

exit 0

N'apprenez pas ces lignes par cœur mais pour votre culture personnelle :
-> La première ligne représente un chemin SSH qui mène aux fichiers correspondants aux commandes utilisées.
-> La dernière ligne indique au shell que les instructions sont terminées.

Quelques commandes

Voici les commandes que nous allons utiliser :

cd : Permet de changer de dossier.
rm : Permet de supprimer un fichier.
mv : Permet de déplacer/renommer un fichier.
chmod : Permet de changer les droits d'un utilisateur sur un fichier (lire, écrire et exécuter).
cp : Permet de copier un fichier (on ne s'en servira pas, mais elle est connue).

La syntaxe générale se présente comme ceci :

nomDeMaCommande fichier/répertoire

Exemples :

Changer de répertoire : cd /var/mobile/Library
Supprimer un fichier : rm toto.txt
Déplacer un fichier : mv /System/Library/toto1.txt /Library/Application Support
Renommer un fichier : mv test.plist test1.plist
Changer les droits : chmod 777 /usr/lib/apr.exp
Copier un fichier : cp /Applications/test.txt /System/Library/CoreServices

Remarque : Le chiffre 777 ( pour la commande chmod) représente les différents droits que l'on accorde à un utilisateur.

Exemple

777 : Le propriétaire, les personnes appartenant à un groupe prédéfini et les utilisateurs ont le droit de lire, écrire et exécuter le fichier.
755 : Seul le propriétaire a le droit d'écrire dans le fichier concerné.


Vous pouvez changer de répertoire pour exécuter les commandes directement dans le dossier du fichier (voir exemple changer de répertoire et supprimer) ou bien indiquer son chemin après la commande (voir exemple pour copier) smile

Pour vous repérer dans votre script, vous pouvez utiliser la commande echo afin de marquer un texte indiquant ce que la/les commande(s) suivante(s)
fait/font.

Exemple :

echo Suppression du fichier toto..
rm toto.txt
echo Changement de répertoire
cd /usr/bin


J'ajouterai au fur et à mesure, mais l'essentiel est là smile


  ________________________________________________
/
II) : Pratique : modifier le fond du centre de notifications \_______________________________________________________
\________________________________________________________________________________________________________/


C'est parti !


a) : Création du dossier correspondant au thème ainsi que les chemins de chaque image


Pour modifier le fond du centre de notifications, il faut :
-> Un fond avec les dimensions suivantes 960x960 nommé BulletinListLinen@2x.png (http://www.mediafire.com/?zpk58zpdcxd1e3h)
-> Le même fond avec les dimensions 480x480 nommé BulletinListLinen.png (http://www.mediafire.com/?lhjq4aebx3q8hul)
-> Supprimer le fichier cache nommé com.apple.SpringBoard.notificationCenterLinen

Remarque : Les images portant un "@2x" dans leur nom font référence à des images qui sont utilisées uniquement pour les écrans retina.

Leurs chemins :
Les deux fonds => /System/Library/CoreServices/SpringBoard.app
Le fichier cache => /var/mobile/Library/Caches

Tout d'abord, allez dans /var/mobile

Créez un dossier qui a le même nom que celui de votre thème, puis à l'intérieur, créez les chemins des images utilisées (ci-dessus) et un dossier DEBIAN.

Cela donne : MonThème => DEBIAN
                                 => System => Library => CoreServices => SpringBoard.app

Copiez les deux images dans le dossier SpringBoard.app.
Ajoutez un caractère dans le nom de chaque image afin de les différencier des originaux (sinon il y aura un petit risque de conflit lors de l'installation)
Donc :
-> BulletinListLinen@2x.png devient BulletinListLinen1@2x.png
-> BulletinListLinen.png devient BulletinListLinen1.png

C'est juste pour différencier les deux fichiers, vous pouvez mettre le caractère que vous voulez smile


b) : Le dossier DEBIAN et les scripts


Maintenant que l'architecture de notre thème est préparée, nous allons attaquer les scripts.
Avant de commencer copiez ce fichier control dans le dossier DEBIAN (http://www.mediafire.com/?678zzo2c9bn284o)

Pour ceux qui l'ignorent, ce fichier contient les informations de votre paquet (version, nom, description...).

Passons aux scripts.

Dans le dossier DEBIAN, créez quatre fichiers sans extension ayant pour noms : preinst, postinst, prerm et postrm.

Dans chacun de ces fichiers recopiez la structure d'un fichier script décrite plus haut, puis supprimez ce qui se trouve entre la première et la dernière ligne.

Vous devriez avoir ceci :

#!/bin/sh

exit 0

Nous allons maintenant étudier chaque fichier, un par un.


preinst


preinst s'exécute avant l'installation du paquet.
Nous allons donc l'utiliser pour :
-> Modifier les droits du dossier SpringBoard.app (parfois Apple interdit la modification de fichier à l'intérieur de certains dossiers donc nous allons changer les droits pour être sûrs de pouvoir agir)
-> Renommer les fichiers originaux pour éviter les conflits

Mettez donc par précaution la commande chmod pour éviter tout problème.

D'après la syntaxe on a donc : chmod 777 /System/Library/CoreServices/SpringBoard.app

Maintenant que l'on est sûr de pouvoir faire ce qu'on veut, on doit se rendre dans ce dossier.

On a donc : cd /System/Library/CoreServices/SpringBoard.app

Remarque : Je vous conseille d'incorporer ces deux lignes comme ceci :
-> La commande cd doitêre présente dans chaque script pour chaque dossier utilisé
-> La commande chmod doit être utilisée dans le premier script qui est exécuté et dans le dernier à être exécuté.

Maintenant que nous sommes dans le dossier, il faut que nous renommions les deux originaux.

Nous allons donc avoir : mv BulletinListLinen@2x.png sauvegarde@2x.png
                                 mv BulletinListLinen.png sauvegarde.png

Les nouveaux noms sont en vert smile (vous pouvez évidemment choisir d'autres nouveaux noms)

Et voilà, notre fichier preinst est terminé.

Voici son contenu :

#!/bin/sh

chmod 777 /System/Library/CoreServices/SpringBoard.app

cd /System/Library/CoreServices/SpringBoard.app

mv BulletinListLinen@2x.png sauvegarde@2x.png
mv BulletinListLinen.png sauvegarde.png

exit 0

postinst


postinst s'exécute après l'installation du paquet.
Nous allons donc l'utiliser pour :
-> Renommer les fichiers du thèmes avec les noms originaux (sinon ça ne va pas marcher tongue)
-> Supprimer le fichier cache
-> Demander gentiment à Cydia de nous faire un respring après l'installation (pour que le thème prenne effet)

Comme pour le fichier précédent, on incorpore cette commande :

cd /System/Library/CoreServices/SpringBoard.app

Celle utilisée pour changer les droits n'est pas nécessaire ici car ils ont déjà été modifiés ! smile

On renomme les fichiers (du thème smile) : mv BulletinListLinen1@2x.png BulletinListLinen@2x.png
                                                      mv BulletinListLinen1.png BulletinListLinen.png

On supprime le fichier cache après avoir indiqué son chemin puis modifié les droits !

Cela donne : chmod 777 /var/mobile/Library/Caches
                  cd /var/mobile/Library/Caches
                  rm com.apple.SpringBoard.notificationCenterLinen

Notre postinst est terminé.

Voilà ce que ça donne (la commande pour demander un respring est en bleu) :

#!/bin/sh

chmod 777 /System/Library/CoreServices/SpringBoard.app

cd /System/Library/CoreServices/SpringBoard.app

mv BulletinListLinen1@2x.png BulletinListLinen@2x.png
mv BulletinListLinen1.png BulletinListLinen.png

chmod 777 /var/mobile/Library/Caches

cd /var/mobile/Library/Caches

rm com.apple.SpringBoard.notificationCenterLinen

declare -a cydia
cydia=($CYDIA)[/color]

if [[ ${CYDIA+@} ]]; then
        eval "echo 'finish:restart' >&${cydia[0]}"
fi

exit 0

prerm


prerm s'exécute avant la suppression du paquet.
Nous allons donc l'utiliser pour :
-> Renommer les fichiers du thème avec leur nom initial

Cela donne : cd /System/Library/CoreServices/SpringBoard.app
                  mv BulletinListLinen@2x.png BulletinListLinen1@2x.png
                  mv BulletinListLinen.png BulletinListLinen1.png

Notre prerm est terminé.

Il ressemble à ceci :

#!/bin/sh

cd /System/Library/CoreServices/SpringBoard.app

mv BulletinListLinen@2x.png BulletinListLinen1@2x.png
mv BulletinListLinen.png BulletinListLinen1.png

exit 0

postrm


postrm s'exécute dès que le paquet a été désinstallé.
Nous devons donc :
-> Renommer les fichiers originaux qui étaient sous forme de sauvegarde avec leurs noms initiaux
-> Supprimer le fichier cache créé pour le fond d'écran de notre thème (cette mise en cache est spécifique au fond d'écran du centre de notifications, pas pour les icônes par exemple)
-> Remettre les droits initiaux
-> Demander à Cydia de faire un respring pour appliquer la modification

Le fichier postrm est terminé !

Cela donne donc :

#!/bin/sh

cd /System/Library/CoreServices/SpringBoard.app

mv sauvegarde@2x.png BulletinListLinen@2x.png
mv sauvegarde.png BulletinListLinen.png

chmod 755 /System/Library/CoreServices/SpringBoard.app

cd /var/mobile/Library/Caches

rm com.apple.SpringBoard.notificationCenterLinen

chmod 755 /var/mobile/Library/Caches

declare -a cydia
cydia=($CYDIA)

if [[ ${CYDIA+@} ]]; then
        eval "echo 'finish:restart' >&${cydia[0]}"
fi

exit 0

Et voilà, vérifiez bien que les fichiers (control et les scripts) ont les permissions 0755 dans un logiciel comme WinSCP (en faisant clic droit puis Propriétés).

Maintenant, ouvrez MobileTerminal et tapez les commandes suivantes :

su 
votre mot de passe (alpine par défaut)
dpkg -b nomDuDossierDeVotreTheme

Ensuite installez le .deb créé avec iFile puis regardez les messages pour voir s'il n'y a pas d'erreur (ça m'arrive très souvent smile) !

Voici le paquet décompressé pour que vous puissiez analyser le tout ! smile


  ___________
/
CONCLUSION \____________________________________________________________________________________________
\________________________________________________________________________________________________________/


Voilà, en espérant que ce tutoriel en ait aidé plus d'un, j'ajouterai des modifications si j'en vois la nécessité, mais officiellement c'est terminé tongue

@+

(N'hésitez pas à signaler des fautes ou autre chose dérangeante !)

Dernière modification par iSeven (11-07-2012 17:14:38)



iPhone 5 - Gris sidéral 32GB - iOS 7.0.4 - Jailbreaké
iPhone 6 - Gris sidéral 64GB - iOS 8.1 - Jailbreaké
MacBook Pro Rétina 15" 2013

Auteur de Crystal, Emerald et Sapphire (Cydia) smile
N'hésitez pas à me poser des questions : https://twitter.com/iSeven

Hors ligne

#2 11-07-2012 14:19:32

Toshy
Membre

Re : [Tuto] Créer un thème indépendant de WinterBoard

Vraiment interessant comme tutoriel. Continue smile


iPhone 4S 32Go iOS 5.1.1 Jailbreak avec Absinthe
iPod Touch 32Go iOS 5.1.1 Jailbreak avec Absinthe
Macbook Pro 13" fin 2011 sous OS X 10.6

Et aussi:
Netbook sous Fedora
Serveur Dell sous Debian

Hors ligne

#3 11-07-2012 22:08:04

iSeven
Membre

Re : [Tuto] Créer un thème indépendant de WinterBoard

@Neo : Merci pour le lien et évidemment tu peux modifier la forme smile


iPhone 5 - Gris sidéral 32GB - iOS 7.0.4 - Jailbreaké
iPhone 6 - Gris sidéral 64GB - iOS 8.1 - Jailbreaké
MacBook Pro Rétina 15" 2013

Auteur de Crystal, Emerald et Sapphire (Cydia) smile
N'hésitez pas à me poser des questions : https://twitter.com/iSeven

Hors ligne

#4 12-07-2012 12:47:29

iSeven
Membre

Re : [Tuto] Créer un thème indépendant de WinterBoard

NeOtuX a écrit :

Voilà qui est fait, j'espère que cette mise en page ne te dérangera pas !

Tu as bien structuré ton tuto, j'ai essayé de le faire ressortir...

Si ça ne convient pas fais-moi signe ! smile

Au fait, j'épingle ! wink

PS : il faudrait peut-être avertir concernant les risques encourus si ces manipulations sont faites de manières hasardeuses...

C'est niquel merci smile

Ouais je ferai ça quand j'aurai le temps, et si j'en ai un peu plus, je ferai peut être un "vrai" tuto sur les scripts.


iPhone 5 - Gris sidéral 32GB - iOS 7.0.4 - Jailbreaké
iPhone 6 - Gris sidéral 64GB - iOS 8.1 - Jailbreaké
MacBook Pro Rétina 15" 2013

Auteur de Crystal, Emerald et Sapphire (Cydia) smile
N'hésitez pas à me poser des questions : https://twitter.com/iSeven

Hors ligne

#5 02-05-2013 12:51:18

eendofwar
Modo

Re : [Tuto] Créer un thème indépendant de WinterBoard

Salut, on ne peut pas simplement remplacer à l'arrache les images unes par unes ?


Expert microsoudure me contacter par mail ou directement sur mon site

Hors ligne

#6 02-05-2013 13:13:19

iSeven
Membre

Re : [Tuto] Créer un thème indépendant de WinterBoard

eendofwar a écrit :

Salut, on ne peut pas simplement remplacer à l'arrache les images unes par unes ?

Yop,

Oui bien sûr mais si un jour tu veux virer les images pour remettre le thème original ou en mettre un autre, tu vas trouver ça chiant tongue

Là le but c'est d'automatiser tout le processus avec les scripts smile


iPhone 5 - Gris sidéral 32GB - iOS 7.0.4 - Jailbreaké
iPhone 6 - Gris sidéral 64GB - iOS 8.1 - Jailbreaké
MacBook Pro Rétina 15" 2013

Auteur de Crystal, Emerald et Sapphire (Cydia) smile
N'hésitez pas à me poser des questions : https://twitter.com/iSeven

Hors ligne

#7 15-05-2013 15:44:54

SynnyG
Membre

Re : [Tuto] Créer un thème indépendant de WinterBoard

Décidément, je viens de m'inscrire sur ce forum et grâce à toi j'en apprends des choses, moi qui me demandait comment forcer un respring après l'install d'un tweak via Cydia ^^
Encore une fois merci tongue

Hors ligne

Pied de page des forums