Wat is een plist en hoe kan ik deze bewerken? Dat is een veel voorkomende vraag van iPhone-gebruikers. Speciaal voor beginners een introductie in de wereld die plist heet. Waarom plists? Omdat je met een plist de leukste dingen kunt aanpassen op je iPhone!
1. Wat is een plist ?
Een plist-file is een systeembestand en is een standaardonderdeel van de OS X Core en zodoende ook van de iPhone. Plist staat voor ‘Property List‘; dit verwijst naar het feit dat deze files een lijst bevatten met instellingen, ‘Settings‘. Je kunt het vergelijken met de registry van Windows maar in dit geval is er per applicatie een eigen, kleine registry-file.
De plist-files kunnen in XML en binary formaat worden weggeschreven. Standaard schijft Apple de files weg in binary formaat. Wanneer je een .plist kopieert vanaf je iPhone en opent met een text editor zul je zien dat er niets bruikbaars van wordt gemaakt.
2. Een plist converteren naar leesbare tekst
Om het standaard binary-formaat te openen, kan je gebruik maken van XML Spear (Windows) of PList Editor Pro (Mac). Het is ook mogelijk om de binary te converteren naar plain XML zodat de inhoud als leesbare tekst kan worden bekeken en kan worden ge-edit met een text editor zoals Notepad (Windows) of Text Edit (Mac). Hiervoor heb je ‘plutil’ nodig, die je hier kan downloaden. Unzip de file en plaats ‘plutil’ in de folder /bin op je iPhone. Maak hierna een SSH-verbinding met je iPhone en geef de tool ‘execute’ rechten.
Dit doe je door de onderstaande commando’s:
[code language=”bash”]
cd /bin
chmod 0755 plutil
[/code]
Nu dit is gedaan kunnen we aan de slag met de plist. Als voorbeeld nemen we het eerder geposte artikel “Het SMS-trilsignaal van de iPhone aanpassen“. We gaan het trilsignaal bij een inkomend SMS-bericht verlengen naar ongeveer 5 seconden.
Ga naar de folder:
[code language=”bash”]
cd /System/Library/Frameworks/Celestial.framework/
[/code]
In deze folder bevindt zich de file SystemSoundVibrationPatterns.plist waarin de instelling zit die de duur van het trillen bepaalt. Deze plist is standaard in binary formaat, dus gaan we deze converteren naar leesbare tekst in het XML-formaat. Er wordt geen nieuwe file gemaakt, alleen de inhoud wordt geconverteerd. De iPhone kan plist-bestanden zowel in XML- als binary-formaat lezen.
[code language=”bash”]
plutil –c xml1 SystemSoundVibrationPatterns.plist
[/code]
3. De plist bewerken
Kopieer de geconverteerde file naar je desktop met een SFTP-client. Voor Windows kun je WinSCP gebruiken en Fugu voor de Mac-gebruikers. Open de gekopieerde file met een text editor naar keuze en je zult zien dat je nu een plist hebt die leesbaar is.
Ga nu op zoek naar de sectie (in het midden van de file):
[code language=”xml”]
[/code]
Vervang de waarde 0.40000000000000002 bij OnDuration door 4.40000000000000002.
Sla hierna de bestanden op en upload ze terug naar je iPhone in de directory /System/Library/Frameworks/Celestial.framework/
Reset hierna je iPhone en je zult merken dat het toestel aanmerkelijk langer trilt wanneer je een SMS ontvangt.
Er bestaat ook de mogelijkheid om met de plutil-tool direct wijzingen te maken in een plist; dit binnenkort in deel 2.
Taalfout gezien of andere suggestie hoe we dit artikel kunnen verbeteren? Laat het ons weten!
Je kunt het plist bestand ook online omszetten en dan in teksteditor aanpassen!
http://140.124.181.188/~khchung/cgi-bin/plutil.cgi
@scorpiosoft: Oeps overeen gelezen… bedankt!
Mooie uitleg hoe het handmatig te doen maar de link die Maart noemt gebruik ik al enige tijd en werkt goed. Gaat op die maniet een stuk sneller en simpeler.
Inderdaad via de web-converter kan je ook een convert actie doen, echter de plutil kan ook direct bewerkingen uitvoeren op plist’s.. maar daar over binnenkort meer!
Bedankt voor jullie opmerkingen!
Mooi uitgelegd, ironmanixs. Toch mag je niet vergeten dat vele lezers dit nog steeds niet zullen begrijpen, omdat het gewoonweg niet in eenvoudige ‘stapjes’ wordt uitgelegd. (Het is wel in stapjes uitgelegd op zich, maar het zou toch in meer stapjes moeten zijn volgens mij) Natuurlijk voldoet dit wel voor de echtere iPhone-fanaat, maar zoals je in het begin van je artikel vermeldde, is het bedoeld voor beginners…
Het enige dat ik wil zeggen is dat het voor ‘beginners’ toch net iets te moeilijk zal zijn…
Voor de rest super dat je deze dingen eens nader verklaart!
@ouistiti: mee eens. Maar er is nu eenmaal een sterk gemengde populatie hier op het forum. Dus de ene keer zal het voor gevorderen en de andere keer voor minder ingewijden zijn. Je kunt niet iedereen tevreden stellen (meer dan 11.000 leden!) dus zal ironmanixs misschien af en toe de moeilijkheidsgraad gaan varieren, dit zie je ook in de tutorials van iClarified gebeuren. Ik sluit me bij jou aan en complimenteer ironmanixs voor zijn items, ik ben al een fan!
Bedankt, leuk om te horen! En inderdaad het is moeilijk om iedereen tevreden te stellen, ik heb bovenstaande geschreven naar aanleiding van de vele emails die heb gekregen, waarin om deze uitleg werd gevraagd.
Ik denk dat je iets vergeet (heb geen iPhone, maar zit wel redelijk in de scripting-wereld, ik snap het XML-bestand dus):
OffDuration
0.10000000000000001
OnDuration
4.40000000000000002
TotalDuration
0.5
Ik heb het gevoel dat je bij TotalDuration een optelling van de twee eerdere waardes moet maken, zo dus:
OffDuration
0.10000000000000001
OnDuration
4.40000000000000002
TotalDuration
4.5
@Jonathan: Alleen het veranderen van OnDuration volstaat op de iPhone.
Maar wat gebeurt er precies bij een reset? Ik heb nu een werkende iPhone, en ik ben een beetje huiverig voor alles wat klinkt als ‘verander iets heel belangrijks’.
Pevi zei:
“Je kunt het plist bestand ook online omszetten en dan in teksteditor aanpassen!
http://140.124.181.188/~khchung/cgi-bin/plutil.cgi ”
Een aantal keren ging het mis als ik een bestand met de naam info.plist wilde converteren. Ik kreeg dan een melding dat hij geen bestand kon wegschrijven. Het lukte wel als ik het bestand hernoemde naar bijvoorbeeld infor.plist
Let op: met firmware 2.0 staat SystemSoundVibrationPatterns.plist in /System/Library/PrivateFrameworks/Celestial.framework/