http://wiki.webos-internals.org/api.php?action=feedcontributions&user=JackieRipper&feedformat=atomWebOS Internals - User contributions [en]2024-03-29T14:40:25ZUser contributionsMediaWiki 1.35.1http://wiki.webos-internals.org/index.php?title=User:JackieRipper&diff=9833User:JackieRipper2010-05-08T23:42:45Z<p>JackieRipper: New page: Here's what I'm currently working on: Patch_Contact_Groups</p>
<hr />
<div>Here's what I'm currently working on:<br />
<br />
[[Patch_Contact_Groups]]</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Patch_Contact_Groups&diff=9832Patch Contact Groups2010-05-08T23:38:27Z<p>JackieRipper: </p>
<hr />
<div>Work In Progress...<br />
<br />
One glaring omission from WebOS is the Contact Group. This patch plans to address this omission.<br />
<br />
<br />
To do:<br />
<br />
* Create a list of initial groups (Work, Family, Friends, VIP)<br />
* Allow editing the group list from within the Contact app's preferences (new card, perhaps?)<br />
* Add ability to assign a contact to a group from within the Edit Contact card, including creating a new group<br />
* Allow filtering of contacts by group<br />
* Allow assigning of a ringtone to a group, which would override the default ringtone, and be overrided by a contact's ringtone, if assigned<br />
<br />
<br />
Advanced To Do:<br />
<br />
* Allow assigning of a message tone to a group, which would override the default message tone, and be overrided by a contact's message tone, if assigned (incorporate code from the SMS Tone Per Contact patch)<br />
* Allow call rejecting for entire groups (incorporate code from the Call Blocker patch)<br />
* Allow an SMS message to be sent to a group<br />
* Allow an email message to be sent to a group</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Patch_Contact_Groups&diff=9831Patch Contact Groups2010-05-08T23:20:04Z<p>JackieRipper: New page: In Progress...</p>
<hr />
<div>In Progress...</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=WebOS_Doctor_Versions&diff=9110WebOS Doctor Versions2010-02-18T17:32:56Z<p>JackieRipper: /* Pre */</p>
<hr />
<div>== Download links ==<br />
It seems the webOS Doctor jar files provided by Palm keep changing:<br />
<br />
=== Sprint ===<br />
==== Pre ====<br />
* version 1.2.1 http://palm.cdnetworks.net/rom/p121r0d10092009/sr1ntp121rod/webosdoctorp100ewwsprint.jar<br />
* version 1.3.1 http://palm.cdnetworks.net/rom/pre/p131r0d11172009/sr1ntp131rod/webosdoctorp100ewwsprint.jar<br />
* version 1.3.5 http://palm.cdnetworks.net/rom/pre/p135r0d12302009/sr1ntp135rod/webosdoctorp100ewwsprint.jar<br />
* version 1.3.5.1 http://palm.cdnetworks.net/rom/pre/p1351r0d01082010/sr1ntp1351rod/webosdoctorp100ewwsprint.jar<br />
==== Pixi ====<br />
* version 1.3.1 http://palm.cdnetworks.net/rom/pixi/px131r0d11172009/sr1ntp131rod/webosdoctorp200ewwsprint.jar<br />
* version 1.3.2 http://palm.cdnetworks.net/rom/pixi/px132r0d12032009/sr1ntp132rod/webosdoctorp200ewwsprint.jar<br />
* version 1.3.5 http://palm.cdnetworks.net/rom/pixi/px135r0d12302009/sr1ntp135rod/webosdoctorp200ewwsprint.jar<br />
* version 1.3.5.1 http://palm.cdnetworks.net/rom/pixi/px1351r0d01082010/sr1ntp1351rod/webosdoctorp120ewwsprint.jar<br />
''(Palm changed p200eww to p120eww in version 1.3.5.1)''<br />
<br />
=== Bell Mobility ===<br />
==== Pre ====<br />
* version 1.2.1 http://palm.cdnetworks.net/rom/p121r0d10092009/b11ep121rod/webosdoctorp100ewwbellmo.jar<br />
* version 1.3.1 http://palm.cdnetworks.net/rom/pre/p131r0d11172009/b11ep131rod/webosdoctorp100ewwbellmo.jar<br />
* version 1.3.5.1 http://palm.cdnetworks.net/rom/pre/p1351r0d01082010/b11ep1351rod/webosdoctorp100ewwbellmo.jar<br />
<br />
=== O2 Germany, UK and Ireland / Movistar Spain ===<br />
==== Pre ====<br />
* version 1.1.3 http://palm.cdnetworks.net/rom/p113r0d10122009/wr640xdfgy12z/webosdoctorp100eww-wr.jar<br />
* version 1.3.1 http://palm.cdnetworks.net/rom/pre/p131r0d11172009/wrep131rod/webosdoctorp100ueu-wr.jar<br />
* version 1.3.5.2 http://palm.cdnetworks.net/rom/pre/p1352r0d01182010/wrep1352rod/webosdoctorp100ueu-wr.jar<br />
<br />
=== Telcel GSM, Mexico ===<br />
==== Pre ====<br />
* version 1.2.5 http://palm.cdnetworks.net/rom/pre/p125r0d11252009/tce11p125rod/webosdoctorp100ewwtelcel.jar<br />
* version 1.3.5.1 http://palm.cdnetworks.net/rom/pre/p1351r0d01082010/tce11p1351rod/webosdoctorp100ewwtelcel.jar<br />
<br />
=== Verizon Wireless ===<br />
==== Pre Plus ====<br />
* version 1.3.5.1 http://palm.cdnetworks.net/rom/pre/p1351r0d01082010/ver1z0np1351rod/webosdoctorp101ewwverizonwireless.jar<br />
==== Pixi Plus ====<br />
* version 1.3.5.1 http://palm.cdnetworks.net/rom/pixi/px1351r0d01082010/ver1z0np1351rod/webosdoctorp121ewwverizonwireless.jar<br />
<br />
== License ==<br />
<br />
Note that the webOS Doctor package comes with the following license:<br />
<br />
RESTRICTIONS: The Software is licensed for use only with the single Palm device you originally purchased, and you may not distribute or make the Software available over a network or for use with multiple devices. The Software and supporting documentation may be copied only as necessary for backup or archive purposes in support of your use of the Software.<br />
<br />
So we can't host different versions of it anywhere - the best we can do is record the md5sums of the versions we know about so that individuals can match this to the files they have for use with their Palm device.<br />
<br />
== MD5 sums ==<br />
<br />
Here is a list of the versions that we know about (with md5sums for each, and the date of release or when they were first spotted and recorded here):<br />
<br />
=== Sprint ===<br />
<br />
==== Pre ====<br />
<br />
4b3e396f8b1f1c5d3388e3c298af0484 webosdoctorp100ewwsprint-1.0.2.jar (10 June 2009)<br />
0c8027b5a707eb0d02b1997d48021bd5 webosdoctorp100ewwsprint-1.0.3.jar (24 June 2009) (changes in [[WebOS_Doctor_version_1.0.3]])<br />
32852c4b57d938e85f0fc819e57eacb7 webosdoctorp100ewwsprint-1.0.4.jar (9 July 2009) (changes in [[WebOS_Doctor_version_1.0.4]])<br />
fc602490fdd7b3be8c5f727349c6195f webosdoctorp100ewwsprint-1.1.0.jar (24 July 2009) (changes in [[WebOS_Doctor_version_1.1.0]])<br />
3123efda0a40821bd03daf1dd11cf2e3 webosdoctorp100ewwsprint-1.2.0-0830.jar (4 Sep 2009 - accidentally released early) (changes in [[WebOS_Doctor_version_1.2.0-0830]])<br />
93c3f106b7a7e5ef572465dcb4488e1c webosdoctorp100ewwsprint-1.2.0.jar (29 September 2009)<br />
e7600251e12e5b96f3143138ba61b9eb [http://palm.cdnetworks.net/rom/p121r0d10092009/sr1ntp121rod/webosdoctorp100ewwsprint.jar webosdoctorp100ewwsprint-1.2.1.jar] (9 October 2009)<br />
8261682a25ac21bb2f3107ec5c50dc84 [http://palm.cdnetworks.net/rom/pre/p131r0d11172009/sr1ntp131rod/webosdoctorp100ewwsprint.jar webosdoctorp100ewwsprint_1.3.1.jar] (17 November 2009)<br />
4daef882c96461dc1c60cc907c4dfbf0 [http://palm.cdnetworks.net/rom/pre/p135r0d12302009/sr1ntp135rod/webosdoctorp100ewwsprint.jar webosdoctorp100ewwsprint_1.3.5.jar] (30 December 2009)<br />
14e3c4168030498b42370115b33ee278 [http://palm.cdnetworks.net/rom/pre/p1351r0d01082010/sr1ntp1351rod/webosdoctorp100ewwsprint.jar webosdoctorp100ewwsprint_1.3.5.1.jar] (3 January 2010)<br />
<br />
==== Pixi ====<br />
<br />
1957476e6d9d221413285c6d5ab697d6 webosdoctorp200ewwsprint-1.2.9.1.jar (18 November 2009)<br />
063c2f66682dd246fa3bf518adae0f53 [http://palm.cdnetworks.net/rom/pixi/px131r0d11172009/sr1ntp131rod/webosdoctorp200ewwsprint.jar webosdoctorp200ewwsprint-1.3.1.jar] (17 November 2009)<br />
eb33e68b07ccad81847d96f546303880 [http://palm.cdnetworks.net/rom/pixi/px132r0d12032009/sr1ntp132rod/webosdoctorp200ewwsprint.jar webosdoctorp200ewwsprint-1.3.2.jar] (3 December 2009)<br />
<br />
=== Bell Mobility ===<br />
<br />
ffd1bc50066d8f54d134b7aac194e3ec webosdoctorp100ewwbellmo-1.1.0.jar (27 August 2009)<br />
c8f80b3cdbb9b96fd73bbb6062950a83 webosdoctorp100ewwbellmo-1.2.0.jar (29 September 2009)<br />
52f4a4cd9b182004a7060cfaa5be2c6f [http://palm.cdnetworks.net/rom/p121r0d10092009/b11ep121rod/webosdoctorp100ewwbellmo.jar webosdoctorp100ewwbellmo-1.2.1.jar] (9 October 2009)<br />
c4202a32ca49a1c843f30b77515cac46 [http://palm.cdnetworks.net/rom/pre/p131r0d11172009/b11ep131rod/webosdoctorp100ewwbellmo.jar webosdoctorp100ewwbellmo-1.3.1.jar] (17 November 2009)<br />
<br />
=== O2 Germany, UK and Ireland / Movistar Spain ===<br />
WR = World ready 1.0<br />
<br />
bc29e1144823afc05a50dcdc2c84475d [http://palm.cdnetworks.net/rom/p113r0d10122009/wr640xdfgy12z/webosdoctorp100eww-wr.jar webosdoctorp100eww-wr-1.1.3.jar] (12 October 2009)<br />
9bb8e7547996b5b62ce8742198a9d8bb [http://palm.cdnetworks.net/rom/pre/p131r0d11172009/wrep131rod/webosdoctorp100ueu-wr.jar webosdoctorp100ueu-wr-1.3.1.jar] (17 November 2009)<br />
a3c7ae6d93409dea9f0461636f5c79c0 [http://palm.cdnetworks.net/rom/pre/p1352r0d01182010/wrep1352rod/webosdoctorp100ueu-wr.jar webosdoctorp100ueu-wr-1.3.5.2.jar] (19 January 2010)<br />
<br />
=== Telcel GSM, Mexico ===<br />
<br />
477f6c3d2ff1673aa9a9d1670aa5e88f [http://palm.cdnetworks.net/rom/pre/p125r0d11252009/tce11p125rod/webosdoctorp100ewwtelcel.jar webosdoctorp100ewwtelcel-1.2.5.jar] (25 November 2009)<br />
<br />
== Notes ==<br />
<br />
1.0.3 is the last version to contain PmModemFactory</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Application_talk:Terminal&diff=6062Application talk:Terminal2009-10-01T05:12:58Z<p>JackieRipper: </p>
<hr />
<div>== Bugs: Paste? ==<br />
- Can't seem to figure out how to paste something that was copied from another app/msg/web site. The old paste shortcut of "Gesture + V" doesn't work (because its being used for other things). I tried to "Insert" shortcut, but it didn't do anything.<br />
--[[User:Zinge|Zinge]] 08:58, 7 August 2009 (UTC)<br />
<br />
- Tossing in another request to get a solution in for pasting: as it stands there is no way to get some symbols (specifically curly braces) into the terminal - tough to do a rescan :) -- [[User:Flare576|Flare576]] 17:51, 20 August 2009 (UTC)<br />
<br />
- I triple the motion. Can we distinguish gesture HOLD from gesture tap? We could then leave gesture HOLD V as paste and use tap and double-tap as activating the special cursor movement etc. currently in place (AWESOME JOB on this app by the way). I also second the motion for needing '{'. This is crippling. Couldn't we just leave access to the normal symbol input by hitting some unused key combo (gesture sym?) then we'd be able to get any symbol we need with a little effort.<br />
[[User:MerlinMM|MerlinMM]]<br />
<br />
== Ansi bugs ==<br />
Scrolling in BX is fixed. Thanks! terminal is a killer app.<br />
<br />
Still have a bug when typing a message in IRC that's long enough to require horizontal scrolling. Instead of scrolling it does weird single-char newlines and status bar is lost.<br />
<br />
Also when using arrow keys to move around in vim (with TERM=linux and syntax/color on), what seems to be ansi color code artifacts are printed. Arrows do work, but it's unusable due to artifacts. --[[User:T3rmin|T3rmin]] 18:05, 14 August 2009 (UTC)<br />
<br />
== New Version Changelog? ==<br />
<br />
The newest version from the feed seems to be 0.1.6. Anybody know what changes have been made? --[[User:Zinge|Zinge]] 19:30, 1 August 2009 (UTC)<br />
<br />
== Font Size Feature Request ==<br />
Well done! I notice that there are two fonts, normal and small. Would it be possible to add an intermediate font size? The 40 col is to large for seeing much and the 80 col is far to small. Would it be possible to have a ~60col font? --[[user:Dreadchicken|Dreadchicken]]<br />
<br />
: Also, could you add a "large" font size? I don't like the small sizes for little one-line commands (wget, etc). I guess ultimately it'd be nice to have in that combo box a handful of sizes. Thank you so much for the mind-blowing awesomeness of this app, by the way. [[User:Michaelb|Michaelb]] 18:46, 17 August 2009 (UTC)<br />
<br />
: Yes, please, an "extremely large" font for those of us whose eyesight is going. Maybe twice the size of the 6x10. --[[User:Lordbah|Lordbah]] 03:51, 2 September 2009 (UTC)<br />
<br />
== Broadcast messages when phone sleeps/wakes ==<br />
<br />
Has anyone figured out how to stop the broadcast messages generated on the Terminal when the phone sleeps and wakes? They clobber whatever's on the screen if you happen to turn off the phone while Terminal is open.<br />
<br />
Other than this, great app. I'm eternally grateful. :) --[[User:zorinlynx|zorinlynx]]<br />
<br />
I'm not sure if this will help, but there is a quilt patch in the gitorious modification for disabling some messages to the log. http://gitorious.org/webos-internals/modifications/blobs/master/luna/quiet-powerd-messages.patch --[[User:Plee3|plee3]] 21:05, 3 August 2009 (UTC)<br />
<br />
Thank you! This has resolved the issue. --[[User:Zorinlynx|Zorinlynx]] 21:24, 3 August 2009 (UTC)<br />
<br />
== Brackets ==<br />
Any way to enter < or > chars? Kinda tough to dump output to a file without.<br />
--[[User:Daemon|Daemon]]<br />
<br />
These characters have not been implemented yet, but as a work-around, you can use tee or tee -a.<br />
--[[User:JackieRipper|JackieRipper]]<br />
<br />
==Colors Sticking, and Permissions==<br />
Would it be possible to set the foreground color permanently, so that I don't havve to set it each time I log in?<br />
<br />
I've also noticed that when I open the application, sometimes it automatically logs me in as root. How can I disable this?<br />
<br />
Thanks for your awesome work!! -[[User:Hopspitfire|hopspitfire]] 05:47, 16 August 2009 (UTC)<br />
<br />
I think one solution for disabling root access is to go into <br />
/var/usr/palm/applications/org.webosinternals.terminal/app/controllers<br />
and edit '''session-assistant.js'''<br />
Search for the line that reads<br />
this.termplugin.start("root");<br />
and change 'root' to your username.<br />
[[User:Clebio|Clebio]] 20:57, 16 August 2009 (UTC)<br />
<br />
:That worked perfectly! Thank you.<br />
:I'm still having trouble with the colors sticking, now when I change a color in the preferences menu and go back to the terminal, the entire screen freezes (It responds to <orange><sym><r>, but won't show the boot logo as it's shutting down, and ssh responds normally). Is this a bug? -[[User:Hopspitfire|hopspitfire]] 04:13, 17 August 2009 (UTC)<br />
:: I get this too when I try to change preferences. [[User:Michaelb|Michaelb]] 18:51, 17 August 2009 (UTC)<br />
: The problem has been fixed after the new update (0.1.9), THANKS! -[[User:Hopspitfire|hopspitfire]] 21:00, 19 August 2009 (UTC)<br />
<br />
Terminal displays blank screen after install<br />
----<br />
<br />
It will display nothing that I type, I have tried rebooting the phone with no luck. I did see an message that looked like an error during the install:<br />
<br />
Configuring org.webosinternals.termplugin <br />
(offline root mode: not running org.webosinternals.termplugin.postinst)<br />
<br />
Could the offline root mode error above be causing this? I was not in Dev mode when I installed this, should I have been?<br />
<br />
==Curved mask blocks text on screen corners==<br />
<br />
There used to be padding on the top and bottom of the screen to keep the curved corners of the mojo view from blocking text. Why were they removed? --[[User:Zorinlynx|Zorinlynx]] 02:12, 20 August 2009 (UTC)<br />
<br />
Can we get an easier way of tabbing? Say sym+period?<br />
<br />
== On Screen Keyboard? ==<br />
<br />
Any plans to integrate or implement something similar to the recently released OSK to the Terminal app? I think it would be very handy for landscape mode. --[[User:Roto|Roto]] 01:27, 29 August 2009 (UTC)<br />
<br />
== Limited User? ==<br />
<br />
Once there is a limited user account created, it would be nice if the Terminal could be set to use that account instead of root by default, as well as start in the directory /var/home/$USER<br />
<br />
== Feature Request ==<br />
It would be awesome of the following characters could be implemented:<br />
`<br />
^<br />
{<br />
}<br />
[<br />
]<br />
\<br />
~<br />
--[[User:JackieRipper|JackieRipper]]</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Application_talk:Terminal&diff=6060Application talk:Terminal2009-10-01T04:52:07Z<p>JackieRipper: </p>
<hr />
<div>== Bugs: Paste? ==<br />
- Can't seem to figure out how to paste something that was copied from another app/msg/web site. The old paste shortcut of "Gesture + V" doesn't work (because its being used for other things). I tried to "Insert" shortcut, but it didn't do anything.<br />
--[[User:Zinge|Zinge]] 08:58, 7 August 2009 (UTC)<br />
<br />
- Tossing in another request to get a solution in for pasting: as it stands there is no way to get some symbols (specifically curly braces) into the terminal - tough to do a rescan :) -- [[User:Flare576|Flare576]] 17:51, 20 August 2009 (UTC)<br />
<br />
- I triple the motion. Can we distinguish gesture HOLD from gesture tap? We could then leave gesture HOLD V as paste and use tap and double-tap as activating the special cursor movement etc. currently in place (AWESOME JOB on this app by the way). I also second the motion for needing '{'. This is crippling. Couldn't we just leave access to the normal symbol input by hitting some unused key combo (gesture sym?) then we'd be able to get any symbol we need with a little effort.<br />
[[User:MerlinMM|MerlinMM]]<br />
<br />
== Ansi bugs ==<br />
Scrolling in BX is fixed. Thanks! terminal is a killer app.<br />
<br />
Still have a bug when typing a message in IRC that's long enough to require horizontal scrolling. Instead of scrolling it does weird single-char newlines and status bar is lost.<br />
<br />
Also when using arrow keys to move around in vim (with TERM=linux and syntax/color on), what seems to be ansi color code artifacts are printed. Arrows do work, but it's unusable due to artifacts. --[[User:T3rmin|T3rmin]] 18:05, 14 August 2009 (UTC)<br />
<br />
== New Version Changelog? ==<br />
<br />
The newest version from the feed seems to be 0.1.6. Anybody know what changes have been made? --[[User:Zinge|Zinge]] 19:30, 1 August 2009 (UTC)<br />
<br />
== Font Size Feature Request ==<br />
Well done! I notice that there are two fonts, normal and small. Would it be possible to add an intermediate font size? The 40 col is to large for seeing much and the 80 col is far to small. Would it be possible to have a ~60col font? --[[user:Dreadchicken|Dreadchicken]]<br />
<br />
: Also, could you add a "large" font size? I don't like the small sizes for little one-line commands (wget, etc). I guess ultimately it'd be nice to have in that combo box a handful of sizes. Thank you so much for the mind-blowing awesomeness of this app, by the way. [[User:Michaelb|Michaelb]] 18:46, 17 August 2009 (UTC)<br />
<br />
: Yes, please, an "extremely large" font for those of us whose eyesight is going. Maybe twice the size of the 6x10. --[[User:Lordbah|Lordbah]] 03:51, 2 September 2009 (UTC)<br />
<br />
== Broadcast messages when phone sleeps/wakes ==<br />
<br />
Has anyone figured out how to stop the broadcast messages generated on the Terminal when the phone sleeps and wakes? They clobber whatever's on the screen if you happen to turn off the phone while Terminal is open.<br />
<br />
Other than this, great app. I'm eternally grateful. :) --[[User:zorinlynx|zorinlynx]]<br />
<br />
I'm not sure if this will help, but there is a quilt patch in the gitorious modification for disabling some messages to the log. http://gitorious.org/webos-internals/modifications/blobs/master/luna/quiet-powerd-messages.patch --[[User:Plee3|plee3]] 21:05, 3 August 2009 (UTC)<br />
<br />
Thank you! This has resolved the issue. --[[User:Zorinlynx|Zorinlynx]] 21:24, 3 August 2009 (UTC)<br />
<br />
== Brackets ==<br />
Any way to enter < or > chars? Kinda tough to dump output to a file without.<br />
--[[User:Daemon|Daemon]]<br />
<br />
These characters have not been implemented yet, but as a work-around, you can use tee or tee -a.<br />
--[[User:JackieRipper|JackieRipper]]<br />
<br />
==Colors Sticking, and Permissions==<br />
Would it be possible to set the foreground color permanently, so that I don't havve to set it each time I log in?<br />
<br />
I've also noticed that when I open the application, sometimes it automatically logs me in as root. How can I disable this?<br />
<br />
Thanks for your awesome work!! -[[User:Hopspitfire|hopspitfire]] 05:47, 16 August 2009 (UTC)<br />
<br />
I think one solution for disabling root access is to go into <br />
/var/usr/palm/applications/org.webosinternals.terminal/app/controllers<br />
and edit '''session-assistant.js'''<br />
Search for the line that reads<br />
this.termplugin.start("root");<br />
and change 'root' to your username.<br />
[[User:Clebio|Clebio]] 20:57, 16 August 2009 (UTC)<br />
<br />
:That worked perfectly! Thank you.<br />
:I'm still having trouble with the colors sticking, now when I change a color in the preferences menu and go back to the terminal, the entire screen freezes (It responds to <orange><sym><r>, but won't show the boot logo as it's shutting down, and ssh responds normally). Is this a bug? -[[User:Hopspitfire|hopspitfire]] 04:13, 17 August 2009 (UTC)<br />
:: I get this too when I try to change preferences. [[User:Michaelb|Michaelb]] 18:51, 17 August 2009 (UTC)<br />
: The problem has been fixed after the new update (0.1.9), THANKS! -[[User:Hopspitfire|hopspitfire]] 21:00, 19 August 2009 (UTC)<br />
<br />
Terminal displays blank screen after install<br />
----<br />
<br />
It will display nothing that I type, I have tried rebooting the phone with no luck. I did see an message that looked like an error during the install:<br />
<br />
Configuring org.webosinternals.termplugin <br />
(offline root mode: not running org.webosinternals.termplugin.postinst)<br />
<br />
Could the offline root mode error above be causing this? I was not in Dev mode when I installed this, should I have been?<br />
<br />
==Curved mask blocks text on screen corners==<br />
<br />
There used to be padding on the top and bottom of the screen to keep the curved corners of the mojo view from blocking text. Why were they removed? --[[User:Zorinlynx|Zorinlynx]] 02:12, 20 August 2009 (UTC)<br />
<br />
Can we get an easier way of tabbing? Say sym+period?<br />
<br />
== On Screen Keyboard? ==<br />
<br />
Any plans to integrate or implement something similar to the recently released OSK to the Terminal app? I think it would be very handy for landscape mode. --[[User:Roto|Roto]] 01:27, 29 August 2009 (UTC)<br />
<br />
== Limited User? ==<br />
<br />
Once there is a limited user account created, it would be nice if the Terminal could be set to use that account instead of root by default, as well as start in the directory /var/home/$USER<br />
<br />
== Feature Request ==<br />
It would be awesome of the following characters could be implemented:<br />
`<br />
^<br />
{<br />
}<br />
[<br />
]<br />
\<br />
~</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Portal:Patches_to_webOS&diff=5949Portal:Patches to webOS2009-09-29T03:53:50Z<p>JackieRipper: Verified hidden clock theme patch is 1.2 ok.</p>
<hr />
<div>__notoc__<br />
{{portal-header<br />
|This page lists patches to webOS existing apps which modify the behavior as shipped. '''Note''' that these patches may be version specific and may be broken by future webOS updates. Proceed with caution. If you get one that works please move it under the correct column, alphabetically, and title the page:<br />
'''"Patch [application] [description]"''' (for application specific patches) <br><br />
'''"Patch webOS [description]"''' (for patches not part of a specific application)<br><br />
<br />
Each page should contain at least the basic headings<br />
*1. '''Introduction''': A brief description to introduce people to the patch.<br />
**1.1 '''Usage''':An explanation if it is needed on how to use the modification see Add/Delete Pages in the Launcher as an example.<br />
*2. '''Editing Process''': Step by step instructions to manually edit. <br />
*3. '''Patching Process''': Details for making the edits with a patch file and pointing people to the [[Applying Patches]] page if the patch is also provided in the webos-internals gitorious repository.<br />
}}<br />
<br />
{{portal-three-columns<br />
|column1= <br />
===webOS Update Information===<br />
* [[Update 1.2.0|Update 1.2]]<br />
* [[Update 1.1.0|Update 1.1]]<br />
* [[Update 1.0.4|Update 1.0.4]] <br />
* [[Update 1.0.3|Update 1.0.3]]<br />
<br />
===Patches that Need Work===<br />
* [[Bugs]]<br />
<br />
|column2=<br />
===Patch Ideas to be Created or in Progress===<br />
<br />
* [[More_Calculator_Functions|Accessing additional built-in calculator functions]]<br />
* [[Add_Ability_To_Choose_Snooze_Length|Add Ability to Choose Snooze Length]]<br />
* [[Add_Icon_To_Quick_Launcher|Add an icon to the quick launcher]]<br />
* [[Changing Clipboard Data From The Shell|Changing Clipboard Data from the Shell]]<br />
* [[Development_%26_Tweak_Ideas | Development & Tweaking Ideas]]<br />
* [[Longer Vibrate|Longer Vibrate]]<br />
<br />
<br />
<br />
|column3=<br />
===Notes===<br />
These modifications lack a patch process, please add one to the details to the page and have it added to the webOS-internals gitorious repository. Info for the repository is on [[Applying Patches]].<br />
<br />
*Empty<br />
}}<br />
{{portal-three-columns<br />
|column1= <br />
==Patches to webOS apps==<br />
===webOS 1.2 OK===<br />
* [[Patch Launcher To Allow More Icons Per Row|Launcher: Allows More Icons Per Row]]<br />
* [[Patch Messaging New Cards For Each Conversation|Messaging: New Cards For Each Conversation]]<br />
* [[Patch Clock Enabling the Hidden Theme|Clock: Enabling the Hidden Theme]]<br />
<br />
===webOS 1.1 OK===<br />
<br />
++ Indicates needs to be added to the git repository. Please help add them and remove the notation when added.<br />
<br />
* [[Patch Amazon Download Music over EVDO|Amazon: Download Music over EVDO]]<br />
* ++[[Patch Browser Global Search Addons|Browser: Global Search Addons]]<br />
* [[Patch Browser Delete Individual History Items|Browser: Delete Individual History Items]]<br />
* [[Patch Browser Downloading Files|Browser: Downloading Files]] <br />
* [[Patch Calendar Show All-Day Events in Month View|Calendar: Show All-Day Events in Month View]] <br />
* ++[[Patch Camera 10 Second Countdown Timer|Camera: 10 Second Countdown Timer]]<br />
* [[Patch Camera Shutter Sound On-Off Button|Camera: Shutter Sound On-Off Button]]<br />
* [[Patch Camera Using Volume Buttons to Take a Picture|Camera: Using Volume Buttons to Take a Picture]]<br />
* ++[[Patch Clock Changing Alarm Button Order and Snooze Duration|Clock: Changing Alarm Button Order and Snooze Duration]]<br />
* ++[[Patch Email Change "Running Late" Message|Email: Change "Running Late" Message]]<br />
* [[Patch Email Confirm Deletion|Email: Confirm Deletion]]<br />
* [[Patch Email Change Default Font for Replies-Forwards from Navy to Black|Email: Change Default Font for Replies/Forwards from Navy to Black]]<br />
* [[Patch Email DeleteAll|Email: Delete All]]<br />
* [[Patch Launcher Add or Delete Pages|Launcher: Add/Delete Pages]]<br />
* [[Patch Launcher To Allow More Icons Per Row|Launcher: Allows More Icons Per Row]]<br />
* ++[[Patch Launcher Hide-Delete The NASCAR App|Launcher: Hide/Delete The NASCAR App]]<br />
* ++[[Patch Launcher Hide Media Sync Option|Launcher: Hide Media Sync Option]]<br />
* [[Patch Launcher Reset Scroll on Page Change|Launcher: Reset Scroll on Page Change]]<br />
* [[Patch Launcher Unhide the DeveloperMode App|Launcher: Unhide the DeveloperMode App]]<br />
* [[Patch Messaging Adding Timestamps to All Received Messages|Messaging: Adding Timestamps to All Received Messages]]<br />
* [[Patch Messaging Change "Enter Key" To Create Newline|Messaging: Change "Enter Key" To Create Newline]]<br />
* [[Patch Messaging Character Counter|Messaging: Character Counter]]<br />
* ++[[Patch Messaging Display Full Status Messages|Messaging: Display Full Status Messages]] <br />
* ++[[Patch Messaging Force Offline Send Without Dialog|Messaging: Force Offline Send Without Dialog]]<br />
* [[Patch Messaging Forward Messages|Messaging: Forward Messages]]<br />
* [[Patch Messaging Jump Forward, Backward One Word at a Time|Messaging: Jump Forward, Backward One Word at a Time]]<br />
* [[Patch Messaging Landscape Orientation|Messaging: Landscape Orientation]]<br />
* [[Patch Messaging Sounds|Messaging: Message Sound]]<br />
* ++[[Patch Messaging New Cards For Each Conversation|Messaging: New Cards For Each Conversation]]<br />
* ++[[Patch MCraig Enabling Personals Category|mCraig: Enabling Personals Category]]<br />
* [[Patch MediaPlayer Bookmarking|Music Player: Bookmarking]]<br />
* ++[[Patch MediaPlayer Ignore 'A', 'An', and 'The' In Artist and Album names|Music Player: Ignore 'A', 'An', and 'The' in Artist and Album Names]]<br />
* ++[[Patch PDF Viewer Change Orientation|PDF Viewer: Change Orientation]]<br />
* [[Patch Phone Disable Various Call Sounds|Phone: Disable Various Call Sounds]]<br />
* ++[[Patch Phone Edit Dialer Theme|Phone: Edit Dialer Theme]]<br />
* ++[[Patch Phone Editing the Lock Screen|Phone: Editing the Lock Screen]]<br />
* ++[[Patch Phone Show Call Duration in the Call Log|Phone: Show Call Duration in the Call Log]]<br />
* [[Patch Tasks Always Show Details of New Tasks|Tasks: Always Show Details of New Tasks]]<br />
* ++[[Patch WebOS Bypassing Lock Screen|Unlock: Bypass the Passcode Entry Screen]]<br />
<br />
===Fixed in 1.1 - No longer needed===<br />
* [[Patch Email Fix Broken Formatting|Email: Fix Broken Formatting for E-mails]]<br />
<br />
===Not 1.1 compatible===<br />
* [[Patch Camera Remote View|Camera: Remote View]]<br />
* [[Patch Email Enable Landscape Viewing|Email: Enable Landscape Viewing]] <br />
* [[Patch Email Fix Attachments|Email: Fix Attachments]]<br />
* [[Patch Sudoku Disable Zooming|Sudoku: Disable Zooming]]<br />
<br />
<br />
|column2=<br />
==Patches not part of a specific app==<br />
===webOS 1.2 OK===<br />
===webOS 1.1 OK===<br />
<br />
++ Indicates needs to be added to the git repository. Please help add them and remove the notation when added.<br />
<br />
* ++[[Patch webOS Boot Themes|Boot Themes]]<br />
* ++[[Patch webOS Brightness|Brightness]]<br />
* ++[[Patch webOS Bypassing Activation|Bypassing Activation]]<br />
* ++[[Patch webOS Change Carrier String|Change Carrier String]]<br />
* ++[[Change_the_default_notification.wav_Sound|Change the Default notification.wav Sound]]<br />
* [[Patch webOS Changing the "Turn off after X" time|Changing the "Turn off after X" Time]]<br />
* ++[[Patch webOS CPU Frequency or Voltage Scaling|CPU Frequency or Voltage Scaling]]<br />
* [[Patch webOS Disable Charging Event Sounds|Disable Charging Event Sounds]]<br />
* ++[[Patch webOS GPS Tracking|GPS Tracking]]<br />
* ++[[Patch webOS Graphics|Graphics]]<br />
* ++[[Patch webOS Hourly Chime|Hourly Chime]] <br />
* [[Patch webOS Turning Off Dialpad Noise|Turning Off Dialpad Noise]]<br />
* ++[[Patch webOS Keep Phone Awake While in Remote Session|Keep Phone Awake While in Remote Session]]<br />
* [[Patch webOS Logging Information from Within Scripts|Logging Information from Within Scripts]]<br />
* [[Patch webOS Modifying a Stock App While Keeping the Original|Modifying a Stock App While Keeping the Original]] <br />
* [[Patch webOS Add Words to AutoCorrect Dictionary|Modify AutoCorrect Dictionary]]<br />
* [[On Screen Keyboard]]<br />
* [[Patch webOS Radio Power Switch|Radio Power Switch]]<br />
* ++[[Patch webOS Random Wallpaper Switching|Random Wallpaper Switching]]<br />
* [[Patch webOS Reverse Tunnel|Reverse Tunnel]] <br />
* [[Patch webOS Roam Control|Roam Control]]<br />
* [[Patch webOS Show Actual Battery Percentage | Show Actual Battery Percentage]]<br />
* [[Screenlock On When Connected|Stay On While Connected]]<br />
* [[Make USB Partition Writable via SFTP|Make USB Partition writable via SFTP]]<br />
<br />
===Fixed in 1.1 - No longer needed===<br />
* Empty<br />
<br />
===Not 1.1 compatible===<br />
* [[Patch webOS Email App Patch to Prompt for IPK Installation|Email App Patch to Prompt for IPK Installation]] <br />
<br />
|column3=<br />
==== The following have not been checked for compatibility with webOS 1.1. ====<br />
<br />
* [[Browser_Plugins|Browser Plugins]]<br />
* [[Camera Mod Alternate Sound Disable]]<br />
* [[Changes_Alert/Notification_Sounds|Changes Alert/Notification Sounds]]<br />
* [[Myavatar In Messaging App|Myavatar In Messaging App]] <br />
* [[Photos Slideshow|Photos Slideshow]] <br />
<br />
==== The following are deprecated. They have been replaced with methods which are easier or are moot in 1.1 ====<br />
<br />
* [[Installing Homebrew Apps With A Rooted Pre|Installing Homebrew Apps With A Linux Accessed Pre]] <br />
* [[Packaging Homebrew Apps for Stock Pre without Rooting|Packaging Homebrew Apps for Stock Pre without Accessing Linux]] <br />
* [[Modifying Stock Applications|Modifying Stock Applications]] <br />
<br />
}}</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Talk:Pager_Nagger&diff=5172Talk:Pager Nagger2009-09-03T01:26:57Z<p>JackieRipper: Questioning the giant warning on this page</p>
<hr />
<div>The big warning on this page seems a bit unfounded, especially the claims that sqlite is designed for one process at a time and that reads (SELECT) create locks.<br />
<br />
[http://www.sqlite.org/faq.html#q5 sqlite FAQ]<br />
<br />
'''Can multiple applications or multiple instances of the same application access a single database file at the same time?'''<br />
<br />
Multiple processes can have the same database open at the same time. Multiple processes can be doing a SELECT at the same time. But only one process can be making changes to the database at any moment in time, however. [[User:JackieRipper|JackieRipper]] 01:26, 3 September 2009 (UTC)JackieRipper</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Talk:Crond&diff=4763Talk:Crond2009-08-24T17:32:19Z<p>JackieRipper: </p>
<hr />
<div>Is /opt/bin/crontab -e the original cron file that we should not be editing? If so does the package install of of cron need to be updated?<br />
<br />
== ==<br />
<br />
Keep these things in mind when running the cron daemon that ships with the Pre.<br />
<br />
<br />
<br />
* The daemon reads files in /etc/cron/crontabs/<br />
* crontab -e edits files in /var/spool/cron/crontabs/<br />
* When crontab -e does an edit, it makes a temporary copy of the file, which is what the user actually edits, verifies the changes, and then replaces the existing file.<br />
* Changes should be made using a regular editor to /etc/cron/crontabs/*</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Talk:Crond&diff=4762Talk:Crond2009-08-24T17:30:50Z<p>JackieRipper: </p>
<hr />
<div>Is /opt/bin/crontab -e the original cron file that we should not be editing? If so does the package install of of cron need to be updated?<br />
<br />
== ==<br />
<br />
Keep these things in mind when running the cron daemon that ships with the Pre.<br />
<br />
1. The daemon reads files in /etc/cron/crontabs/<br />
2. crontab -e edits files in /var/spool/cron/crontabs/<br />
3. When crontab -e does an edit, it makes a temporary copy of the file, which is what the user actually edits, verifies the changes, and then replaces the existing file.<br />
4. Changes should be made using a regular editor to /etc/cron/crontabs/*</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Talk:Crond&diff=4761Talk:Crond2009-08-24T17:29:43Z<p>JackieRipper: </p>
<hr />
<div>Is /opt/bin/crontab -e the original cron file that we should not be editing? If so does the package install of of cron need to be updated?<br />
<br />
Keep these things in mind when running the cron daemon that ships with the Pre.<br />
<br />
1. The daemon reads files in /etc/cron/crontabs/<br />
2. crontab -e edits files in /var/spool/cron/crontabs/<br />
3. When crontab -e does an edit, it makes a temporary copy of the file, which is what the user actually edits, verifies the changes, and then replaces the existing file.<br />
4. Changes should be made using a regular editor to /etc/cron/crontabs/*</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Pager_Nagger&diff=4531Pager Nagger2009-08-19T04:00:12Z<p>JackieRipper: </p>
<hr />
<div>I use my phone as a pager when I'm on-call at work. The Pre's notification tone is ''way'' too short and quiet to wake me up. Here's a script that will nag you by playing a .wav file every minute while you have unread messages. The latest version also vibrates and blinks the LEDs.<br />
<br />
== Prerequisites==<br />
<br />
* [[Portal:Accessing_Linux | Root access]]<br />
* [[Crond | Crond enabled]]<br />
<br />
== Script code==<br />
<br />
<pre><nowiki><br />
#!/bin/sh<br />
<br />
SOUND=/media/internal/ringtones/pager.wav<br />
LIGHT=1<br />
BUZZ=1<br />
<br />
check() {<br />
cmd='SELECT summary FROM com_palm_messaging_data_ChatThread WHERE unreadCount > 0 AND type = "SMS" AND summary != "";'<br />
output=$(echo $cmd|sqlite3 /var/luna/data/dbdata/PalmDatabase.db3 2> /dev/null) || return 0<br />
if [ -n "$output" ] ; then<br />
return 1<br />
fi<br />
}<br />
<br />
play() {<br />
x=0<br />
until [ "$x" = 4 ] ; do<br />
aplay -q "$SOUND" &<br />
y=1<br />
if [ "$BUZZ" = 1 ] ; then<br />
/usr/bin/luna-send -n 1 palm://com.palm.vibrate/vibrate {\"period\":1,\"duration\":1000\} > /dev/null 2>&1<br />
z=10<br />
else<br />
z=12<br />
fi<br />
if [ "$LIGHT" = 1 ] ; then<br />
until [ "$y" = "$z" ] ; do<br />
sleep 1<br />
echo 00 >/sys/class/leds/core_navi_left/brightness<br />
echo 100 >/sys/class/leds/core_navi_center/brightness<br />
echo 00 >/sys/class/leds/core_navi_right/brightness<br />
sleep 1<br />
echo 80 >/sys/class/leds/core_navi_left/brightness<br />
echo 00 >/sys/class/leds/core_navi_center/brightness<br />
echo 80 >/sys/class/leds/core_navi_right/brightness<br />
sleep 1<br />
echo 00 >/sys/class/leds/core_navi_left/brightness<br />
echo 60 >/sys/class/leds/core_navi_center/brightness<br />
echo 00 >/sys/class/leds/core_navi_right/brightness<br />
sleep 1<br />
echo 40 >/sys/class/leds/core_navi_left/brightness<br />
echo 00 >/sys/class/leds/core_navi_center/brightness<br />
echo 40 >/sys/class/leds/core_navi_right/brightness<br />
sleep 1<br />
echo 00 >/sys/class/leds/core_navi_left/brightness<br />
echo 00 >/sys/class/leds/core_navi_center/brightness<br />
echo 00 >/sys/class/leds/core_navi_right/brightness<br />
check<br />
if [ "$?" = 1 ] ; then<br />
y=$((y+1))<br />
else<br />
exit 0<br />
fi<br />
done<br />
x=$((x + 1))<br />
else<br />
sleep 60<br />
check<br />
if [ "$?" = 1 ] ; then<br />
x=$((x + 1))<br />
else<br />
exit 0<br />
fi<br />
fi<br />
<br />
done<br />
}<br />
<br />
<br />
if [ ! -f "$SOUND" ] ; then<br />
SOUND=/usr/palm/sounds/alert.wav<br />
fi<br />
<br />
check || play<br />
</nowiki></pre><br />
<br />
== Installation==<br />
<br />
# Copy a .wav file to /media/internal/ringtones/pager.wav (or to the ringtones directory in USB mode).<br />
mkdir -p /opt/scripts<br />
<br />
# Copy the script to /opt/scripts/pager.<br />
chmod +x /opt/scripts/pager<br />
rootfs_open -w<br />
<br />
# Add the following line to /etc/cron/crontabs/root:<br />
<br />
<pre><nowiki><br />
*/5 * * * * /opt/scripts/pager<br />
</nowiki></pre><br />
<br />
Remember to copy a .wav file to /media/internal/ringtones/pager.wav.<br />
<br />
== To Do/Bugs==<br />
<br />
As the message is marked read in the database when it is closed, the sound will continue to play every minute until the messaging app is closed (or until that chat card is closed if you've done the [[stock-application-mods |Create a new card for each conversation]] mod).<br />
<br />
== Acknowledgments==<br />
<br />
Thanks to Sargun for the [[tracking | tracking script]] which inspired the layout of the code, as well as started me looking at the databases.</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Pager_Nagger&diff=4530Pager Nagger2009-08-19T03:27:03Z<p>JackieRipper: Removed testing "exit"</p>
<hr />
<div>I use my phone as a pager when I'm on-call at work. The Pre's notification tone is ''way'' too short and quiet to wake me up. Here's a script that will nag you by playing a .wav file every minute while you have unread messages. The latest version also vibrates and blinks the LEDs.<br />
<br />
== Prerequisites==<br />
<br />
* [[Portal:Accessing_Linux | Root access]]<br />
* [[Crond | Crond enabled]]<br />
<br />
== Script code==<br />
<br />
<pre><nowiki><br />
#!/bin/sh<br />
<br />
SOUND=/media/internal/ringtones/pager.wav<br />
LIGHT=1<br />
BUZZ=1<br />
<br />
check() {<br />
cmd='SELECT summary FROM com_palm_messaging_data_ChatThread WHERE unreadCount > 0 AND type = "SMS" AND summary != "";'<br />
output=$(echo $cmd|sqlite3 /var/luna/data/dbdata/PalmDatabase.db3 2> /dev/null) || return 0<br />
if [ -n "$output" ] ; then<br />
return 1<br />
fi<br />
}<br />
<br />
play() {<br />
x=0<br />
until [ "$x" = 4 ] ; do<br />
aplay -q "$SOUND" &<br />
y=1<br />
if [ "$BUZZ" = 1 ] ; then<br />
/usr/bin/luna-send -n 1 palm://com.palm.vibrate/vibrate {\"period\":1,\"duration\":1000\} > /dev/null 2>&1<br />
z=10<br />
else<br />
z=12<br />
fi<br />
if [ "$LIGHT" = 1 ] ; then<br />
until [ "$y" = "$z" ] ; do<br />
sleep 1<br />
echo 00 >/sys/class/leds/core_navi_left/brightness<br />
echo 100 >/sys/class/leds/core_navi_center/brightness<br />
echo 00 >/sys/class/leds/core_navi_right/brightness<br />
sleep 1<br />
echo 80 >/sys/class/leds/core_navi_left/brightness<br />
echo 00 >/sys/class/leds/core_navi_center/brightness<br />
echo 80 >/sys/class/leds/core_navi_right/brightness<br />
sleep 1<br />
echo 00 >/sys/class/leds/core_navi_left/brightness<br />
echo 60 >/sys/class/leds/core_navi_center/brightness<br />
echo 00 >/sys/class/leds/core_navi_right/brightness<br />
sleep 1<br />
echo 40 >/sys/class/leds/core_navi_left/brightness<br />
echo 00 >/sys/class/leds/core_navi_center/brightness<br />
echo 40 >/sys/class/leds/core_navi_right/brightness<br />
sleep 1<br />
echo 00 >/sys/class/leds/core_navi_left/brightness<br />
echo 00 >/sys/class/leds/core_navi_center/brightness<br />
echo 00 >/sys/class/leds/core_navi_right/brightness<br />
check<br />
if [ "$?" = 1 ] ; then<br />
y=$((y+1))<br />
else<br />
y=$z<br />
x=4<br />
fi<br />
done<br />
x=$((x + 1))<br />
else<br />
sleep 60<br />
check<br />
if [ "$?" = 1 ] ; then<br />
x=$((x + 1))<br />
else<br />
x=4<br />
fi<br />
fi<br />
<br />
done<br />
}<br />
<br />
<br />
if [ ! -f "$SOUND" ] ; then<br />
SOUND=/usr/palm/sounds/alert.wav<br />
fi<br />
<br />
check || play<br />
</nowiki></pre><br />
<br />
== Installation==<br />
<br />
# Copy a .wav file to /media/internal/ringtones/pager.wav (or to the ringtones directory in USB mode).<br />
mkdir -p /opt/scripts<br />
<br />
# Copy the script to /opt/scripts/pager.<br />
chmod +x /opt/scripts/pager<br />
rootfs_open -w<br />
<br />
# Add the following line to /etc/cron/crontabs/root:<br />
<br />
<pre><nowiki><br />
*/5 * * * * /opt/scripts/pager<br />
</nowiki></pre><br />
<br />
Remember to copy a .wav file to /media/internal/ringtones/pager.wav.<br />
<br />
== To Do/Bugs==<br />
<br />
As the message is marked read in the database when it is closed, the sound will continue to play every minute until the messaging app is closed (or until that chat card is closed if you've done the [[stock-application-mods |Create a new card for each conversation]] mod).<br />
<br />
== Acknowledgments==<br />
<br />
Thanks to Sargun for the [[tracking | tracking script]] which inspired the layout of the code, as well as started me looking at the databases.</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Pager_Nagger&diff=4529Pager Nagger2009-08-19T03:17:46Z<p>JackieRipper: Removed extraneous line from the script</p>
<hr />
<div>I use my phone as a pager when I'm on-call at work. The Pre's notification tone is ''way'' too short and quiet to wake me up. Here's a script that will nag you by playing a .wav file every minute while you have unread messages. The latest version also vibrates and blinks the LEDs.<br />
<br />
== Prerequisites==<br />
<br />
* [[Portal:Accessing_Linux | Root access]]<br />
* [[Crond | Crond enabled]]<br />
<br />
== Script code==<br />
<br />
<pre><nowiki><br />
#!/bin/sh<br />
<br />
SOUND=/media/internal/ringtones/pager.wav<br />
LIGHT=1<br />
BUZZ=1<br />
<br />
check() {<br />
cmd='SELECT summary FROM com_palm_messaging_data_ChatThread WHERE unreadCount > 0 AND type = "SMS" AND summary != "";'<br />
output=$(echo $cmd|sqlite3 /var/luna/data/dbdata/PalmDatabase.db3 2> /dev/null) || return 0<br />
if [ -n "$output" ] ; then<br />
return 1<br />
fi<br />
}<br />
<br />
play() {<br />
x=0<br />
until [ "$x" = 4 ] ; do<br />
aplay -q "$SOUND" &<br />
y=1<br />
if [ "$BUZZ" = 1 ] ; then<br />
/usr/bin/luna-send -n 1 palm://com.palm.vibrate/vibrate {\"period\":1,\"duration\":1000\} > /dev/null 2>&1<br />
z=10<br />
else<br />
z=12<br />
fi<br />
if [ "$LIGHT" = 1 ] ; then<br />
until [ "$y" = "$z" ] ; do<br />
sleep 1<br />
echo 00 >/sys/class/leds/core_navi_left/brightness<br />
echo 100 >/sys/class/leds/core_navi_center/brightness<br />
echo 00 >/sys/class/leds/core_navi_right/brightness<br />
sleep 1<br />
echo 80 >/sys/class/leds/core_navi_left/brightness<br />
echo 00 >/sys/class/leds/core_navi_center/brightness<br />
echo 80 >/sys/class/leds/core_navi_right/brightness<br />
sleep 1<br />
echo 00 >/sys/class/leds/core_navi_left/brightness<br />
echo 60 >/sys/class/leds/core_navi_center/brightness<br />
echo 00 >/sys/class/leds/core_navi_right/brightness<br />
sleep 1<br />
echo 40 >/sys/class/leds/core_navi_left/brightness<br />
echo 00 >/sys/class/leds/core_navi_center/brightness<br />
echo 40 >/sys/class/leds/core_navi_right/brightness<br />
sleep 1<br />
echo 00 >/sys/class/leds/core_navi_left/brightness<br />
echo 00 >/sys/class/leds/core_navi_center/brightness<br />
echo 00 >/sys/class/leds/core_navi_right/brightness<br />
exit 0<br />
check<br />
if [ "$?" = 1 ] ; then<br />
y=$((y+1))<br />
else<br />
y=$z<br />
x=4<br />
fi<br />
done<br />
x=$((x + 1))<br />
else<br />
sleep 60<br />
check<br />
if [ "$?" = 1 ] ; then<br />
x=$((x + 1))<br />
else<br />
x=4<br />
fi<br />
fi<br />
<br />
done<br />
}<br />
<br />
<br />
if [ ! -f "$SOUND" ] ; then<br />
SOUND=/usr/palm/sounds/alert.wav<br />
fi<br />
<br />
check || play<br />
</nowiki></pre><br />
<br />
== Installation==<br />
<br />
# Copy a .wav file to /media/internal/ringtones/pager.wav (or to the ringtones directory in USB mode).<br />
mkdir -p /opt/scripts<br />
<br />
# Copy the script to /opt/scripts/pager.<br />
chmod +x /opt/scripts/pager<br />
rootfs_open -w<br />
<br />
# Add the following line to /etc/cron/crontabs/root:<br />
<br />
<pre><nowiki><br />
*/5 * * * * /opt/scripts/pager<br />
</nowiki></pre><br />
<br />
Remember to copy a .wav file to /media/internal/ringtones/pager.wav.<br />
<br />
== To Do/Bugs==<br />
<br />
As the message is marked read in the database when it is closed, the sound will continue to play every minute until the messaging app is closed (or until that chat card is closed if you've done the [[stock-application-mods |Create a new card for each conversation]] mod).<br />
<br />
== Acknowledgments==<br />
<br />
Thanks to Sargun for the [[tracking | tracking script]] which inspired the layout of the code, as well as started me looking at the databases.</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Pager_Nagger&diff=4527Pager Nagger2009-08-19T03:09:16Z<p>JackieRipper: Updated script with changes by Ikyo, added some links to other pages.</p>
<hr />
<div>I use my phone as a pager when I'm on-call at work. The Pre's notification tone is ''way'' too short and quiet to wake me up. Here's a script that will nag you by playing a .wav file every minute while you have unread messages. The latest version also vibrates and blinks the LEDs.<br />
<br />
== Prerequisites==<br />
<br />
* [[Portal:Accessing_Linux | Root access]]<br />
* [[Crond | Crond enabled]]<br />
<br />
== Script code==<br />
<br />
<pre><nowiki><br />
#!/bin/sh<br />
<br />
SOUND=/media/internal/ringtones/pager.wav<br />
LIGHT=1<br />
BUZZ=1<br />
<br />
check() {<br />
cmd='SELECT summary FROM com_palm_messaging_data_ChatThread WHERE unreadCount > 0 AND type = "SMS" AND summary != "";'<br />
output=$(echo $cmd|sqlite3 /var/luna/data/dbdata/PalmDatabase.db3 2> /dev/null) || return 0<br />
if [ -n "$output" ] ; then<br />
return 1<br />
fi<br />
}<br />
<br />
play() {<br />
x=0<br />
y=1<br />
until [ "$x" = 4 ] ; do<br />
aplay -q "$SOUND" &<br />
y=1<br />
if [ "$BUZZ" = 1 ] ; then<br />
/usr/bin/luna-send -n 1 palm://com.palm.vibrate/vibrate {\"period\":1,\"duration\":1000\} > /dev/null 2>&1<br />
z=10<br />
else<br />
z=12<br />
fi<br />
if [ "$LIGHT" = 1 ] ; then<br />
until [ "$y" = "$z" ] ; do<br />
sleep 1<br />
echo 00 >/sys/class/leds/core_navi_left/brightness<br />
echo 100 >/sys/class/leds/core_navi_center/brightness<br />
echo 00 >/sys/class/leds/core_navi_right/brightness<br />
sleep 1<br />
echo 80 >/sys/class/leds/core_navi_left/brightness<br />
echo 00 >/sys/class/leds/core_navi_center/brightness<br />
echo 80 >/sys/class/leds/core_navi_right/brightness<br />
sleep 1<br />
echo 00 >/sys/class/leds/core_navi_left/brightness<br />
echo 60 >/sys/class/leds/core_navi_center/brightness<br />
echo 00 >/sys/class/leds/core_navi_right/brightness<br />
sleep 1<br />
echo 40 >/sys/class/leds/core_navi_left/brightness<br />
echo 00 >/sys/class/leds/core_navi_center/brightness<br />
echo 40 >/sys/class/leds/core_navi_right/brightness<br />
sleep 1<br />
echo 00 >/sys/class/leds/core_navi_left/brightness<br />
echo 00 >/sys/class/leds/core_navi_center/brightness<br />
echo 00 >/sys/class/leds/core_navi_right/brightness<br />
exit 0<br />
check<br />
if [ "$?" = 1 ] ; then<br />
y=$((y+1))<br />
else<br />
y=$z<br />
x=4<br />
fi<br />
done<br />
x=$((x + 1))<br />
else<br />
sleep 60<br />
check<br />
if [ "$?" = 1 ] ; then<br />
x=$((x + 1))<br />
else<br />
x=4<br />
fi<br />
fi<br />
<br />
done<br />
}<br />
<br />
<br />
if [ ! -f "$SOUND" ] ; then<br />
SOUND=/usr/palm/sounds/alert.wav<br />
fi<br />
<br />
check || play<br />
</nowiki></pre><br />
<br />
== Installation==<br />
<br />
# Copy a .wav file to /media/internal/ringtones/pager.wav (or to the ringtones directory in USB mode).<br />
mkdir -p /opt/scripts<br />
<br />
# Copy the script to /opt/scripts/pager.<br />
chmod +x /opt/scripts/pager<br />
rootfs_open -w<br />
<br />
# Add the following line to /etc/cron/crontabs/root:<br />
<br />
<pre><nowiki><br />
*/5 * * * * /opt/scripts/pager<br />
</nowiki></pre><br />
<br />
Remember to copy a .wav file to /media/internal/ringtones/pager.wav.<br />
<br />
== To Do/Bugs==<br />
<br />
As the message is marked read in the database when it is closed, the sound will continue to play every minute until the messaging app is closed (or until that chat card is closed if you've done the [[stock-application-mods |Create a new card for each conversation]] mod).<br />
<br />
== Acknowledgments==<br />
<br />
Thanks to Sargun for the [[tracking | tracking script]] which inspired the layout of the code, as well as started me looking at the databases.</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Applying_Patches&diff=4525Applying Patches2009-08-19T02:43:57Z<p>JackieRipper: </p>
<hr />
<div>==Introduction==<br />
<br />
We cannot legally redistribute Palm source code (it is copyrighted code, and is not released under an open source license) therefore we need to manage our modifications as patches. Since these patches will come from many different places, and will need to be removed before each OTA update and then reapplied after-wards, we need a procedure and tools for doing this. This page documents this procedure.<br />
<br />
Before asking questions about this procedure, please read the following documents fully:<br />
<br />
An introduction to Quilt can be found at http://www.suse.de/~agruen/quilt.pdf<br />
<br />
The manual for quilt is at http://linux.die.net/man/1/quilt<br />
<br />
==Upgrading from quilt to quilt-lite==<br />
<br />
If you have performed these instructions before the 8th Aug 2009, you will have installed a very heavyweight version of the quilt package which has a dependency on a very large perl package.<br />
<br />
This dependency has been removed in a new quilt-lite package, which saves 26MB of space in /var as a result.<br />
<br />
You can switch over to it as follows:<br />
<br />
* ipkg-opt update<br />
* ipkg-opt remove quilt perl libdb gdbm util-linux-ng e2fslibs ncursesw ncurses<br />
* ipkg-opt install quilt-lite<br />
<br />
Alternatively, the setup script below will prompt to uninstall quilt, perl, etc ..., and install quilt-lite, if quilt is installed.<br />
<br />
==Setup Procedure (Scripted)==<br />
The process of setting up quilt has been scripted. The script performs the following actions:<br />
* Installs (or upgrades) git and any dependencies<br />
* Installs (or upgrades) quilt (actually quilt-lite, a version of quilt that does not depend on perl) and any dependencies<br />
* Configures quilt to store patches in /opt/src/patches<br />
* Creates (or updates) a local clone of the webos-internals modifications repository<br />
<br />
Each step is only performed if necessary. Please note that ipkg-opt needs to be installed. The instructions are found [[Next_steps|here]].<br />
<br />
To get run the script, log into your Pre, gain root privileges and run the following commands:<br />
<pre><nowiki><br />
cd /tmp<br />
wget http://gitorious.org/webos-internals/bootstrap/blobs/raw/master/quilt-bootstrap.sh<br />
sh quilt-bootstrap.sh<br />
</nowiki></pre><br />
<br />
==Setup Procedure (Manual Process)==<br />
(Note: Even though you may have previously installed the optware quilt patch manager, it won't damage anything to follow the Setup procedure. Alternatively, if you KNOW FOR SURE these are installed and your packages are up-to-date, you can skip to Importing and Applying Patches).<br />
<br />
* Log into your Pre, and gain root privileges. (Note: This command is not required when using the emulator)<br />
<pre><nowiki><br />
sudo -i # Yes, the -i is important. <br />
</nowiki></pre><br />
<br />
* Put your Pre in to Read Write Mode<br />
<pre><nowiki><br />
mount -o remount,rw /<br />
</nowiki></pre><br />
<br />
* Ensure that you are set up for optware package installations, and make sure you have the latest package index:<br />
<pre><nowiki><br />
ipkg-opt update<br />
</nowiki></pre><br />
<br />
* Install the 'quilt-lite' package, which will be used to manage the patches you apply, and the 'git' package, which will be used to download existing patches from the modifications repository:<br />
<pre><nowiki><br />
ipkg-opt install quilt-lite git<br />
</nowiki></pre><br />
<br />
(If you already have those packages installed, repeating this step will not cause any harm.)<br />
<br />
* Create a directory in which 'quilt' will manage your chosen modifications:<br />
<pre><nowiki><br />
mkdir -p /opt/src/patches<br />
</nowiki></pre><br />
<br />
* Edit /opt/etc/quilt.quiltrc to point quilt to that directory:<br />
<pre><nowiki><br />
sed -ire 's|^[\s#]*QUILT_PATCHES=.*|QUILT_PATCHES=/opt/src/patches|' /opt/etc/quilt.quiltrc<br />
</nowiki></pre><br />
<br />
* Delete any existing webos-internals modifications directories<br />
<pre><nowiki><br />
rm -rf /opt/src/modifications<br />
</nowiki></pre><br />
<br />
* Clone the webos-internals modifications repository:<br />
<pre><nowiki><br />
cd /opt/src<br />
git clone git://gitorious.org/webos-internals/modifications.git<br />
</nowiki></pre><br />
<br />
==Importing and Applying Patches==<br />
<br />
* Ensure your list of modifications is up to date<br />
<pre><nowiki><br />
cd /opt/src/modifications<br />
git pull<br />
</nowiki></pre><br />
** If you find yourself getting errors when you try to pull with the above command then you will need to modify your .git/config file<br />
<pre><nowiki><br />
sudo vi /opt/src/modifications/.git/config<br />
</nowiki></pre><br />
<br />
** Your [master] section should look like the following<br />
<pre><nowiki><br />
[branch "master"]<br />
remote = origin<br />
merge = refs/heads/master <br />
</nowiki></pre><br />
<br />
* Browse the set of available patches. Each patch should have a description at the top.<br />
<pre><nowiki><br />
find /opt/src/modifications -name *.patch<br />
</nowiki></pre><br />
<br />
* Choose a patch from the modifications repository and import it into your own patches directory:<br />
<pre><nowiki><br />
cd / # It is *very* important to be in the / directory when you run quilt.<br />
quilt import /opt/src/modifications/application_name/patch_name.patch # Note that you need to replace application_name and patch_name here.<br />
</nowiki></pre><br />
<br />
* Verify that quilt has imported the patch successfully:<br />
<pre><nowiki><br />
# You should still be in the / directory to run quilt.<br />
quilt series # you should see your patch listed in here<br />
</nowiki></pre><br />
<br />
* Instruct quilt to apply your patch<br />
<pre><nowiki><br />
# You should still be in the / directory to run quilt.<br />
quilt push<br />
# Use this to push all patches at once.<br />
quilt push -a<br />
</nowiki></pre><br />
<br />
* If everything worked correctly, the patch should now be applied. You will usually need to restart the luna service on the Pre to see the effect of patches to applications. Here's how to initiate a rescan.<br />
<pre><nowiki><br />
luna-send -n 1 palm://com.palm.applicationManager/rescan {}<br />
</nowiki></pre><br />
<br />
If that doesn't work, try a service restart with:<br />
<pre><nowiki><br />
stop LunaSysMgr && start LunaSysMgr<br />
</nowiki></pre><br />
<br />
And if all else fails, simply reboot:<br />
<pre><nowiki><br />
reboot<br />
</nowiki></pre><br />
<br />
==Removing all patches==<br />
<br />
Before you accept an OTA update, you should remove any patches you have applied. Luckily, using quilt makes this very easy.<br />
<br />
* Remove all patches:<br />
<pre><nowiki><br />
cd / # It is *very* important to be in the / directory when you run quilt.<br />
quilt pop -a<br />
</nowiki></pre><br />
<br />
==Reapplying all patches==<br />
<br />
After your OTA update is complete, you will want to reapply any patches you have selected. This may or may not go smoothly.<br />
<br />
* Apply all patches:<br />
<pre><nowiki><br />
cd / # It is *very* important to be in the / directory when you run quilt.<br />
quilt push -a<br />
</nowiki></pre><br />
<br />
* Put your Pre back in to Read Only mode<br />
<pre><nowiki><br />
mount -o remount,ro /<br />
</nowiki></pre><br />
<br />
==Information for developing patches==<br />
<br />
===Getting Authenticated with gitorious.org===<br />
Before you can commit to gitorious you need to [http://gitorious.org/users/new create an account]. <br />
<br />
Next you'll need to generate a public key and share that with gitorious.org, your public key is how gitorious.org authenticates you and checks if have the permissions required to do a commit to a given repository.<br />
<br />
Getting your key on window<br />
* Download [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuTTYgen] and [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html Pageant]<br />
<br />
--Gitorious.org [http://gitorious.org/about/faq gitorious.org recommends] you use [http://code.google.com/p/msysgit/ msysGit].--<br />
<br />
* On Windows use [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuTTYgen] to generate a public/private key pair. <br />
<br />
<pre><nowiki><br />
Key -> SSH-2 RSA KEY<br />
Key -> Generate key pair<br />
</nowiki></pre><br />
After some wiggling of the mouse your keys will be generated. You should fill in the //Key passphrase// and it's confirmation to secure you key. Save off the public and private key pairs to your user folder.<br />
<br />
* After which you will need to run [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html Pageant] on your pc. Pageant holds your private key in memory for PuTTY to use.<br />
<br />
* To commit changes to gitorious.org from the pre you will need to install openssh on the device.<br />
<pre><nowiki><br />
ipkg-opt update<br />
ipkg-opt install openssh # since dropbear doesn't do agent forwarding, you need to use openssh<br />
</nowiki></pre><br />
<br />
Actually, it is possible to use dropbear with git but requires [http://tumblelog.jauderho.com/post/151678345/using-dropbear-with-git some hackery].<br />
<br />
As an alternative, if you don't use the keys for anything else you could just generate them on the pre after installing open-ssh<br />
<pre><nowiki><br />
sudo ssh-keygen -t rsa # follow the prompts<br />
cat ~/.ssh/id_rsa.pub # display the public key you need to paste into gitorious<br />
</nowiki></pre><br />
<br />
* Don't forget to upload your public key to gitorious.org after generating it.<br />
Now you should be able to follow the steps below and contribute your code to gitorious.org.<br />
<br />
* If you find yourself getting errors about your public key when you try to push changes, check to make sure your keys are under /var/home/root/.ssh/ and not under your regular user account.<br />
<br />
===Creating a patch===<br />
<br />
* Before making any changes to files:<br />
<br />
<pre><nowiki><br />
cd / # It is *very* important to be in the / directory when you run quilt.<br />
quilt new patch_name.patch<br />
quilt add /usr/palm/applications/com.palm.app.appYouWantToMod/app/controllers/mod-assistant.js<br />
quilt add /usr/palm/applications/com.palm.app.appYouWantToMod/app/controllers/mod2-assistant.js<br />
</nowiki></pre><br />
<br />
* Now you can make changes on the Pre using vi/nano/joe/whatever, or sftp files to your machine and make changes. Make sure any file you change has been added in the above step.<br />
<br />
<pre><nowiki><br />
quilt files # view files that are being tracked<br />
quilt header -e # add a header to the patch to describe it (please do this!)<br />
</nowiki></pre><br />
<br />
* Once you are finished and ready to create a patch<br />
<br />
<pre><nowiki><br />
quilt refresh # this will create/update the /opt/src/patches/patch_name.patch file<br />
</nowiki></pre><br />
<br />
===Pushing the change back to gitorious.org===<br />
<br />
* copy the patch into the modification tree you cloned above<br />
<br />
<pre><nowiki><br />
mkdir /opt/src/modifications/application_name # You need to change application_name to the leaf of the palm application id.<br />
cp /opt/src/patches/patch_name.patch /opt/src/modifications/application_name/patch_name.patch<br />
</nowiki></pre><br />
<br />
* Identify yourself in git (use the user you have setup at gitorious.org)<br />
<br />
<pre><nowiki><br />
cd /opt/src/modifications<br />
git config --global user.name "user"<br />
git config --global user.email "youremail@example.com"<br />
</nowiki></pre><br />
<br />
* Commit your changes to your local git<br />
<br />
<pre><nowiki><br />
git add application_name/patch_name.patch<br />
git commit<br />
</nowiki></pre><br />
<br />
* Since we did a clone the first time, we need to recreate the origin:<br />
<br />
<pre><nowiki><br />
git remote rm origin # (if you did a clone, we have to replace the origin)<br />
git remote add origin git@gitorious.org:webos-internals/modifications.git<br />
</nowiki></pre><br />
<br />
* Finally, push your changes up to gitorious.org<br />
<br />
<pre><nowiki><br />
git push origin master # first time<br />
git push # any future pushes<br />
</nowiki></pre><br />
<br />
* If the push does not work, try to debug the ssh connection<br />
<pre><nowiki><br />
/opt/bin/ssh -v git@gitorious.org<br />
</nowiki></pre><br />
<br />
==Extended, annotated sample session with quilt==<br />
* First, we just need to setup a file to muck with<br />
<pre><nowiki><br />
root@castle:/# cd /<br />
root@castle:/# echo "Original file" > /usr/test<br />
root@castle:/# echo "2nd lien" >> /usr/test<br />
root@castle:/# echo "3rd ilne" >> /usr/test<br />
root@castle:/# echo "last line" >> /usr/test<br />
</nowiki></pre><br />
* Start a new patch (normally you'll want to use patch_name.patch, I just wanted a shortened name)<br />
<pre><nowiki><br />
root@castle:/# quilt new p1<br />
Patch /opt/src/patches/p1 is now on top<br />
</nowiki></pre><br />
* You must quilt add any files that you are going to edit or create '''before''' you edit or create them.<br />
<pre><nowiki><br />
root@castle:/# quilt add /usr/test<br />
File /usr/test added to patch /opt/src/patches/p1<br />
</nowiki></pre><br />
* Just using sed to correct the spelling on the 2nd line<br />
<pre><nowiki><br />
root@castle:/# sed -i -e 's/lien/line/' /usr/test<br />
</nowiki></pre><br />
* quilt refresh actually finds what you have changed and writes it to the patch file (at this point, you can use git to push your changes)<br />
<pre><nowiki><br />
root@castle:/# quilt refresh<br />
Refreshed patch /opt/src/patches/p1<br />
</nowiki></pre><br />
* Just for fun, let's do it again<br />
<pre><nowiki><br />
root@castle:/# quilt new p2<br />
Patch /opt/src/patches/p2 is now on top<br />
</nowiki></pre><br />
* Again, add file, make some changes, refresh to update the patch.<br />
<pre><nowiki><br />
root@castle:/# quilt add /usr/test<br />
File /usr/test added to patch /opt/src/patches/p2<br />
root@castle:/# sed -i -e 's/ilne/line/' /usr/test<br />
root@castle:/# quilt refresh<br />
Refreshed patch /opt/src/patches/p2<br />
</nowiki></pre><br />
* Just an example of rolling back changes<br />
<pre><nowiki><br />
root@castle:/# quilt pop<br />
Removing patch /opt/src/patches/p2<br />
Restoring usr/test<br />
<br />
Now at patch /opt/src/patches/p1<br />
root@castle:/# quilt pop<br />
Removing patch /opt/src/patches/p1<br />
Restoring usr/test<br />
<br />
Now at patch /opt/src/patches/enable-browser-downloads.patch<br />
root@castle:/# cat /usr/test<br />
Original file<br />
2nd lien<br />
3rd ilne<br />
last line<br />
</nowiki></pre><br />
* delete will delete the patch from your series, but leave the actual patch file in /opt/src/patches (so you could import it later)<br />
<pre><nowiki><br />
root@castle:/# quilt delete p1<br />
Removed patch /opt/src/patches/p1<br />
</nowiki></pre><br />
* Since we removed p1, push will now apply p2. However, since p2 was applied against p1 originally, p2 will report an error. If the changes are too significant, you can force with -f, but you should carefully inspect the resulting files.<br />
<pre><nowiki><br />
root@castle:/# quilt push<br />
Applying patch /opt/src/patches/p2<br />
patching file usr/test<br />
Hunk #1 succeeded at 1 with fuzz 2.<br />
<br />
Now at patch /opt/src/patches/p2<br />
</nowiki></pre><br />
* If we want, we can refresh the patch so that future users of the patch do not receive the "fuzz" warning.<br />
<pre><nowiki><br />
root@castle:/# quilt refresh<br />
Refreshed patch /opt/src/patches/p2<br />
root@castle:/# cat /usr/test<br />
Original file<br />
2nd lien<br />
3rd line<br />
last line<br />
</nowiki></pre><br />
* cleanup<br />
<pre><nowiki><br />
root@castle:/# rm /usr/test<br />
</nowiki></pre><br />
<br />
==Background info==<br />
<br />
* [http://pkg-perl.alioth.debian.org/howto/quilt.html quilt]<br />
<br />
==Script for Updating/Installing Patches==<br />
<br />
I just wanted to share the following script that I just finished testing out. It's only been tested on my Pre so far, as I don't have access to any others.. It just updates the patch list, prints out available patches, then lets you choose which to apply.<br />
<br />
<pre><nowiki><br />
#!/opt/bin/bash<br />
<br />
cd /opt/src/modifications<br />
tput clear<br />
echo Updating list...<br />
git pull<br />
tput clear<br />
cd /<br />
<br />
a=0<br />
for inputline in $(find /opt/src/modifications -name *.patch | sort)<br />
do<br />
a=$(($a+1));<br />
line="$(echo $inputline)"<br />
MYARRAY[$a]="$line"<br />
echo "${a}${line}" | awk -F "/" 'sub(".patch","",$6) {printf "%-3s %-15s %s\n", $1, $5, $6}'<br />
done<br />
echo "q quit"<br />
<br />
x=$(($a+1));<br />
until [ -n "$opt" ] ; do<br />
read -p "Enter the line number for patch to apply [1 - $a] " opt<br />
if [ "$opt" = "q" ] ; then<br />
exit 0<br />
fi<br />
if [ "$opt" -lt "$x" 2> /dev/null ] && [ "$opt" -gt 0 2> /dev/null ] ; then<br />
true<br />
else<br />
opt=""<br />
fi<br />
done<br />
<br />
tput clear<br />
cd /<br />
quilt import ${MYARRAY[$opt]}<br />
quilt push<br />
luna-send -n 1 palm://com.palm.applicationManager/rescan {}<br />
<br />
</nowiki></pre></div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Pager_Nagger&diff=4460Pager Nagger2009-08-17T03:51:49Z<p>JackieRipper: </p>
<hr />
<div>I use my phone as a pager when I'm on-call at work. The Pre's notification tone is ''way'' too short and quiet to wake me up. Here's a script that will nag you by playing a .wav file every minute while you have unread messages.<br />
<br />
== Prerequisites==<br />
<br />
* Root access<br />
* Cron enabled<br />
<br />
== Script code==<br />
<br />
<pre><nowiki><br />
#!/bin/sh<br />
<br />
SOUND=/media/internal/ringtones/pager.wav<br />
<br />
check() {<br />
cmd='SELECT summary FROM com_palm_messaging_data_ChatThread WHERE unreadCount > 0 AND type = "SMS" AND summary != "";'<br />
output=$(echo $cmd|sqlite3 /var/luna/data/dbdata/PalmDatabase.db3 2> /dev/null) || return 0<br />
if [ -n "$output" ] ; then<br />
return 1<br />
fi<br />
}<br />
<br />
play() {<br />
x=0<br />
until [ "$x" = 4 ] ; do<br />
aplay -q "$SOUND"<br />
sleep 60<br />
check<br />
if [ "$?" = 1 ] ; then<br />
x=$((x + 1))<br />
else<br />
x=4<br />
fi<br />
done<br />
}<br />
<br />
<br />
if [ ! -f "$SOUND" ] ; then<br />
SOUND=/usr/palm/sounds/alert.wav<br />
fi<br />
<br />
check || play<br />
</nowiki></pre><br />
<br />
== Installation==<br />
<br />
# Copy a .wav file to /media/internal/ringtones/pager.wav (or to the ringtones directory in USB mode).<br />
mkdir -p /opt/scripts<br />
<br />
# Copy the script to /opt/scripts/pager.<br />
chmod +x /opt/scripts/pager<br />
rootfs_open -w<br />
<br />
# Add the following line to /etc/cron/crontabs/root:<br />
<br />
<pre><nowiki><br />
*/5 * * * * /opt/scripts/pager<br />
</nowiki></pre><br />
<br />
Remember to copy a .wav file to /media/internal/ringtones/pager.wav.<br />
<br />
== To Do/Bugs==<br />
<br />
As the message is marked read in the database when it is closed, the sound will continue to play every minute until the messaging app is closed (or until that chat card is closed if you've done the [[stock-application-mods |Create a new card for each conversation]] mod).<br />
<br />
Pyrognome tested this and works as stated.<br />
<br />
== Acknowledgments==<br />
<br />
Thanks to Sargun for the [[tracking | tracking script]] which inspired the layout of the code, as well as started me looking at the databases.</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Next_steps&diff=4430Next steps2009-08-16T03:59:44Z<p>JackieRipper: Added profile update, so the user can easily use the binaries in /opt right away</p>
<hr />
<div>''The old, manual setup of Optware and users can be found [[Setting_up_optware_feed | here]].''<br />
<br />
=Automated Setup of Optware, Users and Access=<br />
The webOS community asks that users who have obtained access to the Linux subsystem install a standard set of software to ensure everyone has the necessary tools in place to use the resources the community is providing.<br />
<br />
In particular, this includes the Optware package manager. Palm's webOS uses the ''ipkg'' package manager internally. The community has a version of ''ipkg'' called ''ipkg-opt'' which accesses the Optware library of over 1300 Linux programs available for installation on the Pre. <br />
<br />
Palm has indicated that they have no intention of using the /opt directory, so we direct our installs to /opt/bin rather than /bin to avoid being overwritten by future Palm software upgrades. <br />
<br />
In addition, the standard package creates a non-root user, installs ''sudo'', and includes a SSH program (''Dropbear'') and SFTP program. <br />
<br />
For your convenience, we've packaged all this up into a simple script.<br />
<br />
==Optware Setup==<br />
<br />
'''If you're attempting to install these packages to your emulator, you must first add sufficient space by [[Adding_Disks_to_the_Emulator|enabling a virtual disk]].'''<br />
<br />
After completing the process of obtaining access to your Pre, do the following: <br />
<br />
'''Type each line exactly as it appears. Copying and pasting is probably a good idea.''' <br />
<br />
''Note to Windows Putty users: To paste in putty, simply right-click and the program pastes into the terminal whatever you have copied to the clipboard.''<br />
<br />
<div style="font-size:100%;"><br />
<source lang=bash><br />
cd /tmp<br />
wget http://gitorious.org/webos-internals/bootstrap/blobs/raw/master/optware-bootstrap.sh<br />
sh optware-bootstrap.sh<br />
source /etc/profile.d/optware<br />
</source></div><br />
<br />
Follow the on-screen instructions. <br />
<br />
If you want to review the script before you run it, you can look here: <br />
<br />
[http://gitorious.org/webos-internals/bootstrap/blobs/master/optware-bootstrap.sh http://gitorious.org/webos-internals/bootstrap/blobs/master/optware-bootstrap.sh]<br />
<br />
==Quilt setup==<br />
<br />
Optionally, you can then install the ''quilt'' patch manager which allows multiple-file patches. (Yes, the pun was intentional. Quilt manages multiple patches.) This installation process has also been packaged into a simple script. It will install quilt, and all of its dependencies, and create a local clone of the WebOS-Internals patch repository. [[Applying_Patches | Applying Patches]] provides a more thorough guide on the use of quilt.<br />
<br />
'''Again, type each line exactly as it appears. Copying and pasting is probably a good idea.'''<br />
<br />
<div style="font-size:100%;"><br />
<source lang=bash><br />
cd /tmp<br />
wget http://gitorious.org/webos-internals/bootstrap/blobs/raw/master/quilt-bootstrap.sh<br />
sh quilt-bootstrap.sh<br />
</source></div><br />
<br />
If you want to review the script before you run it, you can look here: <br />
<br />
[http://gitorious.org/webos-internals/bootstrap/blobs/master/quilt-bootstrap.sh http://gitorious.org/webos-internals/bootstrap/blobs/master/quilt-bootstrap.sh]<br />
<br />
==Finishing==<br />
<br />
To finish off, turn Developer Mode back to "Off" (which will reboot your Pre).<br />
<br />
Once you are finished, you may SSH into your Pre with an SSH client like [http://www.chiark.greenend.org.uk/~sgtatham/putty/ Putty]:<br />
*Find your IP address with [http://checkmyip.com/ CheckMyIP.com]<br />
*SSH to that IP address on port 222<br />
**If you're doing this over EVDO, there may be a lot of latency. Be patient.<br />
**You can optionally install [[Avahi]] and SSH to <tt>castle.local.</tt><br />
*Log in with the username and password you created during the Optware installation<br />
**Many operations cannot be carried out with the permissions of that username. You'll need to [[Basic_Linux_Use#sudo|sudo]] those operations with the new username's password<br />
<br />
Only the default shell (/bin/ash) will work for ssh. To change your shell to bash (located in /opt/bin/bash after the install), you will have to create an /etc/shells file, and add the following lines:<br />
<br />
/bin/ash<br />
/bin/sh<br />
/opt/bin/bash<br />
<br />
Then you will be able to edit /etc/passwd and change the shell parameter for the user you created. Note that if you try to change your shell without adding an /etc/shells the SSH server (Dropbear) will look like it is rejecting your password on subsequent connections.</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Application_talk:Terminal&diff=4357Application talk:Terminal2009-08-14T17:46:09Z<p>JackieRipper: /* Brackets */</p>
<hr />
<div>== Bugs: Paste? ==<br />
- Can't seem to figure out how to paste something that was copied from another app/msg/web site. The old paste shortcut of "Gesture + V" doesn't work (because its being used for other things). I tried to "Insert" shortcut, but it didn't do anything.<br />
--[[User:Zinge|Zinge]] 08:58, 7 August 2009 (UTC)<br />
<br />
== Fullscren (curses?) apps scroll wrong ==<br />
Another quick bug: when running irssi or BX only the first line above the status bar line(s) scrolls. When going between landscape and portrait mode, the screen refreshes properly, but still only one line scrolls in either mode. This is as of 0.1.5. --[[User:T3rmin|T3rmin]] 17:00, 28 July 2009 (UTC)<br />
<br />
== New Version Changelog? ==<br />
<br />
The newest version from the feed seems to be 0.1.6. Anybody know what changes have been made? --[[User:Zinge|Zinge]] 19:30, 1 August 2009 (UTC)<br />
<br />
== Font Size Feature Request ==<br />
Well done! I notice that there are two fonts, normal and small. Would it be possible to add an intermediate font size? The 40 col is to large for seeing much and the 80 col is far to small. Would it be possible to have a ~60col font? --[[user:Dreadchicken|Dreadchicken]]<br />
<br />
== Broadcast messages when phone sleeps/wakes ==<br />
<br />
Has anyone figured out how to stop the broadcast messages generated on the Terminal when the phone sleeps and wakes? They clobber whatever's on the screen if you happen to turn off the phone while Terminal is open.<br />
<br />
Other than this, great app. I'm eternally grateful. :) --[[User:zorinlynx|zorinlynx]]<br />
<br />
I'm not sure if this will help, but there is a quilt patch in the gitorious modification for disabling some messages to the log. http://gitorious.org/webos-internals/modifications/blobs/master/luna/quiet-powerd-messages.patch --[[User:Plee3|plee3]] 21:05, 3 August 2009 (UTC)<br />
<br />
Thank you! This has resolved the issue. --[[User:Zorinlynx|Zorinlynx]] 21:24, 3 August 2009 (UTC)<br />
<br />
== Brackets ==<br />
Any way to enter < or > chars? Kinda tough to dump output to a file without.<br />
--[[User:Daemon|Daemon]]<br />
<br />
These characters have not been implemented yet, but as a work-around, you can use tee or tee -a.<br />
--[[User:JackieRipper|JackieRipper]]</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Applying_Patches&diff=4111Applying Patches2009-08-09T08:29:28Z<p>JackieRipper: Added shabang to script</p>
<hr />
<div>==Introduction==<br />
<br />
We cannot legally redistribute Palm source code (it is copyrighted code, and is not released under an open source license) therefore we need to manage our modifications as patches. Since these patches will come from many different places, and will need to be removed before each OTA update and then reapplied after-wards, we need a procedure and tools for doing this. This page documents this procedure.<br />
<br />
==Upgrading from quilt to quilt-lite==<br />
<br />
If you have performed these instructions before the 8th Aug 2009, you will have installed a very heavyweight version of the quilt package which has a dependency on a very large perl package.<br />
<br />
This dependency has been removed in a new quilt-lite package, which saves 25MB of space in /var as a result.<br />
<br />
You can switch over to it as follows:<br />
<br />
* ipkg-opt update<br />
* ipkg-opt remove quilt perl libdb gdbm<br />
* ipkg-opt install quilt-lite<br />
<br />
Alternatively, the setup script below will prompt to uninstall quilt, perl, libdb and gdbm, and install quilt-lite, if quilt is installed.<br />
<br />
==Setup Procedure (Scripted)==<br />
The process of setting up quilt has been scripted. The script performs the following actions:<br />
* Installs (or upgrades) git and any dependencies<br />
* Installs (or upgrades) quilt (actually quilt-lite, a version of quilt that does not depend on perl) and any dependencies<br />
* Configures quilt to store patches in /opt/src/patches<br />
* Creates (or updates) a local clone of the webos-internals modifications repository<br />
<br />
Each step is only performed if necessary. Please note that ipkg-opt needs to be installed. The instructions are found [[Next_steps|here]].<br />
<br />
To get run the script, log into your Pre, gain root privileges and run the following commands:<br />
<pre><nowiki><br />
cd /tmp<br />
wget http://gitorious.org/webos-internals/bootstrap/blobs/raw/master/quilt-bootstrap.sh<br />
sh quilt-bootstrap.sh<br />
</nowiki></pre><br />
<br />
==Setup Procedure (Manual Process)==<br />
(Note: Even though you may have previously installed the optware quilt patch manager, it won't damage anything to follow the Setup procedure. Alternatively, if you KNOW FOR SURE these are installed and your packages are up-to-date, you can skip to Importing and Applying Patches).<br />
<br />
* Log into your Pre, and gain root privileges. (Note: This command is not required when using the emulator)<br />
<pre><nowiki><br />
sudo -i # Yes, the -i is important. <br />
</nowiki></pre><br />
<br />
* Put your Pre in to Read Write Mode<br />
<pre><nowiki><br />
mount -o remount,rw /<br />
</nowiki></pre><br />
<br />
* Ensure that you are set up for optware package installations, and make sure you have the latest package index:<br />
<pre><nowiki><br />
ipkg-opt update<br />
</nowiki></pre><br />
<br />
* Install the 'quilt-lite' package, which will be used to manage the patches you apply, and the 'git' package, which will be used to download existing patches from the modifications repository:<br />
<pre><nowiki><br />
ipkg-opt install quilt-lite git<br />
</nowiki></pre><br />
<br />
(If you already have those packages installed, repeating this step will not cause any harm.)<br />
<br />
* Create a directory in which 'quilt' will manage your chosen modifications:<br />
<pre><nowiki><br />
mkdir -p /opt/src/patches<br />
</nowiki></pre><br />
<br />
* Edit /opt/etc/quilt.quiltrc to point quilt to that directory:<br />
<pre><nowiki><br />
sed -ire 's|^[\s#]*QUILT_PATCHES=.*|QUILT_PATCHES=/opt/src/patches|' /opt/etc/quilt.quiltrc<br />
</nowiki></pre><br />
<br />
* Clone the webos-internals modifications repository:<br />
<pre><nowiki><br />
cd /opt/src<br />
git clone git://gitorious.org/webos-internals/modifications.git<br />
</nowiki></pre><br />
<br />
==Importing and Applying Patches==<br />
<br />
* Ensure your list of modifications is up to date<br />
<pre><nowiki><br />
cd /opt/src/modifications<br />
git pull<br />
</nowiki></pre><br />
** If you find yourself getting errors when you try to pull with the above command then you will need to modify your .git/config file<br />
<pre><nowiki><br />
sudo vi /opt/src/modifications/.git/config<br />
</nowiki></pre><br />
<br />
** Your [master] section should look like the following<br />
<pre><nowiki><br />
[branch "master"]<br />
remote = origin<br />
merge = refs/heads/master <br />
</nowiki></pre><br />
<br />
* Browse the set of available patches. Each patch should have a description at the top.<br />
<pre><nowiki><br />
find /opt/src/modifications -name *.patch<br />
</nowiki></pre><br />
<br />
* Choose a patch from the modifications repository and import it into your own patches directory:<br />
<pre><nowiki><br />
cd / # It is *very* important to be in the / directory when you run quilt.<br />
quilt import /opt/src/modifications/application_name/patch_name.patch # Note that you need to replace application_name and patch_name here.<br />
</nowiki></pre><br />
<br />
* Verify that quilt has imported the patch successfully:<br />
<pre><nowiki><br />
# You should still be in the / directory to run quilt.<br />
quilt series # you should see your patch listed in here<br />
</nowiki></pre><br />
<br />
* Instruct quilt to apply your patch<br />
<pre><nowiki><br />
# You should still be in the / directory to run quilt.<br />
quilt push<br />
# Use this to push all patches at once.<br />
quilt push -a<br />
</nowiki></pre><br />
<br />
* If everything worked correctly, the patch should now be applied. You will usually need to restart the luna service on the Pre to see the effect of patches to applications. Here's how to initiate a rescan.<br />
<pre><nowiki><br />
luna-send -n 1 palm://com.palm.applicationManager/rescan {}<br />
</nowiki></pre><br />
<br />
If that doesn't work, try a service restart with:<br />
<pre><nowiki><br />
stop LunaSysMgr && start LunaSysMgr<br />
</nowiki></pre><br />
<br />
And if all else fails, simply reboot:<br />
<pre><nowiki><br />
reboot<br />
</nowiki></pre><br />
<br />
==Removing all patches==<br />
<br />
Before you accept an OTA update, you should remove any patches you have applied. Luckily, using quilt makes this very easy.<br />
<br />
* Remove all patches:<br />
<pre><nowiki><br />
cd / # It is *very* important to be in the / directory when you run quilt.<br />
quilt pop -a<br />
</nowiki></pre><br />
<br />
==Reapplying all patches==<br />
<br />
After your OTA update is complete, you will want to reapply any patches you have selected. This may or may not go smoothly.<br />
<br />
* Apply all patches:<br />
<pre><nowiki><br />
cd / # It is *very* important to be in the / directory when you run quilt.<br />
quilt push -a<br />
</nowiki></pre><br />
<br />
* Put your Pre back in to Read Only mode<br />
<pre><nowiki><br />
mount -o remount,ro /<br />
</nowiki></pre><br />
<br />
==Information for developing patches==<br />
<br />
===Getting Authenticated with gitorious.org===<br />
Before you can commit to gitorious you need to [http://gitorious.org/users/new create an account]. <br />
<br />
Next you'll need to generate a public key and share that with gitorious.org, your public key is how gitorious.org authenticates you and checks if have the permissions required to do a commit to a given repository.<br />
<br />
Getting your key on window<br />
* Download [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuTTYgen] and [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html Pageant]<br />
<br />
--Gitorious.org [http://gitorious.org/about/faq gitorious.org recommends] you use [http://code.google.com/p/msysgit/ msysGit].--<br />
<br />
* On Windows use [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuTTYgen] to generate a public/private key pair. <br />
<br />
<pre><nowiki><br />
Key -> SSH-2 RSA KEY<br />
Key -> Generate key pair<br />
</nowiki></pre><br />
After some wiggling of the mouse your keys will be generated. You should fill in the //Key passphrase// and it's confirmation to secure you key. Save off the public and private key pairs to your user folder.<br />
<br />
* After which you will need to run [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html Pageant] on your pc. Pageant holds your private key in memory for PuTTY to use.<br />
<br />
* To commit changes to gitorious.org from the pre you will need to install openssh on the device.<br />
<pre><nowiki><br />
ipkg-opt update<br />
ipkg-opt install openssh # since dropbear doesn't do agent forwarding, you need to use openssh<br />
</nowiki></pre><br />
<br />
Actually, it is possible to use dropbear with git but requires [http://tumblelog.jauderho.com/post/151678345/using-dropbear-with-git some hackery].<br />
<br />
As an alternative, if you don't use the keys for anything else you could just generate them on the pre after installing open-ssh<br />
<pre><nowiki><br />
sudo ssh-keygen -t rsa # follow the prompts<br />
cat ~/.ssh/id_rsa.pub # display the public key you need to paste into gitorious<br />
</nowiki></pre><br />
<br />
* Don't forget to upload your public key to gitorious.org after generating it.<br />
Now you should be able to follow the steps below and contribute your code to gitorious.org.<br />
<br />
* If you find yourself getting errors about your public key when you try to push changes, check to make sure your keys are under /var/home/root/.ssh/ and not under your regular user account.<br />
<br />
===Creating a patch===<br />
<br />
* Before making any changes to files:<br />
<br />
<pre><nowiki><br />
cd / # It is *very* important to be in the / directory when you run quilt.<br />
quilt new patch_name.patch<br />
quilt add /usr/palm/applications/com.palm.app.appYouWantToMod/app/controllers/mod-assistant.js<br />
quilt add /usr/palm/applications/com.palm.app.appYouWantToMod/app/controllers/mod2-assistant.js<br />
</nowiki></pre><br />
<br />
* Now you can make changes on the Pre using vi/nano/joe/whatever, or sftp files to your machine and make changes. Make sure any file you change has been added in the above step.<br />
<br />
<pre><nowiki><br />
quilt files # view files that are being tracked<br />
quilt header -e # add a header to the patch to describe it (please do this!)<br />
</nowiki></pre><br />
<br />
* Once you are finished and ready to create a patch<br />
<br />
<pre><nowiki><br />
quilt refresh # this will create/update the /opt/src/patches/patch_name.patch file<br />
</nowiki></pre><br />
<br />
===Pushing the change back to gitorious.org===<br />
<br />
* copy the patch into the modification tree you cloned above<br />
<br />
<pre><nowiki><br />
mkdir /opt/src/modifications/application_name # You need to change application_name to the leaf of the palm application id.<br />
cp /opt/src/patches/patch_name.patch /opt/src/modifications/application_name/patch_name.patch<br />
</nowiki></pre><br />
<br />
* Identify yourself in git (use the user you have setup at gitorious.org)<br />
<br />
<pre><nowiki><br />
cd /opt/src/modifications<br />
git config --global user.name "user"<br />
git config --global user.email "youremail@example.com"<br />
</nowiki></pre><br />
<br />
* Commit your changes to your local git<br />
<br />
<pre><nowiki><br />
git add application_name/patch_name.patch<br />
git commit<br />
</nowiki></pre><br />
<br />
* Since we did a clone the first time, we need to recreate the origin:<br />
<br />
<pre><nowiki><br />
git remote rm origin # (if you did a clone, we have to replace the origin)<br />
git remote add origin git@gitorious.org:webos-internals/modifications.git<br />
</nowiki></pre><br />
<br />
* Finally, push your changes up to gitorious.org<br />
<br />
<pre><nowiki><br />
git push origin master # first time<br />
git push # any future pushes<br />
</nowiki></pre><br />
<br />
* If the push does not work, try to debug the ssh connection<br />
<pre><nowiki><br />
/opt/bin/ssh -v git@gitorious.org<br />
</nowiki></pre><br />
<br />
==Extended, annotated sample session with quilt==<br />
* First, we just need to setup a file to muck with<br />
<pre><nowiki><br />
root@castle:/# cd /<br />
root@castle:/# echo "Original file" > /usr/test<br />
root@castle:/# echo "2nd lien" >> /usr/test<br />
root@castle:/# echo "3rd ilne" >> /usr/test<br />
root@castle:/# echo "last line" >> /usr/test<br />
</nowiki></pre><br />
* Start a new patch (normally you'll want to use patch_name.patch, I just wanted a shortened name)<br />
<pre><nowiki><br />
root@castle:/# quilt new p1<br />
Patch /opt/src/patches/p1 is now on top<br />
</nowiki></pre><br />
* You must quilt add any files that you are going to edit or create '''before''' you edit or create them.<br />
<pre><nowiki><br />
root@castle:/# quilt add /usr/test<br />
File /usr/test added to patch /opt/src/patches/p1<br />
</nowiki></pre><br />
* Just using sed to correct the spelling on the 2nd line<br />
<pre><nowiki><br />
root@castle:/# sed -i -e 's/lien/line/' /usr/test<br />
</nowiki></pre><br />
* quilt refresh actually finds what you have changed and writes it to the patch file (at this point, you can use git to push your changes)<br />
<pre><nowiki><br />
root@castle:/# quilt refresh<br />
Refreshed patch /opt/src/patches/p1<br />
</nowiki></pre><br />
* Just for fun, let's do it again<br />
<pre><nowiki><br />
root@castle:/# quilt new p2<br />
Patch /opt/src/patches/p2 is now on top<br />
</nowiki></pre><br />
* Again, add file, make some changes, refresh to update the patch.<br />
<pre><nowiki><br />
root@castle:/# quilt add /usr/test<br />
File /usr/test added to patch /opt/src/patches/p2<br />
root@castle:/# sed -i -e 's/ilne/line/' /usr/test<br />
root@castle:/# quilt refresh<br />
Refreshed patch /opt/src/patches/p2<br />
</nowiki></pre><br />
* Just an example of rolling back changes<br />
<pre><nowiki><br />
root@castle:/# quilt pop<br />
Removing patch /opt/src/patches/p2<br />
Restoring usr/test<br />
<br />
Now at patch /opt/src/patches/p1<br />
root@castle:/# quilt pop<br />
Removing patch /opt/src/patches/p1<br />
Restoring usr/test<br />
<br />
Now at patch /opt/src/patches/enable-browser-downloads.patch<br />
root@castle:/# cat /usr/test<br />
Original file<br />
2nd lien<br />
3rd ilne<br />
last line<br />
</nowiki></pre><br />
* delete will delete the patch from your series, but leave the actual patch file in /opt/src/patches (so you could import it later)<br />
<pre><nowiki><br />
root@castle:/# quilt delete p1<br />
Removed patch /opt/src/patches/p1<br />
</nowiki></pre><br />
* Since we removed p1, push will now apply p2. However, since p2 was applied against p1 originally, p2 will report an error. If the changes are too significant, you can force with -f, but you should carefully inspect the resulting files.<br />
<pre><nowiki><br />
root@castle:/# quilt push<br />
Applying patch /opt/src/patches/p2<br />
patching file usr/test<br />
Hunk #1 succeeded at 1 with fuzz 2.<br />
<br />
Now at patch /opt/src/patches/p2<br />
</nowiki></pre><br />
* If we want, we can refresh the patch so that future users of the patch do not receive the "fuzz" warning.<br />
<pre><nowiki><br />
root@castle:/# quilt refresh<br />
Refreshed patch /opt/src/patches/p2<br />
root@castle:/# cat /usr/test<br />
Original file<br />
2nd lien<br />
3rd line<br />
last line<br />
</nowiki></pre><br />
* cleanup<br />
<pre><nowiki><br />
root@castle:/# rm /usr/test<br />
</nowiki></pre><br />
<br />
==Background info==<br />
<br />
* [http://pkg-perl.alioth.debian.org/howto/quilt.html quilt]<br />
<br />
==Script for Updating/Installing Patches==<br />
<br />
I just wanted to share the following script that I just finished testing out. It's only been tested on my Pre so far, as I don't have access to any others.. It just updates the patch list, prints out available patches, then lets you choose which to apply.<br />
<br />
<pre><nowiki><br />
#!/opt/bin/bash<br />
<br />
cd /opt/src/modifications<br />
tput clear<br />
echo Updating list...<br />
git pull<br />
tput clear<br />
cd /<br />
<br />
a=0<br />
for inputline in $(find /opt/src/modifications -name *.patch | sort)<br />
do<br />
a=$(($a+1));<br />
line="$(echo $inputline)"<br />
MYARRAY[$a]="$line"<br />
echo "${a}${line}" | awk -F "/" 'sub(".patch","",$6) {printf "%-3s %-15s %s\n", $1, $5, $6}'<br />
done<br />
echo "q quit"<br />
<br />
x=$(($a+1));<br />
until [ -n "$opt" ] ; do<br />
read -p "Enter the line number for patch to apply [1 - $a] " opt<br />
if [ "$opt" = "q" ] ; then<br />
exit 0<br />
fi<br />
if [ "$opt" -lt "$x" 2> /dev/null ] && [ "$opt" -gt 0 2> /dev/null ] ; then<br />
true<br />
else<br />
opt=""<br />
fi<br />
done<br />
<br />
tput clear<br />
cd /<br />
quilt import ${MYARRAY[$opt]}<br />
quilt push<br />
luna-send -n 1 palm://com.palm.applicationManager/rescan {}<br />
<br />
</nowiki></pre></div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Applying_Patches&diff=4109Applying Patches2009-08-09T07:33:53Z<p>JackieRipper: </p>
<hr />
<div>==Introduction==<br />
<br />
We cannot legally redistribute Palm source code (it is copyrighted code, and is not released under an open source license) therefore we need to manage our modifications as patches. Since these patches will come from many different places, and will need to be removed before each OTA update and then reapplied after-wards, we need a procedure and tools for doing this. This page documents this procedure.<br />
<br />
==Upgrading from quilt to quilt-lite==<br />
<br />
If you have performed these instructions before the 8th Aug 2009, you will have installed a very heavyweight version of the quilt package which has a dependency on a very large perl package.<br />
<br />
This dependency has been removed in a new quilt-lite package, which saves 25MB of space in /var as a result.<br />
<br />
You can switch over to it as follows:<br />
<br />
* ipkg-opt update<br />
* ipkg-opt remove quilt perl libdb gdbm<br />
* ipkg-opt install quilt-lite<br />
<br />
Alternatively, the setup script below will prompt to uninstall quilt, perl, libdb and gdbm, and install quilt-lite, if quilt is installed.<br />
<br />
==Setup Procedure (Scripted)==<br />
The process of setting up quilt has been scripted. The script performs the following actions:<br />
* Installs (or upgrades) git and any dependencies<br />
* Installs (or upgrades) quilt (actually quilt-lite, a version of quilt that does not depend on perl) and any dependencies<br />
* Configures quilt to store patches in /opt/src/patches<br />
* Creates (or updates) a local clone of the webos-internals modifications repository<br />
<br />
Each step is only performed if necessary. Please note that ipkg-opt needs to be installed. The instructions are found [[Next_steps|here]].<br />
<br />
To get run the script, log into your Pre, gain root privileges and run the following commands:<br />
<pre><nowiki><br />
cd /tmp<br />
wget http://gitorious.org/webos-internals/bootstrap/blobs/raw/master/quilt-bootstrap.sh<br />
sh quilt-bootstrap.sh<br />
</nowiki></pre><br />
<br />
==Setup Procedure (Manual Process)==<br />
(Note: Even though you may have previously installed the optware quilt patch manager, it won't damage anything to follow the Setup procedure. Alternatively, if you KNOW FOR SURE these are installed and your packages are up-to-date, you can skip to Importing and Applying Patches).<br />
<br />
* Log into your Pre, and gain root privileges. (Note: This command is not required when using the emulator)<br />
<pre><nowiki><br />
sudo -i # Yes, the -i is important. <br />
</nowiki></pre><br />
<br />
* Put your Pre in to Read Write Mode<br />
<pre><nowiki><br />
mount -o remount,rw /<br />
</nowiki></pre><br />
<br />
* Ensure that you are set up for optware package installations, and make sure you have the latest package index:<br />
<pre><nowiki><br />
ipkg-opt update<br />
</nowiki></pre><br />
<br />
* Install the 'quilt-lite' package, which will be used to manage the patches you apply, and the 'git' package, which will be used to download existing patches from the modifications repository:<br />
<pre><nowiki><br />
ipkg-opt install quilt-lite git<br />
</nowiki></pre><br />
<br />
(If you already have those packages installed, repeating this step will not cause any harm.)<br />
<br />
* Create a directory in which 'quilt' will manage your chosen modifications:<br />
<pre><nowiki><br />
mkdir -p /opt/src/patches<br />
</nowiki></pre><br />
<br />
* Edit /opt/etc/quilt.quiltrc to point quilt to that directory:<br />
<pre><nowiki><br />
sed -ire 's|^[\s#]*QUILT_PATCHES=.*|QUILT_PATCHES=/opt/src/patches|' /opt/etc/quilt.quiltrc<br />
</nowiki></pre><br />
<br />
* Clone the webos-internals modifications repository:<br />
<pre><nowiki><br />
cd /opt/src<br />
git clone git://gitorious.org/webos-internals/modifications.git<br />
</nowiki></pre><br />
<br />
==Importing and Applying Patches==<br />
<br />
* Ensure your list of modifications is up to date<br />
<pre><nowiki><br />
cd /opt/src/modifications<br />
git pull<br />
</nowiki></pre><br />
** If you find yourself getting errors when you try to pull with the above command then you will need to modify your .git/config file<br />
<pre><nowiki><br />
sudo vi /opt/src/modifications/.git/config<br />
</nowiki></pre><br />
<br />
** Your [master] section should look like the following<br />
<pre><nowiki><br />
[branch "master"]<br />
remote = origin<br />
merge = refs/heads/master <br />
</nowiki></pre><br />
<br />
* Browse the set of available patches. Each patch should have a description at the top.<br />
<pre><nowiki><br />
find /opt/src/modifications -name *.patch<br />
</nowiki></pre><br />
<br />
* Choose a patch from the modifications repository and import it into your own patches directory:<br />
<pre><nowiki><br />
cd / # It is *very* important to be in the / directory when you run quilt.<br />
quilt import /opt/src/modifications/application_name/patch_name.patch # Note that you need to replace application_name and patch_name here.<br />
</nowiki></pre><br />
<br />
* Verify that quilt has imported the patch successfully:<br />
<pre><nowiki><br />
# You should still be in the / directory to run quilt.<br />
quilt series # you should see your patch listed in here<br />
</nowiki></pre><br />
<br />
* Instruct quilt to apply your patch<br />
<pre><nowiki><br />
# You should still be in the / directory to run quilt.<br />
quilt push<br />
# Use this to push all patches at once.<br />
quilt push -a<br />
</nowiki></pre><br />
<br />
* If everything worked correctly, the patch should now be applied. You will usually need to restart the luna service on the Pre to see the effect of patches to applications. Here's how to initiate a rescan.<br />
<pre><nowiki><br />
luna-send -n 1 palm://com.palm.applicationManager/rescan {}<br />
</nowiki></pre><br />
<br />
If that doesn't work, try a service restart with:<br />
<pre><nowiki><br />
stop LunaSysMgr && start LunaSysMgr<br />
</nowiki></pre><br />
<br />
And if all else fails, simply reboot:<br />
<pre><nowiki><br />
reboot<br />
</nowiki></pre><br />
<br />
==Removing all patches==<br />
<br />
Before you accept an OTA update, you should remove any patches you have applied. Luckily, using quilt makes this very easy.<br />
<br />
* Remove all patches:<br />
<pre><nowiki><br />
cd / # It is *very* important to be in the / directory when you run quilt.<br />
quilt pop -a<br />
</nowiki></pre><br />
<br />
==Reapplying all patches==<br />
<br />
After your OTA update is complete, you will want to reapply any patches you have selected. This may or may not go smoothly.<br />
<br />
* Apply all patches:<br />
<pre><nowiki><br />
cd / # It is *very* important to be in the / directory when you run quilt.<br />
quilt push -a<br />
</nowiki></pre><br />
<br />
* Put your Pre back in to Read Only mode<br />
<pre><nowiki><br />
mount -o remount,ro /<br />
</nowiki></pre><br />
<br />
==Information for developing patches==<br />
<br />
===Getting Authenticated with gitorious.org===<br />
Before you can commit to gitorious you need to [http://gitorious.org/users/new create an account]. <br />
<br />
Next you'll need to generate a public key and share that with gitorious.org, your public key is how gitorious.org authenticates you and checks if have the permissions required to do a commit to a given repository.<br />
<br />
Getting your key on window<br />
* Download [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuTTYgen] and [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html Pageant]<br />
<br />
--Gitorious.org [http://gitorious.org/about/faq gitorious.org recommends] you use [http://code.google.com/p/msysgit/ msysGit].--<br />
<br />
* On Windows use [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuTTYgen] to generate a public/private key pair. <br />
<br />
<pre><nowiki><br />
Key -> SSH-2 RSA KEY<br />
Key -> Generate key pair<br />
</nowiki></pre><br />
After some wiggling of the mouse your keys will be generated. You should fill in the //Key passphrase// and it's confirmation to secure you key. Save off the public and private key pairs to your user folder.<br />
<br />
* After which you will need to run [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html Pageant] on your pc. Pageant holds your private key in memory for PuTTY to use.<br />
<br />
* To commit changes to gitorious.org from the pre you will need to install openssh on the device.<br />
<pre><nowiki><br />
ipkg-opt update<br />
ipkg-opt install openssh # since dropbear doesn't do agent forwarding, you need to use openssh<br />
</nowiki></pre><br />
<br />
Actually, it is possible to use dropbear with git but requires [http://tumblelog.jauderho.com/post/151678345/using-dropbear-with-git some hackery].<br />
<br />
As an alternative, if you don't use the keys for anything else you could just generate them on the pre after installing open-ssh<br />
<pre><nowiki><br />
sudo ssh-keygen -t rsa # follow the prompts<br />
cat ~/.ssh/id_rsa.pub # display the public key you need to paste into gitorious<br />
</nowiki></pre><br />
<br />
* Don't forget to upload your public key to gitorious.org after generating it.<br />
Now you should be able to follow the steps below and contribute your code to gitorious.org.<br />
<br />
* If you find yourself getting errors about your public key when you try to push changes, check to make sure your keys are under /var/home/root/.ssh/ and not under your regular user account.<br />
<br />
===Creating a patch===<br />
<br />
* Before making any changes to files:<br />
<br />
<pre><nowiki><br />
cd / # It is *very* important to be in the / directory when you run quilt.<br />
quilt new patch_name.patch<br />
quilt add /usr/palm/applications/com.palm.app.appYouWantToMod/app/controllers/mod-assistant.js<br />
quilt add /usr/palm/applications/com.palm.app.appYouWantToMod/app/controllers/mod2-assistant.js<br />
</nowiki></pre><br />
<br />
* Now you can make changes on the Pre using vi/nano/joe/whatever, or sftp files to your machine and make changes. Make sure any file you change has been added in the above step.<br />
<br />
<pre><nowiki><br />
quilt files # view files that are being tracked<br />
quilt header -e # add a header to the patch to describe it (please do this!)<br />
</nowiki></pre><br />
<br />
* Once you are finished and ready to create a patch<br />
<br />
<pre><nowiki><br />
quilt refresh # this will create/update the /opt/src/patches/patch_name.patch file<br />
</nowiki></pre><br />
<br />
===Pushing the change back to gitorious.org===<br />
<br />
* copy the patch into the modification tree you cloned above<br />
<br />
<pre><nowiki><br />
mkdir /opt/src/modifications/application_name # You need to change application_name to the leaf of the palm application id.<br />
cp /opt/src/patches/patch_name.patch /opt/src/modifications/application_name/patch_name.patch<br />
</nowiki></pre><br />
<br />
* Identify yourself in git (use the user you have setup at gitorious.org)<br />
<br />
<pre><nowiki><br />
cd /opt/src/modifications<br />
git config --global user.name "user"<br />
git config --global user.email "youremail@example.com"<br />
</nowiki></pre><br />
<br />
* Commit your changes to your local git<br />
<br />
<pre><nowiki><br />
git add application_name/patch_name.patch<br />
git commit<br />
</nowiki></pre><br />
<br />
* Since we did a clone the first time, we need to recreate the origin:<br />
<br />
<pre><nowiki><br />
git remote rm origin # (if you did a clone, we have to replace the origin)<br />
git remote add origin git@gitorious.org:webos-internals/modifications.git<br />
</nowiki></pre><br />
<br />
* Finally, push your changes up to gitorious.org<br />
<br />
<pre><nowiki><br />
git push origin master # first time<br />
git push # any future pushes<br />
</nowiki></pre><br />
<br />
* If the push does not work, try to debug the ssh connection<br />
<pre><nowiki><br />
/opt/bin/ssh -v git@gitorious.org<br />
</nowiki></pre><br />
<br />
==Extended, annotated sample session with quilt==<br />
* First, we just need to setup a file to muck with<br />
<pre><nowiki><br />
root@castle:/# cd /<br />
root@castle:/# echo "Original file" > /usr/test<br />
root@castle:/# echo "2nd lien" >> /usr/test<br />
root@castle:/# echo "3rd ilne" >> /usr/test<br />
root@castle:/# echo "last line" >> /usr/test<br />
</nowiki></pre><br />
* Start a new patch (normally you'll want to use patch_name.patch, I just wanted a shortened name)<br />
<pre><nowiki><br />
root@castle:/# quilt new p1<br />
Patch /opt/src/patches/p1 is now on top<br />
</nowiki></pre><br />
* You must quilt add any files that you are going to edit or create '''before''' you edit or create them.<br />
<pre><nowiki><br />
root@castle:/# quilt add /usr/test<br />
File /usr/test added to patch /opt/src/patches/p1<br />
</nowiki></pre><br />
* Just using sed to correct the spelling on the 2nd line<br />
<pre><nowiki><br />
root@castle:/# sed -i -e 's/lien/line/' /usr/test<br />
</nowiki></pre><br />
* quilt refresh actually finds what you have changed and writes it to the patch file (at this point, you can use git to push your changes)<br />
<pre><nowiki><br />
root@castle:/# quilt refresh<br />
Refreshed patch /opt/src/patches/p1<br />
</nowiki></pre><br />
* Just for fun, let's do it again<br />
<pre><nowiki><br />
root@castle:/# quilt new p2<br />
Patch /opt/src/patches/p2 is now on top<br />
</nowiki></pre><br />
* Again, add file, make some changes, refresh to update the patch.<br />
<pre><nowiki><br />
root@castle:/# quilt add /usr/test<br />
File /usr/test added to patch /opt/src/patches/p2<br />
root@castle:/# sed -i -e 's/ilne/line/' /usr/test<br />
root@castle:/# quilt refresh<br />
Refreshed patch /opt/src/patches/p2<br />
</nowiki></pre><br />
* Just an example of rolling back changes<br />
<pre><nowiki><br />
root@castle:/# quilt pop<br />
Removing patch /opt/src/patches/p2<br />
Restoring usr/test<br />
<br />
Now at patch /opt/src/patches/p1<br />
root@castle:/# quilt pop<br />
Removing patch /opt/src/patches/p1<br />
Restoring usr/test<br />
<br />
Now at patch /opt/src/patches/enable-browser-downloads.patch<br />
root@castle:/# cat /usr/test<br />
Original file<br />
2nd lien<br />
3rd ilne<br />
last line<br />
</nowiki></pre><br />
* delete will delete the patch from your series, but leave the actual patch file in /opt/src/patches (so you could import it later)<br />
<pre><nowiki><br />
root@castle:/# quilt delete p1<br />
Removed patch /opt/src/patches/p1<br />
</nowiki></pre><br />
* Since we removed p1, push will now apply p2. However, since p2 was applied against p1 originally, p2 will report an error. If the changes are too significant, you can force with -f, but you should carefully inspect the resulting files.<br />
<pre><nowiki><br />
root@castle:/# quilt push<br />
Applying patch /opt/src/patches/p2<br />
patching file usr/test<br />
Hunk #1 succeeded at 1 with fuzz 2.<br />
<br />
Now at patch /opt/src/patches/p2<br />
</nowiki></pre><br />
* If we want, we can refresh the patch so that future users of the patch do not receive the "fuzz" warning.<br />
<pre><nowiki><br />
root@castle:/# quilt refresh<br />
Refreshed patch /opt/src/patches/p2<br />
root@castle:/# cat /usr/test<br />
Original file<br />
2nd lien<br />
3rd line<br />
last line<br />
</nowiki></pre><br />
* cleanup<br />
<pre><nowiki><br />
root@castle:/# rm /usr/test<br />
</nowiki></pre><br />
<br />
==Background info==<br />
<br />
* [http://pkg-perl.alioth.debian.org/howto/quilt.html quilt]<br />
<br />
==Script for Updating/Installing Patches==<br />
<br />
I just wanted to share the following script that I just finished testing out. It's only been tested on my Pre so far, as I don't have access to any others.. It just updates the patch list, prints out available patches, then lets you choose which to apply.<br />
<br />
<pre><nowiki><br />
cd /opt/src/modifications<br />
tput clear<br />
echo Updating list...<br />
git pull<br />
tput clear<br />
cd /<br />
<br />
a=0<br />
for inputline in $(find /opt/src/modifications -name *.patch | sort)<br />
do<br />
a=$(($a+1));<br />
line="$(echo $inputline)"<br />
MYARRAY[$a]="$line"<br />
echo "${a}${line}" | awk -F "/" 'sub(".patch","",$6) {printf "%-3s %-15s %s\n", $1, $5, $6}'<br />
done<br />
echo "q quit"<br />
<br />
x=$(($a+1));<br />
until [ -n "$opt" ] ; do<br />
read -p "Enter the line number for patch to apply [1 - $a] " opt<br />
if [ "$opt" = "q" ] ; then<br />
exit 0<br />
fi<br />
if [ "$opt" -lt "$x" 2> /dev/null ] && [ "$opt" -gt 0 2> /dev/null ] ; then<br />
true<br />
else<br />
opt=""<br />
fi<br />
done<br />
<br />
tput clear<br />
cd /<br />
quilt import ${MYARRAY[$opt]}<br />
quilt push<br />
luna-send -n 1 palm://com.palm.applicationManager/rescan {}<br />
<br />
</nowiki></pre></div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Portal:Patches_to_webOS&diff=3312Portal:Patches to webOS2009-07-31T18:32:10Z<p>JackieRipper: </p>
<hr />
<div>__notoc__<br />
{{portal-header<br />
|This page lists patches to webOS existing apps which modify the behavior as shipped. '''Note''' that these patches may be version specific and may be broken by future webOS updates. Proceed with caution. If you get one that works please move it under the correct column and section and title the page:<br />
'''"Patch [application] [description]"'''<br />
}}<br />
This page is undergoing structuring please contribute moving or adding new entries under the appropriate headings. For now put pages in alphabetical order. Each page should contain at least the basic headings<br />
*1. '''Introduction''': A brief description to introduce people to the patch.<br />
**1.1 '''Usage''':An explanation if it is needed on how to use the modification see Add/Delete Pages in the Launcher as an example.<br />
*2. '''Editing Process''': Step by step instructions to manually edit. <br />
*3. '''Patching Process''': Details for making the edits with a patch file and pointing people to the [[Applying Patches]] page if the patch is also provided in the webos-internals gitorious repository.<br />
<br />
{{portal-three-columns<br />
|column1= <br />
===webOS Update Information===<br />
* [[Update 1.1.0|Update 1.1]]<br />
* [[Update 1.0.4|Update 1.0.4]] <br />
* [[Update 1.0.3|Update 1.0.3]]<br />
<br />
===Patches that Need Work===<br />
* [[Bugs]]<br />
<br />
|column2=<br />
===Patch Ideas to be Created or in Progress===<br />
<br />
* [[Add_Ability_To_Choose_Snooze_Length|Add Ability to Choose Snooze Length]]<br />
* [[Changing_clipboard_data_from_the_shell|Changing Clipboard Data from the Shell]]<br />
* [[Development_%26_Tweak_Ideas | Development & Tweaking Ideas]]<br />
* [[Longer Vibrate|Longer Vibrate]]<br />
* [[More_Calculator_Functions|Accessing additional built-in calculator functions]]<br />
<br />
|column3=<br />
===Notes===<br />
These modifications lack a patch process, please add one to the details to the page and have it added to the webOS-internals gitorious repository. Info for the repository is on [[Applying Patches]].<br />
<br />
*Empty<br />
}}<br />
{{portal-three-columns<br />
|column1= <br />
==Patches to webOS apps==<br />
===webOS 1.1 OK===<br />
<br />
* [[Always_Show_Details_of_New_Tasks|Always Show Details of New Tasks]]<br />
* [[Patch Browser Global Search Addons|Browser: Global Search Addons]]<br />
* [[Bookmarking_MediaPlayer|Bookmarking MediaPlayer]]<br />
* [[Camera Mod Shutter Sound On-Off Button]]<br />
* [[Camera Mod 10 Second Countdown Timer]]<br />
* [[Patch Clock Enabling the Hidden Theme|Clock: Enabling the Hidden Theme]]<br />
* [[Confirm Deletion on Email|Confirm Deletion on Email]]<br />
* [[Patch Email Change Default Font for Replies-Forwards from Navy to Black|Email: Change Default Font for Replies/Forwards from Navy to Black]]<br />
* [[GPS Tracking|GPS Tracking]]<br />
* [[Patch Launcher Add or Delete Pages|Launcher: Add/Delete Pages]]<br />
* [[Patch Launcher Hide-Delete The NASCAR App|Launcher: Hide/Delete The NASCAR App]]<br />
* [[Patch Launcher Unhide the DeveloperMode App|Launcher: Unhide the DeveloperMode App]]<br />
* [[Patch Messaging Character Counter|Messaging: Character Counter]]<br />
* [[Patch Messaging Forward Messages|Messaging: Forward Messages]]<br />
* [[Patch Messaging New Cards For Each Conversation|Messaging: New Cards For Each Conversation]]<br />
* [[Patch MCraig Enabling Personals Category|mCraig: Enabling Personals Category]]<br />
* [[Patch Phone Disable Missed-Dropped Call Sound|Phone: Disable Missed-Dropped Call Sound]]<br />
* [[Patch Phone Edit Dialer Theme|Phone: Edit Dialer Theme]]<br />
* [[Patch Phone Editing the Lock Screen|Phone: Editing the Lock Screen]]<br />
* [[Using Volume Buttons to Take a Picture|Using Volume Buttons to Take a Picture]]<br />
* [[Changing Alarm Clock Button Order and Snooze Duration]]<br />
* [[Download Amazon Music over EVDO]]<br />
* [[Change_Running_Late_Email|Change "Running Late" Email]]<br />
<br />
===Fixed in 1.1 - No longer needed===<br />
* [[Patch Email Fix Broken Formatting|Email: Fix Broken Formatting for E-mails]]<br />
<br />
===Not 1.1 compatible===<br />
* [[Camera_Remote_View|Camera Remote View]]<br />
* [[Downloading From The Browser|Downloading From The Browser]] <br />
* [[Enable Landscape Viewing in Email|Enable Landscape Viewing in Email]] <br />
* [[Fix Email Attachments|Fix Email Attachments]] <br />
<br />
|column2=<br />
==Patches not part of a specific app==<br />
===webOS 1.1 OK===<br />
* [[Boot_Themes|Boot Themes]]<br />
* [[Brightness]]<br />
* [[Bypassing_Activation|Bypassing Activation]]<br />
* [[Change_Carrier_String|Change Carrier String]]<br />
* [[Changing_the_%22Turn_off_after_X%22_time|Changing the "Turn off after X" Time]]<br />
* [[CPU Frequency or Voltage Scaling|CPU Frequency or Voltage Scaling]]<br />
* [[Disable Charging Event Alerts Sounds|Disable Charging Event Alerts Sounds]]<br />
* [[Graphics]]<br />
* [[Logging information from within scripts|Logging information from within scripts]]<br />
* [[Message Sound|Message Sound]]<br />
* [[Modifying a Stock App While Keeping the Original|Modifying a Stock App While Keeping the Original]] <br />
* [[Add_Words_to_AutoCorrect_Dictionary|Modify AutoCorrect Dictionary]]<br />
* [[Radio_Power_Switch|Phone On/Off Switch]]<br />
* [[Random Wallpaper Switching|Random Wallpaper Switching]]<br />
* [[Reverse Tunnel|Reverse Tunnel]] <br />
* [[Roam Control|Roam Control]]<br />
* [[Show_Actual_Battery_Percent | Show Actual Battery Percentage]]<br />
<br />
===Fixed in 1.1 - No longer needed===<br />
* Empty<br />
<br />
===Not 1.1 compatible===<br />
* [[Email App Patch to Prompt for IPK Installation|Email App Patch to Prompt for IPK Installation]] <br />
<br />
|column3=<br />
==== The following have not been checked for compatibility with webOS 1.1. ====<br />
<br />
* [[Adding Timestamps to All Received Messages]]<br />
* [[Browser_Plugins|Browser Plugins]]<br />
* [[Camera Mod Alternate Sound Disable]]<br />
* [[Change_Enter_To_Create_Newline_Instead_of_Send_Message|Change Enter to Create Newline Instead of Send Message]]<br />
* [[Change_the_default_notification.wav_Sound|Change the Default notification.wav Sound]]<br />
* [[Changes_Alert/Notification_Sounds|Changes Alert/Notification Sounds]]<br />
* [[Display_Full_Status_Messages(Messenger)|Display Full Status Messages(Messenger)]] <br />
* [[Hourly Chime|Hourly Chime]] <br />
* [[Ignore 'A', 'An', and 'The' In Artist and Album names|Ignore 'A', 'An', and 'The' In Artist and Album names]] <br />
* [[Installing Homebrew Apps With A Rooted Pre|Installing Homebrew Apps With A Linux Accessed Pre]] <br />
* [[Keep Phone From Entering Standby While in Remote Session]]<br />
* [[Messaging Mod Force Offline Send Without Dialog]]<br />
* [[Modifying Stock Applications|Modifying Stock Applications]] <br />
* [[My notification|My notification]] <br />
* [[Myavatar In Messaging App|Myavatar In Messaging App]] <br />
* [[Packaging Homebrew Apps for Stock Pre without Rooting|Packaging Homebrew Apps for Stock Pre without Accessing Linux]] <br />
* [[Patch PDF Viewer|PDF Viewer]]<br />
* [[Photos Slideshow|Photos Slideshow]] <br />
* [[Screenlock On When Connected|Stay On While Connected]]<br />
* [[Show allday events in calendar month view]] <br />
* [[Show Call Duration in the Call Log]] <br />
* [[Patch Sudoku Disable Zooming|Sudoku: Disable Zooming]]<br />
* [[Turning Off Dialpad Noise]]<br />
<br />
<br />
}}</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Patch_Phone_Editing_the_Lock_Screen&diff=3113Patch Phone Editing the Lock Screen2009-07-30T16:54:46Z<p>JackieRipper: </p>
<hr />
<div>[[Image:Background-editing.png|right]]<br />
<br />
== This page is for info about changing the background of the Dialer Application and the Lock Screen.==<br />
<br />
It is still in development, so please correct any errors.<br />
<br />
=== Editing the Dialer Screen===<br />
<br />
We can change that green background of the dialer screen pretty easily. We just need to change three files and reboot the Pre.<br />
<br />
==== Since this is a simple change that several people may want to accomplish, I'm going to be very granular about how to perform this task.====<br />
<br />
This does require [[Portal:Accessing_Linux | access to the Pre's operating system]]. Please follow these steps first. Then open a SSH window to the Pre (either using "ssh -p 222 LOGIN_NAME@PALM_PRE_IP" or use a tool like PuTTY in Windows) You can find more information about this in the accessing linux page or by searching Google.<br />
<br />
I started with a simple change because I don't have the Photoshop skills needed, I just made the current images black and white using Paint.net. <br />
Here are the steps I took:<br />
<br />
Open the SSH session and we'll open this directory (cd - change directory) and look at it's contents (ls - listing).<br />
<br />
<pre><nowiki><br />
cd /usr/palm/applications/com.palm.app.phone/images/<br />
ls<br />
</nowiki></pre><br />
<br />
You'll see a long list of files that are in this directory, we'll only use three today, but more editing may come in the future.<br />
We'll backup the current image first incase we need to revert back to them (cp - copy).<br />
<br />
<pre><nowiki><br />
cp backdrop-phone.png backdrop-phone.png.old<br />
cp backdrop-phone-scroll-fade.png backdrop-phone-scroll-fade.png.old<br />
cp list-section-line.png list-section-line.png.old<br />
</nowiki></pre><br />
<br />
If we do another listing (ls) we'll see the three files we just copied to make backups.<br />
<br />
Next we'll need to copy (cp) the files to the location of the USB drive so that we'll be able to edit these files:<br />
<br />
<pre><nowiki><br />
cp /usr/palm/applications/com.palm.app.phone/images/backdrop-phone.png /media/internal/<br />
cp /usr/palm/applications/com.palm.app.phone/images/backdrop-phone-scroll-fade.png /media/internal/<br />
cp /usr/palm/applications/com.palm.app.phone/images/list-section-line.png /media/internal/<br />
</nowiki></pre><br />
<br />
Now click on the USB icon on the Pre's notification area, switch to USB Storage mode.<br />
<br />
You can now copy the files off of the Pre and edit them any way you want, just make sure they have the same properties as the orig (transparency, size, file extention, etc). I didn't create these image below, they are just edited from the Palm Pre. You can use any 360 x 420 PNG to achieve these results.<br />
<br />
Once they are edit to your liking, copy the files back to the Pre in USB mode with the same file name.<br />
<br />
Eject your Pre from your computer, wait for Wifi to log back into your network, and SSH into the Pre again. Your old window probably timed out by now so you can close it.<br />
<br />
=== Last step===<br />
<br />
Now we'll need to get the files (all 3 if you edited them) back to the correct location, so we'll use the copy (cp) command to do this.<br />
<br />
<pre><nowiki><br />
cp /media/internal/backdrop-phone.png /usr/palm/applications/com.palm.app.phone/images/<br />
cp /media/internal/backdrop-phone-scroll-fade.png /usr/palm/applications/com.palm.app.phone/images/<br />
cp /media/internal/list-section-line.png /usr/palm/applications/com.palm.app.phone/images/<br />
</nowiki></pre><br />
<br />
Once this is done exit the SSH session (type exit) and reboot the Pre from the Device Info menu. When it comes back up you should see your new background on the dialpad screen.<br />
<br />
If you are going to use the files I edited you'll just need to copy them to the USB drive, and then complete the last step.<br />
<br />
==== Here are my edits:====<br />
<br />
[[Image:Backdropphone.png]]<br />
<br />
Two others for consistency:<br />
<br />
[[Image:Backdropphonescrollfade.png]]<br />
<br />
[[Image:Listsectionline.png]]<br />
<br />
Thanks to desairs at the PreCentral forums for pointing me in the correct direction.<br />
<br />
If you want to use these modified images, you can download them directly to the directory and replace the files you backed up with cp.<br />
<br />
<pre><nowiki><br />
wget http://img31.imageshack.us/img31/4630/backdropphone.png -O /usr/palm/applications/com.palm.app.phone/images/backdrop-phone.png<br />
wget http://img29.imageshack.us/img29/3571/backdropphonescrollfade.png -O /usr/palm/applications/com.palm.app.phone/images/backdrop-phone-scroll-fade.png<br />
wget http://img132.imageshack.us/img132/5493/listsectionline.png -O /usr/palm/applications/com.palm.app.phone/images/list-section-line.png<br />
</nowiki></pre><br />
<br />
Then to reload you can try the following command instead of a reboot:<br />
<br />
<pre><nowiki><br />
luna-send -n 1 palm://com.palm.appinstaller/rescan {}<br />
</nowiki></pre><br />
<br />
=== Editing the Lock Screen===<br />
<br />
Changing the Lock Screen background is easy as well. In fact, the image resides in the same directory as the dialer's background.<br />
<br />
The file that you'll want to edit is the '''backdrop-firstuse.png''' file.<br />
<br />
Simply follow the directions above for copying the files out and back into the '''/usr/palm/applications/com.palm.app.phone/images/''' folder, reboot and your lock screen background is changed.<br />
<br />
[[Image:Background-editing-example.jpg]]<br />
<br />
=== Editing the "Enter Number or Name..." Text Color===<br />
<br />
It was driving me slightly crazy that there's a slight greenish tint to the writing above the dialpad. <br />
<br />
Easy fix.<br />
<br />
Open '''/usr/palm/applications/com.palm.app.phone/stylesheets/dialpad.css'''<br />
<br />
Change:<br />
<br />
<pre><nowiki><br />
.text-input.hinttext { <br />
color: #bcceb3;<br />
font-size: 16px;<br />
padding: 0 60px 0 40px;<br />
overflow: hidden;<br />
white-space: nowrap;<br />
text-overflow: ellipsis;<br />
}<br />
</nowiki></pre><br />
<br />
to:<br />
<br />
<pre><nowiki><br />
.text-input.hinttext { <br />
color: #ffffff;<br />
font-size: 16px;<br />
padding: 0 60px 0 40px;<br />
overflow: hidden;<br />
white-space: nowrap;<br />
text-overflow: ellipsis;<br />
}<br />
</nowiki></pre></div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Patch_Messaging_Sounds&diff=3100Patch Messaging Sounds2009-07-30T07:47:38Z<p>JackieRipper: /* message-tone-sounds-and-alerts.patch */</p>
<hr />
<div>==Introduction==<br />
This mod is now available in the Modifications patch repository. Check out [[Applying_Patches|Applying Patches]] for instructions on applying the patches. The mod is comprised of two patches, messaging-sounds.patch and message-tone-sounds-and-alerts.patch.<br />
<br />
==messaging-sounds.patch==<br />
Those of you using the [http://forums.precentral.net/homebrew-apps/188729-my-notification-v-1-0-3-6-30-a.html MyNotifications homebrew app] will only need this one. It patches the Messaging application to play the specified tone. It is found in the ''messaging'' directory of the modifications repository.<br />
<br />
==message-tone-sounds-and-alerts.patch==<br />
This patches Palm's Sounds & Ringtones application, allowing you to specify sounds for alerts, notifications and new messages. It has none of the added features in MyNotifications. It's for those that don't need all the extras that MyNotifications provides. It is found in the ''sounds_and_alerts'' directory of the modifications repository.</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Patch_Messaging_Sounds&diff=3099Patch Messaging Sounds2009-07-30T07:47:26Z<p>JackieRipper: /* messaging-sounds.patch */</p>
<hr />
<div>==Introduction==<br />
This mod is now available in the Modifications patch repository. Check out [[Applying_Patches|Applying Patches]] for instructions on applying the patches. The mod is comprised of two patches, messaging-sounds.patch and message-tone-sounds-and-alerts.patch.<br />
<br />
==messaging-sounds.patch==<br />
Those of you using the [http://forums.precentral.net/homebrew-apps/188729-my-notification-v-1-0-3-6-30-a.html MyNotifications homebrew app] will only need this one. It patches the Messaging application to play the specified tone. It is found in the ''messaging'' directory of the modifications repository.<br />
<br />
==message-tone-sounds-and-alerts.patch==<br />
The second patches Palm's Sounds & Ringtones application, allowing you to specify sounds for alerts, notifications and new messages. It has none of the added features in MyNotifications. It's for those that don't need all the extras that MyNotifications provides. It is found in the ''sounds_and_alerts'' directory of the modifications repository.</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Patch_Messaging_Sounds&diff=3090Patch Messaging Sounds2009-07-30T05:27:28Z<p>JackieRipper: Fixed link to MyNotifications</p>
<hr />
<div>==Introduction==<br />
This mod is now available in the Modifications patch repository. Check out [[Applying_Patches|Applying Patches]] for instructions on applying the patches. The mod is comprised of two patches, messaging-sounds.patch and message-tone-sounds-and-alerts.patch.<br />
<br />
==messaging-sounds.patch==<br />
Those of you using the [http://forums.precentral.net/homebrew-apps/188729-my-notification-v-1-0-3-6-30-a.html| MyNotifications homebrew app] will only need the first one. It patches the Messaging application to play the specified tone. It is found in the ''messaging'' directory of the modifications repository.<br />
<br />
==message-tone-sounds-and-alerts.patch==<br />
The second patches Palm's Sounds & Ringtones application, allowing you to specify sounds for alerts, notifications and new messages. It has none of the added features in MyNotifications. It's for those that don't need all the extras that MyNotifications provides. It is found in the ''sounds_and_alerts'' directory of the modifications repository.</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Patch_Messaging_Sounds&diff=3089Patch Messaging Sounds2009-07-30T05:26:24Z<p>JackieRipper: Split into two patches</p>
<hr />
<div>==Introduction==<br />
This mod is now available in the Modifications patch repository. Check out [[Applying_Patches|Applying Patches]] for instructions on applying the patches. The mod is comprised of two patches, messaging-sounds.patch and message-tone-sounds-and-alerts.patch.<br />
<br />
==messaging-sounds.patch==<br />
Those of you using the [http://forums.precentral.net/homebrew-apps/188729-my-notification-v-1-0-3-6-30-a.html|MyNotifications homebrew app] will only need the first one. It patches the Messaging application to play the specified tone. It is found in the ''messaging'' directory of the modifications repository.<br />
<br />
==message-tone-sounds-and-alerts.patch==<br />
The second patches Palm's Sounds & Ringtones application, allowing you to specify sounds for alerts, notifications and new messages. It has none of the added features in MyNotifications. It's for those that don't need all the extras that MyNotifications provides. It is found in the ''sounds_and_alerts'' directory of the modifications repository.</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Applying_Patches&diff=3088Applying Patches2009-07-30T05:15:45Z<p>JackieRipper: </p>
<hr />
<div>==Introduction==<br />
<br />
We cannot legally redistribute Palm source code (it is copyrighted code, and is not released under an open source license) therefor we need to manage our modifications as patches. Since these patches will come from many different places, and will need to be removed before each OTA update and then reapplied after-wards, we need a procedure and tools for doing this. This page documents this procedure.<br />
<br />
==Setup Procedure (Scripted)==<br />
The process of setting up quilt has been scripted. The script performs the following actions:<br />
* Installs (or upgrades) git and any dependencies<br />
* Installs quilt (or upgrades) and any dependencies<br />
* Configures quilt to store patches in /opt/src/patches<br />
* Creates (or updates) a local clone of the webos-internals modifications repository<br />
<br />
Each step is only performed if necessary. Please note that ipkg-opt needs to be installed. The instructions are found [[Next_steps|here]].<br />
<br />
To get run the script, log into your Pre, gain root privileges and run the following commands:<br />
<pre><nowiki><br />
cd /tmp<br />
wget http://gitorious.org/webos-internals/bootstrap/blobs/raw/master/quilt-bootstrap.sh<br />
sh quilt-bootstrap.sh<br />
</nowiki></pre><br />
<br />
==Setup Procedure (Manual Process)==<br />
(Note: Even though you may have previously installed the optware quilt patch manager, it won't damage anything to follow the Setup procedure. Alternatively, if you KNOW FOR SURE these are installed and your packages are up-to-date, you can skip to Importing and Applying Patches).<br />
<br />
* Log into your Pre, and gain root privileges. (Note: This command is not required when using the emulator)<br />
<pre><nowiki><br />
sudo -i # Yes, the -i is important. <br />
</nowiki></pre><br />
<br />
* Put your Pre in to Read Write Mode<br />
<pre><nowiki><br />
mount -o remount,rw /<br />
</nowiki></pre><br />
<br />
* Ensure that you are set up for optware package installations, and make sure you have the latest package index:<br />
<pre><nowiki><br />
ipkg-opt update<br />
</nowiki></pre><br />
<br />
* Install the 'quilt packages, which will be used to manage the patches you apply, and the 'git' package, which will be used to download existing patches from the modifications repository:<br />
<pre><nowiki><br />
ipkg-opt install quilt git<br />
</nowiki></pre><br />
<br />
(If you already have those packages installed, repeating this step will not cause any harm.)<br />
<br />
* Create a directory in which 'quilt' will manage your chosen modifications:<br />
<pre><nowiki><br />
mkdir -p /opt/src/patches<br />
</nowiki></pre><br />
<br />
* Edit /opt/etc/quilt.quiltrc to point quilt to that directory:<br />
<pre><nowiki><br />
sed -ire 's|^[\s#]*QUILT_PATCHES=.*|QUILT_PATCHES=/opt/src/patches|' /opt/etc/quilt.quiltrc<br />
</nowiki></pre><br />
<br />
* Clone the webos-internals modifications repository:<br />
<pre><nowiki><br />
cd /opt/src<br />
git clone git://gitorious.org/webos-internals/modifications.git<br />
</nowiki></pre><br />
<br />
==Importing and Applying Patches==<br />
<br />
* Ensure your list of modifications is up to date<br />
<pre><nowiki><br />
cd /opt/src/modifications<br />
git pull<br />
</nowiki></pre><br />
** If you find yourself getting errors when you try to pull with the above command then you will need to modify your .git/config file<br />
<pre><nowiki><br />
sudo vi /opt/src/modifications/.git/config<br />
</nowiki></pre><br />
<br />
** Your [master] section should look like the following<br />
<pre><nowiki><br />
[branch "master"]<br />
remote = origin<br />
merge = refs/heads/master <br />
</nowiki></pre><br />
<br />
* Browse the set of available patches. Each patch should have a description at the top.<br />
<pre><nowiki><br />
find /opt/src/modifications -name *.patch<br />
</nowiki></pre><br />
<br />
* Choose a patch from the modifications repository and import it into your own patches directory:<br />
<pre><nowiki><br />
cd / # It is *very* important to be in the / directory when you run quilt.<br />
quilt import /opt/src/modifications/application_name/patch_name.patch # Note that you need to replace application_name and patch_name here.<br />
</nowiki></pre><br />
<br />
* Verify that quilt has imported the patch successfully:<br />
<pre><nowiki><br />
# You should still be in the / directory to run quilt.<br />
quilt series # you should see your patch listed in here<br />
</nowiki></pre><br />
<br />
* Instruct quilt to apply your patch<br />
<pre><nowiki><br />
# You should still be in the / directory to run quilt.<br />
quilt push<br />
# Use this to push all patches at once.<br />
quilt push -a<br />
</nowiki></pre><br />
<br />
* If everything worked correctly, the patch should now be applied. You will usually need to restart the luna service on the Pre to see the effect of patches to applications. Here's how to initiate a rescan.<br />
<pre><nowiki><br />
luna-send -n 1 palm://com.palm.applicationManager/rescan {}<br />
</nowiki></pre><br />
<br />
If that doesn't work, try a service restart with:<br />
<pre><nowiki><br />
stop LunaSysMgr && start LunaSysMgr<br />
</nowiki></pre><br />
<br />
And if all else fails, simply reboot:<br />
<pre><nowiki><br />
reboot<br />
</nowiki></pre><br />
<br />
==Removing all patches==<br />
<br />
Before you accept an OTA update, you should remove any patches you have applied. Luckily, using quilt makes this very easy.<br />
<br />
* Remove all patches:<br />
<pre><nowiki><br />
cd / # It is *very* important to be in the / directory when you run quilt.<br />
quilt pop -a<br />
</nowiki></pre><br />
<br />
==Reapplying all patches==<br />
<br />
After your OTA update is complete, you will want to reapply any patches you have selected. This may or may not go smoothly.<br />
<br />
* Apply all patches:<br />
<pre><nowiki><br />
cd / # It is *very* important to be in the / directory when you run quilt.<br />
quilt push -a<br />
</nowiki></pre><br />
<br />
* Put your Pre back in to Read Only mode<br />
<pre><nowiki><br />
mount -o remount,ro /<br />
</nowiki></pre><br />
<br />
==Information for developing patches==<br />
<br />
===Getting Authenticated with gitorious.org===<br />
Before you can commit to gitorious you need to [http://gitorious.org/users/new create an account]. <br />
<br />
Next you'll need to generate a public key and share that with gitorious.org, your public key is how gitorious.org authenticates you and checks if have the permissions required to do a commit to a given repository.<br />
<br />
Getting your key on windows<br />
* Download [*http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuTTYgen] and [*http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html Pageant]<br />
<br />
--Gitorious.org [http://gitorious.org/about/faq gitorious.org recommends] you use [http://code.google.com/p/msysgit/ msysGit].--<br />
<br />
* On Windows use [*http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuTTYgen] to generate a public/private key pair. <br />
<br />
<pre><nowiki><br />
Key -> SSH-2 RSA KEY<br />
Key -> Generate key pair<br />
</nowiki></pre><br />
After some wiggling of the mouse your keys will be generated. You should fill in the //Key passphrase// and it's confirmation to secure you key. Save off the public and private key pairs to your user folder.<br />
<br />
* After which you will need to run [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html Pageant] on your pc. Pageant holds your private key in memory for PuTTY to use.<br />
<br />
* To commit changes to gitorious.org from the pre you will need to install openssh on the device.<br />
<pre><nowiki><br />
ipkg-opt update<br />
ipkg-opt install openssh # since dropbear doesn't do agent forwarding, you need to use openssh<br />
</nowiki></pre><br />
<br />
As an alternative, if you don't use the keys for anything else you could just generate them on the pre after installing open-ssh<br />
<pre><nowiki><br />
sudo ssh-keygen -t rsa # follow the prompts<br />
cat ~/.ssh/id_rsa.pub # display the public key you need to paste into gitorious<br />
</nowiki></pre><br />
<br />
* Don't forget to upload your public key to gitorious.org after generating it.<br />
Now you should be able to follow the steps below and contribute your code to gitorious.org.<br />
<br />
* If you find yourself getting errors about your public key when you try to push changes, check to make sure your keys are under /var/home/root/.ssh/ and not under your regular user account.<br />
<br />
===Creating a patch===<br />
<br />
* Before making any changes to files:<br />
<br />
<pre><nowiki><br />
cd / # It is *very* important to be in the / directory when you run quilt.<br />
quilt new patch_name.patch<br />
quilt add /usr/palm/applications/com.palm.app.appYouWantToMod/app/controllers/mod-assistant.js<br />
quilt add /usr/palm/applications/com.palm.app.appYouWantToMod/app/controllers/mod2-assistant.js<br />
</nowiki></pre><br />
<br />
* Now you can make changes on the Pre using vi/nano/joe/whatever, or sftp files to your machine and make changes. Make sure any file you change has been added in the above step.<br />
<br />
<pre><nowiki><br />
quilt files # view files that are being tracked<br />
quilt header -e # add a header to the patch to describe it (please do this!)<br />
</nowiki></pre><br />
<br />
* Once you are finished and ready to create a patch<br />
<br />
<pre><nowiki><br />
quilt refresh # this will create/update the /opt/src/patches/patch_name.patch file<br />
</nowiki></pre><br />
<br />
===Pushing the change back to gitorious.org===<br />
<br />
* copy the patch into the modification tree you cloned above<br />
<br />
<pre><nowiki><br />
mkdir /opt/src/modifications/application_name # You need to change application_name to the leaf of the palm application id.<br />
cp /opt/src/patches/patch_name.patch /opt/src/modifications/application_name/patch_name.patch<br />
</nowiki></pre><br />
<br />
* Identify yourself in git (use the user you have setup at gitorious.org)<br />
<br />
<pre><nowiki><br />
cd /opt/src/modifications<br />
git config --global user.name "user"<br />
git config --global user.email "youremail@example.com"<br />
</nowiki></pre><br />
<br />
* Commit your changes to your local git<br />
<br />
<pre><nowiki><br />
git add application_name/patch_name.patch<br />
git commit<br />
</nowiki></pre><br />
<br />
* Since we did a clone the first time, we need to recreate the origin:<br />
<br />
<pre><nowiki><br />
git remote rm origin # (if you did a clone, we have to replace the origin)<br />
git remote add origin git@gitorious.org:webos-internals/modifications.git<br />
</nowiki></pre><br />
<br />
* Finally, push your changes up to gitorious.org<br />
<br />
<pre><nowiki><br />
git push origin master # first time<br />
git push # any future pushes<br />
</nowiki></pre><br />
<br />
* If the push does not work, try to debug the ssh connection<br />
<pre><nowiki><br />
/opt/bin/ssh -v git@gitorious.org<br />
</nowiki></pre><br />
<br />
==Extended, annotated sample session with quilt==<br />
* First, we just need to setup a file to muck with<br />
<pre><nowiki><br />
root@castle:/# cd /<br />
root@castle:/# echo "Original file" > /usr/test<br />
root@castle:/# echo "2nd lien" >> /usr/test<br />
root@castle:/# echo "3rd ilne" >> /usr/test<br />
root@castle:/# echo "last line" >> /usr/test<br />
</nowiki></pre><br />
* Start a new patch (normally you'll want to use patch_name.patch, I just wanted a shortened name)<br />
<pre><nowiki><br />
root@castle:/# quilt new p1<br />
Patch /opt/src/patches/p1 is now on top<br />
</nowiki></pre><br />
* You must quilt add any files that you are going to edit or create '''before''' you edit or create them.<br />
<pre><nowiki><br />
root@castle:/# quilt add /usr/test<br />
File /usr/test added to patch /opt/src/patches/p1<br />
</nowiki></pre><br />
* Just using sed to correct the spelling on the 2nd line<br />
<pre><nowiki><br />
root@castle:/# sed -i -e 's/lien/line/' /usr/test<br />
</nowiki></pre><br />
* quilt refresh actually finds what you have changed and writes it to the patch file (at this point, you can use git to push your changes)<br />
<pre><nowiki><br />
root@castle:/# quilt refresh<br />
Refreshed patch /opt/src/patches/p1<br />
</nowiki></pre><br />
* Just for fun, let's do it again<br />
<pre><nowiki><br />
root@castle:/# quilt new p2<br />
Patch /opt/src/patches/p2 is now on top<br />
</nowiki></pre><br />
* Again, add file, make some changes, refresh to update the patch.<br />
<pre><nowiki><br />
root@castle:/# quilt add /usr/test<br />
File /usr/test added to patch /opt/src/patches/p2<br />
root@castle:/# sed -i -e 's/ilne/line/' /usr/test<br />
root@castle:/# quilt refresh<br />
Refreshed patch /opt/src/patches/p2<br />
</nowiki></pre><br />
* Just an example of rolling back changes<br />
<pre><nowiki><br />
root@castle:/# quilt pop<br />
Removing patch /opt/src/patches/p2<br />
Restoring usr/test<br />
<br />
Now at patch /opt/src/patches/p1<br />
root@castle:/# quilt pop<br />
Removing patch /opt/src/patches/p1<br />
Restoring usr/test<br />
<br />
Now at patch /opt/src/patches/enable-browser-downloads.patch<br />
root@castle:/# cat /usr/test<br />
Original file<br />
2nd lien<br />
3rd ilne<br />
last line<br />
</nowiki></pre><br />
* delete will delete the patch from your series, but leave the actual patch file in /opt/src/patches (so you could import it later)<br />
<pre><nowiki><br />
root@castle:/# quilt delete p1<br />
Removed patch /opt/src/patches/p1<br />
</nowiki></pre><br />
* Since we removed p1, push will now apply p2. However, since p2 was applied against p1 originally, p2 will report an error. If the changes are too significant, you can force with -f, but you should carefully inspect the resulting files.<br />
<pre><nowiki><br />
root@castle:/# quilt push<br />
Applying patch /opt/src/patches/p2<br />
patching file usr/test<br />
Hunk #1 succeeded at 1 with fuzz 2.<br />
<br />
Now at patch /opt/src/patches/p2<br />
</nowiki></pre><br />
* If we want, we can refresh the patch so that future users of the patch do not receive the "fuzz" warning.<br />
<pre><nowiki><br />
root@castle:/# quilt refresh<br />
Refreshed patch /opt/src/patches/p2<br />
root@castle:/# cat /usr/test<br />
Original file<br />
2nd lien<br />
3rd line<br />
last line<br />
</nowiki></pre><br />
* cleanup<br />
<pre><nowiki><br />
root@castle:/# rm /usr/test<br />
</nowiki></pre><br />
<br />
==Background info==<br />
<br />
* [http://pkg-perl.alioth.debian.org/howto/quilt.html quilt]<br />
<br />
==Script for Updating/Installing Patches==<br />
<br />
I just wanted to share the following script that I just finished testing out. It's only been tested on my Pre so far, as I don't have access to any others.. It just updates the patch list, prints out available patches, then lets you choose which to apply.<br />
<br />
<pre><nowiki><br />
cd /opt/src/modifications<br />
tput clear<br />
echo Updating list...<br />
git pull<br />
tput clear<br />
cd /<br />
<br />
a=0<br />
for inputline in $(find /opt/src/modifications -name *.patch | sort)<br />
do<br />
a=$(($a+1));<br />
line="$(echo $inputline)"<br />
MYARRAY[$a]="$line"<br />
echo "${a}${line}" | awk -F "/" 'sub(".patch","",$6) {printf "%-3s %-15s %s\n", $1, $5, $6}'<br />
done<br />
echo "q quit"<br />
<br />
x=$(($a+1));<br />
until [ -n "$opt" ] ; do<br />
read -p "Enter the line number for patch to apply [1 - $a] " opt<br />
if [ "$opt" = "q" ] ; then<br />
exit 0<br />
fi<br />
if [ "$opt" -lt "$x" 2> /dev/null ] && [ "$opt" -gt 0 2> /dev/null ] ; then<br />
true<br />
else<br />
opt=""<br />
fi<br />
done<br />
<br />
tput clear<br />
cd /<br />
quilt import ${MYARRAY[$opt]}<br />
quilt push<br />
luna-send -n 1 palm://com.palm.applicationManager/rescan {}<br />
<br />
</nowiki></pre></div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Portal:Patches_to_webOS&diff=3079Portal:Patches to webOS2009-07-30T01:30:28Z<p>JackieRipper: Always_Show_Details_of_New_Tasks is in the patch repo as "new-task-details"</p>
<hr />
<div>__notoc__<br />
{{portal-header<br />
|This page lists patches to webOS existing apps which modify the behavior as shipped. '''Note''' that these patches may be version specific and may be broken by future webOS updates. Proceed with caution. If you get one that works please move it under the correct column and section.<br />
}}<br />
This page is undergoing structuring please contribute moving or adding new entries under the appropriate headings. For now put pages in alphabetical order. Each page should contain at least the basic headings<br />
*1. '''Introduction''': A brief description to introduce people to the patch.<br />
**1.1 '''Usage''':An explanation if it is needed on how to use the modification see Add/Delete Pages in the Launcher as an example.<br />
*2. '''Editing Process''': Step by step instructions to manually edit. <br />
*3. '''Patching Process''': Details for making the edits with a patch file and pointing people to the [[Applying Patches]] page if the patch is also provided in the webos-internals gitorious repository.<br />
<br />
{{portal-three-columns<br />
|column1= <br />
===webOS Update Information===<br />
* [[Update 1.1.0|Update 1.1]]<br />
* [[Update 1.0.4|Update 1.0.4]] <br />
* [[Update 1.0.3|Update 1.0.3]]<br />
<br />
===Patches that Need Work===<br />
* [[Bugs]]<br />
<br />
|column2=<br />
===Patch Ideas to be Created or in Progress===<br />
<br />
* [[Add_Ability_To_Choose_Snooze_Length|Add Ability to Choose Snooze Length]]<br />
* [[Changing_clipboard_data_from_the_shell|Changing Clipboard Data from the Shell]]<br />
* [[Development_%26_Tweak_Ideas | Development & Tweaking Ideas]]<br />
* [[Longer Vibrate|Longer Vibrate]]<br />
<br />
|column3=<br />
===Notes===<br />
These modifications lack a patch process, please add one to the details to the page and have it added to the webOS-internals gitorious repository. Info for the repository is on [[Applying Patches]].<br />
<br />
*Empty<br />
}}<br />
{{portal-three-columns<br />
|column1= <br />
==Patches to webOS apps==<br />
===webOS 1.1 OK===<br />
<br />
* [[Always_Show_Details_of_New_Tasks|Always Show Details of New Tasks]]<br />
* [[Application:Browser Global Search Addons Collection|Browser: Global Search Addons Collection]]<br />
* [[Bookmarking_MediaPlayer|Bookmarking MediaPlayer]]<br />
* [[Boot_Themes|Boot Themes]]<br />
* [[Camera Mod Shutter Sound On-Off Button]]<br />
* [[Confirm Deletion on Email|Confirm Deletion on Email]]<br />
* [[Edit Dialer Theme|Edit Dialer Theme]]<br />
* [[Forward Messages|Forward Messages]]<br />
* [[GPS Tracking|GPS Tracking]]<br />
* [[Application:Launcher Add or Delete Pages|Launcher: Add/Delete Pages]]<br />
* [[Application:Launcher Hide-Delete The NASCAR App|Launcher: Hide/Delete The NASCAR App]]<br />
* [[Application:Launcher Unhide the DeveloperMode App|Launcher: Unhide the DeveloperMode App]]<br />
* [[Application:Messaging Character Counter|Messaging: Character Counter]]<br />
* [[Application:Messaging New Cards For Each Conversation|Messaging: New Cards For Each Conversation]]<br />
* [[Using Volume Buttons to Take a Picture|Using Volume Buttons to Take a Picture]]<br />
<br />
===Fixed in 1.1 - No longer needed===<br />
* [[Fix Broken Formatting for Reply/Forward E-mails|Fix Broken Formatting for E-mails]]<br />
<br />
===Not 1.1 compatible===<br />
* [[Camera_Remote_View|Camera Remote View]]<br />
* [[Downloading From The Browser|Downloading From The Browser]] <br />
* [[Enable Landscape Viewing in Email|Enable Landscape Viewing in Email]] <br />
* [[Fix Email Attachments|Fix Email Attachments]] <br />
<br />
|column2=<br />
==Patches not part of a specific app==<br />
===webOS 1.1 OK===<br />
* [[Brightness]]<br />
* [[Bypassing_Activation|Bypassing Activation]]<br />
* [[Change_Carrier_String|Change Carrier String]]<br />
* [[Change_default_font_for_replies/forwards_from_navy_to_black|Change Default Font for Replies/Forwards from Navy to Black]]<br />
* [[Changing_the_%22Turn_off_after_X%22_time|Changing the "Turn off after X" Time]]<br />
* [[CPU Frequency or Voltage Scaling|CPU Frequency or Voltage Scaling]]<br />
* [[Disable Charging Event Alerts Sounds|Disable Charging Event Alerts Sounds]]<br />
* [[Graphics]]<br />
* [[Logging information from within scripts|Logging information from within scripts]]<br />
* [[Message Sound|Message Sound]]<br />
* [[Modifying a Stock App While Keeping the Original|Modifying a Stock App While Keeping the Original]] <br />
* [[Add_Words_to_AutoCorrect_Dictionary|Modify AutoCorrect Dictionary]]<br />
* [[Radio_Power_Switch|Phone On/Off Switch]]<br />
* [[Reverse Tunnel|Reverse Tunnel]] <br />
* [[Roam Control|Roam Control]]<br />
* [[Show_Actual_Battery_Percent | Show Actual Battery Percentage]]<br />
<br />
===Fixed in 1.1 - No longer needed===<br />
* Empty<br />
<br />
===Not 1.1 compatible===<br />
* [[Email App Patch to Prompt for IPK Installation|Email App Patch to Prompt for IPK Installation]] <br />
<br />
|column3=<br />
==== The following have not been checked for compatibility with webOS 1.1. ====<br />
<br />
* [[Adding Timestamps to All Received Messages]]<br />
* [[Application:Clock Enabling the Hidden Theme]]<br />
* [[Application_Mods:_PDF_Viewer|Application Mods: PDF Viewer]]<br />
* [[Application:MCraig Enabling Personals Category]]<br />
* [[Application:Sudoku Disable Zooming]]<br />
* [[Changing the Dialer Background Image|Changing the Dialer Background Image]]<br />
* [[Browser_Plugins|Browser Plugins]]<br />
* [[Camera Mod 10 Second Countdown Timer]]<br />
* [[Camera Mod Alternate Sound Disable]]<br />
* [[Change_Enter_To_Create_Newline_Instead_of_Send_Message|Change Enter to Create Newline Instead of Send Message]]<br />
* [[Change_the_default_notification.wav_Sound|Change the Default notification.wav Sound]]<br />
* [[Changes_Alert/Notification_Sounds|Changes Alert/Notification Sounds]]<br />
* [[Changing Alarm Clock Button Order and Snooze Duration]]<br />
* [[Download Amazon Music over EVDO]]<br />
* [[Display_Full_Status_Messages(Messenger)|Display Full Status Messages(Messenger)]] <br />
* [[Hourly Chime|Hourly Chime]] <br />
* [[Ignore 'A', 'An', and 'The' In Artist and Album names|Ignore 'A', 'An', and 'The' In Artist and Album names]] <br />
* [[Installing Homebrew Apps With A Rooted Pre|Installing Homebrew Apps With A Linux Accessed Pre]] <br />
* [[Keep Phone From Entering Standby While in Remote Session]]<br />
* [[Messaging Mod Force Offline Send Without Dialog]]<br />
* [[Modifying Stock Applications|Modifying Stock Applications]] <br />
* [[My notification|My notification]] <br />
* [[Packaging Homebrew Apps for Stock Pre without Rooting|Packaging Homebrew Apps for Stock Pre without Accessing Linux]] <br />
* [[Myavatar In Messaging App|Myavatar In Messaging App]] <br />
* [[Photos Slideshow|Photos Slideshow]] <br />
* [[Random Wallpaper Switching|Random Wallpaper Switching]] <br />
* [[Screenlock On When Connected|Stay On While Connected]]<br />
* [[Show allday events in calendar month view]] <br />
* [[Show Call Duration in the Call Log]] <br />
* [[Turn Off Missed Call Sound|Turn Off Missed Call Sound]] <br />
* [[Turning Off Dialpad Noise]]<br />
<br />
<br />
}}</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Patch_Tasks_Always_Show_Details_of_New_Tasks&diff=3078Patch Tasks Always Show Details of New Tasks2009-07-30T01:26:56Z<p>JackieRipper: Added patch repo information</p>
<hr />
<div>[[Image:Tasks.png|right]]<br />
== Introduction==<br />
<br />
I've made a small modification that changes how new tasks are handled. Ordinarily, new tasks appear at the bottom of the task list. In this view, you need to tap again to enter details like a due date. With this modification when add a task, the details card appears (pictured). At this window you can immediately set the task name, due date, task list, and priority. You're not forced to fill out each of those fields, they're just available. Enter your info, then swipe back and you'll see your new task in the list, or close the new task card (flick up) and the task is saved automatically. <br />
<br />
==Disclaimer==<br />
<br />
'''This has been tested on v1.03, v1.04 and v1.1.0 with no problems yet. Use at your own risk. And make a backup!'''<br />
<br />
==Note==<br />
<br />
This mod has been added to the webOS-internals gitorious modifications repository. See [[Applying_Patches]] for details.<br />
<br />
==Editing Process==<br />
<br />
[[Portal:Accessing Linux|Accessing linux]] is required. These directions assume you have already done so.<br />
<br />
'''1.''' Mount for rw access:<br />
<br />
<pre><nowiki><br />
mount -o remount,rw /<br />
</nowiki></pre><br />
<br />
<br />
'''2.''' Make a backup of the file! Don't be lazy!<br />
<br />
<pre><nowiki><br />
cd /usr/palm/applications/com.palm.app.tasks/app/controllers/<br />
cp tasks-assistant.js tasks-assistant.js.bak<br />
</nowiki></pre><br />
<br />
'''3.''' Then open the file /usr/palm/applications/com.palm.app.tasks/app/controllers/tasks-assistant.js<br />
<br />
<pre><nowiki><br />
vi tasks-assistant.js<br />
</nowiki></pre><br />
<br />
'''4.''' In _newTask: function(previousTask)<br />
<br />
Replace line 917 (line 921 in os 1.1):<br />
<br />
<pre><nowiki><br />
this.listElement.mojo.focusItem(task);<br />
</nowiki></pre><br />
<br />
with this code:<br />
<br />
<pre><nowiki><br />
this.state.edit.call(this, index);<br />
</nowiki></pre><br />
<br />
'''5.''' Also, replace line 940 of the same file (line 944 in os 1.1):<br />
<br />
<pre><nowiki><br />
self.listElement.mojo.focusItem(task);<br />
</nowiki></pre><br />
<br />
with this code:<br />
<br />
<pre><nowiki><br />
self.state.edit.call(self, index);<br />
</nowiki></pre><br />
<br />
'''6.''' Save and reboot.<br />
<pre><nowiki><br />
mount -o remount,ro /<br />
reboot<br />
</nowiki></pre><br />
<br />
Enjoy!<br />
<br />
(os 1.1 changes verified by tcurtin on 7/24/09)<br />
<br />
===Contact Me===<br />
Please leave me a note if it works for you:<br />
http://www.everythingpre.com/forum/webos-development/new-mod-always-show-new-task-details-21326.html#post106281<br />
<br />
//-Tuckmobile//<br />
<br />
= Patching Process =<br />
<br />
== Procedure ==<br />
<br />
Run the following commands:<br />
<br />
''In this example, I have the patch file located in my home directory under '''patches'''''<br />
<source lang="bash"><br />
cd /<br />
sudo patch -p0 --backup-if-mismatch < ~/patches/tasks.patch<br />
</source><br />
<br />
This is what you should see if it ran properly:<br />
<source lang="text"><br />
patching file /usr/palm/applications/com.palm.app.tasks/app/controllers/tasks-assistant.js<br />
</source><br />
<br />
These modifications will require LunaSysMgr to be restarted. A rescan will not work. After you've run the commands above, run one more command:<br />
<source lang="bash"><br />
pkill LunaSysMgr<br />
</source><br />
<br />
== tasks.patch ==<br />
<source lang="diff"><br />
diff -ur /usr/palm/applications/com.palm.app.tasks/app/controllers/tasks-assistant.js /usr/palm/app-modified/com.palm.app.tasks/app/controllers/tasks-assistant.js<br />
--- /usr/palm/applications/com.palm.app.tasks/app/controllers/tasks-assistant.js 2009-07-18 00:22:06.000000000 -0500<br />
+++ /usr/palm/app-modified/com.palm.app.tasks/app/controllers/tasks-assistant.js 2009-07-28 10:50:52.000000000 -0500<br />
@@ -918,7 +918,7 @@<br />
this.listElement.mojo.insertItemsAt(index, [task]);<br />
this.listElement.mojo.revealItem(index);<br />
this.addWidgets(this.listElement.mojo.getNodeByIndex(index).querySelector('[name="subject"]'), task);<br />
- this.listElement.mojo.focusItem(task);<br />
+ this.state.edit.call(this, index); //this.listElement.mojo.focusItem(task);<br />
<br />
task.priority = previousTask.priority; // Attempt to inherit the priority<br />
<br />
@@ -941,7 +941,7 @@<br />
{<br />
// If we find the node we just added, focus on it. We might not find the node however if the list is being refreshed<br />
self.addWidgets(node.querySelector('[name="subject"]'), task);<br />
- self.listElement.mojo.focusItem(task);<br />
+ self.state.edit.call(self, index); //self.listElement.mojo.focusItem(task);<br />
}<br />
<br />
Mojo.Log.info("New task %j %j", task, self.task);<br />
</source></div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Messaging_Mods&diff=3077Messaging Mods2009-07-30T01:18:56Z<p>JackieRipper: </p>
<hr />
<div>All files are located in '''/usr/palm/applications/com.palm.app.messaging/'''<br />
<br />
[[Adding Timestamps to All Received Messages]]<br />
<br />
[[Application:Messaging New Cards For Each Conversation]]<br />
<br />
[[Application:Messaging Character Counter]]<br />
<br />
[[Messaging Mod Force Offline Send Without Dialog]]<br />
<br />
[[Forward_Messages]]</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Patch_Messaging_Forward_Messages&diff=3076Patch Messaging Forward Messages2009-07-30T01:18:00Z<p>JackieRipper: /* Notes */</p>
<hr />
<div>'''Description:''' This mod will allow you to forward a message by simply tapping on the text of a message in the chat view. It does not interfere with the current attachment-tapping behavior. Tapping an attached image ask if you want to forward. Selecting "No" will still prompt for a save, etc., while selecting "Yes" will open a the compose dialog, with the message and attachments pre-populated.<br />
<br />
'''Note:''' There is a patch available for the mod. Please see [[Applying Patches]] for instructions.<br />
<br />
==Step One: Create the model==<br />
<br />
Back up and modify /usr/palm/applications/com.palm.app.messaging/app/models/messaging-luna-service.js.<br />
<br />
After line 10, add the following:<br />
<pre><nowiki><br />
forwardIdentifier: 'palm://com.palm.applicationManager',<br />
<br />
forwardMessage: function(sceneController,messageText,attachment) {<br />
var opts = {<br />
method: 'launch',<br />
parameters: {<br />
id: 'com.palm.app.messaging',<br />
params: {<br />
}<br />
}<br />
};<br />
if (messageText)<br />
opts.parameters.params.messageText = 'FWD: '+messageText;<br />
if (attachment)<br />
opts.parameters.params.attachment = attachment;<br />
return sceneController.serviceRequest(MessagingMojoService.forwardIdentifier,opts);<br />
},<br />
<br />
</nowiki></pre><br />
<br />
== Step Two: Make it respond to a tap on the text==<br />
<br />
Back up and modify /usr/palm/applications/com.palm.app.messaging/app/controllers/chatview-assistant.js<br />
<br />
Find the function '''handleMessageTap''', starting on line 1480:<br />
<br />
The first few lines:<br />
<pre><nowiki><br />
handleMessageTap: function(event){ <br />
var eventTarget = this.controller.get(event.originalEvent.target);<br />
<br />
var mmsImageTarget = MessagingUtils.getClassUpChain(eventTarget,'MMSImageObject'); <br />
if(mmsImageTarget) {<br />
</nowiki></pre><br />
<br />
And the last few lines:<br />
<pre><nowiki><br />
<br />
MessagingMojoService.getMessageErrorInfo(this.controller, messageData.messageId, messageData.flags, this.handleMessageErrorPopup.bind(this,messageData)); <br />
<br />
}.bind(this), false); <br />
},<br />
</nowiki></pre><br />
<br />
<br />
Replace the entire function with the following:<br />
<pre><nowiki><br />
handleMessageTap: function(event){<br />
var eventTarget = this.controller.get(event.originalEvent.target);<br />
<br />
var mmsImageTarget = MessagingUtils.getClassUpChain(eventTarget,'MMSImageObject');<br />
if(mmsImageTarget) {<br />
var imagePath = mmsImageTarget.getAttribute('originalSrc');<br />
this.controller.showAlertDialog({<br />
onChoose: function(value) {if(value == "forward"){MessagingMojoService.forwardMessage(this.controller, event.item.messageText, imagePath);} else {this.controller.stageController.pushScene('imageview', imagePath);}},<br />
title: $L("Forward Message"),<br />
message: $L("Do you want to forward this message?"),<br />
choices:[<br />
{label:$L("Yes"), value:"forward", type:"affirmative"},<br />
{label:$L("No"), value:"", type:"negative"}<br />
]<br />
});<br />
return;<br />
}<br />
<br />
var mmsVideoTarget = MessagingUtils.getClassUpChain(eventTarget,'mms-video');<br />
if(mmsVideoTarget) {<br />
var videoPath = mmsVideoTarget.getAttribute('filePath');<br />
var videoName = mmsVideoTarget.getAttribute('fileInfo');<br />
<br />
var args = {<br />
appId: "com.palm.app.videoplayer",<br />
name: "nowplaying"<br />
};<br />
var params = {<br />
target: videoPath,<br />
title: videoName<br />
};<br />
this.controller.showAlertDialog({<br />
onChoose: function(value) {if(value == "forward"){MessagingMojoService.forwardMessage(this.controller, event.item.messageText, videoPath);} else {this.controller.stageController.pushScene(args, params);}},<br />
title: $L("Forward Message"),<br />
message: $L("Do you want to forward this message?"),<br />
choices:[<br />
{label:$L("Yes"), value:"forward", type:"affirmative"},<br />
{label:$L("No"), value:"", type:"negative"}<br />
]<br />
});<br />
return;<br />
}<br />
<br />
var mmsVcardTarget = MessagingUtils.getClassUpChain(eventTarget,'mms-vcard');<br />
if(mmsVcardTarget) {<br />
var filePath = mmsVcardTarget.getAttribute('filePath');<br />
this.controller.showAlertDialog({<br />
onChoose: function(value) {if(value == "forward"){MessagingMojoService.forwardMessage(this.controller, event.item.messageText, filePath);} else {this.controller.stageController.pushScene('mmsTextAttachment', filePath);}},<br />
title: $L("Forward Message"),<br />
message: $L("Do you want to forward this message?"),<br />
choices:[<br />
{label:$L("Yes"), value:"forward", type:"affirmative"},<br />
{label:$L("No"), value:"", type:"negative"}<br />
]<br />
});<br />
return;<br />
}<br />
<br />
var mmsVcalTarget = MessagingUtils.getClassUpChain(eventTarget,'mms-vcal');<br />
if(mmsVcalTarget) {<br />
var filePath = mmsVcalTarget.getAttribute('filePath');<br />
this.controller.showAlertDialog({<br />
onChoose: function(value) {if(value == "forward"){MessagingMojoService.forwardMessage(this.controller, event.item.messageText, filePath);} else {this.controller.stageController.pushScene('mmsTextAttachment', filePath);}},<br />
title: $L("Forward Message"),<br />
message: $L("Do you want to forward this message?"),<br />
choices:[<br />
{label:$L("Yes"), value:"forward", type:"affirmative"},<br />
{label:$L("No"), value:"", type:"negative"}<br />
]<br />
});<br />
return;<br />
}<br />
<br />
if (!mmsImageTarget && !mmsVideoTarget && !mmsVcardTarget && !mmsVcalTarget) {<br />
this.controller.showAlertDialog({<br />
onChoose: function(value) {if(value == "forward"){MessagingMojoService.forwardMessage(this.controller, event.item.messageText, '');}},<br />
title: $L("Forward Message"),<br />
message: $L("Do you want to forward this message?"),<br />
choices:[<br />
{label:$L("Yes"), value:"forward", type:"affirmative"},<br />
{label:$L("No"), value:"", type:"negative"}<br />
]<br />
});<br />
}<br />
<br />
MessagingUtils.simpleListClick(this.controller.get(event.originalEvent.target), "chatRow", function(targetRow){<br />
var messageData = {<br />
errorCode: targetRow.getAttribute("errorCode"),<br />
status: targetRow.getAttribute("status"),<br />
messageId: targetRow.getAttribute("messageId"),<br />
flags: targetRow.getAttribute("flags"),<br />
messageType: targetRow.getAttribute("messageType")<br />
};<br />
<br />
MessagingMojoService.getMessageErrorInfo(this.controller, messageData.messageId, messageData.flags, this.handleMessageErrorPopup.bind(this,messageData));<br />
<br />
}.bind(this), false);<br />
},<br />
</nowiki></pre><br />
<br />
Reboot for changes to take effect.<br />
<br />
== Usage ==<br />
To forward a message, open the Messaging application, tap a chat thread, then tap an individual message. A dialog will pop up asking if you would like to forward. If the message has an attachment, it will be forwarded, as well. A new compose card will open with the message text pre-populated. Simply choose the recipient(s).<br />
<br />
= Notes =<br />
Patching [[Application:Messaging Character Counter]] will not allow for this patch to work, please take a look into this. -thatdude<br />
<br />
= Credits=<br />
Submitted by JackieRipper and Atlanta</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Talk:Portal:Patches_to_webOS&diff=2895Talk:Portal:Patches to webOS2009-07-29T15:21:32Z<p>JackieRipper: </p>
<hr />
<div>we have ten catagories for webOS apps <br />
do we need to catagorize these so that they aren't one giant long list? <br />
[[User:Rboatright|rboatright]] 20:30, 28 July 2009 (UTC)<br />
<br />
It may be beneficial to create separate pages for each patch. For example, the Camera Modifications & Additions page contains multiple patches, two distinct countdown timers, Shutter Sound On/Off Button. I have the Shutter Sound On/Off Button installed, and it's working on 1.1.0, but it looks like the count-downs do not (I haven't tried, so I can't say for sure).<br />
[[User:JackieRipper|JackieRipper]]</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Talk:Portal:Patches_to_webOS&diff=2894Talk:Portal:Patches to webOS2009-07-29T15:20:56Z<p>JackieRipper: </p>
<hr />
<div>we have ten catagories for webOS apps <br />
do we need to catagorize these so that they aren't one giant long list? <br />
[[User:Rboatright|rboatright]] 20:30, 28 July 2009 (UTC)<br />
<br />
It may be beneficial to create separate pages for each patch. For example, the Camera Modifications & Additions page contains multiple patches, two distinct countdown timers, Shutter Sound On/Off Button. I have the Shutter Sound On/Off Button installed, and it's working on 1.1.0, but it looks like the count-downs do not (I haven't tried, so I can't say for sure).</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Patch_webOS_Boot_Themes&diff=2795Patch webOS Boot Themes2009-07-28T20:42:43Z<p>JackieRipper: </p>
<hr />
<div>When the Pre is booting or shutting down, the screen fades between two images - ''/palm-logo.png'' and ''/palm-logo-bright.png'' located in ''/usr/palm/sysmgr/images''. By replacing either or both of these images, the boot logo can be customized. This requires [[Portal:Accessing_Linux | access to the Pre's OS]].<br />
<br />
Works with: 1.0.3, 1.1<br />
<br />
== Replacing the Files==<br />
<br />
'''Step One'''<br />
Log into the phone via ssh and copy the files to the USB drive.<br />
<pre><nowiki><br />
mkdir /media/internal/bootlogo<br />
cp /usr/palm/sysmgr/images/palm-logo* /media/internal/bootlogo<br />
</nowiki></pre><br />
<br />
'''Step Two'''<br />
Modify the files with your favorite editor (Gimp, Photoshop, ImageMagick, MS Paint, etc.)<br />
<br />
'''Step Three'''<br />
Save the new images to the ''bootlogo'' directory on the Pre's USB drive.<br />
<br />
'''Step Four'''<br />
Log into the phone via ssh, remount the root filesystem read-write, backup the existing files, copy the new images into place, and remount the root filesystem read-only.<br />
<pre><nowiki><br />
sudo mount -o rw,remount /<br />
sudo cp -ip /usr/palm/sysmgr/images/palm-logo.png /usr/palm/sysmgr/images/palm-logo.png.orig<br />
sudo cp -ip /usr/palm/sysmgr/images/palm-logo-bright.png /usr/palm/sysmgr/images/palm-logo-bright.png.orig<br />
sudo cp /media/internal/bootlogo/palm-logo.png /usr/palm/sysmgr/images/palm-logo.png<br />
sudo cp /media/internal/bootlogo/palm-logo-bright.png /usr/palm/sysmgr/images/palm-logo-bright.png<br />
sudo mount -o ro,remount /<br />
</nowiki></pre><br />
<br />
'''Step Five'''<br />
Restart Luna and watch your awesome new logo.<br />
<pre><nowiki><br />
pkill LunaSysMgr<br />
</nowiki></pre><br />
<br />
== Taking it to the Next Step==<br />
<br />
With a small bit of scripting, we can have separate boot and shutdown themes. The first thing to do is to create regular and "bright" images for booting and shutting down. Save the new images to the ''bootlogo'' directory on the Pre's USB drive. (Steps 1-3 above).<br />
<br />
'''Step One'''<br />
Log into the phone via ssh, remount the root filesystem read-write, and create a directory in /opt to store the new images. We're using /opt, as the script we'll modify later will copy files, and /usr is mounted read-only.<br />
<pre><nowiki><br />
sudo mount -o rw,remount /<br />
sudo mkdir -p /opt/share/bootimages<br />
</nowiki></pre><br />
<br />
'''Step Two'''<br />
Copy the new images to /opt/share/bootimages, naming them palm-logo-up.png, palm-logo-up-bright.png, palm-logo-down.png and palm-logo-down-bright.png. Additionally, copy the shutdown files to palm-logo.png and palm-logo-bright.png.<br />
<pre><nowiki><br />
cd /opt/share/bootimages/<br />
sudo cp /media/internal/bootlogo/<boot image> palm-logo-up.png<br />
sudo cp /media/internal/bootlogo/<bright boot image> palm-logo-up-bright.png<br />
sudo cp /media/internal/bootlogo/<shutdown image> palm-logo-down.png<br />
sudo cp /media/internal/bootlogo/<bright shutdown image> palm-logo-down-bright.png<br />
sudo cp palm-logo-down.png palm-logo.png<br />
sudo cp palm-logo-down-bright.png palm-logo-bright.png<br />
</nowiki></pre><br />
<br />
'''Step Three'''<br />
Backup the current logo images, if you haven't already.<br />
<pre><nowiki><br />
sudo cp -ip /usr/palm/sysmgr/images/palm-logo.png /usr/palm/sysmgr/images/palm-logo.png.orig<br />
sudo cp -ip /usr/palm/sysmgr/images/palm-logo-bright.png /usr/palm/sysmgr/images/palm-logo-bright.png.orig<br />
</nowiki></pre><br />
<br />
'''Step Four'''<br />
Delete the current logo images and replace them with symlinks to the files in our new directory in /opt<br />
<pre><nowiki><br />
cd /usr/palm/sysmgr/images/<br />
sudo rm palm-logo-bright.png<br />
sudo rm palm-logo.png<br />
sudo ln -s ../../../../../opt/share/bootimages/palm-logo-bright.png palm-logo-bright.png<br />
sudo ln -s ../../../../../opt/share/bootimages/palm-logo.png palm-logo.png<br />
</nowiki></pre><br />
<br />
'''Step Five'''<br />
Back up and edit /etc/init.d/start_animation, adding the switching of the files<br />
<pre><nowiki><br />
sudo cp -ip /etc/init.d/start_animation /etc/init.d/start_animation.orig<br />
sudo -e /etc/init.d/start_animation<br />
</nowiki></pre><br />
Before the line starting with ''if [ -x /usr/bin/luna-send'' add the following:<br />
<pre><nowiki><br />
ok=no<br />
if [ -f /opt/share/bootimages/palm-logo-up.png ] && \<br />
[ -f /opt/share/bootimages/palm-logo-up-bright.png ] && \<br />
[ -f /opt/share/bootimages/palm-logo-down.png ] && \<br />
[ -f /opt/share/bootimages/palm-logo-down-bright.png ] ; then<br />
cp /opt/share/bootimages/palm-logo-down.png /opt/share/bootimages/palm-logo.png<br />
cp /opt/share/bootimages/palm-logo-down-bright.png /opt/share/bootimages/palm-logo-bright.png<br />
ok=yes<br />
fi<br />
</nowiki></pre><br />
At the very end of the file, add the following:<br />
<pre><nowiki><br />
if [ "$ok" = "yes" ] ; then<br />
sleep 5<br />
cp /opt/share/bootimages/palm-logo-up.png /opt/share/bootimages/palm-logo.png<br />
cp /opt/share/bootimages/palm-logo-up-bright.png /opt/share/bootimages/palm-logo-bright.png<br />
fi<br />
</nowiki></pre><br />
<br />
'''Step Six'''<br />
Restart Luna and watch your awesome new logos.<br />
<pre><nowiki><br />
pkill LunaSysMgr<br />
</nowiki></pre><br />
<br />
== Boot Themes==<br />
<br />
'''Title:''' Default Theme<br />
<br />
'''Author:''' Palm<br />
<br />
[[Image:Palm-logo.png]] <br />
[[Image:Palm-logo-bright.png]]<br />
<br />
<br />
'''Title:''' Tux - got root?<br />
<br />
'''Author:''' JackieRipper<br />
<br />
[[Image:Jackieripper-palm-logo.png]] <br />
[[Image:Jackieripper-palm-logo-bright.png]]<br />
<br />
<br />
'''Title:''' Red and Green<br />
<br />
'''Author:''' JackieRipper<br />
<br />
[[Image:Jackieripper2-palm-logo-up.png]] <br />
[[Image:Jackieripper2-palm-logo-up-bright.png]] <br />
[[Image:Jackieripper2-palm-logo-down.png]] <br />
[[Image:Jackieripper2-palm-logo-down-bright.png]]<br />
<br />
<br />
'''Title:''' Blue Tux<br />
<br />
'''Author:''' pEEf<br />
<br />
[[Image:PEEf-palm-logo.png]] <br />
[[Image:PEEf-palm-logo-bright.png]]<br />
<br />
<br />
'''Title:''' Glassy Tux<br />
<br />
'''Author:''' fish199902<br />
<br />
[[Image:Fish109902-palm-logo.png]] <br />
[[Image:Fish109902-palm-logo-bright.png]]<br />
<br />
<br />
'''Title:''' GunTux<br />
<br />
'''Author:''' Xaeonis<br />
<br />
[[Image:Xaeonis-GunTux-palm-logo.png]]<br />
[[Image:Xaeonis-GunTux-palm-logo-bright.png]]</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Patch_webOS_Boot_Themes&diff=2794Patch webOS Boot Themes2009-07-28T20:41:15Z<p>JackieRipper: </p>
<hr />
<div>When the Pre is booting or shutting down, the screen fades between two images - ''/palm-logo.png'' and ''/palm-logo-bright.png'' located in ''/usr/palm/sysmgr/images''. By replacing either or both of these images, the boot logo can be customized. This requires [[Portal:Accessing_Linux | access to the Pre's OS]].<br />
<br />
Works with: 1.0.3, 1.1<br />
<br />
== Replacing the Files==<br />
<br />
'''Step One'''<br />
Log into the phone via ssh and copy the files to the USB drive.<br />
<pre><nowiki><br />
mkdir /media/internal/bootlogo<br />
cp /usr/palm/sysmgr/images/palm-logo* /media/internal/bootlogo<br />
</nowiki></pre><br />
<br />
'''Step Two'''<br />
Modify the files with your favorite editor (Gimp, Photoshop, ImageMagick, MS Paint, etc.)<br />
<br />
'''Step Three'''<br />
Save the new images to the ''bootlogo'' directory on the Pre's USB drive.<br />
<br />
'''Step Four'''<br />
Log into the phone via ssh, remount the root filesystem read-write, backup the existing files, copy the new images into place, and remount the root filesystem read-only.<br />
<pre><nowiki><br />
sudo mount -o rw,remount /<br />
sudo cp -ip /usr/palm/sysmgr/images/palm-logo.png /usr/palm/sysmgr/images/palm-logo.png.orig<br />
sudo cp -ip /usr/palm/sysmgr/images/palm-logo-bright.png /usr/palm/sysmgr/images/palm-logo-bright.png.orig<br />
sudo cp /media/internal/bootlogo/palm-logo.png /usr/palm/sysmgr/images/palm-logo.png<br />
sudo cp /media/internal/bootlogo/palm-logo-bright.png /usr/palm/sysmgr/images/palm-logo-bright.png<br />
sudo mount -o ro,remount /<br />
</nowiki></pre><br />
<br />
'''Step Five'''<br />
Restart Luna and watch your awesome new logo.<br />
<pre><nowiki><br />
pkill LunaSysMgr<br />
</nowiki></pre><br />
<br />
== Taking it to the Next Step==<br />
<br />
With a small bit of scripting, we can have separate boot and shutdown themes. The first thing to do is to create regular and "bright" images for booting and shutting down. Save the new images to the ''bootlogo'' directory on the Pre's USB drive. (Steps 1-3 above).<br />
<br />
'''Step One'''<br />
Log into the phone via ssh, remount the root filesystem read-write, and create a directory in /opt to store the new images. We're using /opt, as the script we'll modify later will copy files, and /usr is mounted read-only.<br />
<pre><nowiki><br />
sudo mount -o rw,remount /<br />
sudo mkdir -p /opt/share/bootimages<br />
</nowiki></pre><br />
<br />
'''Step Two'''<br />
Copy the new images to /opt/share/bootimages, naming them palm-logo-up.png, palm-logo-up-bright.png, palm-logo-down.png and palm-logo-down-bright.png. Additionally, copy the shutdown files to palm-logo.png and palm-logo-bright.png.<br />
<pre><nowiki><br />
cd /opt/share/bootimages/<br />
sudo cp /media/internal/bootlogo/<boot image> palm-logo-up.png<br />
sudo cp /media/internal/bootlogo/<bright boot image> palm-logo-up-bright.png<br />
sudo cp /media/internal/bootlogo/<shutdown image> palm-logo-down.png<br />
sudo cp /media/internal/bootlogo/<bright shutdown image> palm-logo-down-bright.png<br />
sudo cp palm-logo-down.png palm-logo.png<br />
sudo cp palm-logo-down-bright.png palm-logo-bright.png<br />
</nowiki></pre><br />
<br />
'''Step Three'''<br />
Backup the current logo images, if you haven't already.<br />
<pre><nowiki><br />
sudo cp -ip /usr/palm/sysmgr/images/palm-logo.png /usr/palm/sysmgr/images/palm-logo.png.orig<br />
sudo cp -ip /usr/palm/sysmgr/images/palm-logo-bright.png /usr/palm/sysmgr/images/palm-logo-bright.png.orig<br />
</nowiki></pre><br />
<br />
'''Step Four'''<br />
Delete the current logo images and replace them with symlinks to the files in our new directory in /opt<br />
<pre><nowiki><br />
cd /usr/palm/sysmgr/images/<br />
sudo rm palm-logo-bright.png<br />
sudo rm palm-logo.png<br />
sudo ln -s ../../../../../opt/share/bootimages/palm-logo-bright.png palm-logo-bright.png<br />
sudo ln -s ../../../../../opt/share/bootimages/palm-logo.png palm-logo.png<br />
</nowiki></pre><br />
<br />
'''Step Five'''<br />
Back up and edit /etc/init.d/start_animation, adding the switching of the files<br />
<pre><nowiki><br />
sudo cp -ip /etc/init.d/start_animation /etc/init.d/start_animation.orig<br />
sudo -e /etc/init.d/start_animation<br />
</nowiki></pre><br />
Before the line starting with ''if [ -x /usr/bin/luna-send'' add the following:<br />
<pre><nowiki><br />
ok=no<br />
if [ -f /opt/share/bootimages/palm-logo-up.png ] && \<br />
[ -f /opt/share/bootimages/palm-logo-up-bright.png ] && \<br />
[ -f /opt/share/bootimages/palm-logo-down.png ] && \<br />
[ -f /opt/share/bootimages/palm-logo-down-bright.png ] ; then<br />
cp /opt/share/bootimages/palm-logo-down.png /opt/share/bootimages/palm-logo.png<br />
cp /opt/share/bootimages/palm-logo-down-bright.png /opt/share/bootimages/palm-logo-bright.png<br />
ok=yes<br />
fi<br />
</nowiki></pre><br />
At the very end of the file, add the following:<br />
<pre><nowiki><br />
if [ "$ok" = "yes" ] ; then<br />
sleep 5<br />
cp /opt/share/bootimages/palm-logo-up.png /opt/share/bootimages/palm-logo.png<br />
cp /opt/share/bootimages/palm-logo-up-bright.png /opt/share/bootimages/palm-logo-bright.png<br />
fi<br />
</nowiki></pre><br />
<br />
'''Step Six'''<br />
Reboot the phone and watch your awesome new logos.<br />
<br />
== Boot Themes==<br />
<br />
'''Title:''' Default Theme<br />
<br />
'''Author:''' Palm<br />
<br />
[[Image:Palm-logo.png]] <br />
[[Image:Palm-logo-bright.png]]<br />
<br />
<br />
'''Title:''' Tux - got root?<br />
<br />
'''Author:''' JackieRipper<br />
<br />
[[Image:Jackieripper-palm-logo.png]] <br />
[[Image:Jackieripper-palm-logo-bright.png]]<br />
<br />
<br />
'''Title:''' Red and Green<br />
<br />
'''Author:''' JackieRipper<br />
<br />
[[Image:Jackieripper2-palm-logo-up.png]] <br />
[[Image:Jackieripper2-palm-logo-up-bright.png]] <br />
[[Image:Jackieripper2-palm-logo-down.png]] <br />
[[Image:Jackieripper2-palm-logo-down-bright.png]]<br />
<br />
<br />
'''Title:''' Blue Tux<br />
<br />
'''Author:''' pEEf<br />
<br />
[[Image:PEEf-palm-logo.png]] <br />
[[Image:PEEf-palm-logo-bright.png]]<br />
<br />
<br />
'''Title:''' Glassy Tux<br />
<br />
'''Author:''' fish199902<br />
<br />
[[Image:Fish109902-palm-logo.png]] <br />
[[Image:Fish109902-palm-logo-bright.png]]<br />
<br />
<br />
'''Title:''' GunTux<br />
<br />
'''Author:''' Xaeonis<br />
<br />
[[Image:Xaeonis-GunTux-palm-logo.png]]<br />
[[Image:Xaeonis-GunTux-palm-logo-bright.png]]</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Portal:Patches_to_webOS&diff=2777Portal:Patches to webOS2009-07-28T15:03:32Z<p>JackieRipper: </p>
<hr />
<div>__notoc__<br />
{{portal-header<br />
|This page lists patches to webOS existing apps which modify the behavior as shipped. '''Note''' that these patches may be version specific and may be broken by future webOS updates. Proceed with caution. If you get one that works please put " - Works with " + version (for instance 1.0.4)<br />
}}<br />
This page is undergoing structuring please contribute moving or adding new entries under the appropriate headings. For now put pages in alphabetical order. Each page should contain at least the basic headings<br />
*1. '''Introduction''': A brief description to introduce people to the patch.<br />
**1.1 '''Usage''':An explanation if it is needed on how to use the modification see Add/Delete Pages in the Launcher as an example.<br />
*2. '''Editing Process''': Step by step instructions to manually edit. <br />
*3. '''Patching Process''': Details for making the edits with a patch file and pointing people to the [[Applying Patches]] page if the patch is also provided in the webos-internals gitorious repository.<br />
<br />
{{portal-two-columns<br />
|column1= <br />
==Completed Patches==<br />
<br />
* [[Tutorials webOS Add Or Delete Pages In The Launcher|Add/Delete Launcher Pages]] - '''Works with 1.1'''<br />
* [[Always_Show_Details_of_New_Tasks|Always Show Details of New Tasks]] - '''Works with 1.1'''<br />
** If there is a patch process for this, please add the details to the page and have it added to the webos-internals gitorious repository. Info for the repository is on [[Applying Patches]].<br />
* [[Bookmarking_MediaPlayer|Bookmarking MediaPlayer]] - '''Works with 1.1'''<br />
* [[Boot_Themes|Boot Themes]] - '''Works with 1.1'''<br />
* [[Brightness]] - '''Works with 1.1'''<br />
* [[Change_Carrier_String|Change Carrier String]] - '''Works with 1.1'''<br />
* [[Confirm Deletion on Email|Confirm Deletion on Email]] - '''Works with 1.1'''<br />
* [[CPU Frequency or Voltage Scaling|CPU Frequency or Voltage Scaling]] - '''Works with 1.1'''<br />
* [[Disable Charging Event Alerts Sounds|Disable Charging Event Alerts Sounds]] - '''Works with 1.1'''<br />
* [[Edit Dialer Theme|Edit Dialer Theme]] - '''Works with 1.1'''<br />
* [[Fix Broken Formatting for Reply/Forward E-mails|Fix Broken Formatting for E-mails]] - '''Obsolete After 1.1'''<br />
* [[Forward Messages|Forward Messages]] - '''Works with 1.1'''<br />
* [[Global Search Addons Collection]] - '''Works with ALL'''<br />
* [[GPS Tracking|GPS Tracking]] - '''Works with 1.1'''<br />
* [[Graphics]] - '''Works with ALL'''<br />
* [[Hide/Delete_The_NASCAR_App|Hide/Delete The NASCAR App]] - '''Works with 1.1'''<br />
* [[Add_Words_to_AutoCorrect_Dictionary|Modify AutoCorrect Dictionary]]<br />
* [[New Cards For Each Messaging Conversation|New Cards For Each Messaging Conversation]] - '''Works with 1.1'''<br />
* [[Radio_Power_Switch|Phone On/Off Switch]] - '''Works with 1.1'''<br />
* [[Roam Control|Roam Control]] - '''Works with 1.1'''<br />
* [[Show_Actual_Battery_Percent | Show Actual Battery Percentage]] - '''Works with 1.1'''<br />
* [[Unhide the DeveloperMode App|Unhide the DeveloperMode App]] - '''Works with 1.1'''<br />
* [[Message Sound|Message Sound]] - '''Works with 1.1'''<br />
<br />
'''The following have not been checked for which the appropriate heading to be under.'''<br />
<br />
* [[Application_Framework|Application Framework]]<br />
* [[Application_Mods:_PDF_Viewer|Application Mods: PDF Viewer]]<br />
* [[Background_Editing|Background Editing]]<br />
* [[Browser_Plugins|Browser Plugins]]<br />
* [[Bypassing_Activation|Bypassing Activation]]<br />
* [[Camera_Modifications_%26_Additions|Camera Modifications & Additions]]<br />
* [[Camera_Remote_View|Camera Remote View]]<br />
* [[Change_Enter_To_Create_Newline_Instead_of_Send_Message|Change Enter to Create Newline Instead of Send Message]]<br />
* [[Change_the_default_notification.wav_Sound|Change the Default notification.wav Sound]]<br />
* [[Changes_Alert/Notification_Sounds|Changes Alert/Notification Sounds]]<br />
* [[Changing_the_%22Turn_off_after_X%22_time|Changing the "Turn off after X" Time]]<br />
* [[Change_default_font_for_replies/forwards_from_navy_to_black|Change Default Font for Replies/Forwards from Navy to Black]]<br />
* [[Display_Full_Status_Messages(Messenger)|Display Full Status Messages(Messenger)]] <br />
* [[Downloading From The Browser|Downloading From The Browser]] <br />
* [[Email App Patch to Prompt for IPK Installation|Email App Patch to Prompt for IPK Installation]] <br />
* [[Enable Landscape Viewing in Email|Enable Landscape Viewing in Email]] <br />
* [[Fix Email Attachments|Fix Email Attachments]] <br />
* [[Hidden Features|Hidden Features]] <br />
* [[Hourly Chime|Hourly Chime]] <br />
* [[Ignore 'A', 'An', and 'The' In Artist and Album names|Ignore 'A', 'An', and 'The' In Artist and Album names]] <br />
* [[Installing Homebrew Apps With A Rooted Pre|Installing Homebrew Apps With A Rooted Pre]] <br />
* [[Messaging_Mods|Messaging Modifications]]<br />
* [[Modifying Stock Applications|Modifying Stock Applications]] <br />
* [[Modifying a Stock App While Keeping the Original|Modifying a Stock App While Keeping the Original]] <br />
* [[Logging information from within scripts|Logging information from within scripts]]<br />
* [[Packaging Homebrew Apps for Stock Pre without Rooting|Packaging Homebrew Apps for Stock Pre without Rooting]] <br />
* [[My notification|My notification]] <br />
* [[Myavatar In Messaging App|Myavatar In Messaging App]] <br />
* [[Photos Slideshow|Photos Slideshow]] <br />
* [[Random Wallpaper Switching|Random Wallpaper Switching]] <br />
* [[Reverse Tunnel|Reverse Tunnel]] <br />
* [[Screenlock On When Connected|Stay On While Connected]]<br />
* [[Show allday events in calendar month view|Show allday events in calendar month view]] <br />
* [[Splash Application|Splash Application]] <br />
* [[Turn Off Missed Call Sound|Turn Off Missed Call Sound]] <br />
* [[Using Volume Buttons to Take a Picture|Using Volume Buttons to Take a Picture]]<br />
<br />
|column2=<br />
==webOS Update Information==<br />
* [[Update 1.1.0|Update 1.1]]<br />
* [[Update 1.0.4|Update 1.0.4]] <br />
* [[Update 1.0.3|Update 1.0.3]]<br />
<br />
==Patches that Need Work==<br />
* Add packages here.<br />
<br />
==Patch Ideas to be Created or in Progress==<br />
<br />
* [[Add_Ability_To_Choose_Snooze_Length|Add Ability to Choose Snooze Length]]<br />
* [[Bugs]]<br />
* [[Changing_clipboard_data_from_the_shell|Changing Clipboard Data from the Shell]]<br />
* [[Development_%26_Tweak_Ideas | Development & Tweaking Ideas]]<br />
* [[Longer Vibrate|Longer Vibrate]]<br />
<br />
}}</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Patch_Messaging_Sounds&diff=2776Patch Messaging Sounds2009-07-28T15:02:05Z<p>JackieRipper: </p>
<hr />
<div>'''Description:''' This mod will allow you to specify the sound played on an incoming message, distinct from the alert and notification sounds.<br />
<br />
'''History:''' This is based ''heavily'' on the '''[[alerts-from-usb |Sounds and Alerts Program Modification]]''' by Kaerey.<br />
<br />
This mod is now available in the Modifications patch repository. Check out [[Applying_Patches|Applying Patches]] for instructions on applying the patch.<br />
<br />
= Credits=<br />
The changes to the Sounds and Alerts app are slight modifications to the submissions of Kaerey. The rest is submitted by JackieRipper.</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Patch_webOS_Bypassing_Activation&diff=2607Patch webOS Bypassing Activation2009-07-27T03:40:40Z<p>JackieRipper: Linux paths</p>
<hr />
<div>If you are outside of Sprint's service area in the United States and would like to still be able to use your Pre, you are required to possess a Palm profile. The phone will not let you past the "create profile" screen because it cannot hit Palm's servers over the non-working EV-DO connection.<br />
<br />
This modification will allow you to enable WiFi and use that to create your Palm Profile. The phone is otherwise unchanged and would still work if it was brought back into a Sprint service area.<br />
<br />
NOTE: You may need to use a Mac or Linux machine to do the file editing, otherwise the /dev folder will be empty and YOUR PHONE WILL NOT BOOT.<br />
<br />
= Verified Working Procedure:=<br />
<br />
1. Download the [http://palm.cdnetworks.net/rom/pre_p100eww/webosdoctorp100ewwsprint.jar WebOS image].<br />
<br />
2. Rename this file to .zip, and extract it.<br />
<br />
3. Untar resources\webOS\nova-cust-image-castle.rootfs.tar.gz.<br />
<br />
4. Check to see that /dev has files in it after untarring. If it does not, try untarring as root.<br />
<br />
5. Open file /usr/palm/applications/com.palm.app.firstuse/app/controllers/app-assistant.js.<br />
<br />
6. Change the setUpFirstUse() function.<br />
<br />
<pre><nowiki><br />
function setUpFirstUse () {<br />
setupSimulator (); <br />
isDevice = true; <br />
}</nowiki></pre><br />
<br />
7. Apply the diff's to the following 2 files:<br />
<br />
command:<br />
<br />
patch foo.js < patch<br />
<br />
files to patch:<br />
<br />
<pre><nowiki><br />
/usr/palm/applications/com.palm.app.firstuse/app/controllers/firstuse-util.js<br />
95a96<br />
> {label: $L('Enable WiFi'), command: 'peef-hack-mode'},<br />
105a107,108<br />
> } else if (value == "peef-hack-mode") {<br />
> AppAssistant.accountService.peefMode();<br />
</nowiki></pre><br />
<br />
<pre><nowiki><br />
/usr/palm/applications/com.palm.app.firstuse/app/models/account-service.js<br />
389a390,399<br />
> peefMode: function() {<br />
> return new Mojo.Service.Request("palm://com.palm.applicationManager/open", {<br />
> parameters: {<br />
> id: 'com.palm.app.wifi',<br />
> params: {<br />
> }<br />
> }<br />
> });<br />
> },<br />
</nowiki></pre><br />
<br />
8. Edit /usr/lib/ipkg/info/com.palm.app.firstuse.md5sums and add the correct md5 of app-assistant.js, account-service.js, and firstuse-util.js.<br />
<br />
md5sum (file.js)<br />
<br />
9. Edit /md5sums file and add the correct md5 of app-assistant.js, account-service.js, and firstuse-util.js, and /usr/lib/ipkg/info/com.palm.app.firstuse.md5sums. (These two steps are not necessary, but if you don't do them, the flashing will fail. The phone should still reboot and work as normally though.)<br />
<br />
10. Pack the nova-cust-image-castle.rootfs folder into nova-cust-image-castle.rootfs.tar.gz (make sure that the tar's root contains the root file system, and not a folder containing the root file system).<br />
<br />
tar cvpf ../nova-cust-image-castle.rootfs.tar.gz ./<br />
<br />
11. Pack the webOS folder into webOS.tar. Make sure that the root of the .tar contains the files in webOS and not a folder containing the files in webOS.<br />
<br />
tar cvf ../webOS.tar ./<br />
<br />
12. Remove JARKEY.RSA and JARKEY.SF from \META-INF.<br />
<br />
13. Edit the MANIFEST.MF in \META-INF.<br />
<br />
<pre><nowiki>Manifest-Version: 1.0<br />
Created-By: 1.6.0_04 (Sun Microsystems Inc.)<br />
Main-Class: com.palm.nova.installer.recoverytool.RecoveryTool<br />
</nowiki></pre><br />
<br />
14. Pack the .jar back up. You can use zip to do this. NOTE: If zipping it is resulting in an unusable jar file, make sure you have the JDK installed and use: <br />
<br />
jar cvMf flasher.jar * #if you are in the folder containing resources, META-INF and com folders<br />
<br />
15. Hold the volume up button while plugging in USB cable.<br />
<br />
16. Flash it.<br />
<br />
17. Once you get to the "Create Palm Profile" screen, tap the little phone icon down in the lower right notification area.<br />
<br />
18. Choose the "Enable WiFi" menu item.<br />
<br />
19. When the WiFi control opens, enable WiFi and connect to your local WiFi network (must allow internet accesss).<br />
<br />
20. Close the WiFi panel and then proceed normally to create your new Palm Profile. NOTE: If you find yourself unable to close the WiFi panel, remove the battery and reboot. Your phone will still connect to the network.<br />
<br />
= Bypassing modem errors=<br />
<br />
If your CDMA modem somehow gets into a bad state, firstuse will still fail with generic error messages (loading the "error" scene when it fails to initialize the modem). <br />
<br />
Apparently changing (commenting out the isDevice line?)<br />
<br />
<pre><nowiki><br />
function setUpFirstUse () {<br />
setupSimulator (); <br />
// isDevice = true; <br />
}<br />
</nowiki></pre><br />
<br />
and changing both instances of <br />
<br />
<pre><nowiki><br />
if (PalmSystem.version.match("desktop")) {<br />
</nowiki></pre><br />
<br />
to <br />
<br />
<pre><nowiki><br />
if (true) {<br />
</nowiki></pre><br />
<br />
will cause firstuse to use the same mechanism it does on the emulator and skip testing the CDMA modem.<br />
<br />
FIXME: Would someone please validate this method and perhaps come up with a unified patch to solve both problems in fewer lines?<br />
<br />
= Credits=<br />
Courtesy of pEEf.<br />
Verified by Ajax.</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Portal:Patches_to_webOS&diff=2588Portal:Patches to webOS2009-07-27T03:07:27Z<p>JackieRipper: Verified Message Sound, Forward Message and Roam Control work with 1.1.0</p>
<hr />
<div>__notoc__<br />
{{portal-header<br />
|This page lists patches to webOS existing apps which modify the behavior as shipped. '''Note''' that these patches may be version specific and may be broken by future webOS updates. Proceed with caution. If you get one that works please put " - Works with " + version (for instance 1.0.4)<br />
}}<br />
This page is undergoing structuring please contribute moving or adding new entries under the appropriate headings. For now put pages in alphabetical order. Each page should contain at least the basic headings<br />
*1. '''Introduction''': A brief description to introduce people to the patch.<br />
**1.1 '''Usage''':An explanation if it is needed on how to use the modification see Add/Delete Pages in the Launcher as an example.<br />
*2. '''Editing Process''': Step by step instructions to manually edit. <br />
*3. '''Patching Process''': Details for making the edits with a patch file and pointing people to the [[Applying Patches]] page if the patch is also provided in the webos-internals gitorious repository.<br />
<br />
{{portal-two-columns<br />
|column1= <br />
==Completed Patches==<br />
<br />
* [[Tutorials webOS Add Or Delete Pages In The Launcher|Add/Delete Launcher Pages]] - '''Works with 1.1'''<br />
* [[Add_Words_to_AutoCorrect_Dictionary|Modify AutoCorrect Dictionary]]<br />
* [[Always_Show_Details_of_New_Tasks|Always Show Details of New Tasks]] - '''Works with 1.1'''<br />
** If there is a patch process for this, please add the details to the page and have it added to the webos-internals gitorious repository. Info for the repository is on [[Applying Patches]].<br />
* [[Unhide the DeveloperMode App|Unhide the DeveloperMode App]] - '''Works with 1.1'''<br />
* [[Show_Actual_Battery_Percent | Show Actual Battery Percentage]] - '''Works with 1.1'''<br />
* [[Message Sound|Message Sound]] - '''Works with 1.1'''<br />
* [[Forward Messages|Forward Messages]] - '''Works with 1.1'''<br />
* [[Roam Control|Roam Control]] - '''Works with 1.1'''<br />
<br />
'''The following have not been checked for which the appropriate heading to be under.'''<br />
<br />
* [[Application_Framework|Application Framework]]<br />
* [[Application_Mods:_PDF_Viewer|Application Mods: PDF Viewer]]<br />
* [[Background_Editing|Background Editing]]<br />
* [[Bookmarking_MediaPlayer|Bookmarking MediaPlayer]]<br />
* [[Boot_Themes|Boot Themes]]<br />
* [[Brightness]]<br />
* [[Browser_Plugins|Browser Plugins]]<br />
* [[Bypassing_Activation|Bypassing Activation]]<br />
* [[Camera_Modifications_%26_Additions|Camera Modifications & Additions]]<br />
* [[Camera_Remote_View|Camera Remote View]]<br />
* [[Change_Enter_To_Create_Newline_Instead_of_Send_Message|Change Enter to Create Newline Instead of Send Message]]<br />
* [[Change_the_default_notification.wav_Sound|Change the Default notification.wav Sound]]<br />
* [[Changes_Alert/Notification_Sounds|Changes Alert/Notification Sounds]]<br />
* [[Changing_clipboard_data_from_the_shell|Changing Clipboard Data from the Shell]]<br />
* [[Changing_the_%22Turn_off_after_X%22_time|Changing the "Turn off after X" Time]]<br />
* [[Change_Carrier_String|Change Carrier String]]<br />
* [[Change_default_font_for_replies/forwards_from_navy_to_black|Change Default Font for Replies/Forwards from Navy to Black]]<br />
* [[Confirm Deletion on Email|Confirm Deletion on Email]] <br />
* [[CPU Frequency or Voltage Scaling|CPU Frequency or Voltage Scaling]] <br />
* [[Disable Charging Event Alerts Sounds|Disable Charging Event Alerts Sounds]] <br />
* [[Display_Full_Status_Messages(Messenger)|Display Full Status Messages(Messenger)]] <br />
* [[Downloading From The Browser|Downloading From The Browser]] <br />
* [[Edit Dialer Theme|Edit Dialer Theme]] <br />
* [[Email App Patch to Prompt for IPK Installation|Email App Patch to Prompt for IPK Installation]] <br />
* [[Enable Landscape Viewing in Email|Enable Landscape Viewing in Email]] <br />
* [[Fix Broken Formatting for Reply/Forward E-mails|Fix Broken Formatting for Reply/Forward E-mails]] <br />
* [[Fix Email Attachments|Fix Email Attachments]] <br />
* [[Global Search Addons Collection]]<br />
* [[GPS Tracking|GPS Tracking]] <br />
* [[Graphics]]<br />
* [[Hide/Delete_The_NASCAR_App|Hide/Delete The NASCAR App]]<br />
* [[Hidden Features|Hidden Features]] <br />
* [[Hourly Chime|Hourly Chime]] <br />
* [[Ignore 'A', 'An', and 'The' In Artist and Album names|Ignore 'A', 'An', and 'The' In Artist and Album names]] <br />
* [[Installing Homebrew Apps With A Rooted Pre|Installing Homebrew Apps With A Rooted Pre]] <br />
* [[Messaging_Mods|Messaging Modifications]]<br />
* [[Modifying Stock Applications|Modifying Stock Applications]] <br />
* [[Modifying a Stock App While Keeping the Original|Modifying a Stock App While Keeping the Original]] <br />
* [[Logging information from within scripts|Logging information from within scripts]]<br />
* [[Packaging Homebrew Apps for Stock Pre without Rooting|Packaging Homebrew Apps for Stock Pre without Rooting]] <br />
* [[My notification|My notification]] <br />
* [[Myavatar In Messaging App|Myavatar In Messaging App]] <br />
* [[New Cards For Each Messaging Conversation|New Cards For Each Messaging Conversation]] <br />
* [[Photos Slideshow|Photos Slideshow]] <br />
* [[Pictures from Self-Test|Pictures from Self-Test]] <br />
* [[Radio_Power_Switch|Phone On/Off Switch]]<br />
* [[Random Wallpaper Switching|Random Wallpaper Switching]] <br />
* [[Reverse Tunnel|Reverse Tunnel]] <br />
* [[Screenlock On When Connected|Stay On While Connected]]<br />
* [[Show allday events in calendar month view|Show allday events in calendar month view]] <br />
* [[Splash Application|Splash Application]] <br />
* [[Symlink Applications|Symlink Applications]] <br />
* [[System Sounds|System Sounds]] <br />
* [[Turn Off Missed Call Sound|Turn Off Missed Call Sound]] <br />
* [[Using Volume Buttons to Take a Picture|Using Volume Buttons to Take a Picture]]<br />
<br />
|column2=<br />
==webOS Update Information==<br />
* [[Update 1.1.0|Update 1.1]]<br />
* [[Update 1.0.4|Update 1.0.4]] <br />
* [[Update 1.0.3|Update 1.0.3]]<br />
<br />
==Patches that Need Work==<br />
* Add packages here.<br />
<br />
==Patch Ideas to be Created or in Progress==<br />
<br />
* [[Add_Ability_To_Choose_Snooze_Length|Add Ability to Choose Snooze Length]]<br />
* [[Bugs]]<br />
* [[Development_%26_Tweak_Ideas | Development & Tweaking Ideas]]<br />
* [[Longer Vibrate|Longer Vibrate]]<br />
<br />
}}</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Patch_Messaging_Forward_Messages&diff=2445Patch Messaging Forward Messages2009-07-26T07:43:15Z<p>JackieRipper: </p>
<hr />
<div>'''Description:''' This mod will allow you to forward a message by simply tapping on the text of a message in the chat view. It does not interfere with the current attachment-tapping behavior. Tapping an attached image ask if you want to forward. Selecting "No" will still prompt for a save, etc., while selecting "Yes" will open a the compose dialog, with the message and attachments pre-populated.<br />
<br />
'''Note:''' There is a patch available for the mod. Please see [[Applying Patches]] for instructions.<br />
<br />
==Step One: Create the model==<br />
<br />
Back up and modify /usr/palm/applications/com.palm.app.messaging/app/models/messaging-luna-service.js.<br />
<br />
After line 10, add the following:<br />
<pre><nowiki><br />
forwardIdentifier: 'palm://com.palm.applicationManager',<br />
<br />
forwardMessage: function(sceneController,messageText,attachment) {<br />
var opts = {<br />
method: 'launch',<br />
parameters: {<br />
id: 'com.palm.app.messaging',<br />
params: {<br />
}<br />
}<br />
};<br />
if (messageText)<br />
opts.parameters.params.messageText = 'FWD: '+messageText;<br />
if (attachment)<br />
opts.parameters.params.attachment = attachment;<br />
return sceneController.serviceRequest(MessagingMojoService.forwardIdentifier,opts);<br />
},<br />
<br />
</nowiki></pre><br />
<br />
== Step Two: Make it respond to a tap on the text==<br />
<br />
Back up and modify /usr/palm/applications/com.palm.app.messaging/app/controllers/chatview-assistant.js<br />
<br />
Find the function '''handleMessageTap''', starting on line 1480:<br />
<br />
The first few lines:<br />
<pre><nowiki><br />
handleMessageTap: function(event){ <br />
var eventTarget = this.controller.get(event.originalEvent.target);<br />
<br />
var mmsImageTarget = MessagingUtils.getClassUpChain(eventTarget,'MMSImageObject'); <br />
if(mmsImageTarget) {<br />
</nowiki></pre><br />
<br />
And the last few lines:<br />
<pre><nowiki><br />
<br />
MessagingMojoService.getMessageErrorInfo(this.controller, messageData.messageId, messageData.flags, this.handleMessageErrorPopup.bind(this,messageData)); <br />
<br />
}.bind(this), false); <br />
},<br />
</nowiki></pre><br />
<br />
<br />
Replace the entire function with the following:<br />
<pre><nowiki><br />
handleMessageTap: function(event){<br />
var eventTarget = this.controller.get(event.originalEvent.target);<br />
<br />
var mmsImageTarget = MessagingUtils.getClassUpChain(eventTarget,'MMSImageObject');<br />
if(mmsImageTarget) {<br />
var imagePath = mmsImageTarget.getAttribute('originalSrc');<br />
this.controller.showAlertDialog({<br />
onChoose: function(value) {if(value == "forward"){MessagingMojoService.forwardMessage(this.controller, event.item.messageText, imagePath);} else {this.controller.stageController.pushScene('imageview', imagePath);}},<br />
title: $L("Forward Message"),<br />
message: $L("Do you want to forward this message?"),<br />
choices:[<br />
{label:$L("Yes"), value:"forward", type:"affirmative"},<br />
{label:$L("No"), value:"", type:"negative"}<br />
]<br />
});<br />
return;<br />
}<br />
<br />
var mmsVideoTarget = MessagingUtils.getClassUpChain(eventTarget,'mms-video');<br />
if(mmsVideoTarget) {<br />
var videoPath = mmsVideoTarget.getAttribute('filePath');<br />
var videoName = mmsVideoTarget.getAttribute('fileInfo');<br />
<br />
var args = {<br />
appId: "com.palm.app.videoplayer",<br />
name: "nowplaying"<br />
};<br />
var params = {<br />
target: videoPath,<br />
title: videoName<br />
};<br />
this.controller.showAlertDialog({<br />
onChoose: function(value) {if(value == "forward"){MessagingMojoService.forwardMessage(this.controller, event.item.messageText, videoPath);} else {this.controller.stageController.pushScene(args, params);}},<br />
title: $L("Forward Message"),<br />
message: $L("Do you want to forward this message?"),<br />
choices:[<br />
{label:$L("Yes"), value:"forward", type:"affirmative"},<br />
{label:$L("No"), value:"", type:"negative"}<br />
]<br />
});<br />
return;<br />
}<br />
<br />
var mmsVcardTarget = MessagingUtils.getClassUpChain(eventTarget,'mms-vcard');<br />
if(mmsVcardTarget) {<br />
var filePath = mmsVcardTarget.getAttribute('filePath');<br />
this.controller.showAlertDialog({<br />
onChoose: function(value) {if(value == "forward"){MessagingMojoService.forwardMessage(this.controller, event.item.messageText, filePath);} else {this.controller.stageController.pushScene('mmsTextAttachment', filePath);}},<br />
title: $L("Forward Message"),<br />
message: $L("Do you want to forward this message?"),<br />
choices:[<br />
{label:$L("Yes"), value:"forward", type:"affirmative"},<br />
{label:$L("No"), value:"", type:"negative"}<br />
]<br />
});<br />
return;<br />
}<br />
<br />
var mmsVcalTarget = MessagingUtils.getClassUpChain(eventTarget,'mms-vcal');<br />
if(mmsVcalTarget) {<br />
var filePath = mmsVcalTarget.getAttribute('filePath');<br />
this.controller.showAlertDialog({<br />
onChoose: function(value) {if(value == "forward"){MessagingMojoService.forwardMessage(this.controller, event.item.messageText, filePath);} else {this.controller.stageController.pushScene('mmsTextAttachment', filePath);}},<br />
title: $L("Forward Message"),<br />
message: $L("Do you want to forward this message?"),<br />
choices:[<br />
{label:$L("Yes"), value:"forward", type:"affirmative"},<br />
{label:$L("No"), value:"", type:"negative"}<br />
]<br />
});<br />
return;<br />
}<br />
<br />
if (!mmsImageTarget && !mmsVideoTarget && !mmsVcardTarget && !mmsVcalTarget) {<br />
this.controller.showAlertDialog({<br />
onChoose: function(value) {if(value == "forward"){MessagingMojoService.forwardMessage(this.controller, event.item.messageText, '');}},<br />
title: $L("Forward Message"),<br />
message: $L("Do you want to forward this message?"),<br />
choices:[<br />
{label:$L("Yes"), value:"forward", type:"affirmative"},<br />
{label:$L("No"), value:"", type:"negative"}<br />
]<br />
});<br />
}<br />
<br />
MessagingUtils.simpleListClick(this.controller.get(event.originalEvent.target), "chatRow", function(targetRow){<br />
var messageData = {<br />
errorCode: targetRow.getAttribute("errorCode"),<br />
status: targetRow.getAttribute("status"),<br />
messageId: targetRow.getAttribute("messageId"),<br />
flags: targetRow.getAttribute("flags"),<br />
messageType: targetRow.getAttribute("messageType")<br />
};<br />
<br />
MessagingMojoService.getMessageErrorInfo(this.controller, messageData.messageId, messageData.flags, this.handleMessageErrorPopup.bind(this,messageData));<br />
<br />
}.bind(this), false);<br />
},<br />
</nowiki></pre><br />
<br />
Reboot for changes to take effect.<br />
<br />
== Usage==<br />
To forward a message, open the Messaging application, tap a chat thread, then tap an individual message. A dialog will pop up asking if you would like to forward. If the message has an attachment, it will be forwarded, as well. A new compose card will open with the message text pre-populated. Simply choose the recipient(s).<br />
<br />
= Credits=<br />
Submitted by JackieRipper and Atlanta</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Next_steps&diff=2250Next steps2009-07-25T06:50:02Z<p>JackieRipper: Removed <nowiki> and </nowiki> from the quilt part, too</p>
<hr />
<div>''The old, manual setup of Optware and users can be found [[Setting_up_optware_feed | here]].''<br />
<br />
=Automated Setup of Optware, Users and Access=<br />
The webOS community asks that users who have obtained access to the Linux subsystem install a standard set of software to ensure everyone has the necessary tools in place to use the resources the community is providing.<br />
<br />
In particular, this includes the Optware package manager. Palm's webOS uses the ''ipkg'' package manager internally. The community has a version of ''ipkg'' called ''ipkg-opt'' which accesses the Optware library of over 1300 Linux programs available for installation on the Pre. <br />
<br />
Palm has indicated that they have no intention of using the /opt directory, so we direct our installs to /opt/bin rather than /bin to avoid being overwritten by future Palm software upgrades. <br />
<br />
In addition, the standard package creates a non-root user, installs ''sudo'', and includes an SSH program (''dropbear'') and an sftp program. <br />
<br />
For your convenience, we've packaged all this up into a simple script.<br />
<br />
'''If you're attempting to install these packages to your emulator, you must first add sufficient space by [[Adding_Disks_to_the_Emulator|enabling a virtual disk]].'''<br />
<br />
After completing the process of obtaining access to your Pre, do the following: <br />
<br />
'''Type each line exactly as it appears. Copying and pasting is probably a good idea.'''<br />
<br />
<br />
<br />
''Note to Windows Putty users: To paste in putty, simply right-click and the program pastes into the terminal whatever you have copied to the clipboard.''<br />
<br />
<div style="font-size:140%;"><br />
<source lang=bash><br />
cd /tmp<br />
wget http://gitorious.org/webos-internals/bootstrap/blobs/raw/master/optware-bootstrap.sh<br />
sh optware-bootstrap.sh<br />
</source></div><br />
<br />
Follow the on-screen instructions. <br />
<br />
If you want to review the script before you run it, you can look here: <br />
<br />
[http://gitorious.org/webos-internals/bootstrap/blobs/master/optware-bootstrap.sh http://gitorious.org/webos-internals/bootstrap/blobs/master/optware-bootstrap.sh]<br />
<br />
Optionally, you can then install the ''quilt'' patch manager which allows multiple-file patches. (Yes, the pun was intentional. Quilt manages multiple patches.) This installation process has also been packaged into a simple script. It will install quilt, and all of its dependencies, and create a local clone of the WebOS-Internals patch repository.<br />
<br />
'''Again, type each line exactly as it appears. Copying and pasting is probably a good idea.'''<br />
<br />
<div style="font-size:140%;"><br />
<source lang=bash><br />
cd /tmp<br />
wget http://gitorious.org/webos-internals/bootstrap/blobs/raw/master/quilt-bootstrap.sh<br />
sh quilt-bootstrap.sh<br />
</source></div><br />
<br />
If you want to review the script before you run it, you can look here: <br />
<br />
[http://gitorious.org/webos-internals/bootstrap/blobs/master/quilt-bootstrap.sh http://gitorious.org/webos-internals/bootstrap/blobs/master/quilt-bootstrap.sh]</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Next_steps&diff=2249Next steps2009-07-25T06:47:26Z<p>JackieRipper: <nowiki> and </nowiki> were displaying in the command!</p>
<hr />
<div>''The old, manual setup of Optware and users can be found [[Setting_up_optware_feed | here]].''<br />
<br />
=Automated Setup of Optware, Users and Access=<br />
The webOS community asks that users who have obtained access to the Linux subsystem install a standard set of software to ensure everyone has the necessary tools in place to use the resources the community is providing.<br />
<br />
In particular, this includes the Optware package manager. Palm's webOS uses the ''ipkg'' package manager internally. The community has a version of ''ipkg'' called ''ipkg-opt'' which accesses the Optware library of over 1300 Linux programs available for installation on the Pre. <br />
<br />
Palm has indicated that they have no intention of using the /opt directory, so we direct our installs to /opt/bin rather than /bin to avoid being overwritten by future Palm software upgrades. <br />
<br />
In addition, the standard package creates a non-root user, installs ''sudo'', and includes an SSH program (''dropbear'') and an sftp program. <br />
<br />
For your convenience, we've packaged all this up into a simple script.<br />
<br />
'''If you're attempting to install these packages to your emulator, you must first add sufficient space by [[Adding_Disks_to_the_Emulator|enabling a virtual disk]].'''<br />
<br />
After completing the process of obtaining access to your Pre, do the following: <br />
<br />
'''Type each line exactly as it appears. Copying and pasting is probably a good idea.'''<br />
<br />
<br />
<br />
''Note to Windows Putty users: To paste in putty, simply right-click and the program pastes into the terminal whatever you have copied to the clipboard.''<br />
<br />
<div style="font-size:140%;"><br />
<source lang=bash><br />
cd /tmp<br />
wget http://gitorious.org/webos-internals/bootstrap/blobs/raw/master/optware-bootstrap.sh<br />
sh optware-bootstrap.sh<br />
</source></div><br />
<br />
Follow the on-screen instructions. <br />
<br />
If you want to review the script before you run it, you can look here: <br />
<br />
[http://gitorious.org/webos-internals/bootstrap/blobs/master/optware-bootstrap.sh http://gitorious.org/webos-internals/bootstrap/blobs/master/optware-bootstrap.sh]<br />
<br />
Optionally, you can then install the ''quilt'' patch manager which allows multiple-file patches. (Yes, the pun was intentional. Quilt manages multiple patches.) This installation process has also been packaged into a simple script. It will install quilt, and all of its dependencies, and create a local clone of the WebOS-Internals patch repository.<br />
<br />
'''Again, type each line exactly as it appears. Copying and pasting is probably a good idea.'''<br />
<br />
<div style="font-size:140%;"><br />
<source lang=bash><br />
cd /tmp<br />
wget <nowiki>http://gitorious.org/webos-internals/bootstrap/blobs/raw/master/quilt-bootstrap.sh</nowiki><br />
sh quilt-bootstrap.sh<br />
</source></div><br />
<br />
If you want to review the script before you run it, you can look here: <br />
<br />
[http://gitorious.org/webos-internals/bootstrap/blobs/master/quilt-bootstrap.sh http://gitorious.org/webos-internals/bootstrap/blobs/master/quilt-bootstrap.sh]</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Talk:Backing_Up_via_Rsync&diff=1712Talk:Backing Up via Rsync2009-07-23T00:08:50Z<p>JackieRipper: </p>
<hr />
<div>Why turn on the rsync daemon at all? This could easily be accomplished simply by running <br />
<br />
'''rsync -HrlptgoDPvvS --force --delete --del --stats -e ssh root@IPADDRESS:/ /media/pre-backup/'''<br />
<br />
Also, since ''-P'' includes ''--progress'', there's no reason to call it a second time.<br />
<br />
-JackieRipper<br />
<br />
<br />
We don't have a root password set up on the Pre, it's using sudo therefore that's why ssh won't work. Rsyncd.conf gives the rsync daemon root privileges so it can mirror the device. I'm be open to suggestions, but I'm trying to make this fit in with the [[Next_steps | next steps]] guide and limit the number of steps.<br />
<br />
Thanks for pointing out the redundancy on --progress.<br />
<br />
-hopspitfire<br />
<br />
Ahhh yes. I keep forgetting that not everyone set up keys for root access.<br />
<br />
-JackieRipper</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Talk:Backing_Up_via_Rsync&diff=1375Talk:Backing Up via Rsync2009-07-21T17:07:57Z<p>JackieRipper: </p>
<hr />
<div>Why turn on the rsync daemon at all? This could easily be accomplished simply by running <br />
<br />
'''rsync -HrlptgoDPvvS --force --delete --del --stats -e ssh root@IPADDRESS:/ /media/pre-backup/'''<br />
<br />
Also, since ''-P'' includes ''--progress'', there's no reason to call it a second time.<br />
<br />
-JackieRipper</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Talk:Backing_Up_via_Rsync&diff=1374Talk:Backing Up via Rsync2009-07-21T17:07:35Z<p>JackieRipper: New page: Why turn on the rsync daemon at all? This could easily be accomplished simply by running '''rsync -HrlptgoDPvvS --force --delete --del --stats -e ssh root@IPADDRESS:/ /media/pre-backup'...</p>
<hr />
<div>Why turn on the rsync daemon at all? This could easily be accomplished simply by running <br />
<br />
'''rsync -HrlptgoDPvvS --force --delete --del --stats -e ssh root@IPADDRESS:/ /media/pre-backup'''<br />
<br />
Also, since ''-P'' includes ''--progress'', there's no reason to call it a second time.<br />
<br />
-JackieRipper</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Accessing_Linux_From_OSX&diff=1351Accessing Linux From OSX2009-07-21T15:33:51Z<p>JackieRipper: Converting old formatting</p>
<hr />
<div>= Mac OS X: =<br />
<br />
If you are not on a mac, follow the instructions [[Accessing_Linux_From_Windows|here]] instead.<br />
<br />
# Download the [http://palm.cdnetworks.net/rom/pre_p100eww/webosdoctorp100ewwsprint.jar webOS image].<br />
# Rename this file to .zip, and extract it.<br />
# Untar resources/NovacomInstaller.pkg.tar.gz (tar -xzvf).<br />
# Run NovacomInstaller.pkg.<br />
# Click through the installer.<br />
# From the Pre desktop, with no applicatons open on the Pre, type in the Konami code on your Pre's keyboard. ('''upupdowndownleftrightleftrightbastart''') to access the developer mode application. You do not need to press enter. When you press the "t" of start, the developer app will become visible. <br />
# Open the DeveloperMode application on your Pre and enable the developer mode switch, resetting the device when prompted.<br />
# Connect to your Mac via USB cable. There is no need to answer the question on your Pre regarding mounting the drive or just charging. '''Don't select anything''' (or select "Just Charge" if not selecting anything really bothers you). '''Warning: Selecting a USB mode will turn off the Pre's WiFi & Cellular connections and mess up later steps by giving you a "wget: bad address" error when you try and install additional packages.'''<br />
# cd /opt/nova/bin<br />
# ./novaterm<br />
# At this point you should have root.<br />
# Login with username '''root''' and a blank password. (Note that you can only use root and a blank password while dev mode is on - rebooting turns this insecure access off again)<br />
<br />
* This is what you should see<br />
<br />
<pre><nowiki><br />
root@castle:/#<br />
</nowiki></pre><br />
<br />
* Assuming that worked, you are in as root. You can prove this by typing '''ls -al''' and hitting enter. You should get a directory listing. <br />
<br />
Congrats, you are now in as root. Tread lightly.<br />
<br />
== Next Steps: ==<br />
<br />
Your rooted pre is in a very sensitive and unusual state. There are several steps you should take immidiately:<br />
<br />
* Create a new username and password so that you don't connect as root<br />
* Open up ports in the pre so that you can connect to it.<br />
* Create a secure connection so that your pre is not open to everyone in the universe. **If you do not secure the network, your device will be accessible by anyone on the internet until it is rebooted.**<br />
* Install the Optware package manager so that you can install software onto the Pre. <br />
<br />
All this picks up in [[Next_steps | Next steps after rooting ]].<br />
<br />
== What You Should See: ==<br />
<br />
<pre><nowiki><br />
root@castle:/# ls<br />
bin dev etc lib md5sums mnt sbin tmp var<br />
boot dspbridge home lost+found media proc sys usr<br />
root@castle:/# uname -a<br />
Linux castle 2.6.24-palm-joplin-3430 #1 175.1.15 armv7l unknown<br />
root@castle:/# whoami<br />
root<br />
</nowiki></pre><br />
<br />
== Enabling Developer Mode As A Button ==<br />
<br />
Having to type the Konami code every time is tedious so you can make the developer mode button visible by doing the following:<br />
<br />
<pre><nowiki><br />
cp -ip /usr/palm/applications/com.palm.app.devmodeswitcher/appinfo.json /usr/palm/applications/com.palm.app.devmodeswitcher/appinfo.json.bak<br />
vi /usr/palm/applications/com.palm.app.devmodeswitcher/appinfo.json<br />
</nowiki></pre><br />
<br />
* Line 8. Change visible to true.</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Accessing_Linux_From_OSX&diff=1349Accessing Linux From OSX2009-07-21T15:30:49Z<p>JackieRipper: Added backing up of the file</p>
<hr />
<div>= Mac OS X: =<br />
<br />
If you are not on a mac, follow the instructions [[Accessing_Linux_From_Windows|here]] instead.<br />
<br />
# Download the [http://palm.cdnetworks.net/rom/pre_p100eww/webosdoctorp100ewwsprint.jar webOS image].<br />
# Rename this file to .zip, and extract it.<br />
# Untar resources/NovacomInstaller.pkg.tar.gz (tar -xzvf).<br />
# Run NovacomInstaller.pkg.<br />
# Click through the installer.<br />
# From the Pre desktop, with no applicatons open on the Pre, type in the Konami code on your Pre's keyboard. (**upupdowndownleftrightleftrightbastart**) to access the developer mode application. You do not need to press enter. When you press the "t" of start, the developer app will become visible. <br />
# Open the DeveloperMode application on your Pre and enable the developer mode switch, resetting the device when prompted.<br />
# Connect to your Mac via USB cable. There is no need to answer the question on your Pre regarding mounting the drive or just charging. **Don't select anything** (or select "Just Charge" if not selecting anything really bothers you). **Warning: Selecting a USB mode will turn off the Pre's WiFi & Cellular connections and mess up later steps by giving you a "wget: bad address" error when you try and install additional packages.**<br />
# cd /opt/nova/bin<br />
# ./novaterm<br />
# At this point you should have root.<br />
# Login with username **root** and a blank password. (Note that you can only use root and a blank password while dev mode is on - rebooting turns this insecure access off again)<br />
<br />
* This is what you should see<br />
<br />
<pre><nowiki><br />
root@castle:/#<br />
</nowiki></pre><br />
<br />
* Assuming that worked, you are in as root. You can prove this by typing **ls -all** and hitting enter. You should get a directory listing. <br />
<br />
Congrats, you are now in as root. Tread lightly.<br />
<br />
== Next Steps: ==<br />
<br />
Your rooted pre is in a very sensitive and unusual state. There are several steps you should take immidiately:<br />
<br />
* Create a new username and password so that you don't connect as root<br />
* Open up ports in the pre so that you can connect to it.<br />
* Create a secure connection so that your pre is not open to everyone in the universe. **If you do not secure the network, your device will be accessible by anyone on the internet until it is rebooted.**<br />
* Install the Optware package manager so that you can install software onto the Pre. <br />
<br />
All this picks up in [[Next_steps | Next steps after rooting ]].<br />
<br />
== What You Should See: ==<br />
<br />
<pre><nowiki><br />
root@castle:/# ls<br />
bin dev etc lib md5sums mnt sbin tmp var<br />
boot dspbridge home lost+found media proc sys usr<br />
root@castle:/# uname -a<br />
Linux castle 2.6.24-palm-joplin-3430 #1 175.1.15 armv7l unknown<br />
root@castle:/# whoami<br />
root<br />
</nowiki></pre><br />
<br />
== Enabling Developer Mode As A Button ==<br />
<br />
Having to type the Konami code every time is tedious so you can make the developer mode button visible by doing the following:<br />
<br />
<pre><nowiki><br />
cp -ip /usr/palm/applications/com.palm.app.devmodeswitcher/appinfo.json /usr/palm/applications/com.palm.app.devmodeswitcher/appinfo.json.bak<br />
vi /usr/palm/applications/com.palm.app.devmodeswitcher/appinfo.json<br />
</nowiki></pre><br />
<br />
* Line 8. Change visible to true.</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Accessing_Linux_From_OSX&diff=1348Accessing Linux From OSX2009-07-21T15:29:40Z<p>JackieRipper: Updated link to Windows instructions to point to the page in this wiki rather than the old</p>
<hr />
<div>= Mac OS X: =<br />
<br />
If you are not on a mac, follow the instructions [[Accessing_Linux_From_Windows|here]] instead.<br />
<br />
# Download the [http://palm.cdnetworks.net/rom/pre_p100eww/webosdoctorp100ewwsprint.jar webOS image].<br />
# Rename this file to .zip, and extract it.<br />
# Untar resources/NovacomInstaller.pkg.tar.gz (tar -xzvf).<br />
# Run NovacomInstaller.pkg.<br />
# Click through the installer.<br />
# From the Pre desktop, with no applicatons open on the Pre, type in the Konami code on your Pre's keyboard. (**upupdowndownleftrightleftrightbastart**) to access the developer mode application. You do not need to press enter. When you press the "t" of start, the developer app will become visible. <br />
# Open the DeveloperMode application on your Pre and enable the developer mode switch, resetting the device when prompted.<br />
# Connect to your Mac via USB cable. There is no need to answer the question on your Pre regarding mounting the drive or just charging. **Don't select anything** (or select "Just Charge" if not selecting anything really bothers you). **Warning: Selecting a USB mode will turn off the Pre's WiFi & Cellular connections and mess up later steps by giving you a "wget: bad address" error when you try and install additional packages.**<br />
# cd /opt/nova/bin<br />
# ./novaterm<br />
# At this point you should have root.<br />
# Login with username **root** and a blank password. (Note that you can only use root and a blank password while dev mode is on - rebooting turns this insecure access off again)<br />
<br />
* This is what you should see<br />
<br />
<pre><nowiki><br />
root@castle:/#<br />
</nowiki></pre><br />
<br />
* Assuming that worked, you are in as root. You can prove this by typing **ls -all** and hitting enter. You should get a directory listing. <br />
<br />
Congrats, you are now in as root. Tread lightly.<br />
<br />
== Next Steps: ==<br />
<br />
Your rooted pre is in a very sensitive and unusual state. There are several steps you should take immidiately:<br />
<br />
* Create a new username and password so that you don't connect as root<br />
* Open up ports in the pre so that you can connect to it.<br />
* Create a secure connection so that your pre is not open to everyone in the universe. **If you do not secure the network, your device will be accessible by anyone on the internet until it is rebooted.**<br />
* Install the Optware package manager so that you can install software onto the Pre. <br />
<br />
All this picks up in [[Next_steps | Next steps after rooting ]].<br />
<br />
== What You Should See: ==<br />
<br />
<pre><nowiki><br />
root@castle:/# ls<br />
bin dev etc lib md5sums mnt sbin tmp var<br />
boot dspbridge home lost+found media proc sys usr<br />
root@castle:/# uname -a<br />
Linux castle 2.6.24-palm-joplin-3430 #1 175.1.15 armv7l unknown<br />
root@castle:/# whoami<br />
root<br />
</nowiki></pre><br />
<br />
== Enabling Developer Mode As A Button ==<br />
<br />
Having to type the Konami code every time is tedious so you can make the developer mode button visible by doing the following:<br />
<br />
<pre><nowiki><br />
vi /usr/palm/applications/com.palm.app.devmodeswitcher/appinfo.json<br />
</nowiki></pre><br />
<br />
* Line 8. Change visible to true.</div>JackieRipperhttp://wiki.webos-internals.org/index.php?title=Accessing_Linux_From_Windows&diff=1347Accessing Linux From Windows2009-07-21T15:28:16Z<p>JackieRipper: Added link to OSX instructions</p>
<hr />
<div>= Using Novaproxy to Gain Root Access on Windows =<br />
<br />
If you are using a mac, follow the instructions [[Accessing_Linux_From_OSX|here]] instead of this page.<br />
<br />
Procedure:<br />
<br />
This procedure works as is with Windows XP or Vista, and can be made to work with Windows 7 by manually installing Novacom as described on the Novacom and Windows 7 page. Using an XP virtual machine (VMware or Windows 7's "XP mode") has been reported to work if you do not have a supported platform.<br />
<br />
Estimated time: 30 minutes depending on experience - including Next Steps after obtaining access. <br />
<br />
== Preparation ==<br />
* Download the [http://palm.cdnetworks.net/staging/rom/webosdoctorp100ewwsprint.jar webOS image].<br />
* Change the file extension from .jar to .zip and then extract the archive.<br />
* Run the driver installer from the extracted file by browsing to the folder webosdoctorp100ewwsprint/resources/ and running NovacomInstaller_x86.msi (for 32-bit Windows) or NovacomInstaller_x64.msi (for 64-bit Windows).<br />
* Download Putty.exe from [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html]. Note that there is no installation, you're simply downloading an exe you will run. Note where you downloaded it. <br />
* Download and install Python 2.6 from [http://www.python.org/download http://www.python.org/download]. Make sure it's not a more recent or an older version - it must be 2.6.x!<br />
** Install using all the default choices.<br />
* Get a copy of the novaproxy.py script from [http://github.com/asedeno/novaproxy/raw/master/novaproxy.py http://github.com/asedeno/novaproxy/raw/master/novaproxy.py] (Right click and Save the file where you are going to remember you put it).<br />
<br />
== The actual process == <br />
<br />
* Type in the Konami code on your Pre (upupdowndownleftrightleftrightbastart) to access the Developer Mode application. A blue developer icon will pop up on the Pre <div style="float:right;">[[image:DevMode.jpg]]</div><br />
* Open the Developer Mode application on your Pre and enable the Developer Mode switch, resetting the device when prompted.<br />
* Connect the Pre to your PC using a USB cable. Choose the option to "Just Charge". Windows should see a new device called Palm Novacom and automatically install the drivers for it. If you are asked to locate the drivers yourself, they are in C:\Program Files\Palm, Inc\novacom\x86 (for 32-bit Windows) or C:\Program Files\Palm, Inc\novacom\amd64 (for 64-bit Windows).<br />
* If you installed Python with all the default choices, you can simply double-click the novaproxy.py file to start Novaproxy. Otherwise, bring up a command prompt window, cd to the location in which you extracted the zip file, then type python novaproxy.py to run the script.<br />
* The script will execute and provide further instructions. If it tells you it's listening on a localhost port (usually 8023), everything is working. Be sure not to close this window.<br />
* If the script does not work, or tells you there is a problem and the provided instructions don't help, join our IRC channel (irc.freenode.net #webos-internals) and feel free to ask for help.<br />
* Run putty.exe<br />
* In PuTTY's Host Name box, type localhost and select a connection type of RAW. In the Port box, type the port that Novaproxy says it's listening on (usually 8023).<br />
* Click on Terminal in the treeview on the left, and under Line discipline options, set both Local echo and Local line editing to Force off.<br />
* If you want to save these settings so you don't have to set them again later, click on Session in the left treeview, enter a name for your saved connection (such as "MyPre") in the Saved Sessions box, and click the Save button. The next time you want to connect, start Novaproxy, then launch PuTTY and double-click the saved connection.<br />
* Click the big Open button. Novaproxy should indicate it is connecting, and PuTTY should show a root prompt that looks like this:<br />
:: <code>root@castle:/#</code> <br />
<br />
Congrats, you are now in as root. Tread lightly. <br />
<br />
==== Now please visit the [[Next_steps|Next steps]] after obtaining Linux Access page to see what you can do. ====<br />
Orr type exit at the root prompt to disconnect. PuTTY and Novaproxy will both exit automatically.<br />
<br />
Credits:<br />
<br />
Credit goes to asedeno for the novaproxy script.</div>JackieRipper